@azure/communication-react 1.3.2-alpha-202208040020.0 → 1.3.2-alpha-202208050016.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 (107) hide show
  1. package/dist/communication-react.d.ts +88 -0
  2. package/dist/dist-cjs/communication-react/index.js +463 -172
  3. package/dist/dist-cjs/communication-react/index.js.map +1 -1
  4. package/dist/dist-esm/acs-ui-common/src/common.d.ts +20 -0
  5. package/dist/dist-esm/acs-ui-common/src/common.d.ts.map +1 -0
  6. package/dist/dist-esm/acs-ui-common/src/common.js +26 -0
  7. package/dist/dist-esm/acs-ui-common/src/common.js.map +1 -0
  8. package/dist/dist-esm/acs-ui-common/src/index.d.ts +1 -0
  9. package/dist/dist-esm/acs-ui-common/src/index.d.ts.map +1 -1
  10. package/dist/dist-esm/acs-ui-common/src/index.js +1 -0
  11. package/dist/dist-esm/acs-ui-common/src/index.js.map +1 -1
  12. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  13. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.d.ts +2 -2
  14. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.d.ts.map +1 -1
  15. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js +31 -5
  16. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js.map +1 -1
  17. package/dist/dist-esm/calling-component-bindings/src/videoGallerySelector.d.ts.map +1 -1
  18. package/dist/dist-esm/calling-component-bindings/src/videoGallerySelector.js +1 -1
  19. package/dist/dist-esm/calling-component-bindings/src/videoGallerySelector.js.map +1 -1
  20. package/dist/dist-esm/communication-react/src/index.d.ts +1 -1
  21. package/dist/dist-esm/communication-react/src/index.d.ts.map +1 -1
  22. package/dist/dist-esm/communication-react/src/index.js.map +1 -1
  23. package/dist/dist-esm/react-components/src/components/DevicesButton.js +1 -1
  24. package/dist/dist-esm/react-components/src/components/DevicesButton.js.map +1 -1
  25. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.d.ts +2 -0
  26. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.d.ts.map +1 -1
  27. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.js +9 -14
  28. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.js.map +1 -1
  29. package/dist/dist-esm/react-components/src/components/ParticipantItem.js +1 -1
  30. package/dist/dist-esm/react-components/src/components/ParticipantItem.js.map +1 -1
  31. package/dist/dist-esm/react-components/src/components/ParticipantsButton.js +1 -1
  32. package/dist/dist-esm/react-components/src/components/ParticipantsButton.js.map +1 -1
  33. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.d.ts +2 -1
  34. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.d.ts.map +1 -1
  35. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.js +8 -2
  36. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.js.map +1 -1
  37. package/dist/dist-esm/react-components/src/components/ResponsiveHorizontalGallery.js +1 -1
  38. package/dist/dist-esm/react-components/src/components/ResponsiveHorizontalGallery.js.map +1 -1
  39. package/dist/dist-esm/react-components/src/components/VideoTile.d.ts +16 -1
  40. package/dist/dist-esm/react-components/src/components/VideoTile.d.ts.map +1 -1
  41. package/dist/dist-esm/react-components/src/components/VideoTile.js +38 -6
  42. package/dist/dist-esm/react-components/src/components/VideoTile.js.map +1 -1
  43. package/dist/dist-esm/react-components/src/components/index.d.ts +1 -0
  44. package/dist/dist-esm/react-components/src/components/index.d.ts.map +1 -1
  45. package/dist/dist-esm/react-components/src/components/index.js +0 -1
  46. package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
  47. package/dist/dist-esm/react-components/src/components/styles/Dialpad.styles.js +1 -1
  48. package/dist/dist-esm/react-components/src/components/styles/Dialpad.styles.js.map +1 -1
  49. package/dist/dist-esm/react-components/src/components/styles/VideoTile.styles.d.ts +4 -0
  50. package/dist/dist-esm/react-components/src/components/styles/VideoTile.styles.d.ts.map +1 -1
  51. package/dist/dist-esm/react-components/src/components/styles/VideoTile.styles.js +9 -0
  52. package/dist/dist-esm/react-components/src/components/styles/VideoTile.styles.js.map +1 -1
  53. package/dist/dist-esm/react-components/src/components/utils/common.d.ts +0 -19
  54. package/dist/dist-esm/react-components/src/components/utils/common.d.ts.map +1 -1
  55. package/dist/dist-esm/react-components/src/components/utils/common.js +0 -23
  56. package/dist/dist-esm/react-components/src/components/utils/common.js.map +1 -1
  57. package/dist/dist-esm/react-components/src/components/utils/responsive.js +1 -1
  58. package/dist/dist-esm/react-components/src/components/utils/responsive.js.map +1 -1
  59. package/dist/dist-esm/react-components/src/index.d.ts +1 -1
  60. package/dist/dist-esm/react-components/src/index.d.ts.map +1 -1
  61. package/dist/dist-esm/react-components/src/localization/LocalizationProvider.d.ts +3 -0
  62. package/dist/dist-esm/react-components/src/localization/LocalizationProvider.d.ts.map +1 -1
  63. package/dist/dist-esm/react-components/src/localization/LocalizationProvider.js.map +1 -1
  64. package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +6 -1
  65. package/dist/dist-esm/react-components/src/types/VideoGalleryParticipant.d.ts +10 -0
  66. package/dist/dist-esm/react-components/src/types/VideoGalleryParticipant.d.ts.map +1 -1
  67. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.d.ts +24 -0
  68. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.d.ts.map +1 -1
  69. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/ConvertContextualMenuItemToDrawerMenuItem.d.ts +11 -0
  70. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/ConvertContextualMenuItemToDrawerMenuItem.d.ts.map +1 -0
  71. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/ConvertContextualMenuItemToDrawerMenuItem.js +23 -0
  72. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/ConvertContextualMenuItemToDrawerMenuItem.js.map +1 -0
  73. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/Strings.d.ts +24 -0
  74. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/Strings.d.ts.map +1 -1
  75. package/dist/dist-esm/react-composites/src/composites/common/AddPeopleButton.d.ts +13 -0
  76. package/dist/dist-esm/react-composites/src/composites/common/AddPeopleButton.d.ts.map +1 -0
  77. package/dist/dist-esm/react-composites/src/composites/common/AddPeopleButton.js +36 -0
  78. package/dist/dist-esm/react-composites/src/composites/common/AddPeopleButton.js.map +1 -0
  79. package/dist/dist-esm/react-composites/src/composites/common/AddPeopleDropdown.d.ts +17 -0
  80. package/dist/dist-esm/react-composites/src/composites/common/AddPeopleDropdown.d.ts.map +1 -0
  81. package/dist/dist-esm/react-composites/src/composites/common/AddPeopleDropdown.js +90 -0
  82. package/dist/dist-esm/react-composites/src/composites/common/AddPeopleDropdown.js.map +1 -0
  83. package/dist/dist-esm/react-composites/src/composites/common/AddPeopleDropdown.styles.d.ts +17 -0
  84. package/dist/dist-esm/react-composites/src/composites/common/AddPeopleDropdown.styles.d.ts.map +1 -0
  85. package/dist/dist-esm/react-composites/src/composites/common/AddPeopleDropdown.styles.js +32 -0
  86. package/dist/dist-esm/react-composites/src/composites/common/AddPeopleDropdown.styles.js.map +1 -0
  87. package/dist/dist-esm/react-composites/src/composites/common/CallingDialpad.d.ts +18 -0
  88. package/dist/dist-esm/react-composites/src/composites/common/CallingDialpad.d.ts.map +1 -0
  89. package/dist/dist-esm/react-composites/src/composites/common/CallingDialpad.js +53 -0
  90. package/dist/dist-esm/react-composites/src/composites/common/CallingDialpad.js.map +1 -0
  91. package/dist/dist-esm/react-composites/src/composites/common/CallingDialpad.styles.d.ts +15 -0
  92. package/dist/dist-esm/react-composites/src/composites/common/CallingDialpad.styles.d.ts.map +1 -0
  93. package/dist/dist-esm/react-composites/src/composites/common/CallingDialpad.styles.js +54 -0
  94. package/dist/dist-esm/react-composites/src/composites/common/CallingDialpad.styles.js.map +1 -0
  95. package/dist/dist-esm/react-composites/src/composites/common/PeoplePaneContent.d.ts.map +1 -1
  96. package/dist/dist-esm/react-composites/src/composites/common/PeoplePaneContent.js +8 -38
  97. package/dist/dist-esm/react-composites/src/composites/common/PeoplePaneContent.js.map +1 -1
  98. package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts +9 -0
  99. package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts.map +1 -1
  100. package/dist/dist-esm/react-composites/src/composites/common/icons.js +9 -1
  101. package/dist/dist-esm/react-composites/src/composites/common/icons.js.map +1 -1
  102. package/dist/dist-esm/react-composites/src/composites/common/styles/PeoplePaneContent.styles.d.ts +5 -1
  103. package/dist/dist-esm/react-composites/src/composites/common/styles/PeoplePaneContent.styles.d.ts.map +1 -1
  104. package/dist/dist-esm/react-composites/src/composites/common/styles/PeoplePaneContent.styles.js +12 -1
  105. package/dist/dist-esm/react-composites/src/composites/common/styles/PeoplePaneContent.styles.js.map +1 -1
  106. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-US/strings.json +14 -2
  107. 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.2-alpha-202208040020.0';
195
+ var telemetryVersion = '1.3.2-alpha-202208050016.0';
196
196
 
197
197
  // Copyright (c) Microsoft Corporation.
198
198
  /**
@@ -280,6 +280,32 @@ const createSafeReplacer = () => {
280
280
  };
281
281
  };
282
282
 
283
+ // Copyright (c) Microsoft Corporation.
284
+ // Licensed under the MIT license.
285
+ /**
286
+ * @internal
287
+ * Converts units of rem to units of pixels
288
+ * @param rem - units of rem
289
+ * @returns units of pixels
290
+ */
291
+ const _convertRemToPx = (rem) => {
292
+ return rem * parseFloat(getComputedStyle(document.documentElement).fontSize);
293
+ };
294
+ /**
295
+ * @internal
296
+ * Disable dismiss on resize to work around a couple Fluent UI bugs
297
+ * - The Callout is dismissed whenever *any child of window (inclusive)* is resized. In practice, this
298
+ * happens when we change the VideoGallery layout, or even when the video stream element is internally resized
299
+ * by the headless SDK.
300
+ * - We also want to prevent dismiss when chat pane is scrolling especially a new message is added.
301
+ * A side effect of this workaround is that the context menu stays open when window is resized, and may
302
+ * get detached from original target visually. That bug is preferable to the bug when this value is not set -
303
+ * The Callout (frequently) gets dismissed automatically.
304
+ */
305
+ const _preventDismissOnEvent = (ev) => {
306
+ return ev.type === 'resize' || ev.type === 'scroll';
307
+ };
308
+
283
309
  // Copyright (c) Microsoft Corporation.
284
310
  // Licensed under the MIT license.
285
311
  /**
@@ -932,7 +958,7 @@ const typingIndicatorStringStyle = react.mergeStyles({
932
958
  wordBreak: 'break-word'
933
959
  });
934
960
 
935
- var participantItem$d={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed Participant"};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}",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 a number",deleteButtonAriaLabel:"Delete"};var HoldButton$e={onLabel:"Resume",offLabel:"Hold",toolTipOnContent:"Resume call",toolTipOffContent:"Hold call"};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$e};
961
+ var participantItem$d={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed Participant"};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}",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$e={onLabel:"Resume",offLabel:"Hold",toolTipOnContent:"Resume call",toolTipOffContent:"Hold call"};var videoTile={participantStateConnecting:"Connecting...",participantStateRinging:"Ringing...",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$e,videoTile:videoTile};
936
962
 
937
963
  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};
938
964
 
@@ -2238,29 +2264,6 @@ const SendBoxErrors = (props) => {
2238
2264
  };
2239
2265
 
2240
2266
  // Copyright (c) Microsoft Corporation.
2241
- /**
2242
- * Converts units of rem to units of pixels
2243
- * @param rem - units of rem
2244
- * @returns units of pixels
2245
- */
2246
- const convertRemToPx = (rem) => {
2247
- return rem * parseFloat(getComputedStyle(document.documentElement).fontSize);
2248
- };
2249
- /**
2250
- * Converts units of rem to units of pixels
2251
- * @private
2252
- * Disable dismiss on resize to work around a couple Fluent UI bugs
2253
- * - The Callout is dismissed whenever *any child of window (inclusive)* is resized. In practice, this
2254
- * happens when we change the VideoGallery layout, or even when the video stream element is internally resized
2255
- * by the headless SDK.
2256
- * - We also want to prevent dismiss when chat pane is scrolling especially a new message is added.
2257
- * A side effect of this workaround is that the context menu stays open when window is resized, and may
2258
- * get detached from original target visually. That bug is preferable to the bug when this value is not set -
2259
- * The Callout (frequently) gets dismissed automatically.
2260
- */
2261
- const preventDismissOnEvent = (ev) => {
2262
- return ev.type === 'resize' || ev.type === 'scroll';
2263
- };
2264
2267
  /**
2265
2268
  * Conditionally modify locale strings passed to the file card
2266
2269
  * @returns file upload card strings
@@ -3665,7 +3668,7 @@ const NARROW_WIDTH_REM = 30;
3665
3668
  * @param containerWidthRem container width in rem
3666
3669
  * @returns boolean
3667
3670
  */
3668
- const isNarrowWidth = (containerWidthRem) => containerWidthRem <= convertRemToPx(NARROW_WIDTH_REM);
3671
+ const isNarrowWidth = (containerWidthRem) => containerWidthRem <= _convertRemToPx(NARROW_WIDTH_REM);
3669
3672
 
3670
3673
  /**
3671
3674
  * @private
@@ -4356,7 +4359,7 @@ const iconContainerStyle$1 = {
4356
4359
  /**
4357
4360
  * @private
4358
4361
  */
4359
- const iconStyles$2 = react.mergeStyles({
4362
+ const iconStyles$3 = react.mergeStyles({
4360
4363
  display: 'flex',
4361
4364
  lineHeight: 0,
4362
4365
  alignItems: 'center'
@@ -4402,7 +4405,7 @@ const ParticipantItem = (props) => {
4402
4405
  const contextualMenuStyle = React.useMemo(() => react.mergeStyles({ background: theme.palette.neutralLighterAlt }, styles === null || styles === void 0 ? void 0 : styles.menu), [theme.palette.neutralLighterAlt, styles === null || styles === void 0 ? void 0 : styles.menu]);
4403
4406
  const infoContainerStyle = React.useMemo(() => react.mergeStyles(iconContainerStyle$1, { color: theme.palette.neutralTertiary }, styles === null || styles === void 0 ? void 0 : styles.iconContainer), [theme.palette.neutralTertiary, styles === null || styles === void 0 ? void 0 : styles.iconContainer]);
4404
4407
  const menuButton = React.useMemo(() => (React__default['default'].createElement(react.Stack, { horizontal: true, horizontalAlign: "end", className: react.mergeStyles(menuButtonContainerStyle), title: menuTitle, "data-ui-id": ids.participantItemMenuButton },
4405
- React__default['default'].createElement(react.Icon, { iconName: itemHovered ? 'ParticipantItemOptionsHovered' : 'ParticipantItemOptions', className: iconStyles$2 }))), [itemHovered, menuTitle, ids.participantItemMenuButton]);
4408
+ React__default['default'].createElement(react.Icon, { iconName: itemHovered ? 'ParticipantItemOptionsHovered' : 'ParticipantItemOptions', className: iconStyles$3 }))), [itemHovered, menuTitle, ids.participantItemMenuButton]);
4406
4409
  const onDismissMenu = () => {
4407
4410
  setItemHovered(false);
4408
4411
  setMenuHidden(true);
@@ -4419,7 +4422,7 @@ const ParticipantItem = (props) => {
4419
4422
  menuItems && menuItems.length > 0 && (React__default['default'].createElement(React__default['default'].Fragment, null,
4420
4423
  menuButton,
4421
4424
  React__default['default'].createElement(react.ContextualMenu, { items: menuItems, hidden: menuHidden, target: containerRef, onItemClick: onDismissMenu, onDismiss: onDismissMenu, directionalHint: react.DirectionalHint.bottomRightEdge, className: contextualMenuStyle, calloutProps: {
4422
- preventDismissOnEvent
4425
+ preventDismissOnEvent: _preventDismissOnEvent
4423
4426
  } })))));
4424
4427
  };
4425
4428
 
@@ -4443,7 +4446,7 @@ const participantListItemStyle = {
4443
4446
  /**
4444
4447
  * @private
4445
4448
  */
4446
- const iconStyles$1 = react.mergeStyles({
4449
+ const iconStyles$2 = react.mergeStyles({
4447
4450
  display: 'flex',
4448
4451
  lineHeight: 0,
4449
4452
  alignItems: 'center'
@@ -4464,8 +4467,8 @@ const onRenderParticipantDefault = (participant, strings, myUserId, onRenderAvat
4464
4467
  const menuItems = createParticipantMenuItems && createParticipantMenuItems(participant);
4465
4468
  const onRenderIcon = (callingParticipant === null || callingParticipant === void 0 ? void 0 : callingParticipant.isScreenSharing) || (callingParticipant === null || callingParticipant === void 0 ? void 0 : callingParticipant.isMuted)
4466
4469
  ? () => (React__default['default'].createElement(react.Stack, { horizontal: true, tokens: { childrenGap: '0.5rem' } },
4467
- callingParticipant.isScreenSharing && (React__default['default'].createElement(react.Icon, { iconName: "ParticipantItemScreenShareStart", className: iconStyles$1, ariaLabel: strings.sharingIconLabel })),
4468
- callingParticipant.isMuted && (React__default['default'].createElement(react.Icon, { iconName: "ParticipantItemMicOff", className: iconStyles$1, ariaLabel: strings.mutedIconLabel }))))
4470
+ callingParticipant.isScreenSharing && (React__default['default'].createElement(react.Icon, { iconName: "ParticipantItemScreenShareStart", className: iconStyles$2, ariaLabel: strings.sharingIconLabel })),
4471
+ callingParticipant.isMuted && (React__default['default'].createElement(react.Icon, { iconName: "ParticipantItemMicOff", className: iconStyles$2, ariaLabel: strings.mutedIconLabel }))))
4469
4472
  : () => null;
4470
4473
  const displayName = !participant.displayName ? strings.displayNamePlaceholder : participant.displayName;
4471
4474
  return (React__default['default'].createElement(ParticipantItem, { styles: styles, key: participant.userId, userId: participant.userId, displayName: displayName, me: myUserId ? participant.userId === myUserId : false, menuItems: menuItems, presence: presence, onRenderIcon: onRenderIcon, onRenderAvatar: onRenderAvatar, onClick: () => onParticipantClick === null || onParticipantClick === void 0 ? void 0 : onParticipantClick(participant), showParticipantOverflowTooltip: showParticipantOverflowTooltip }));
@@ -4735,6 +4738,15 @@ const displayNameStyle = {
4735
4738
  textOverflow: 'ellipsis',
4736
4739
  maxWidth: '100%'
4737
4740
  };
4741
+ /**
4742
+ * @private
4743
+ */
4744
+ const participantStateStyle = {
4745
+ textAlign: 'center',
4746
+ paddingTop: '0.5rem',
4747
+ fontWeight: 600,
4748
+ fontSize: '0.75rem'
4749
+ };
4738
4750
  /**
4739
4751
  * @private
4740
4752
  */
@@ -4774,9 +4786,26 @@ const DEFAULT_PERSONA_MAX_SIZE_PX = 100;
4774
4786
  // Coin min size is set PersonaSize.size32
4775
4787
  const DEFAULT_PERSONA_MIN_SIZE_PX = 32;
4776
4788
  const DefaultPlaceholder = (props) => {
4777
- const { text, noVideoAvailableAriaLabel, coinSize, styles, hidePersonaDetails } = props;
4789
+ const { text, noVideoAvailableAriaLabel, coinSize, hidePersonaDetails, participantState, strings } = props;
4790
+ const participantStateString = React__default['default'].useMemo(() => {
4791
+ if (!strings) {
4792
+ return;
4793
+ }
4794
+ if (participantState === 'Connecting') {
4795
+ return strings === null || strings === void 0 ? void 0 : strings.participantStateConnecting;
4796
+ }
4797
+ else if (participantState === 'Ringing') {
4798
+ return strings === null || strings === void 0 ? void 0 : strings.participantStateRinging;
4799
+ }
4800
+ else if (participantState === 'Hold') {
4801
+ return strings === null || strings === void 0 ? void 0 : strings.participantStateHold;
4802
+ }
4803
+ return;
4804
+ }, [participantState, strings]);
4778
4805
  return (React__default['default'].createElement(react.Stack, { className: react.mergeStyles({ position: 'absolute', height: '100%', width: '100%' }) },
4779
- React__default['default'].createElement(react.Persona, { styles: styles, coinSize: coinSize, hidePersonaDetails: hidePersonaDetails, text: text !== null && text !== void 0 ? text : '', initialsTextColor: "white", "aria-label": noVideoAvailableAriaLabel !== null && noVideoAvailableAriaLabel !== void 0 ? noVideoAvailableAriaLabel : '', showOverflowTooltip: false })));
4806
+ React__default['default'].createElement(react.Stack, { styles: defaultPersonaStyles },
4807
+ React__default['default'].createElement(react.Persona, { coinSize: coinSize, hidePersonaDetails: hidePersonaDetails, text: text !== null && text !== void 0 ? text : '', initialsTextColor: "white", "aria-label": noVideoAvailableAriaLabel !== null && noVideoAvailableAriaLabel !== void 0 ? noVideoAvailableAriaLabel : '', showOverflowTooltip: false }),
4808
+ participantStateString && React__default['default'].createElement(react.Text, { className: react.mergeStyles(participantStateStyle) }, participantStateString))));
4780
4809
  };
4781
4810
  const defaultPersonaStyles = { root: { margin: 'auto', maxHeight: '100%' } };
4782
4811
  /**
@@ -4787,7 +4816,13 @@ const defaultPersonaStyles = { root: { margin: 'auto', maxHeight: '100%' } };
4787
4816
  * @public
4788
4817
  */
4789
4818
  const VideoTile = (props) => {
4790
- const { children, displayName, initialsName, isMirrored, isMuted, onRenderPlaceholder, renderElement, showLabel = true, showMuteIndicator = true, styles, userId, noVideoAvailableAriaLabel, isSpeaking, personaMinSize = DEFAULT_PERSONA_MIN_SIZE_PX, personaMaxSize = DEFAULT_PERSONA_MAX_SIZE_PX } = props;
4819
+ const { children, displayName, initialsName, isMirrored, isMuted, onRenderPlaceholder, renderElement, showLabel = true, showMuteIndicator = true, styles, userId, noVideoAvailableAriaLabel, isSpeaking, personaMinSize = DEFAULT_PERSONA_MIN_SIZE_PX, personaMaxSize = DEFAULT_PERSONA_MAX_SIZE_PX,
4820
+ /* @conditional-compile-remove(one-to-n-calling) */
4821
+ /* @conditional-compile-remove(PSTN-calls) */
4822
+ participantState } = props;
4823
+ /* @conditional-compile-remove(one-to-n-calling) */
4824
+ // @conditional-compile-remove(PSTN-calls)
4825
+ const strings = Object.assign(Object.assign({}, useLocale$1().strings.videoTile), props.strings);
4791
4826
  const [personaSize, setPersonaSize] = React.useState(100);
4792
4827
  const videoTileRef = React.useRef(null);
4793
4828
  const theme = useTheme();
@@ -4810,7 +4845,10 @@ const VideoTile = (props) => {
4810
4845
  noVideoAvailableAriaLabel,
4811
4846
  coinSize: personaSize,
4812
4847
  styles: defaultPersonaStyles,
4813
- hidePersonaDetails: true
4848
+ hidePersonaDetails: true,
4849
+ /* @conditional-compile-remove(one-to-n-calling) */
4850
+ /* @conditional-compile-remove(PSTN-calls) */
4851
+ participantState: participantState
4814
4852
  };
4815
4853
  const videoHintWithBorderRadius = react.mergeStyles(videoHint, { borderRadius: theme.effects.roundedCorner4 });
4816
4854
  const tileInfoStyle = React.useMemo(() => react.mergeStyles(isVideoRendered ? videoHintWithBorderRadius : disabledVideoHint, getVideoTileOverrideColor(isVideoRendered, theme, 'neutralPrimary'), styles === null || styles === void 0 ? void 0 : styles.displayNameContainer), [isVideoRendered, videoHintWithBorderRadius, theme, styles === null || styles === void 0 ? void 0 : styles.displayNameContainer]);
@@ -4824,7 +4862,10 @@ const VideoTile = (props) => {
4824
4862
  borderRadius: theme.effects.roundedCorner4,
4825
4863
  border: `0.25rem solid ${isSpeaking ? theme.palette.themePrimary : 'transparent'}`
4826
4864
  }) }),
4827
- isVideoRendered ? (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(videoContainerStyles, isMirrored && { transform: 'scaleX(-1)' }, styles === null || styles === void 0 ? void 0 : styles.videoContainer) }, renderElement)) : (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(videoContainerStyles) }, onRenderPlaceholder ? (onRenderPlaceholder(userId !== null && userId !== void 0 ? userId : '', placeholderOptions, DefaultPlaceholder)) : (React__default['default'].createElement(DefaultPlaceholder, Object.assign({}, placeholderOptions))))),
4865
+ isVideoRendered ? (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(videoContainerStyles, isMirrored && { transform: 'scaleX(-1)' }, styles === null || styles === void 0 ? void 0 : styles.videoContainer) }, renderElement)) : (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(videoContainerStyles) }, onRenderPlaceholder ? (onRenderPlaceholder(userId !== null && userId !== void 0 ? userId : '', placeholderOptions, DefaultPlaceholder)) : (React__default['default'].createElement(DefaultPlaceholder, Object.assign({}, placeholderOptions, {
4866
+ /* @conditional-compile-remove(one-to-n-calling) */
4867
+ // @conditional-compile-remove(PSTN-calls)
4868
+ strings: strings }))))),
4828
4869
  showLabel && (displayName || (showMuteIndicator && isMuted)) && (React__default['default'].createElement(react.Stack, { horizontal: true, className: tileInfoContainerStyle },
4829
4870
  React__default['default'].createElement(react.Stack, { horizontal: true, className: tileInfoStyle },
4830
4871
  displayName && (React__default['default'].createElement(react.Text, { className: react.mergeStyles(displayNameStyle), title: displayName }, displayName)),
@@ -4843,7 +4884,10 @@ const VideoTile = (props) => {
4843
4884
  */
4844
4885
  const _RemoteVideoTile = React__default['default'].memo((props) => {
4845
4886
  const { isAvailable, isReceiving = true, // default to true to prevent any breaking change
4846
- isMuted, isSpeaking, isScreenSharingOn, onCreateRemoteStreamView, onDisposeRemoteStreamView, remoteVideoViewOptions, renderElement, userId, displayName, onRenderAvatar, showMuteIndicator } = props;
4887
+ isMuted, isSpeaking, isScreenSharingOn, onCreateRemoteStreamView, onDisposeRemoteStreamView, remoteVideoViewOptions, renderElement, userId, displayName, onRenderAvatar, showMuteIndicator,
4888
+ /* @conditional-compile-remove(one-to-n-calling) */
4889
+ /* @conditional-compile-remove(PSTN-calls) */
4890
+ state } = props;
4847
4891
  const remoteVideoStreamProps = React.useMemo(() => ({
4848
4892
  isMirrored: remoteVideoViewOptions === null || remoteVideoViewOptions === void 0 ? void 0 : remoteVideoViewOptions.isMirrored,
4849
4893
  isScreenSharingOn,
@@ -4876,7 +4920,10 @@ const _RemoteVideoTile = React__default['default'].memo((props) => {
4876
4920
  }
4877
4921
  return React__default['default'].createElement(StreamMedia, { videoStreamElement: renderElement, loadingState: isReceiving ? 'none' : 'loading' });
4878
4922
  }, [renderElement, isReceiving]);
4879
- return (React__default['default'].createElement(VideoTile, { key: userId, userId: userId, renderElement: renderVideoStreamElement, displayName: displayName, onRenderPlaceholder: onRenderAvatar, isMuted: isMuted, isSpeaking: isSpeaking, showMuteIndicator: showMuteIndicator, showLabel: props.showLabel, personaMinSize: props.personaMinSize }));
4923
+ return (React__default['default'].createElement(VideoTile, { key: userId, userId: userId, renderElement: renderVideoStreamElement, displayName: displayName, onRenderPlaceholder: onRenderAvatar, isMuted: isMuted, isSpeaking: isSpeaking, showMuteIndicator: showMuteIndicator, showLabel: props.showLabel, personaMinSize: props.personaMinSize,
4924
+ /* @conditional-compile-remove(one-to-n-calling) */
4925
+ /* @conditional-compile-remove(PSTN-calls) */
4926
+ participantState: state }));
4880
4927
  });
4881
4928
 
4882
4929
  // Copyright (c) Microsoft Corporation.
@@ -4996,8 +5043,8 @@ const ResponsiveHorizontalGallery = (props) => {
4996
5043
  */
4997
5044
  const calculateChildrenPerPage = (args) => {
4998
5045
  const { numberOfChildren, containerWidth, buttonWidthRem, childWidthRem, gapWidthRem } = args;
4999
- const childWidth = convertRemToPx(childWidthRem);
5000
- const gapWidth = convertRemToPx(gapWidthRem);
5046
+ const childWidth = _convertRemToPx(childWidthRem);
5047
+ const gapWidth = _convertRemToPx(gapWidthRem);
5001
5048
  /** First check how many children can fit in containerWidth.
5002
5049
  * __________________________________
5003
5050
  * | || |
@@ -5011,7 +5058,7 @@ const calculateChildrenPerPage = (args) => {
5011
5058
  if (numberOfChildren <= numberOfChildrenInContainer) {
5012
5059
  return numberOfChildrenInContainer;
5013
5060
  }
5014
- const buttonWidth = convertRemToPx(buttonWidthRem);
5061
+ const buttonWidth = _convertRemToPx(buttonWidthRem);
5015
5062
  /** We know we need to paginate. So we need to subtract the buttonWidth twice and gapWidth twice from
5016
5063
  * containerWidth to compute childrenSpace
5017
5064
  * <-----------containerWidth--------->
@@ -6518,7 +6565,7 @@ const generateDefaultDeviceMenuProps = (props, strings, isSelectCamAllowed = tru
6518
6565
  maxWidth: '95%'
6519
6566
  }
6520
6567
  },
6521
- preventDismissOnEvent
6568
+ preventDismissOnEvent: _preventDismissOnEvent
6522
6569
  }
6523
6570
  };
6524
6571
  const menuItemStyles = react.merge(buttonFlyoutItemStyles, (_b = (_a = props.styles) === null || _a === void 0 ? void 0 : _a.menuItemStyles) !== null && _b !== void 0 ? _b : {});
@@ -6958,7 +7005,7 @@ const ParticipantsButton = (props) => {
6958
7005
  styles: react.merge(participantsButtonMenuPropsStyle, styles === null || styles === void 0 ? void 0 : styles.menuStyles),
6959
7006
  items: [],
6960
7007
  calloutProps: {
6961
- preventDismissOnEvent
7008
+ preventDismissOnEvent: _preventDismissOnEvent
6962
7009
  }
6963
7010
  };
6964
7011
  if (participantCount > 0) {
@@ -6987,7 +7034,7 @@ const ParticipantsButton = (props) => {
6987
7034
  },
6988
7035
  // Disable dismiss on resize to work around a couple Fluent UI bugs
6989
7036
  // See reasoning in the props for the parent menu.
6990
- preventDismissOnEvent
7037
+ preventDismissOnEvent: _preventDismissOnEvent
6991
7038
  }
6992
7039
  },
6993
7040
  'data-ui-id': ids.participantButtonPeopleMenuItem
@@ -7156,7 +7203,7 @@ const DrawerMenuItem = (props) => {
7156
7203
  } }, props.secondaryText))),
7157
7204
  secondaryIcon && React__default['default'].createElement(react.Stack.Item, null, secondaryIcon)));
7158
7205
  };
7159
- const MenuItemIcon = (props) => (React__default['default'].createElement(react.FontIcon, Object.assign({ className: react.mergeStyles(iconStyles) }, props)));
7206
+ const MenuItemIcon = (props) => (React__default['default'].createElement(react.FontIcon, Object.assign({ className: react.mergeStyles(iconStyles$1) }, props)));
7160
7207
  const menuItemChildrenGap = { childrenGap: '0.5rem' };
7161
7208
  const drawerMenuItemRootStyles = (hoverBackground, fontSize) => (Object.assign(Object.assign({}, fontSize), { height: '3rem', lineHeight: '3rem', padding: '0rem 0.75rem', cursor: 'pointer', ':hover, :focus': {
7162
7209
  background: hoverBackground
@@ -7176,7 +7223,7 @@ const drawerMenuItemTextStyles = {
7176
7223
  whiteSpace: 'nowrap'
7177
7224
  }
7178
7225
  };
7179
- const iconStyles = {
7226
+ const iconStyles$1 = {
7180
7227
  // Vertically center icons in the menu item. Using line-height does not work for centering fluent SVG icons.
7181
7228
  display: 'flex',
7182
7229
  alignItems: 'center',
@@ -7571,7 +7618,7 @@ const buttonStyles = (theme) => ({
7571
7618
  const primaryContentStyles = (theme) => {
7572
7619
  return {
7573
7620
  fontSize: '1.25rem',
7574
- fontWeight: 600,
7621
+ fontWeight: theme.fonts.medium.fontWeight,
7575
7622
  color: `${theme.palette.neutralPrimary}`
7576
7623
  };
7577
7624
  };
@@ -7667,7 +7714,6 @@ const formatPhoneNumber = (phoneNumber) => {
7667
7714
  };
7668
7715
 
7669
7716
  // Copyright (c) Microsoft Corporation.
7670
- /* @conditional-compile-remove(dialpad) */
7671
7717
  const DialpadButton = (props) => {
7672
7718
  var _a, _b, _c, _d;
7673
7719
  const theme = react.useTheme();
@@ -7678,7 +7724,6 @@ const DialpadButton = (props) => {
7678
7724
  React__default['default'].createElement(react.Text, { className: react.mergeStyles(primaryContentStyles(theme), (_b = props.styles) === null || _b === void 0 ? void 0 : _b.primaryContent) }, props.primaryContent),
7679
7725
  React__default['default'].createElement(react.Text, { className: react.mergeStyles(secondaryContentStyles(theme), (_c = props.styles) === null || _c === void 0 ? void 0 : _c.secondaryContent) }, (_d = props.secondaryContent) !== null && _d !== void 0 ? _d : ' '))));
7680
7726
  };
7681
- /* @conditional-compile-remove(dialpad) */
7682
7727
  const dialPadButtonsDefault = [
7683
7728
  [
7684
7729
  { primaryContent: '1' },
@@ -7697,7 +7742,6 @@ const dialPadButtonsDefault = [
7697
7742
  ],
7698
7743
  [{ primaryContent: '*' }, { primaryContent: '0', secondaryContent: '+' }, { primaryContent: '#' }]
7699
7744
  ];
7700
- /* @conditional-compile-remove(dialpad) */
7701
7745
  const DtmfTones = [
7702
7746
  'Num1',
7703
7747
  'Num2',
@@ -7712,7 +7756,6 @@ const DtmfTones = [
7712
7756
  'Num0',
7713
7757
  'Pound'
7714
7758
  ];
7715
- /* @conditional-compile-remove(dialpad) */
7716
7759
  const DialpadContainer = (props) => {
7717
7760
  var _a, _b;
7718
7761
  const theme = react.useTheme();
@@ -7797,11 +7840,12 @@ const DialpadContainer = (props) => {
7797
7840
  const Dialpad = (props) => {
7798
7841
  /* @conditional-compile-remove(dialpad) */
7799
7842
  const localeStrings = useLocale$1().strings.dialpad;
7800
- /* @conditional-compile-remove(dialpad) */
7801
- const strings = Object.assign(Object.assign({}, localeStrings), props.strings);
7802
- return (React__default['default'].createElement(React__default['default'].Fragment, null,
7803
- /* @conditional-compile-remove(dialpad) */
7804
- React__default['default'].createElement(DialpadContainer, Object.assign({ strings: strings }, props))));
7843
+ const dialpadLocaleStringsTrampoline = () => {
7844
+ /* @conditional-compile-remove(dialpad) */
7845
+ return localeStrings;
7846
+ };
7847
+ const strings = Object.assign(Object.assign({}, dialpadLocaleStringsTrampoline()), props.strings);
7848
+ return React__default['default'].createElement(DialpadContainer, Object.assign({ strings: strings }, props));
7805
7849
  };
7806
7850
 
7807
7851
  // Copyright (c) Microsoft Corporation.
@@ -7849,15 +7893,15 @@ const _videoGalleryRemoteParticipantsMemo = (remoteParticipants) => {
7849
7893
  return participant.state !== 'InLobby';
7850
7894
  })
7851
7895
  .map((participant) => {
7852
- return memoizedFn(toFlatCommunicationIdentifier(participant.identifier), participant.isMuted, checkIsSpeaking(participant), participant.videoStreams, participant.displayName);
7896
+ return memoizedFn(toFlatCommunicationIdentifier(participant.identifier), participant.isMuted, checkIsSpeaking(participant), participant.videoStreams, participant.state, participant.displayName);
7853
7897
  });
7854
7898
  });
7855
7899
  };
7856
- const memoizedAllConvertRemoteParticipant = memoizeFnAll((userId, isMuted, isSpeaking, videoStreams, displayName) => {
7857
- return convertRemoteParticipantToVideoGalleryRemoteParticipant(userId, isMuted, isSpeaking, videoStreams, displayName);
7900
+ const memoizedAllConvertRemoteParticipant = memoizeFnAll((userId, isMuted, isSpeaking, videoStreams, state, displayName) => {
7901
+ return convertRemoteParticipantToVideoGalleryRemoteParticipant(userId, isMuted, isSpeaking, videoStreams, state, displayName);
7858
7902
  });
7859
7903
  /** @private */
7860
- const convertRemoteParticipantToVideoGalleryRemoteParticipant = (userId, isMuted, isSpeaking, videoStreams, displayName) => {
7904
+ const convertRemoteParticipantToVideoGalleryRemoteParticipant = (userId, isMuted, isSpeaking, videoStreams, state, displayName) => {
7861
7905
  const rawVideoStreamsArray = Object.values(videoStreams);
7862
7906
  let videoStream = undefined;
7863
7907
  let screenShareStream = undefined;
@@ -7884,7 +7928,10 @@ const convertRemoteParticipantToVideoGalleryRemoteParticipant = (userId, isMuted
7884
7928
  isSpeaking,
7885
7929
  videoStream,
7886
7930
  screenShareStream,
7887
- isScreenSharingOn: screenShareStream !== undefined && screenShareStream.isAvailable
7931
+ isScreenSharingOn: screenShareStream !== undefined && screenShareStream.isAvailable,
7932
+ /* @conditional-compile-remove(one-to-n-calling) */
7933
+ /* @conditional-compile-remove(PSTN-calls) */
7934
+ state: convertRemoteParticipantStateToVideoGalleryRemoteParticipantState(state)
7888
7935
  };
7889
7936
  };
7890
7937
  const convertRemoteVideoStreamToVideoGalleryStream = (stream) => {
@@ -7898,6 +7945,29 @@ const convertRemoteVideoStreamToVideoGalleryStream = (stream) => {
7898
7945
  renderElement: (_b = stream.view) === null || _b === void 0 ? void 0 : _b.target
7899
7946
  };
7900
7947
  };
7948
+ /* @conditional-compile-remove(one-to-n-calling) */
7949
+ /* @conditional-compile-remove(PSTN-calls) */
7950
+ /**
7951
+ * We convert the Communication Participant states to simpler states that can be used with VideoTiles/VideoGallery.
7952
+ */
7953
+ const convertRemoteParticipantStateToVideoGalleryRemoteParticipantState = (state) => {
7954
+ // `Idle` is the first state of the participant.
7955
+ if (state === 'Idle' || state === 'Connecting') {
7956
+ return 'Connecting';
7957
+ }
7958
+ // `EarlyMedia` is a state when the media is played before a participant connects to the call.
7959
+ // It occurs immediately after the `Connecting` state.
7960
+ if (state === 'EarlyMedia' || state === 'Ringing') {
7961
+ return 'Ringing';
7962
+ }
7963
+ if (state === 'Hold') {
7964
+ return 'Hold';
7965
+ }
7966
+ if (state === 'Connected') {
7967
+ return 'Connected';
7968
+ }
7969
+ return;
7970
+ };
7901
7971
 
7902
7972
  // Copyright (c) Microsoft Corporation.
7903
7973
  /**
@@ -7924,7 +7994,7 @@ const videoGallerySelector = reselect.createSelector([
7924
7994
  const noRemoteParticipants = [];
7925
7995
  return {
7926
7996
  screenShareParticipant: screenShareRemoteParticipant
7927
- ? convertRemoteParticipantToVideoGalleryRemoteParticipant(toFlatCommunicationIdentifier(screenShareRemoteParticipant.identifier), screenShareRemoteParticipant.isMuted, checkIsSpeaking(screenShareRemoteParticipant), screenShareRemoteParticipant.videoStreams, screenShareRemoteParticipant.displayName)
7997
+ ? convertRemoteParticipantToVideoGalleryRemoteParticipant(toFlatCommunicationIdentifier(screenShareRemoteParticipant.identifier), screenShareRemoteParticipant.isMuted, checkIsSpeaking(screenShareRemoteParticipant), screenShareRemoteParticipant.videoStreams, screenShareRemoteParticipant.state, screenShareRemoteParticipant.displayName)
7928
7998
  : undefined,
7929
7999
  localParticipant: {
7930
8000
  userId: identifier,
@@ -12517,7 +12587,13 @@ const COMPOSITE_ONLY_ICONS = {
12517
12587
  NoticePageLeftCall: React__default['default'].createElement(reactIcons.CallEnd20Filled, null),
12518
12588
  NoticePageRemovedFromCall: React__default['default'].createElement(reactIcons.Info20Filled, null),
12519
12589
  /* @conditional-compile-remove(file-sharing) */
12520
- SendBoxAttachFile: React__default['default'].createElement(reactIcons.Attach20Regular, null)
12590
+ SendBoxAttachFile: React__default['default'].createElement(reactIcons.Attach20Regular, null),
12591
+ /* @conditional-compile-remove(PSTN-calls) */
12592
+ PeoplePaneAddPerson: React__default['default'].createElement(reactIcons.PersonAdd20Regular, null),
12593
+ /* @conditional-compile-remove(PSTN-calls) */
12594
+ PeoplePaneOpenDialpad: React__default['default'].createElement(reactIcons.Dialpad20Regular, null),
12595
+ /* @conditional-compile-remove(PSTN-calls) */
12596
+ DialpadStartCall: React__default['default'].createElement(reactIcons.Call20Regular, null)
12521
12597
  };
12522
12598
  /**
12523
12599
  * The default set of icons that are available to used in the Composites.
@@ -12550,7 +12626,7 @@ const CallCompositeIcon = (props) => (React__default['default'].createElement(re
12550
12626
  */
12551
12627
  const CallWithChatCompositeIcon = (props) => (React__default['default'].createElement(react.FontIcon, Object.assign({}, props)));
12552
12628
 
12553
- 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",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",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",soundLabel:"Sound",startCallButtonLabel:"Start call"};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",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",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back"};var en_US = {call:call$d,chat:chat$d,callWithChat:callWithChat$d};
12629
+ 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",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",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",soundLabel:"Sound",startCallButtonLabel:"Start call",openDialpadButtonLabel:"Dial phone number",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close Dialpad"};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",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"};var en_US = {call:call$d,chat:chat$d,callWithChat:callWithChat$d};
12554
12630
 
12555
12631
  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};
12556
12632
 
@@ -15155,8 +15231,324 @@ const copyLinkButtonStyles = {
15155
15231
  /**
15156
15232
  * @private
15157
15233
  */
15158
- const linkIconStyles = { marginRight: '0.5rem' };
15234
+ const themedCopyLinkButtonStyles$1 = (mobileView, theme) => ({
15235
+ root: {
15236
+ minHeight: mobileView ? '3rem' : '2.5rem',
15237
+ borderRadius: mobileView ? theme.effects.roundedCorner6 : theme.effects.roundedCorner4
15238
+ }
15239
+ });
15240
+
15241
+ // Copyright (c) Microsoft Corporation.
15242
+ // Licensed under the MIT license.
15243
+ /**
15244
+ * Convert IContextualMenuItem to _DrawerMenuItemProps
15245
+ * @param contextualMenu - IContextualMenuItem to convert
15246
+ * @param onDrawerMenuItemClick - callback to call when converted DrawerMenuItem is clicked
15247
+ * @returns DrawerMenuItem
15248
+ * @private
15249
+ */
15250
+ const convertContextualMenuItemToDrawerMenuItem = (contextualMenu, onDrawerMenuItemClick) => {
15251
+ return {
15252
+ itemKey: contextualMenu.key,
15253
+ onItemClick: () => {
15254
+ var _a;
15255
+ (_a = contextualMenu.onClick) === null || _a === void 0 ? void 0 : _a.call(contextualMenu);
15256
+ onDrawerMenuItemClick();
15257
+ },
15258
+ iconProps: contextualMenu.iconProps,
15259
+ text: contextualMenu.text,
15260
+ disabled: contextualMenu.disabled
15261
+ };
15262
+ };
15263
+
15264
+ // Copyright (c) Microsoft Corporation.
15265
+ // Licensed under the MIT license.
15266
+ /**
15267
+ * @private
15268
+ */
15269
+ const themedCopyLinkButtonStyles = (theme, mobileView) => ({
15270
+ root: {
15271
+ minHeight: mobileView ? '3rem' : '2.5rem',
15272
+ borderRadius: mobileView ? theme.effects.roundedCorner6 : theme.effects.roundedCorner4,
15273
+ width: '100%'
15274
+ },
15275
+ textContainer: {
15276
+ display: 'contents'
15277
+ }
15278
+ });
15279
+ /**
15280
+ * @private
15281
+ */
15282
+ const themedMenuStyle = (theme) => ({
15283
+ root: {
15284
+ borderRadius: theme.effects.roundedCorner6
15285
+ }
15286
+ });
15287
+ /**
15288
+ * @private
15289
+ */
15290
+ const iconStyles = {
15291
+ // overwrite default line height which results in icons having different size
15292
+ lineHeight: '0',
15293
+ width: '1.125rem'
15294
+ };
15295
+
15296
+ // Copyright (c) Microsoft Corporation.
15297
+ // Licensed under the MIT license.
15298
+ /**
15299
+ * @private
15300
+ */
15301
+ const themedDialpadModelStyle = (theme) => ({
15302
+ main: {
15303
+ borderRadius: theme.effects.roundedCorner6,
15304
+ padding: '1rem'
15305
+ }
15306
+ });
15307
+ /**
15308
+ * @private
15309
+ */
15310
+ const themedDialpadStyle = (isMobile, theme) => ({
15311
+ root: {
15312
+ padding: 0,
15313
+ marginLeft: 0,
15314
+ marginRight: 0,
15315
+ maxWidth: '100%'
15316
+ },
15317
+ textField: {
15318
+ root: {
15319
+ borderBottom: `1px solid ${theme.palette.neutralTertiaryAlt}`
15320
+ },
15321
+ field: {
15322
+ backgroundColor: theme.palette.white,
15323
+ fontSize: theme.fonts.large.fontSize,
15324
+ padding: '1.063rem 0.5rem',
15325
+ textAlign: isMobile ? 'center' : 'left',
15326
+ paddingTop: 0
15327
+ }
15328
+ },
15329
+ primaryContent: {
15330
+ color: theme.palette.themeDarkAlt
15331
+ }
15332
+ });
15333
+ /**
15334
+ * @private
15335
+ */
15336
+ const themedCallButtonStyle = (theme) => ({
15337
+ root: {
15338
+ fontWeight: theme.fonts.medium.fontWeight,
15339
+ fontSize: theme.fonts.medium.fontSize,
15340
+ width: '100%',
15341
+ height: '2.5rem',
15342
+ borderRadius: 3,
15343
+ padding: '0.625rem'
15344
+ },
15345
+ textContainer: {
15346
+ display: 'contents'
15347
+ }
15348
+ });
15159
15349
 
15350
+ // Copyright (c) Microsoft Corporation.
15351
+ // Licensed under the MIT license.
15352
+ /**
15353
+ * @private
15354
+ */
15355
+ const compositeOuterContainerStyles = {
15356
+ root: {
15357
+ width: '100%',
15358
+ // Create a new stacking context so that DrawerMenu can be positioned absolutely.
15359
+ position: 'relative'
15360
+ }
15361
+ };
15362
+ /** @private */
15363
+ const callCompositeContainerStyles = {
15364
+ root: {
15365
+ // Start a new stacking context so that any `position:absolute` elements
15366
+ // inside the call composite do not compete with its siblings.
15367
+ position: 'relative'
15368
+ }
15369
+ };
15370
+ /** @private */
15371
+ const controlBarContainerStyles = {
15372
+ root: {
15373
+ // Start a new stacking context so that any `position:absolute` elements
15374
+ // inside the control bar do not compete with its siblings.
15375
+ position: 'relative'
15376
+ }
15377
+ };
15378
+ /** @private */
15379
+ const drawerContainerStyles$1 = {
15380
+ root: {
15381
+ position: 'absolute',
15382
+ top: 0,
15383
+ left: 0,
15384
+ width: '100%',
15385
+ height: '100%',
15386
+ // Any zIndex > 0 will work because this is the only absolutely
15387
+ // positioned element in the container.
15388
+ zIndex: 1
15389
+ }
15390
+ };
15391
+
15392
+ // Copyright (c) Microsoft Corporation.
15393
+ /** @private */
15394
+ const CallingDialpad = (props) => {
15395
+ const { strings, isMobile, showDialpad, onDismissDialpad } = props;
15396
+ const [textFieldInput, setTextFieldInput] = React.useState('');
15397
+ const theme = react.useTheme();
15398
+ const onDismissTriggered = () => {
15399
+ setTextFieldInput('');
15400
+ onDismissDialpad();
15401
+ };
15402
+ const onClickCall = () => {
15403
+ //place holder for adding calling functionality
15404
+ console.log(textFieldInput);
15405
+ };
15406
+ const dialpadModelStyle = React.useMemo(() => themedDialpadModelStyle(theme), [theme]);
15407
+ const dialpadStyle = React.useMemo(() => themedDialpadStyle(isMobile, theme), [theme, isMobile]);
15408
+ const callButtonStyle = React.useMemo(() => themedCallButtonStyle(theme), [theme]);
15409
+ const dialpadComponent = () => {
15410
+ return (React__default['default'].createElement(React__default['default'].Fragment, null,
15411
+ React__default['default'].createElement(Dialpad, { onChange: setTextFieldInput, styles: dialpadStyle }),
15412
+ React__default['default'].createElement(react.PrimaryButton, { text: strings.dialpadStartCallButtonLabel, onRenderIcon: () => DialpadStartCallIconTrampoline(), onClick: onClickCall, styles: callButtonStyle, disabled: textFieldInput === '' })));
15413
+ };
15414
+ if (isMobile) {
15415
+ return (React__default['default'].createElement(react.Stack, { "data-ui-id": "call-with-chat-composite-dialpad" }, showDialpad && (React__default['default'].createElement(react.Stack, { styles: drawerContainerStyles$1 },
15416
+ React__default['default'].createElement(_DrawerSurface, { onLightDismiss: onDismissTriggered },
15417
+ React__default['default'].createElement(react.Stack, { style: { padding: '16px' } }, dialpadComponent()))))));
15418
+ }
15419
+ return (React__default['default'].createElement(React__default['default'].Fragment, null, React__default['default'].createElement(react.Modal, { titleAriaId: strings.dialpadModalAriaLabel, isOpen: showDialpad, onDismiss: onDismissTriggered, isBlocking: true, styles: dialpadModelStyle, "data-ui-id": "call-with-chat-composite-dialpad" },
15420
+ React__default['default'].createElement(react.Stack, { horizontal: true, horizontalAlign: "space-between", verticalAlign: "center" },
15421
+ React__default['default'].createElement(react.Text, null, strings.dialpadModalTitle),
15422
+ React__default['default'].createElement(react.IconButton, { iconProps: { iconName: 'Cancel' }, ariaLabel: strings.dialpadCloseModalButtonAriaLabel, onClick: onDismissTriggered, style: { color: 'black' } })),
15423
+ React__default['default'].createElement(react.Stack, null, dialpadComponent()))));
15424
+ };
15425
+ function DialpadStartCallIconTrampoline() {
15426
+ /* @conditional-compile-remove(PSTN-calls) */
15427
+ return React__default['default'].createElement(CallWithChatCompositeIcon, { iconName: "DialpadStartCall" });
15428
+ }
15429
+
15430
+ // Copyright (c) Microsoft Corporation.
15431
+ const mainScreenContainerStyle = {
15432
+ height: '100%',
15433
+ width: '100%'
15434
+ };
15435
+ /**
15436
+ * @private
15437
+ */
15438
+ const mainScreenContainerStyleDesktop = react.mergeStyles(Object.assign(Object.assign({}, mainScreenContainerStyle), { minWidth: '30rem', minHeight: '22rem' // max height of min-height of composite pages (Configuration page)
15439
+ }));
15440
+ /**
15441
+ * @private
15442
+ */
15443
+ const mainScreenContainerStyleMobile = react.mergeStyles(Object.assign(Object.assign({}, mainScreenContainerStyle), { minWidth: '17.5rem', minHeight: '13rem' // max height of min-height of composite pages (Configuration page & Call page)
15444
+ }));
15445
+ /** @private */
15446
+ const drawerContainerStyles = {
15447
+ root: {
15448
+ position: 'absolute',
15449
+ top: 0,
15450
+ left: 0,
15451
+ width: '100%',
15452
+ height: '100%',
15453
+ // Any zIndex > 0 will work because this is the only absolutely
15454
+ // positioned element in the container.
15455
+ zIndex: 1
15456
+ }
15457
+ };
15458
+
15459
+ // Copyright (c) Microsoft Corporation.
15460
+ /** @private */
15461
+ const AddPeopleDropdown = (props) => {
15462
+ const theme = react.useTheme();
15463
+ const { inviteLink, strings, mobileView } = props;
15464
+ const [showDialpad, setShowDialpad] = React.useState(false);
15465
+ const menuStyleThemed = React.useMemo(() => themedMenuStyle(theme), [theme]);
15466
+ const copyLinkButtonStylesThemed = React.useMemo(() => themedCopyLinkButtonStyles(theme, mobileView), [mobileView, theme]);
15467
+ const defaultMenuProps = React.useMemo(() => {
15468
+ const menuProps = {
15469
+ styles: menuStyleThemed,
15470
+ items: [],
15471
+ useTargetWidth: true,
15472
+ calloutProps: {
15473
+ preventDismissOnEvent: _preventDismissOnEvent
15474
+ }
15475
+ };
15476
+ if (inviteLink) {
15477
+ menuProps.items.push({
15478
+ key: 'InviteLinkKey',
15479
+ text: strings.copyInviteLinkButtonLabel,
15480
+ itemProps: { styles: copyLinkButtonStylesThemed },
15481
+ iconProps: { iconName: 'Link', style: iconStyles },
15482
+ onClick: () => copy__default['default'](inviteLink)
15483
+ });
15484
+ }
15485
+ menuProps.items.push({
15486
+ key: 'DialpadKey',
15487
+ text: strings.openDialpadButtonLabel,
15488
+ itemProps: { styles: copyLinkButtonStylesThemed },
15489
+ iconProps: { iconName: PeoplePaneOpenDialpadIconNameTrampoline(), style: iconStyles },
15490
+ onClick: () => setShowDialpad(true),
15491
+ 'data-ui-id': 'call-with-chat-composite-dial-phone-number-button'
15492
+ });
15493
+ return menuProps;
15494
+ }, [
15495
+ strings.copyInviteLinkButtonLabel,
15496
+ strings.openDialpadButtonLabel,
15497
+ copyLinkButtonStylesThemed,
15498
+ inviteLink,
15499
+ menuStyleThemed
15500
+ ]);
15501
+ const onDismissDialpad = () => {
15502
+ setShowDialpad(false);
15503
+ };
15504
+ const [addPeopleDrawerMenuItems, setAddPeopleDrawerMenuItems] = React.useState([]);
15505
+ const setDrawerMenuItemsForAddPeople = React.useMemo(() => {
15506
+ return () => {
15507
+ const drawerMenuItems = defaultMenuProps.items.map((contextualMenu) => convertContextualMenuItemToDrawerMenuItem(contextualMenu, () => setAddPeopleDrawerMenuItems([])));
15508
+ setAddPeopleDrawerMenuItems(drawerMenuItems);
15509
+ };
15510
+ }, [defaultMenuProps, setAddPeopleDrawerMenuItems]);
15511
+ if (mobileView) {
15512
+ return (React__default['default'].createElement(react.Stack, null,
15513
+ React__default['default'].createElement(react.Stack.Item, { styles: copyLinkButtonContainerStyles },
15514
+ React__default['default'].createElement(react.PrimaryButton, { onClick: setDrawerMenuItemsForAddPeople, styles: copyLinkButtonStylesThemed, onRenderIcon: () => PeoplePaneAddPersonIconTrampoline(), text: strings.peoplePaneAddPeopleButtonLabel, "data-ui-id": "call-with-chat-composite-add-people-button" })),
15515
+ addPeopleDrawerMenuItems.length > 0 && (React__default['default'].createElement(react.Stack, { styles: drawerContainerStyles, "data-ui-id": "call-with-chat-composite-add-people-dropdown" },
15516
+ React__default['default'].createElement(_DrawerMenu, { onLightDismiss: () => setAddPeopleDrawerMenuItems([]), items: addPeopleDrawerMenuItems }))),
15517
+ React__default['default'].createElement(CallingDialpad, { isMobile: true, strings: strings, showDialpad: showDialpad, onDismissDialpad: onDismissDialpad })));
15518
+ }
15519
+ return (React__default['default'].createElement(React__default['default'].Fragment, null, React__default['default'].createElement(react.Stack, null,
15520
+ React__default['default'].createElement(CallingDialpad, { isMobile: false, strings: strings, showDialpad: showDialpad, onDismissDialpad: onDismissDialpad }),
15521
+ React__default['default'].createElement(react.Stack, { styles: copyLinkButtonStackStyles },
15522
+ React__default['default'].createElement(react.DefaultButton, { onRenderIcon: () => PeoplePaneAddPersonIconTrampoline(), text: strings.peoplePaneAddPeopleButtonLabel, menuProps: defaultMenuProps, styles: copyLinkButtonStylesThemed, "data-ui-id": "call-with-chat-composite-add-people-button" })))));
15523
+ };
15524
+ function PeoplePaneOpenDialpadIconNameTrampoline() {
15525
+ /* @conditional-compile-remove(PSTN-calls) */
15526
+ return 'PeoplePaneOpenDialpad';
15527
+ }
15528
+ function PeoplePaneAddPersonIconTrampoline() {
15529
+ /* @conditional-compile-remove(PSTN-calls) */
15530
+ return React__default['default'].createElement(CallWithChatCompositeIcon, { iconName: "PeoplePaneAddPerson" });
15531
+ }
15532
+
15533
+ // Copyright (c) Microsoft Corporation.
15534
+ /** @private */
15535
+ const AddPeopleButton = (props) => {
15536
+ const { inviteLink, mobileView, strings, participantList } = props;
15537
+ const theme = react.useTheme();
15538
+ React.useMemo(() => react.concatStyleSets(copyLinkButtonStyles, themedCopyLinkButtonStyles$1(mobileView, theme)), [mobileView, theme]);
15539
+ /* @conditional-compile-remove(PSTN-calls) */
15540
+ if (mobileView) {
15541
+ return React__default['default'].createElement(AddPeopleDropdown, { strings: strings, mobileView: mobileView, inviteLink: inviteLink });
15542
+ }
15543
+ else {
15544
+ return (React__default['default'].createElement(react.Stack, { tokens: peoplePaneContainerTokens },
15545
+ React__default['default'].createElement(AddPeopleDropdown, { strings: strings, mobileView: mobileView, inviteLink: inviteLink }),
15546
+ participantList));
15547
+ }
15548
+ };
15549
+
15550
+ // Copyright (c) Microsoft Corporation.
15551
+ // Licensed under the MIT license.
15160
15552
  var __awaiter$8 = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
15161
15553
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15162
15554
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -15199,23 +15591,12 @@ const PeoplePaneContent = (props) => {
15199
15591
  onParticipantClick: props.mobileView ? setDrawerMenuItemsForParticipant : undefined });
15200
15592
  }, [participantListDefaultProps, props.mobileView, setDrawerMenuItemsForParticipant, onRemoveParticipant]);
15201
15593
  const participantList = (React__default['default'].createElement(ParticipantListWithHeading, { isMobile: props.mobileView, participantListProps: participantListProps, onFetchAvatarPersonaData: props.onFetchAvatarPersonaData, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, title: props.strings.peoplePaneSubTitle }));
15202
- const theme = react.useTheme();
15203
- const copyLinkButtonStylesThemed = React.useMemo(() => react.concatStyleSets(copyLinkButtonStyles, {
15204
- root: {
15205
- minHeight: props.mobileView ? '3rem' : '2.5rem',
15206
- borderRadius: props.mobileView ? theme.effects.roundedCorner6 : theme.effects.roundedCorner4
15207
- }
15208
- }), [props.mobileView, theme.effects.roundedCorner6, theme.effects.roundedCorner4]);
15209
15594
  if (props.mobileView) {
15210
15595
  return (React__default['default'].createElement(react.Stack, { verticalFill: true, styles: peoplePaneContainerStyle, tokens: peoplePaneContainerTokens },
15211
15596
  React__default['default'].createElement(react.Stack.Item, { grow: true, styles: participantListContainerStyles }, participantList),
15212
- inviteLink && (React__default['default'].createElement(react.Stack.Item, { styles: copyLinkButtonContainerStyles },
15213
- React__default['default'].createElement(react.PrimaryButton, { onClick: () => copy__default['default'](inviteLink), styles: copyLinkButtonStylesThemed, onRenderIcon: () => React__default['default'].createElement(CallWithChatCompositeIcon, { iconName: "Link", style: linkIconStyles }), text: strings.copyInviteLinkButtonLabel })))));
15597
+ React__default['default'].createElement(AddPeopleButton, { inviteLink: inviteLink, mobileView: props.mobileView, participantList: participantList, strings: strings })));
15214
15598
  }
15215
- return (React__default['default'].createElement(react.Stack, { tokens: peoplePaneContainerTokens },
15216
- inviteLink && (React__default['default'].createElement(react.Stack, { styles: copyLinkButtonStackStyles },
15217
- React__default['default'].createElement(react.DefaultButton, { text: strings.copyInviteLinkButtonLabel, onRenderIcon: () => React__default['default'].createElement(CallWithChatCompositeIcon, { iconName: "Link", style: linkIconStyles }), onClick: () => copy__default['default'](inviteLink), styles: copyLinkButtonStylesThemed }))),
15218
- participantList));
15599
+ return (React__default['default'].createElement(AddPeopleButton, { inviteLink: inviteLink, mobileView: props.mobileView, participantList: participantList, strings: strings }));
15219
15600
  };
15220
15601
  /**
15221
15602
  * Create default contextual menu items for particant
@@ -15244,54 +15625,6 @@ const createDefaultContextualMenuItems = (participant, strings, onRemoveParticip
15244
15625
  }
15245
15626
  return menuItems;
15246
15627
  };
15247
- /**
15248
- * Convert IContextualMenuItem to _DrawerMenuItemProps
15249
- * @param contextualMenu - IContextualMenuItem to convert
15250
- * @param onDrawerMenuItemClick - callback to call when converted DrawerMenuItem is clicked
15251
- * @returns DrawerMenuItem
15252
- */
15253
- const convertContextualMenuItemToDrawerMenuItem = (contextualMenu, onDrawerMenuItemClick) => {
15254
- return {
15255
- itemKey: contextualMenu.key,
15256
- onItemClick: () => {
15257
- var _a;
15258
- (_a = contextualMenu.onClick) === null || _a === void 0 ? void 0 : _a.call(contextualMenu);
15259
- onDrawerMenuItemClick();
15260
- },
15261
- iconProps: contextualMenu.iconProps,
15262
- text: contextualMenu.text,
15263
- disabled: contextualMenu.disabled
15264
- };
15265
- };
15266
-
15267
- // Copyright (c) Microsoft Corporation.
15268
- const mainScreenContainerStyle = {
15269
- height: '100%',
15270
- width: '100%'
15271
- };
15272
- /**
15273
- * @private
15274
- */
15275
- const mainScreenContainerStyleDesktop = react.mergeStyles(Object.assign(Object.assign({}, mainScreenContainerStyle), { minWidth: '30rem', minHeight: '22rem' // max height of min-height of composite pages (Configuration page)
15276
- }));
15277
- /**
15278
- * @private
15279
- */
15280
- const mainScreenContainerStyleMobile = react.mergeStyles(Object.assign(Object.assign({}, mainScreenContainerStyle), { minWidth: '17.5rem', minHeight: '13rem' // max height of min-height of composite pages (Configuration page & Call page)
15281
- }));
15282
- /** @private */
15283
- const drawerContainerStyles$1 = {
15284
- root: {
15285
- position: 'absolute',
15286
- top: 0,
15287
- left: 0,
15288
- width: '100%',
15289
- height: '100%',
15290
- // Any zIndex > 0 will work because this is the only absolutely
15291
- // positioned element in the container.
15292
- zIndex: 1
15293
- }
15294
- };
15295
15628
 
15296
15629
  // Copyright (c) Microsoft Corporation.
15297
15630
  /**
@@ -15479,7 +15812,7 @@ const CallPane = (props) => {
15479
15812
  React__default['default'].createElement(CallAdapterProvider, { adapter: props.callAdapter },
15480
15813
  React__default['default'].createElement(PeoplePaneContent, Object.assign({}, props, { onRemoveParticipant: removeParticipantFromCall, setDrawerMenuItems: setDrawerMenuItems, strings: strings }))))))),
15481
15814
  props.mobileView && (React__default['default'].createElement(ModalLocalAndRemotePIP, { callAdapter: props.callAdapter, modalLayerHostId: props.modalLayerHostId, hidden: hidden, styles: pipStyles, minDragPosition: minMaxDragPosition.minDragPosition, maxDragPosition: minMaxDragPosition.maxDragPosition })),
15482
- drawerMenuItems.length > 0 && (React__default['default'].createElement(react.Stack, { styles: drawerContainerStyles$1 },
15815
+ drawerMenuItems.length > 0 && (React__default['default'].createElement(react.Stack, { styles: drawerContainerStyles },
15483
15816
  React__default['default'].createElement(_DrawerMenu, { onLightDismiss: () => setDrawerMenuItems([]), items: drawerMenuItems })))));
15484
15817
  };
15485
15818
 
@@ -17698,48 +18031,6 @@ const getDesktopEndCallButtonStyles = (theme) => {
17698
18031
  };
17699
18032
  const isEnabled$1 = (option) => option !== false;
17700
18033
 
17701
- // Copyright (c) Microsoft Corporation.
17702
- // Licensed under the MIT license.
17703
- /**
17704
- * @private
17705
- */
17706
- const compositeOuterContainerStyles = {
17707
- root: {
17708
- width: '100%',
17709
- // Create a new stacking context so that DrawerMenu can be positioned absolutely.
17710
- position: 'relative'
17711
- }
17712
- };
17713
- /** @private */
17714
- const callCompositeContainerStyles = {
17715
- root: {
17716
- // Start a new stacking context so that any `position:absolute` elements
17717
- // inside the call composite do not compete with its siblings.
17718
- position: 'relative'
17719
- }
17720
- };
17721
- /** @private */
17722
- const controlBarContainerStyles = {
17723
- root: {
17724
- // Start a new stacking context so that any `position:absolute` elements
17725
- // inside the control bar do not compete with its siblings.
17726
- position: 'relative'
17727
- }
17728
- };
17729
- /** @private */
17730
- const drawerContainerStyles = {
17731
- root: {
17732
- position: 'absolute',
17733
- top: 0,
17734
- left: 0,
17735
- width: '100%',
17736
- height: '100%',
17737
- // Any zIndex > 0 will work because this is the only absolutely
17738
- // positioned element in the container.
17739
- zIndex: 1
17740
- }
17741
- };
17742
-
17743
18034
  // Copyright (c) Microsoft Corporation.
17744
18035
  // Licensed under the MIT license.
17745
18036
  var __awaiter$3 = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -18157,7 +18448,7 @@ const CallWithChatPane = (props) => {
18157
18448
  React__default['default'].createElement(react.Stack, { styles: props.activePane === 'chat' ? availableSpaceStyles : hiddenStyles }, chatContent),
18158
18449
  React__default['default'].createElement(react.Stack, { styles: props.activePane === 'people' ? availableSpaceStyles : hiddenStyles }, peopleContent)))),
18159
18450
  props.mobileView && (React__default['default'].createElement(ModalLocalAndRemotePIP, { callAdapter: props.callAdapter, modalLayerHostId: props.modalLayerHostId, hidden: hidden, styles: pipStyles, minDragPosition: minMaxDragPosition.minDragPosition, maxDragPosition: minMaxDragPosition.maxDragPosition })),
18160
- drawerMenuItems.length > 0 && (React__default['default'].createElement(react.Stack, { styles: drawerContainerStyles },
18451
+ drawerMenuItems.length > 0 && (React__default['default'].createElement(react.Stack, { styles: drawerContainerStyles$1 },
18161
18452
  React__default['default'].createElement(_DrawerMenu, { onLightDismiss: () => setDrawerMenuItems([]), items: drawerMenuItems })))));
18162
18453
  };
18163
18454
 
@@ -18270,7 +18561,7 @@ const CallWithChatScreen = (props) => {
18270
18561
  React__default['default'].createElement(CallWithChatControlBar, { callAdapter: callAdapter, chatAdapter: chatProps.adapter, chatButtonChecked: activePane === 'chat', onChatButtonClicked: toggleChat, peopleButtonChecked: activePane === 'people', onPeopleButtonClicked: togglePeople, onMoreButtonClicked: onMoreButtonClicked, mobileView: mobileView, disableButtonsForLobbyPage: isInLobbyOrConnecting, callControls: props.callControls, containerHeight: containerHeight, containerWidth: containerWidth })))),
18271
18562
  showControlBar && showDrawer && (React__default['default'].createElement(ChatAdapterProvider, { adapter: chatProps.adapter },
18272
18563
  React__default['default'].createElement(CallAdapterProvider, { adapter: callAdapter },
18273
- React__default['default'].createElement(react.Stack, { styles: drawerContainerStyles },
18564
+ React__default['default'].createElement(react.Stack, { styles: drawerContainerStyles$1 },
18274
18565
  React__default['default'].createElement(PreparedMoreDrawer, { callControls: props.callControls, onLightDismiss: closeDrawer, onPeopleButtonClicked: onMoreDrawerPeopleClicked }))))),
18275
18566
  // This layer host is for ModalLocalAndRemotePIP in CallWithChatPane. This LayerHost cannot be inside the CallWithChatPane
18276
18567
  // because when the CallWithChatPane is hidden, ie. style property display is 'none', it takes up no space. This causes problems when dragging