@azure/communication-react 1.4.3-alpha-202301130014.0 → 1.4.3-alpha-202301150014.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 (49) hide show
  1. package/dist/communication-react.d.ts +0 -3
  2. package/dist/dist-cjs/communication-react/index.js +293 -179
  3. package/dist/dist-cjs/communication-react/index.js.map +1 -1
  4. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  5. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  6. package/dist/dist-esm/calling-component-bindings/src/participantListSelector.js +13 -4
  7. package/dist/dist-esm/calling-component-bindings/src/participantListSelector.js.map +1 -1
  8. package/dist/dist-esm/calling-component-bindings/src/utils/callUtils.d.ts +7 -0
  9. package/dist/dist-esm/calling-component-bindings/src/utils/callUtils.js +9 -0
  10. package/dist/dist-esm/calling-component-bindings/src/utils/callUtils.js.map +1 -1
  11. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js +11 -4
  12. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js.map +1 -1
  13. package/dist/dist-esm/react-components/src/components/ParticipantItem.d.ts +0 -2
  14. package/dist/dist-esm/react-components/src/components/ParticipantItem.js +6 -10
  15. package/dist/dist-esm/react-components/src/components/ParticipantItem.js.map +1 -1
  16. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.d.ts +1 -1
  17. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.js +18 -4
  18. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.js.map +1 -1
  19. package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js +16 -3
  20. package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js.map +1 -1
  21. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.js +18 -5
  22. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.js.map +1 -1
  23. package/dist/dist-esm/react-components/src/components/VideoGallery/PinnedParticipantsLayout.js +7 -4
  24. package/dist/dist-esm/react-components/src/components/VideoGallery/PinnedParticipantsLayout.js.map +1 -1
  25. package/dist/dist-esm/react-components/src/components/VideoGallery/ScrollableHorizontalGallery.d.ts +9 -0
  26. package/dist/dist-esm/react-components/src/components/VideoGallery/ScrollableHorizontalGallery.js +18 -0
  27. package/dist/dist-esm/react-components/src/components/VideoGallery/ScrollableHorizontalGallery.js.map +1 -0
  28. package/dist/dist-esm/react-components/src/components/VideoGallery/VideoGalleryResponsiveHorizontalGallery.js +2 -3
  29. package/dist/dist-esm/react-components/src/components/VideoGallery/VideoGalleryResponsiveHorizontalGallery.js.map +1 -1
  30. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/Layout.styles.d.ts +6 -0
  31. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/Layout.styles.js +9 -0
  32. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/Layout.styles.js.map +1 -0
  33. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/ScrollableHorizontalGallery.style.d.ts +10 -0
  34. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/ScrollableHorizontalGallery.style.js +29 -0
  35. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/ScrollableHorizontalGallery.style.js.map +1 -0
  36. package/dist/dist-esm/react-components/src/components/VideoGallery.js +5 -1
  37. package/dist/dist-esm/react-components/src/components/VideoGallery.js.map +1 -1
  38. package/dist/dist-esm/react-components/src/components/VideoTile.d.ts +0 -1
  39. package/dist/dist-esm/react-components/src/components/VideoTile.js +11 -8
  40. package/dist/dist-esm/react-components/src/components/VideoTile.js.map +1 -1
  41. package/dist/dist-esm/react-components/src/components/utils/useLongPress.d.ts +1 -0
  42. package/dist/dist-esm/react-components/src/components/utils/useLongPress.js +7 -2
  43. package/dist/dist-esm/react-components/src/components/utils/useLongPress.js.map +1 -1
  44. package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +0 -2
  45. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +2 -2
  46. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
  47. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallPage.styles.js +2 -0
  48. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallPage.styles.js.map +1 -1
  49. package/package.json +11 -10
@@ -17,6 +17,7 @@ var reactFileTypeIcons = require('@fluentui/react-file-type-icons');
17
17
  var reactAriaLive = require('react-aria-live');
18
18
  var htmlToReact = require('html-to-react');
19
19
  var Linkify = require('react-linkify');
20
+ var reactUseDraggableScroll = require('react-use-draggable-scroll');
20
21
  var reactHooks = require('@fluentui/react-hooks');
21
22
  var reactWindowProvider = require('@fluentui/react-window-provider');
22
23
  var copy = require('copy-to-clipboard');
@@ -158,7 +159,7 @@ const _toCommunicationIdentifier = (id) => {
158
159
  // Copyright (c) Microsoft Corporation.
159
160
  // Licensed under the MIT license.
160
161
  // GENERATED FILE. DO NOT EDIT MANUALLY.
161
- var telemetryVersion = '1.4.3-alpha-202301130014.0';
162
+ var telemetryVersion = '1.4.3-alpha-202301150014.0';
162
163
 
163
164
  // Copyright (c) Microsoft Corporation.
164
165
  /**
@@ -458,6 +459,15 @@ const isTeamsCallParticipants = (participants) => {
458
459
  const isACSCallParticipants = (participants) => {
459
460
  return participants.every((p) => !communicationCommon.isMicrosoftTeamsUserIdentifier(p));
460
461
  };
462
+ /**
463
+ * @private
464
+ * Checks whether the user is a 'Ringing' PSTN user.
465
+ */
466
+ const _isRingingPSTNParticipant = (participant) => {
467
+ return participant.identifier.kind === 'phoneNumber' && participant.state === 'Connecting'
468
+ ? 'Ringing'
469
+ : participant.state;
470
+ };
461
471
 
462
472
  // Copyright (c) Microsoft Corporation.
463
473
  /**
@@ -3970,7 +3980,7 @@ const typingIndicatorStringStyle = react.mergeStyles({
3970
3980
  wordBreak: 'break-word'
3971
3981
  });
3972
3982
 
3973
- var participantItem$d={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed participant",participantStateConnecting:"Calling...",participantStateRinging:"Calling...",participantStateHold:"On hold"};var typingIndicator$d={singleUser:"{user} is typing ...",multipleUsers:"{users} are typing ...",multipleUsersAbbreviateOne:"{users} and 1 other are typing ...",multipleUsersAbbreviateMany:"{users} and {numOthers} others are typing ...",delimiter:", "};var sendBox$d={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",fileUploadsPendingError:"Uploading... Please wait.",removeFile:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed"};var messageStatusIndicator$d={deliveredAriaLabel:"Message sent",deliveredTooltipText:"Sent",seenAriaLabel:"Message seen by others",seenTooltipText:"Seen",readByTooltipText:"Read by {messageThreadReadCount} of {remoteParticipantsCount}",sendingAriaLabel:"Message sending",sendingTooltipText:"Sending",failedToSendAriaLabel:"Message failed to send",failedToSendTooltipText:"Failed to send"};var endCallButton$d={label:"Leave",tooltipContent:"Leave call"};var cameraButton$d={onLabel:"Turn off",offLabel:"Turn on",tooltipDisabledContent:"Camera is disabled",tooltipOnContent:"Turn off camera",tooltipOffContent:"Turn on camera",tooltipVideoLoadingContent:"Video is loading",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",cameraButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Turn off camera and camera options",offSplitButtonAriaLabel:"Turn on camera and camera options",cameraActionTurnedOnAnnouncement:"Your camera has been turned on",cameraActionTurnedOffAnnouncement:"Your camera has been turned off"};var microphoneButton$d={onLabel:"Mute",offLabel:"Unmute",tooltipDisabledContent:"Microphone is disabled",tooltipOnContent:"Mute microphone",tooltipOffContent:"Unmute microphone",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker",microphoneButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Mute microphone and audio options",offSplitButtonAriaLabel:"Unmute microphone and audio options",microphoneActionTurnedOnAnnouncement:"Your microphone has been turned on",microphoneActionTurnedOffAnnouncement:"Your microphone has been turned off"};var devicesButton$d={label:"Devices",tooltipContent:"Manage devices",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",audioDeviceMenuTitle:"Audio Device",audioDeviceMenuTooltip:"Choose audio device",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker"};var participantsButton$d={label:"People",tooltipContent:"Show participants",menuHeader:"In this call",participantsListButtonLabel:"{numParticipants} people",muteAllButtonLabel:"Mute all",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied"};var screenShareButton$d={onLabel:"Stop presenting",offLabel:"Present",tooltipDisabledContent:"Presenting is disabled",tooltipOnContent:"Presenting your screen",tooltipOffContent:"Present your screen"};var messageThread$d={yesterday:"Yesterday",sunday:"Sunday",monday:"Monday",tuesday:"Tuesday",wednesday:"Wednesday",thursday:"Thursday",friday:"Friday",saturday:"Saturday",participantJoined:"joined the chat.",participantLeft:"left the chat.",editMessage:"Edit",removeMessage:"Delete",resendMessage:"Try sending again",failToSendTag:"Failed to send",editedTag:"Edited",liveAuthorIntro:"{author} says",messageContentAriaText:"{author} said {message}",messageContentMineAriaText:"You said {message}",editBoxTextLimit:"Your message is over the limit of {limitNumber} characters",editBoxPlaceholderText:"Edit your message",newMessagesIndicator:"New messages",noDisplayNameSub:"No name",editBoxCancelButton:"Cancel",editBoxSubmitButton:"Submit",messageReadCount:"Read by {messageReadByCount} of {remoteParticipantsCount}",actionMenuMoreOptions:"More Options",downloadFile:"Download file"};var errorBar$d={unableToReachChatService:"You are offline",accessDenied:"Unable to access chat services - please check the user credentials provided",userNotInChatThread:"You are no longer in this chat thread",sendMessageNotInChatThread:"Failed to send message because you are no longer in this chat thread",sendMessageGeneric:"Failed to send message",callingNetworkFailure:"Troubling connecting call - you seem to be offline",startVideoGeneric:"Failed to start video",stopVideoGeneric:"Failed to stop video",muteGeneric:"Failed to mute microphone",unmuteGeneric:"Failed to unmute microphone",speakingWhileMuted:"Your microphone is muted",startScreenShareGeneric:"Failed to start screen sharing",stopScreenShareGeneric:"Failed to stop screen sharing",callNetworkQualityLow:"Network quality is low.",callNoSpeakerFound:"No speakers or headphones found. Connect an audio device to hear the call.",callNoMicrophoneFound:"No microphones found. Connect an audio input device.",callMicrophoneAccessDenied:"Unable to access microphone. Click the lock in the address bar to grant permission to this webpage.",callMicrophoneAccessDeniedSafari:"Unable to access microphone. Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",callMicrophoneMutedBySystem:"You are muted by your system.",callMicrophoneUnmutedBySystem:"Your microphone recovered and you were unmuted by your system.",callMacOsMicrophoneAccessDenied:"Unable to access microphone. Grant microphone permission in your macOS privacy settings.",callLocalVideoFreeze:"Network bandwidth is poor. Your video may appear paused for others on the call.",callCameraAccessDenied:"Unable to access camera. Click the lock in the address bar to grant permission to this webpage.",callCameraAccessDeniedSafari:"Unable to access camera. Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",callCameraAlreadyInUse:"Unable to access camera. It may already be in use by another application.",callVideoStoppedBySystem:"Your video has been stopped by your system.",callVideoRecoveredBySystem:"Your video has resumed.",callMacOsCameraAccessDenied:"MacOS is blocking access to your camera. Update your privacy settings to allow this browser to access your camera.",callMacOsScreenShareAccessDenied:"MacOS is blocking screen sharing. Update your privacy settings to allow this browser to record your screen.",dismissButtonAriaLabel:"Close",failedToJoinCallGeneric:"Failed to join call.",failedToJoinCallInvalidMeetingLink:"Unable to join Meeting. Invalid Link."};var videoGallery$d={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Switch camera",localVideoMovementLabel:"Movable Local Video Tile",localVideoSelectedDescription:"{cameraName} selected",displayNamePlaceholder:"Unnamed participant",fitRemoteParticipantToFrame:"Fit to frame",fillRemoteParticipantFrame:"Fill frame",pinParticipantForMe:"Pin for me",pinParticipantForMeLimitReached:"Pin (limit reached)",unpinParticipantForMe:"Unpin for me"};var dialpad$d={placeholderText:"Enter phone number",deleteButtonAriaLabel:"Delete"};var holdButton$d={onLabel:"Resume",offLabel:"Hold",tooltipOnContent:"Resume call",tooltipOffContent:"Hold call"};var videoTile$d={participantStateConnecting:"Calling...",participantStateRinging:"Calling...",participantStateHold:"On hold"};var CameraAndMicrophoneSitePermissionsRequest={primaryText:"Allow {appName} to use your camera and microphone",secondaryText:"This is so participants can see and hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera and microphone",ariaLabel:"Allow camera and microphone access"};var CameraSitePermissionsRequest={primaryText:"Allow {appName} to use your camera",secondaryText:"This is so participants can see you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera",ariaLabel:"Allow camera access"};var MicrophoneSitePermissionsRequest={primaryText:"Allow {appName} to use your microphone",secondaryText:"This is so participants can hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without microphone",ariaLabel:"Allow microphone access"};var CameraAndMicrophoneSitePermissionsCheck={primaryText:"Checking for camera and microphone access",secondaryText:"Allow access if prompted. This is so participants can see and hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera and microphone",ariaLabel:"Checking for camera and microphone access. Allow access if prompted."};var CameraSitePermissionsCheck={primaryText:"Checking for camera access",secondaryText:"Allow access if prompted. This is so participants can see you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera",ariaLabel:"Checking for camera access. Allow access if prompted."};var MicrophoneSitePermissionsCheck={primaryText:"Checking for microphone access",secondaryText:"Allow access if prompted. This is so participants can hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without microphone",ariaLabel:"Checking for microphone access. Allow access if prompted."};var CameraAndMicrophoneSitePermissionsDenied={primaryText:"Unable to access camera and microphone",secondaryText:"Click the lock icon in the address bar to grant microphone permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without camera and microphone",linkText:"Need help? Get troubleshooting help"};var CameraAndMicrophoneSitePermissionsDeniedSafari={primaryText:"Unable to access camera and microphone",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without camera and microphone",linkText:"Need help? Get troubleshooting help"};var CameraSitePermissionsDenied={primaryText:"Unable to access camera",secondaryText:"Click the lock icon in the address bar to grant camera permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without camera",linkText:"Need help? Get troubleshooting help"};var MicrophoneSitePermissionsDenied={primaryText:"Unable to access microphone",secondaryText:"Click the lock icon in the address bar to grant microphone permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without microphone",linkText:"Need help? Get troubleshooting help"};var CameraSitePermissionsDeniedSafari={primaryText:"Unable to access camera",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without camera",linkText:"Need help? Get troubleshooting help"};var MicrophoneSitePermissionsDeniedSafari={primaryText:"Unable to access microphone",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without microphone",linkText:"Need help? Get troubleshooting help"};var UnsupportedBrowser$e={primaryText:"Browser not supported",secondaryText:"Please join this call using a compatible browser.",moreHelpLinkText:"See compatibility requirements"};var UnsupportedBrowserVersion$1={primaryText:"Browser update needed",secondaryText:"To ensure the best call possible, please update your browser and then try joining the call again.",moreHelpLinkText:"See compatibility requirements",continueAnywayButtonText:"Start call without updating"};var UnsupportedOperatingSystem$1={primaryText:"Operating system not supported",secondaryText:"Please join this call using a device with a compatible operating system.",moreHelpLinkText:"See compatibility requirements"};var BrowserPermissionDenied$d={primaryText:"Can't use your camera or microphone",secondaryText:"Your browser might not have access to your camera or microphone. To fix this, open System Preferences.",primaryButtonText:"Try again",linkText:"Need help? Get troubleshooting help"};var BrowserPermissionDeniedIOS$d={primaryText:"Allow microphone access to continue",secondaryText:"So other participants can hear you.",primaryButtonText:"Try again",imageAltText:"Microphone and camera device permission location for iOS",linkText:"Need help? Get troubleshooting help",step1Text:"Go to the Settings app",step2Text:"Scroll down to settings for this browser",step3Text:"Turn on Microphone (Camera optional)",step4Text:"Try joining the call again",step1DigitText:"1",step2DigitText:"2",step3DigitText:"3",step4DigitText:"4"};var en_US$1 = {participantItem:participantItem$d,typingIndicator:typingIndicator$d,sendBox:sendBox$d,messageStatusIndicator:messageStatusIndicator$d,endCallButton:endCallButton$d,cameraButton:cameraButton$d,microphoneButton:microphoneButton$d,devicesButton:devicesButton$d,participantsButton:participantsButton$d,screenShareButton:screenShareButton$d,messageThread:messageThread$d,errorBar:errorBar$d,videoGallery:videoGallery$d,dialpad:dialpad$d,holdButton:holdButton$d,videoTile:videoTile$d,CameraAndMicrophoneSitePermissionsRequest:CameraAndMicrophoneSitePermissionsRequest,CameraSitePermissionsRequest:CameraSitePermissionsRequest,MicrophoneSitePermissionsRequest:MicrophoneSitePermissionsRequest,CameraAndMicrophoneSitePermissionsCheck:CameraAndMicrophoneSitePermissionsCheck,CameraSitePermissionsCheck:CameraSitePermissionsCheck,MicrophoneSitePermissionsCheck:MicrophoneSitePermissionsCheck,CameraAndMicrophoneSitePermissionsDenied:CameraAndMicrophoneSitePermissionsDenied,CameraAndMicrophoneSitePermissionsDeniedSafari:CameraAndMicrophoneSitePermissionsDeniedSafari,CameraSitePermissionsDenied:CameraSitePermissionsDenied,MicrophoneSitePermissionsDenied:MicrophoneSitePermissionsDenied,CameraSitePermissionsDeniedSafari:CameraSitePermissionsDeniedSafari,MicrophoneSitePermissionsDeniedSafari:MicrophoneSitePermissionsDeniedSafari,UnsupportedBrowser:UnsupportedBrowser$e,UnsupportedBrowserVersion:UnsupportedBrowserVersion$1,UnsupportedOperatingSystem:UnsupportedOperatingSystem$1,BrowserPermissionDenied:BrowserPermissionDenied$d,BrowserPermissionDeniedIOS:BrowserPermissionDeniedIOS$d};
3983
+ var participantItem$d={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed participant",participantStateRinging:"Calling...",participantStateHold:"On hold"};var typingIndicator$d={singleUser:"{user} is typing ...",multipleUsers:"{users} are typing ...",multipleUsersAbbreviateOne:"{users} and 1 other are typing ...",multipleUsersAbbreviateMany:"{users} and {numOthers} others are typing ...",delimiter:", "};var sendBox$d={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",fileUploadsPendingError:"Uploading... Please wait.",removeFile:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed"};var messageStatusIndicator$d={deliveredAriaLabel:"Message sent",deliveredTooltipText:"Sent",seenAriaLabel:"Message seen by others",seenTooltipText:"Seen",readByTooltipText:"Read by {messageThreadReadCount} of {remoteParticipantsCount}",sendingAriaLabel:"Message sending",sendingTooltipText:"Sending",failedToSendAriaLabel:"Message failed to send",failedToSendTooltipText:"Failed to send"};var endCallButton$d={label:"Leave",tooltipContent:"Leave call"};var cameraButton$d={onLabel:"Turn off",offLabel:"Turn on",tooltipDisabledContent:"Camera is disabled",tooltipOnContent:"Turn off camera",tooltipOffContent:"Turn on camera",tooltipVideoLoadingContent:"Video is loading",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",cameraButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Turn off camera and camera options",offSplitButtonAriaLabel:"Turn on camera and camera options",cameraActionTurnedOnAnnouncement:"Your camera has been turned on",cameraActionTurnedOffAnnouncement:"Your camera has been turned off"};var microphoneButton$d={onLabel:"Mute",offLabel:"Unmute",tooltipDisabledContent:"Microphone is disabled",tooltipOnContent:"Mute microphone",tooltipOffContent:"Unmute microphone",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker",microphoneButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Mute microphone and audio options",offSplitButtonAriaLabel:"Unmute microphone and audio options",microphoneActionTurnedOnAnnouncement:"Your microphone has been turned on",microphoneActionTurnedOffAnnouncement:"Your microphone has been turned off"};var devicesButton$d={label:"Devices",tooltipContent:"Manage devices",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",audioDeviceMenuTitle:"Audio Device",audioDeviceMenuTooltip:"Choose audio device",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker"};var participantsButton$d={label:"People",tooltipContent:"Show participants",menuHeader:"In this call",participantsListButtonLabel:"{numParticipants} people",muteAllButtonLabel:"Mute all",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied"};var screenShareButton$d={onLabel:"Stop presenting",offLabel:"Present",tooltipDisabledContent:"Presenting is disabled",tooltipOnContent:"Presenting your screen",tooltipOffContent:"Present your screen"};var messageThread$d={yesterday:"Yesterday",sunday:"Sunday",monday:"Monday",tuesday:"Tuesday",wednesday:"Wednesday",thursday:"Thursday",friday:"Friday",saturday:"Saturday",participantJoined:"joined the chat.",participantLeft:"left the chat.",editMessage:"Edit",removeMessage:"Delete",resendMessage:"Try sending again",failToSendTag:"Failed to send",editedTag:"Edited",liveAuthorIntro:"{author} says",messageContentAriaText:"{author} said {message}",messageContentMineAriaText:"You said {message}",editBoxTextLimit:"Your message is over the limit of {limitNumber} characters",editBoxPlaceholderText:"Edit your message",newMessagesIndicator:"New messages",noDisplayNameSub:"No name",editBoxCancelButton:"Cancel",editBoxSubmitButton:"Submit",messageReadCount:"Read by {messageReadByCount} of {remoteParticipantsCount}",actionMenuMoreOptions:"More Options",downloadFile:"Download file"};var errorBar$d={unableToReachChatService:"You are offline",accessDenied:"Unable to access chat services - please check the user credentials provided",userNotInChatThread:"You are no longer in this chat thread",sendMessageNotInChatThread:"Failed to send message because you are no longer in this chat thread",sendMessageGeneric:"Failed to send message",callingNetworkFailure:"Troubling connecting call - you seem to be offline",startVideoGeneric:"Failed to start video",stopVideoGeneric:"Failed to stop video",muteGeneric:"Failed to mute microphone",unmuteGeneric:"Failed to unmute microphone",speakingWhileMuted:"Your microphone is muted",startScreenShareGeneric:"Failed to start screen sharing",stopScreenShareGeneric:"Failed to stop screen sharing",callNetworkQualityLow:"Network quality is low.",callNoSpeakerFound:"No speakers or headphones found. Connect an audio device to hear the call.",callNoMicrophoneFound:"No microphones found. Connect an audio input device.",callMicrophoneAccessDenied:"Unable to access microphone. Click the lock in the address bar to grant permission to this webpage.",callMicrophoneAccessDeniedSafari:"Unable to access microphone. Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",callMicrophoneMutedBySystem:"You are muted by your system.",callMicrophoneUnmutedBySystem:"Your microphone recovered and you were unmuted by your system.",callMacOsMicrophoneAccessDenied:"Unable to access microphone. Grant microphone permission in your macOS privacy settings.",callLocalVideoFreeze:"Network bandwidth is poor. Your video may appear paused for others on the call.",callCameraAccessDenied:"Unable to access camera. Click the lock in the address bar to grant permission to this webpage.",callCameraAccessDeniedSafari:"Unable to access camera. Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",callCameraAlreadyInUse:"Unable to access camera. It may already be in use by another application.",callVideoStoppedBySystem:"Your video has been stopped by your system.",callVideoRecoveredBySystem:"Your video has resumed.",callMacOsCameraAccessDenied:"MacOS is blocking access to your camera. Update your privacy settings to allow this browser to access your camera.",callMacOsScreenShareAccessDenied:"MacOS is blocking screen sharing. Update your privacy settings to allow this browser to record your screen.",dismissButtonAriaLabel:"Close",failedToJoinCallGeneric:"Failed to join call.",failedToJoinCallInvalidMeetingLink:"Unable to join Meeting. Invalid Link."};var videoGallery$d={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Switch camera",localVideoMovementLabel:"Movable Local Video Tile",localVideoSelectedDescription:"{cameraName} selected",displayNamePlaceholder:"Unnamed participant",fitRemoteParticipantToFrame:"Fit to frame",fillRemoteParticipantFrame:"Fill frame",pinParticipantForMe:"Pin for me",pinParticipantForMeLimitReached:"Pin (limit reached)",unpinParticipantForMe:"Unpin for me"};var dialpad$d={placeholderText:"Enter phone number",deleteButtonAriaLabel:"Delete"};var holdButton$d={onLabel:"Resume",offLabel:"Hold",tooltipOnContent:"Resume call",tooltipOffContent:"Hold call"};var videoTile$d={participantStateRinging:"Calling...",participantStateHold:"On hold"};var CameraAndMicrophoneSitePermissionsRequest={primaryText:"Allow {appName} to use your camera and microphone",secondaryText:"This is so participants can see and hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera and microphone",ariaLabel:"Allow camera and microphone access"};var CameraSitePermissionsRequest={primaryText:"Allow {appName} to use your camera",secondaryText:"This is so participants can see you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera",ariaLabel:"Allow camera access"};var MicrophoneSitePermissionsRequest={primaryText:"Allow {appName} to use your microphone",secondaryText:"This is so participants can hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without microphone",ariaLabel:"Allow microphone access"};var CameraAndMicrophoneSitePermissionsCheck={primaryText:"Checking for camera and microphone access",secondaryText:"Allow access if prompted. This is so participants can see and hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera and microphone",ariaLabel:"Checking for camera and microphone access. Allow access if prompted."};var CameraSitePermissionsCheck={primaryText:"Checking for camera access",secondaryText:"Allow access if prompted. This is so participants can see you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera",ariaLabel:"Checking for camera access. Allow access if prompted."};var MicrophoneSitePermissionsCheck={primaryText:"Checking for microphone access",secondaryText:"Allow access if prompted. This is so participants can hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without microphone",ariaLabel:"Checking for microphone access. Allow access if prompted."};var CameraAndMicrophoneSitePermissionsDenied={primaryText:"Unable to access camera and microphone",secondaryText:"Click the lock icon in the address bar to grant microphone permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without camera and microphone",linkText:"Need help? Get troubleshooting help"};var CameraAndMicrophoneSitePermissionsDeniedSafari={primaryText:"Unable to access camera and microphone",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without camera and microphone",linkText:"Need help? Get troubleshooting help"};var CameraSitePermissionsDenied={primaryText:"Unable to access camera",secondaryText:"Click the lock icon in the address bar to grant camera permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without camera",linkText:"Need help? Get troubleshooting help"};var MicrophoneSitePermissionsDenied={primaryText:"Unable to access microphone",secondaryText:"Click the lock icon in the address bar to grant microphone permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without microphone",linkText:"Need help? Get troubleshooting help"};var CameraSitePermissionsDeniedSafari={primaryText:"Unable to access camera",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without camera",linkText:"Need help? Get troubleshooting help"};var MicrophoneSitePermissionsDeniedSafari={primaryText:"Unable to access microphone",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without microphone",linkText:"Need help? Get troubleshooting help"};var UnsupportedBrowser$e={primaryText:"Browser not supported",secondaryText:"Please join this call using a compatible browser.",moreHelpLinkText:"See compatibility requirements"};var UnsupportedBrowserVersion$1={primaryText:"Browser update needed",secondaryText:"To ensure the best call possible, please update your browser and then try joining the call again.",moreHelpLinkText:"See compatibility requirements",continueAnywayButtonText:"Start call without updating"};var UnsupportedOperatingSystem$1={primaryText:"Operating system not supported",secondaryText:"Please join this call using a device with a compatible operating system.",moreHelpLinkText:"See compatibility requirements"};var BrowserPermissionDenied$d={primaryText:"Can't use your camera or microphone",secondaryText:"Your browser might not have access to your camera or microphone. To fix this, open System Preferences.",primaryButtonText:"Try again",linkText:"Need help? Get troubleshooting help"};var BrowserPermissionDeniedIOS$d={primaryText:"Allow microphone access to continue",secondaryText:"So other participants can hear you.",primaryButtonText:"Try again",imageAltText:"Microphone and camera device permission location for iOS",linkText:"Need help? Get troubleshooting help",step1Text:"Go to the Settings app",step2Text:"Scroll down to settings for this browser",step3Text:"Turn on Microphone (Camera optional)",step4Text:"Try joining the call again",step1DigitText:"1",step2DigitText:"2",step3DigitText:"3",step4DigitText:"4"};var en_US$1 = {participantItem:participantItem$d,typingIndicator:typingIndicator$d,sendBox:sendBox$d,messageStatusIndicator:messageStatusIndicator$d,endCallButton:endCallButton$d,cameraButton:cameraButton$d,microphoneButton:microphoneButton$d,devicesButton:devicesButton$d,participantsButton:participantsButton$d,screenShareButton:screenShareButton$d,messageThread:messageThread$d,errorBar:errorBar$d,videoGallery:videoGallery$d,dialpad:dialpad$d,holdButton:holdButton$d,videoTile:videoTile$d,CameraAndMicrophoneSitePermissionsRequest:CameraAndMicrophoneSitePermissionsRequest,CameraSitePermissionsRequest:CameraSitePermissionsRequest,MicrophoneSitePermissionsRequest:MicrophoneSitePermissionsRequest,CameraAndMicrophoneSitePermissionsCheck:CameraAndMicrophoneSitePermissionsCheck,CameraSitePermissionsCheck:CameraSitePermissionsCheck,MicrophoneSitePermissionsCheck:MicrophoneSitePermissionsCheck,CameraAndMicrophoneSitePermissionsDenied:CameraAndMicrophoneSitePermissionsDenied,CameraAndMicrophoneSitePermissionsDeniedSafari:CameraAndMicrophoneSitePermissionsDeniedSafari,CameraSitePermissionsDenied:CameraSitePermissionsDenied,MicrophoneSitePermissionsDenied:MicrophoneSitePermissionsDenied,CameraSitePermissionsDeniedSafari:CameraSitePermissionsDeniedSafari,MicrophoneSitePermissionsDeniedSafari:MicrophoneSitePermissionsDeniedSafari,UnsupportedBrowser:UnsupportedBrowser$e,UnsupportedBrowserVersion:UnsupportedBrowserVersion$1,UnsupportedOperatingSystem:UnsupportedOperatingSystem$1,BrowserPermissionDenied:BrowserPermissionDenied$d,BrowserPermissionDeniedIOS:BrowserPermissionDeniedIOS$d};
3974
3984
 
3975
3985
  var participantItem$c={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed participant",participantStateConnecting:"Calling...",participantStateRinging:"Calling...",participantStateHold:"On hold"};var typingIndicator$c={singleUser:"{user} is typing ...",multipleUsers:"{users} are typing ...",multipleUsersAbbreviateOne:"{users} and 1 other are typing ...",multipleUsersAbbreviateMany:"{users} and {numOthers} others are typing ...",delimiter:", "};var sendBox$c={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",fileUploadsPendingError:"Uploading... Please wait.",removeFile:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed"};var messageStatusIndicator$c={deliveredAriaLabel:"Message sent",deliveredTooltipText:"Sent",seenAriaLabel:"Message seen by others",seenTooltipText:"Seen",readByTooltipText:"Read by {messageThreadReadCount} of {remoteParticipantsCount}",sendingAriaLabel:"Message sending",sendingTooltipText:"Sending",failedToSendAriaLabel:"Message failed to send",failedToSendTooltipText:"Failed to send"};var endCallButton$c={label:"Leave",tooltipContent:"Leave call"};var cameraButton$c={onLabel:"Turn off",offLabel:"Turn on",tooltipDisabledContent:"Camera is disabled",tooltipOnContent:"Turn off camera",tooltipOffContent:"Turn on camera",tooltipVideoLoadingContent:"Video is loading",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",cameraButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Turn off camera and camera options",offSplitButtonAriaLabel:"Turn on camera and camera options",cameraActionTurnedOnAnnouncement:"Your camera has been turned on",cameraActionTurnedOffAnnouncement:"Your camera has been turned off"};var microphoneButton$c={onLabel:"Mute",offLabel:"Unmute",tooltipDisabledContent:"Microphone is disabled",tooltipOnContent:"Mute microphone",tooltipOffContent:"Unmute microphone",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker",microphoneButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Mute microphone and audio options",offSplitButtonAriaLabel:"Unmute microphone and audio options",microphoneActionTurnedOnAnnouncement:"Your microphone has been turned on",microphoneActionTurnedOffAnnouncement:"Your microphone has been turned off"};var devicesButton$c={label:"Devices",tooltipContent:"Manage devices",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",audioDeviceMenuTitle:"Audio Device",audioDeviceMenuTooltip:"Choose audio device",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker"};var participantsButton$c={label:"People",tooltipContent:"Show participants",menuHeader:"In this call",participantsListButtonLabel:"{numParticipants} people",muteAllButtonLabel:"Mute all",copyInviteLinkButtonLabel:"Copy invite link"};var screenShareButton$c={onLabel:"Stop presenting",offLabel:"Present",tooltipDisabledContent:"Presenting is disabled",tooltipOnContent:"Presenting your screen",tooltipOffContent:"Present your screen"};var messageThread$c={yesterday:"Yesterday",sunday:"Sunday",monday:"Monday",tuesday:"Tuesday",wednesday:"Wednesday",thursday:"Thursday",friday:"Friday",saturday:"Saturday",participantJoined:"joined the chat.",participantLeft:"left the chat.",editMessage:"Edit",removeMessage:"Delete",resendMessage:"Try sending again",failToSendTag:"Failed to send",editedTag:"Edited",liveAuthorIntro:"{author} says",messageContentAriaText:"{author} said {message}",messageContentMineAriaText:"You said {message}",editBoxTextLimit:"Your message is over the limit of {limitNumber} characters",editBoxPlaceholderText:"Edit your message",newMessagesIndicator:"New messages",noDisplayNameSub:"No name",editBoxCancelButton:"Cancel",editBoxSubmitButton:"Submit",messageReadCount:"Read by {messageReadByCount} of {remoteParticipantsCount}",actionMenuMoreOptions:"More Options",downloadFile:"Download file"};var errorBar$c={unableToReachChatService:"You are offline",accessDenied:"Unable to access chat services - please check the user credentials provided",userNotInChatThread:"You are no longer in this chat thread",sendMessageNotInChatThread:"Failed to send message because you are no longer in this chat thread",sendMessageGeneric:"Failed to send message",callingNetworkFailure:"Troubling connecting call - you seem to be offline",startVideoGeneric:"Failed to start video",stopVideoGeneric:"Failed to stop video",muteGeneric:"Failed to mute microphone",unmuteGeneric:"Failed to unmute microphone",speakingWhileMuted:"Your microphone is muted",startScreenShareGeneric:"Failed to start screen sharing",stopScreenShareGeneric:"Failed to stop screen sharing",callNetworkQualityLow:"Network quality is low.",callNoSpeakerFound:"No speakers or headphones found. Connect an audio device to hear the call.",callNoMicrophoneFound:"No microphones found. Connect an audio input device.",callMicrophoneAccessDenied:"Unable to access microphone. Click the lock in the address bar to grant permission to this webpage.",callMicrophoneMutedBySystem:"You are muted by your system.",callMicrophoneUnmutedBySystem:"Your microphone recovered and you were unmuted by your system.",callMacOsMicrophoneAccessDenied:"Unable to access microphone. Grant microphone permission in your macOS privacy settings.",callLocalVideoFreeze:"Network bandwidth is poor. Your video may appear paused for others on the call.",callCameraAccessDenied:"Unable to access camera. Click the lock in the address bar to grant permission to this webpage.",callCameraAlreadyInUse:"Unable to access camera. It may already be in use by another application.",callVideoStoppedBySystem:"Your video has been stopped by your system.",callVideoRecoveredBySystem:"Your video has resumed.",callMacOsCameraAccessDenied:"MacOS is blocking access to your camera. Update your privacy settings to allow this browser to access your camera.",callMacOsScreenShareAccessDenied:"MacOS is blocking screen sharing. Update your privacy settings to allow this browser to record your screen.",dismissButtonAriaLabel:"Close",failedToJoinCallGeneric:"Failed to join call.",failedToJoinCallInvalidMeetingLink:"Unable to join Meeting. Invalid Link."};var videoGallery$c={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Switch camera",localVideoMovementLabel:"Movable Local Video Tile",localVideoSelectedDescription:"{cameraName} selected",displayNamePlaceholder:"Unnamed participant"};var dialpad$c={placeholderText:"Enter phone number",deleteButtonAriaLabel:"Delete"};var holdButton$c={onLabel:"Resume",offLabel:"Hold",tooltipOnContent:"Resume call",tooltipOffContent:"Hold call"};var videoTile$c={participantStateConnecting:"Calling...",participantStateRinging:"Calling...",participantStateHold:"On hold"};var SitePermissions$c={primaryText:"Allow {appName} to use your camera and microphone",secondaryText:"This is so participants can see and hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Allow Access"};var UnsupportedBrowser$d={primaryText:"Browser not supported",secondaryText:"Please join this call using a compatible browser.",moreHelpLink:"More help"};var BrowserPermissionDenied$c={primaryText:"Can't use your camera or microphone",secondaryText:"Your browser might not have access to your camera or microphone. To fix this, open System Preferences.",primaryButtonText:"Try again",linkText:"Need help? Get troubleshooting help"};var BrowserPermissionDeniedIOS$c={primaryText:"Allow microphone access to continue",secondaryText:"So other participants can hear you.",primaryButtonText:"Try again",imageAltText:"Microphone and camera device permission location for iOS",linkText:"Need help? Get troubleshooting help",step1Text:"Go to the Settings app",step2Text:"Scroll down to settings for this browser",step3Text:"Turn on Microphone (Camera optional)",step4Text:"Try joining the call again",step1DigitText:"1",step2DigitText:"2",step3DigitText:"3",step4DigitText:"4"};var en_GB$1 = {participantItem:participantItem$c,typingIndicator:typingIndicator$c,sendBox:sendBox$c,messageStatusIndicator:messageStatusIndicator$c,endCallButton:endCallButton$c,cameraButton:cameraButton$c,microphoneButton:microphoneButton$c,devicesButton:devicesButton$c,participantsButton:participantsButton$c,screenShareButton:screenShareButton$c,messageThread:messageThread$c,errorBar:errorBar$c,videoGallery:videoGallery$c,dialpad:dialpad$c,holdButton:holdButton$c,videoTile:videoTile$c,SitePermissions:SitePermissions$c,UnsupportedBrowser:UnsupportedBrowser$d,BrowserPermissionDenied:BrowserPermissionDenied$c,BrowserPermissionDeniedIOS:BrowserPermissionDeniedIOS$c};
3976
3986
 
@@ -7554,9 +7564,7 @@ const meContainerStyle = {
7554
7564
  * @public
7555
7565
  */
7556
7566
  const ParticipantItem = (props) => {
7557
- const { userId, displayName, onRenderAvatar, menuItems, onRenderIcon, presence, styles, me, onClick, showParticipantOverflowTooltip
7558
- /* @conditional-compile-remove(PSTN-calls) */
7559
- } = props;
7567
+ const { userId, displayName, onRenderAvatar, menuItems, onRenderIcon, presence, styles, me, onClick, showParticipantOverflowTooltip } = props;
7560
7568
  const [itemHovered, setItemHovered] = React.useState(false);
7561
7569
  const [itemFocused, setItemFocused] = React.useState(false);
7562
7570
  const [menuHidden, setMenuHidden] = React.useState(true);
@@ -7616,13 +7624,11 @@ const ParticipantItem = (props) => {
7616
7624
  const participantStateStringTrampoline$1 = (props, strings) => {
7617
7625
  /* @conditional-compile-remove(one-to-n-calling) */
7618
7626
  /* @conditional-compile-remove(PSTN-calls) */
7619
- return props.participantState === 'Idle' || props.participantState === 'Connecting'
7620
- ? strings === null || strings === void 0 ? void 0 : strings.participantStateConnecting
7621
- : props.participantState === 'EarlyMedia' || props.participantState === 'Ringing'
7622
- ? strings === null || strings === void 0 ? void 0 : strings.participantStateRinging
7623
- : props.participantState === 'Hold'
7624
- ? strings === null || strings === void 0 ? void 0 : strings.participantStateHold
7625
- : undefined;
7627
+ return props.participantState === 'EarlyMedia' || props.participantState === 'Ringing'
7628
+ ? strings === null || strings === void 0 ? void 0 : strings.participantStateRinging
7629
+ : props.participantState === 'Hold'
7630
+ ? strings === null || strings === void 0 ? void 0 : strings.participantStateHold
7631
+ : undefined;
7626
7632
  };
7627
7633
 
7628
7634
  // Copyright (c) Microsoft Corporation.
@@ -8416,6 +8422,9 @@ function useLongPress(props) {
8416
8422
  const handleOnTouchEnd = React.useCallback(() => {
8417
8423
  timerRef.current && clearTimeout(timerRef.current);
8418
8424
  }, []);
8425
+ const handleOnTouchMove = React.useCallback(() => {
8426
+ timerRef.current && clearTimeout(timerRef.current);
8427
+ }, []);
8419
8428
  return React.useMemo(() => ({
8420
8429
  onClick: handleOnClick,
8421
8430
  onMouseDown: handleOnMouseDown,
@@ -8423,7 +8432,8 @@ function useLongPress(props) {
8423
8432
  onTouchStart: handleOnTouchStart,
8424
8433
  onTouchEnd: handleOnTouchEnd,
8425
8434
  onKeyDown: handleOnKeyDown,
8426
- onKeyUp: handleOnKeyUp
8435
+ onKeyUp: handleOnKeyUp,
8436
+ onTouchMove: handleOnTouchMove
8427
8437
  }), [
8428
8438
  handleOnClick,
8429
8439
  handleOnKeyDown,
@@ -8431,7 +8441,8 @@ function useLongPress(props) {
8431
8441
  handleOnMouseDown,
8432
8442
  handleOnMouseUp,
8433
8443
  handleOnTouchEnd,
8434
- handleOnTouchStart
8444
+ handleOnTouchStart,
8445
+ handleOnTouchMove
8435
8446
  ]);
8436
8447
  }
8437
8448
 
@@ -8543,7 +8554,12 @@ const VideoTile = (props) => {
8543
8554
  }
8544
8555
  }, styles === null || styles === void 0 ? void 0 : styles.root) }, longPressHandlersTrampoline),
8545
8556
  React__default['default'].createElement("div", { ref: videoTileRef, style: { width: '100%', height: '100%' } },
8546
- 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), style: { opacity: participantStateString ? 0.4 : 1 } }, onRenderPlaceholder ? (onRenderPlaceholder(userId !== null && userId !== void 0 ? userId : '', placeholderOptions, DefaultPlaceholder)) : (React__default['default'].createElement(DefaultPlaceholder, Object.assign({}, placeholderOptions))))),
8557
+ 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, {
8558
+ opacity: participantStateString ||
8559
+ /* @conditional-compile-remove(PSTN-calls) */ props.participantState === 'Idle'
8560
+ ? 0.4
8561
+ : 1
8562
+ }) }, onRenderPlaceholder ? (onRenderPlaceholder(userId !== null && userId !== void 0 ? userId : '', placeholderOptions, DefaultPlaceholder)) : (React__default['default'].createElement(DefaultPlaceholder, Object.assign({}, placeholderOptions))))),
8547
8563
  (canShowLabel || participantStateString) && (React__default['default'].createElement(react.Stack, { horizontal: true, className: tileInfoContainerStyle, tokens: tileInfoContainerTokens },
8548
8564
  React__default['default'].createElement(react.Stack, { horizontal: true, className: tileInfoStyle },
8549
8565
  canShowLabel && (React__default['default'].createElement(react.Text, { className: react.mergeStyles(displayNameStyle), title: displayName, style: { color: participantStateString ? theme.palette.neutralSecondary : 'inherit' } }, displayName)),
@@ -8563,13 +8579,11 @@ const participantStateStringTrampoline = (props, locale) => {
8563
8579
  const strings = Object.assign(Object.assign({}, locale.strings.videoTile), props.strings);
8564
8580
  /* @conditional-compile-remove(one-to-n-calling) */
8565
8581
  /* @conditional-compile-remove(PSTN-calls) */
8566
- return props.participantState === 'Idle' || props.participantState === 'Connecting'
8567
- ? strings === null || strings === void 0 ? void 0 : strings.participantStateConnecting
8568
- : props.participantState === 'EarlyMedia' || props.participantState === 'Ringing'
8569
- ? strings === null || strings === void 0 ? void 0 : strings.participantStateRinging
8570
- : props.participantState === 'Hold'
8571
- ? strings === null || strings === void 0 ? void 0 : strings.participantStateHold
8572
- : undefined;
8582
+ return props.participantState === 'EarlyMedia' || props.participantState === 'Ringing'
8583
+ ? strings === null || strings === void 0 ? void 0 : strings.participantStateRinging
8584
+ : props.participantState === 'Hold'
8585
+ ? strings === null || strings === void 0 ? void 0 : strings.participantStateHold
8586
+ : undefined;
8573
8587
  };
8574
8588
  const tileInfoContainerTokens = {
8575
8589
  // A horizontal Stack sets the left margin to 0 for all it's children.
@@ -8590,7 +8604,7 @@ const bracketedParticipantString = (participantString, withBrackets) => {
8590
8604
  */
8591
8605
  const _RemoteVideoTile = React__default['default'].memo((props) => {
8592
8606
  const { isAvailable, isReceiving = true, // default to true to prevent any breaking change
8593
- isScreenSharingOn, onCreateRemoteStreamView, onDisposeRemoteStreamView, remoteVideoViewOptions, renderElement, userId, onRenderAvatar, showMuteIndicator, remoteParticipant, participantState, showRemoteVideoTileContextualMenu = true, isPinned, onPinParticipant, onUnpinParticipant, disablePinMenuItem } = props;
8607
+ isScreenSharingOn, onCreateRemoteStreamView, onDisposeRemoteStreamView, remoteVideoViewOptions, renderElement, userId, onRenderAvatar, showMuteIndicator, remoteParticipant, participantState, menuKind = 'contextual', isPinned, onPinParticipant, onUnpinParticipant, disablePinMenuItem } = props;
8594
8608
  const remoteVideoStreamProps = React.useMemo(() => ({
8595
8609
  isMirrored: remoteVideoViewOptions === null || remoteVideoViewOptions === void 0 ? void 0 : remoteVideoViewOptions.isMirrored,
8596
8610
  isScreenSharingOn,
@@ -8625,11 +8639,11 @@ const _RemoteVideoTile = React__default['default'].memo((props) => {
8625
8639
  disablePinMenuItem
8626
8640
  });
8627
8641
  const videoTileContextualMenuProps = React.useMemo(() => {
8628
- if (!showRemoteVideoTileContextualMenu) {
8642
+ if (menuKind !== 'contextual') {
8629
8643
  return {};
8630
8644
  }
8631
8645
  return videoTileContextualMenuPropsTrampoline(contextualMenuProps);
8632
- }, [contextualMenuProps, showRemoteVideoTileContextualMenu]);
8646
+ }, [contextualMenuProps, menuKind]);
8633
8647
  const showLoadingIndicator = isAvailable && isReceiving === false && participantState !== 'Disconnected';
8634
8648
  const [drawerMenuItemProps, setDrawerMenuItemProps] = React__default['default'].useState([]);
8635
8649
  const renderVideoStreamElement = React.useMemo(() => {
@@ -8641,7 +8655,19 @@ const _RemoteVideoTile = React__default['default'].memo((props) => {
8641
8655
  }
8642
8656
  return (React__default['default'].createElement(StreamMedia, { videoStreamElement: renderElement, loadingState: showLoadingIndicator ? 'loading' : 'none' }));
8643
8657
  }, [renderElement, showLoadingIndicator]);
8644
- return (React__default['default'].createElement(react.Stack, { style: remoteVideoTileWrapperStyle },
8658
+ /* @conditional-compile-remove(pinned-participants) */
8659
+ const onKeyDown = React.useCallback((e) => {
8660
+ if (e.key === 'Enter') {
8661
+ setDrawerMenuItemProps(convertContextualMenuItemsToDrawerMenuItemProps(contextualMenuProps, () => setDrawerMenuItemProps([])));
8662
+ }
8663
+ }, [setDrawerMenuItemProps, contextualMenuProps]);
8664
+ return (React__default['default'].createElement(react.Stack
8665
+ /* @conditional-compile-remove(pinned-participants) */
8666
+ , {
8667
+ /* @conditional-compile-remove(pinned-participants) */
8668
+ tabIndex: menuKind === 'drawer' ? 0 : undefined,
8669
+ /* @conditional-compile-remove(pinned-participants) */
8670
+ onKeyDown: menuKind === 'drawer' ? onKeyDown : undefined, style: remoteVideoTileWrapperStyle },
8645
8671
  React__default['default'].createElement(VideoTile, Object.assign({ key: userId, userId: userId, renderElement: renderVideoStreamElement, displayName: remoteParticipant.displayName, onRenderPlaceholder: onRenderAvatar, isMuted: remoteParticipant.isMuted, isSpeaking: remoteParticipant.isSpeaking, showMuteIndicator: showMuteIndicator, personaMinSize: props.personaMinSize, showLabel: props.showLabel,
8646
8672
  /* @conditional-compile-remove(one-to-n-calling) */
8647
8673
  /* @conditional-compile-remove(PSTN-calls) */
@@ -8902,6 +8928,176 @@ const FloatingLocalCameraCycleButton = (props) => {
8902
8928
  (localVideoCameraCycleButtonProps === null || localVideoCameraCycleButtonProps === void 0 ? void 0 : localVideoCameraCycleButtonProps.onSelectCamera) !== undefined && (React__default['default'].createElement(LocalVideoCameraCycleButton, { cameras: localVideoCameraCycleButtonProps.cameras, selectedCamera: localVideoCameraCycleButtonProps.selectedCamera, onSelectCamera: localVideoCameraCycleButtonProps.onSelectCamera, label: localVideoCameraSwitcherLabel, ariaDescription: ariaDescription }))));
8903
8929
  };
8904
8930
 
8931
+ // Copyright (c) Microsoft Corporation.
8932
+ /**
8933
+ * @private
8934
+ */
8935
+ react.mergeStyles({ position: 'relative', width: '100%', height: '100%' });
8936
+ /**
8937
+ * Small floating modal width and height in rem for small screen
8938
+ */
8939
+ const SMALL_FLOATING_MODAL_SIZE_PX = { width: 64, height: 88 };
8940
+ /**
8941
+ * Large floating modal width and height in rem for large screen
8942
+ * Aspect ratio: 16:9
8943
+ */
8944
+ const LARGE_FLOATING_MODAL_SIZE_PX = { width: 215, height: 120 };
8945
+ /**
8946
+ * @private
8947
+ * z-index to ensure that the local video tile is above the video gallery.
8948
+ */
8949
+ const LOCAL_VIDEO_TILE_ZINDEX = 2;
8950
+ /**
8951
+ * @private
8952
+ */
8953
+ const localVideoTileContainerStyle = (theme, isNarrow) => {
8954
+ return Object.assign({ minWidth: isNarrow ? _pxToRem(SMALL_FLOATING_MODAL_SIZE_PX.width) : _pxToRem(LARGE_FLOATING_MODAL_SIZE_PX.width), minHeight: isNarrow ? _pxToRem(SMALL_FLOATING_MODAL_SIZE_PX.height) : _pxToRem(LARGE_FLOATING_MODAL_SIZE_PX.height), position: 'absolute', bottom: _pxToRem(localVideoTileOuterPaddingPX), borderRadius: theme.effects.roundedCorner4, overflow: 'hidden' }, (theme.rtl
8955
+ ? { left: _pxToRem(localVideoTileOuterPaddingPX) }
8956
+ : { right: _pxToRem(localVideoTileOuterPaddingPX) }));
8957
+ };
8958
+ /**
8959
+ * @private
8960
+ */
8961
+ const localVideoTileWithControlsContainerStyle = (theme, isNarrow) => {
8962
+ return react.concatStyleSets(localVideoTileContainerStyle(theme, isNarrow), {
8963
+ root: { boxShadow: theme.effects.elevation8 }
8964
+ });
8965
+ };
8966
+ /**
8967
+ * @private
8968
+ */
8969
+ const floatingLocalVideoModalStyle = (theme, isNarrow) => {
8970
+ return react.concatStyleSets({
8971
+ main: localVideoTileContainerStyle(theme, isNarrow)
8972
+ }, {
8973
+ main: {
8974
+ boxShadow: theme.effects.elevation8,
8975
+ ':focus-within': {
8976
+ boxShadow: theme.effects.elevation16,
8977
+ border: `${_pxToRem(2)} solid ${theme.palette.neutralPrimary}`
8978
+ }
8979
+ }
8980
+ }, localVideoModalStyles);
8981
+ };
8982
+ /**
8983
+ * Padding equal to the amount the modal should stay inside the bounds of the container.
8984
+ * i.e. if this is 8px, the modal should always be at least 8px inside the container at all times on all sides.
8985
+ * @private
8986
+ */
8987
+ const localVideoTileOuterPaddingPX = 8;
8988
+ /**
8989
+ * @private
8990
+ */
8991
+ const floatingLocalVideoTileStyle = {
8992
+ root: {
8993
+ position: 'absolute',
8994
+ zIndex: LOCAL_VIDEO_TILE_ZINDEX,
8995
+ height: '100%',
8996
+ width: '100%'
8997
+ }
8998
+ };
8999
+ /**
9000
+ * Styles for the local video tile modal when it is focused, will cause keyboard move icon to appear over video
9001
+ * @private
9002
+ */
9003
+ const localVideoModalStyles = {
9004
+ keyboardMoveIconContainer: {
9005
+ zIndex: LOCAL_VIDEO_TILE_ZINDEX + 1 // zIndex to set the keyboard movement Icon above the other layers in the video tile.
9006
+ }
9007
+ };
9008
+
9009
+ // Copyright (c) Microsoft Corporation.
9010
+ /**
9011
+ * @private
9012
+ */
9013
+ const horizontalGalleryContainerStyle = (shouldFloatLocalVideo, isNarrow) => {
9014
+ return {
9015
+ minHeight: isNarrow
9016
+ ? `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`
9017
+ : `${LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,
9018
+ width: shouldFloatLocalVideo
9019
+ ? isNarrow
9020
+ ? `calc(100% - ${_pxToRem(SMALL_FLOATING_MODAL_SIZE_PX.width)})`
9021
+ : `calc(100% - ${_pxToRem(LARGE_FLOATING_MODAL_SIZE_PX.width)})`
9022
+ : '100%',
9023
+ paddingRight: '0.5rem'
9024
+ };
9025
+ };
9026
+ /**
9027
+ * @private
9028
+ */
9029
+ const horizontalGalleryStyle = (isNarrow) => {
9030
+ return {
9031
+ children: isNarrow ? SMALL_HORIZONTAL_GALLERY_TILE_STYLE : LARGE_HORIZONTAL_GALLERY_TILE_STYLE
9032
+ };
9033
+ };
9034
+ /**
9035
+ * Small horizontal gallery tile size in rem
9036
+ * @private
9037
+ */
9038
+ const SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM = { height: 5.5, width: 5.5 };
9039
+ /**
9040
+ * Large horizontal gallery tile size in rem
9041
+ * @private
9042
+ */
9043
+ const LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM = { height: 7.5, width: 10 };
9044
+ /**
9045
+ * @private
9046
+ */
9047
+ const SMALL_HORIZONTAL_GALLERY_TILE_STYLE = {
9048
+ minHeight: `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,
9049
+ minWidth: `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.width}rem`,
9050
+ maxHeight: `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,
9051
+ maxWidth: `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.width}rem`
9052
+ };
9053
+ /**
9054
+ * @private
9055
+ */
9056
+ const LARGE_HORIZONTAL_GALLERY_TILE_STYLE = {
9057
+ minHeight: `${LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,
9058
+ minWidth: `${LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.width}rem`,
9059
+ maxHeight: `${LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,
9060
+ maxWidth: `${LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.width}rem`
9061
+ };
9062
+
9063
+ // Copyright (c) Microsoft Corporation.
9064
+ /**
9065
+ * @private
9066
+ */
9067
+ const scrollableHorizontalGalleryStyles = {
9068
+ root: {
9069
+ width: '100%',
9070
+ minHeight: `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,
9071
+ paddingRight: '0.5rem',
9072
+ '> *': SMALL_HORIZONTAL_GALLERY_TILE_STYLE
9073
+ }
9074
+ };
9075
+ /**
9076
+ * @private
9077
+ */
9078
+ const scrollableHorizontalGalleryContainerStyles = react.mergeStyles({
9079
+ display: 'flex',
9080
+ width: `calc(100% - ${SMALL_FLOATING_MODAL_SIZE_PX.width}px)`,
9081
+ minHeight: `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,
9082
+ overflow: 'scroll',
9083
+ '-ms-overflow-style': 'none',
9084
+ 'scrollbar-width': 'none',
9085
+ '::-webkit-scrollbar': { display: 'none' }
9086
+ });
9087
+
9088
+ // Copyright (c) Microsoft Corporation.
9089
+ /**
9090
+ * Component to display elements horizontally in a scrollable container
9091
+ * @private
9092
+ */
9093
+ const ScrollableHorizontalGallery = (props) => {
9094
+ const { horizontalGalleryElements } = props;
9095
+ const ref = React.useRef();
9096
+ const { events: dragabbleEvents } = reactUseDraggableScroll.useDraggable(ref);
9097
+ return (React__default['default'].createElement("div", Object.assign({ ref: ref }, dragabbleEvents, { className: scrollableHorizontalGalleryContainerStyles }),
9098
+ React__default['default'].createElement(react.Stack, { "data-ui-id": "scrollable-horizontal-gallery", horizontal: true, styles: scrollableHorizontalGalleryStyles, tokens: { childrenGap: '0.5rem' } }, horizontalGalleryElements)));
9099
+ };
9100
+
8905
9101
  // Copyright (c) Microsoft Corporation.
8906
9102
  // Licensed under the MIT license.
8907
9103
  /**
@@ -8911,6 +9107,15 @@ const rootLayoutStyle$1 = {
8911
9107
  root: { position: 'relative', height: '100%', width: '100%', padding: '0.5rem' }
8912
9108
  };
8913
9109
 
9110
+ // Copyright (c) Microsoft Corporation.
9111
+ // Licensed under the MIT license.
9112
+ /**
9113
+ * @private
9114
+ */
9115
+ const videoGalleryLayoutGap = {
9116
+ childrenGap: '0.5rem'
9117
+ };
9118
+
8914
9119
  /**
8915
9120
  * Calculates the participants that should be rendered based on the list of dominant
8916
9121
  * speakers and currently rendered participants in a call.
@@ -9217,138 +9422,6 @@ const calculateChildrenPerPage = (args) => {
9217
9422
  return Math.floor((childrenSpace + gapWidth) / (childWidth + gapWidth));
9218
9423
  };
9219
9424
 
9220
- // Copyright (c) Microsoft Corporation.
9221
- /**
9222
- * @private
9223
- */
9224
- react.mergeStyles({ position: 'relative', width: '100%', height: '100%' });
9225
- /**
9226
- * Small floating modal width and height in rem for small screen
9227
- */
9228
- const SMALL_FLOATING_MODAL_SIZE_PX = { width: 64, height: 88 };
9229
- /**
9230
- * Large floating modal width and height in rem for large screen
9231
- * Aspect ratio: 16:9
9232
- */
9233
- const LARGE_FLOATING_MODAL_SIZE_PX = { width: 215, height: 120 };
9234
- /**
9235
- * @private
9236
- * z-index to ensure that the local video tile is above the video gallery.
9237
- */
9238
- const LOCAL_VIDEO_TILE_ZINDEX = 2;
9239
- /**
9240
- * @private
9241
- */
9242
- const localVideoTileContainerStyle = (theme, isNarrow) => {
9243
- return Object.assign({ minWidth: isNarrow ? _pxToRem(SMALL_FLOATING_MODAL_SIZE_PX.width) : _pxToRem(LARGE_FLOATING_MODAL_SIZE_PX.width), minHeight: isNarrow ? _pxToRem(SMALL_FLOATING_MODAL_SIZE_PX.height) : _pxToRem(LARGE_FLOATING_MODAL_SIZE_PX.height), position: 'absolute', bottom: _pxToRem(localVideoTileOuterPaddingPX), borderRadius: theme.effects.roundedCorner4, overflow: 'hidden' }, (theme.rtl
9244
- ? { left: _pxToRem(localVideoTileOuterPaddingPX) }
9245
- : { right: _pxToRem(localVideoTileOuterPaddingPX) }));
9246
- };
9247
- /**
9248
- * @private
9249
- */
9250
- const localVideoTileWithControlsContainerStyle = (theme, isNarrow) => {
9251
- return react.concatStyleSets(localVideoTileContainerStyle(theme, isNarrow), {
9252
- root: { boxShadow: theme.effects.elevation8 }
9253
- });
9254
- };
9255
- /**
9256
- * @private
9257
- */
9258
- const floatingLocalVideoModalStyle = (theme, isNarrow) => {
9259
- return react.concatStyleSets({
9260
- main: localVideoTileContainerStyle(theme, isNarrow)
9261
- }, {
9262
- main: {
9263
- boxShadow: theme.effects.elevation8,
9264
- ':focus-within': {
9265
- boxShadow: theme.effects.elevation16,
9266
- border: `${_pxToRem(2)} solid ${theme.palette.neutralPrimary}`
9267
- }
9268
- }
9269
- }, localVideoModalStyles);
9270
- };
9271
- /**
9272
- * Padding equal to the amount the modal should stay inside the bounds of the container.
9273
- * i.e. if this is 8px, the modal should always be at least 8px inside the container at all times on all sides.
9274
- * @private
9275
- */
9276
- const localVideoTileOuterPaddingPX = 8;
9277
- /**
9278
- * @private
9279
- */
9280
- const floatingLocalVideoTileStyle = {
9281
- root: {
9282
- position: 'absolute',
9283
- zIndex: LOCAL_VIDEO_TILE_ZINDEX,
9284
- height: '100%',
9285
- width: '100%'
9286
- }
9287
- };
9288
- /**
9289
- * Styles for the local video tile modal when it is focused, will cause keyboard move icon to appear over video
9290
- * @private
9291
- */
9292
- const localVideoModalStyles = {
9293
- keyboardMoveIconContainer: {
9294
- zIndex: LOCAL_VIDEO_TILE_ZINDEX + 1 // zIndex to set the keyboard movement Icon above the other layers in the video tile.
9295
- }
9296
- };
9297
-
9298
- // Copyright (c) Microsoft Corporation.
9299
- /**
9300
- * @private
9301
- */
9302
- const horizontalGalleryContainerStyle = (shouldFloatLocalVideo, isNarrow) => {
9303
- return {
9304
- minHeight: isNarrow
9305
- ? `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`
9306
- : `${LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,
9307
- width: shouldFloatLocalVideo
9308
- ? isNarrow
9309
- ? `calc(100% - ${_pxToRem(SMALL_FLOATING_MODAL_SIZE_PX.width)})`
9310
- : `calc(100% - ${_pxToRem(LARGE_FLOATING_MODAL_SIZE_PX.width)})`
9311
- : '100%',
9312
- paddingRight: '0.5rem'
9313
- };
9314
- };
9315
- /**
9316
- * @private
9317
- */
9318
- const horizontalGalleryStyle = (isNarrow) => {
9319
- return {
9320
- children: isNarrow ? SMALL_HORIZONTAL_GALLERY_TILE_STYLE : LARGE_HORIZONTAL_GALLERY_TILE_STYLE
9321
- };
9322
- };
9323
- /**
9324
- * Small horizontal gallery tile size in rem
9325
- * @private
9326
- */
9327
- const SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM = { height: 5.5, width: 5.5 };
9328
- /**
9329
- * Large horizontal gallery tile size in rem
9330
- * @private
9331
- */
9332
- const LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM = { height: 7.5, width: 10 };
9333
- /**
9334
- * @private
9335
- */
9336
- const SMALL_HORIZONTAL_GALLERY_TILE_STYLE = {
9337
- minHeight: `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,
9338
- minWidth: `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.width}rem`,
9339
- maxHeight: `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,
9340
- maxWidth: `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.width}rem`
9341
- };
9342
- /**
9343
- * @private
9344
- */
9345
- const LARGE_HORIZONTAL_GALLERY_TILE_STYLE = {
9346
- minHeight: `${LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,
9347
- minWidth: `${LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.width}rem`,
9348
- maxHeight: `${LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,
9349
- maxWidth: `${LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.width}rem`
9350
- };
9351
-
9352
9425
  // Copyright (c) Microsoft Corporation.
9353
9426
  /**
9354
9427
  * A ResponsiveHorizontalGallery styled for the {@link VideoGallery}
@@ -9359,8 +9432,7 @@ const VideoGalleryResponsiveHorizontalGallery = (props) => {
9359
9432
  const { shouldFloatLocalVideo = false, isNarrow = false, horizontalGalleryElements, styles } = props;
9360
9433
  const containerStyles = React.useMemo(() => horizontalGalleryContainerStyle(shouldFloatLocalVideo, isNarrow), [shouldFloatLocalVideo, isNarrow]);
9361
9434
  const galleryStyles = React.useMemo(() => react.concatStyleSets(horizontalGalleryStyle(isNarrow), styles), [isNarrow, styles]);
9362
- return (React__default['default'].createElement(react.Stack, { styles: { root: { paddingTop: '0.5rem' } } },
9363
- React__default['default'].createElement(ResponsiveHorizontalGallery, { key: "responsive-horizontal-gallery", containerStyles: containerStyles, horizontalGalleryStyles: galleryStyles, childWidthRem: isNarrow ? SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.width : LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.width, buttonWidthRem: HORIZONTAL_GALLERY_BUTTON_WIDTH, gapWidthRem: HORIZONTAL_GALLERY_GAP }, horizontalGalleryElements)));
9435
+ return (React__default['default'].createElement(ResponsiveHorizontalGallery, { key: "responsive-horizontal-gallery", containerStyles: containerStyles, horizontalGalleryStyles: galleryStyles, childWidthRem: isNarrow ? SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.width : LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.width, buttonWidthRem: HORIZONTAL_GALLERY_BUTTON_WIDTH, gapWidthRem: HORIZONTAL_GALLERY_GAP }, horizontalGalleryElements));
9364
9436
  };
9365
9437
 
9366
9438
  // Copyright (c) Microsoft Corporation.
@@ -9395,9 +9467,19 @@ const DefaultLayout = (props) => {
9395
9467
  if (localVideoComponent) {
9396
9468
  gridTiles.push(localVideoComponent);
9397
9469
  }
9398
- return (React__default['default'].createElement(react.Stack, { horizontal: false, styles: rootLayoutStyle$1 },
9470
+ const horizontalGallery = React.useMemo(() => {
9471
+ if (horizontalGalleryTiles.length === 0) {
9472
+ return null;
9473
+ }
9474
+ /* @conditional-compile-remove(pinned-participants) */
9475
+ if (isNarrow) {
9476
+ return React__default['default'].createElement(ScrollableHorizontalGallery, { horizontalGalleryElements: horizontalGalleryTiles });
9477
+ }
9478
+ return (React__default['default'].createElement(VideoGalleryResponsiveHorizontalGallery, { isNarrow: isNarrow, shouldFloatLocalVideo: true, horizontalGalleryElements: horizontalGalleryTiles, styles: styles === null || styles === void 0 ? void 0 : styles.horizontalGallery }));
9479
+ }, [isNarrow, horizontalGalleryTiles, styles === null || styles === void 0 ? void 0 : styles.horizontalGallery]);
9480
+ return (React__default['default'].createElement(react.Stack, { horizontal: false, styles: rootLayoutStyle$1, tokens: videoGalleryLayoutGap },
9399
9481
  screenShareComponent ? (screenShareComponent) : (React__default['default'].createElement(GridLayout, { key: "grid-layout", styles: styles === null || styles === void 0 ? void 0 : styles.gridLayout }, gridTiles)),
9400
- horizontalGalleryTiles.length > 0 && (React__default['default'].createElement(VideoGalleryResponsiveHorizontalGallery, { isNarrow: isNarrow, horizontalGalleryElements: horizontalGalleryTiles, styles: styles === null || styles === void 0 ? void 0 : styles.horizontalGallery }))));
9482
+ horizontalGallery));
9401
9483
  };
9402
9484
 
9403
9485
  // Copyright (c) Microsoft Corporation.
@@ -10176,12 +10258,22 @@ const FloatingLocalVideoLayout = (props) => {
10176
10258
  boxShadow: theme.effects.elevation8,
10177
10259
  zIndex: LOCAL_VIDEO_TILE_ZINDEX
10178
10260
  }) }, localVideoComponent)) : horizontalGalleryTiles.length > 0 ? (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(localVideoTileContainerStyle(theme, isNarrow)) }, localVideoComponent)) : (React__default['default'].createElement(FloatingLocalVideo, { localVideoComponent: localVideoComponent, layerHostId: layerHostId, isNarrow: isNarrow, parentWidth: parentWidth, parentHeight: parentHeight }))) : undefined;
10261
+ const horizontalGallery = React.useMemo(() => {
10262
+ if (horizontalGalleryTiles.length === 0) {
10263
+ return null;
10264
+ }
10265
+ /* @conditional-compile-remove(pinned-participants) */
10266
+ if (isNarrow) {
10267
+ return React__default['default'].createElement(ScrollableHorizontalGallery, { horizontalGalleryElements: horizontalGalleryTiles });
10268
+ }
10269
+ return (React__default['default'].createElement(VideoGalleryResponsiveHorizontalGallery, { isNarrow: isNarrow, shouldFloatLocalVideo: true, horizontalGalleryElements: horizontalGalleryTiles, styles: styles === null || styles === void 0 ? void 0 : styles.horizontalGallery }));
10270
+ }, [isNarrow, horizontalGalleryTiles, styles === null || styles === void 0 ? void 0 : styles.horizontalGallery]);
10179
10271
  return (React__default['default'].createElement(react.Stack, { styles: rootLayoutStyle },
10180
- wrappedLocalVideoComponent,
10181
- React__default['default'].createElement(react.Stack, { horizontal: false, styles: innerLayoutStyle },
10272
+ React__default['default'].createElement(react.Stack, { horizontal: false, styles: innerLayoutStyle, tokens: videoGalleryLayoutGap },
10182
10273
  screenShareComponent ? (screenShareComponent) : (React__default['default'].createElement(GridLayout, { key: "grid-layout", styles: styles === null || styles === void 0 ? void 0 : styles.gridLayout }, gridTiles)),
10183
- horizontalGalleryTiles.length > 0 && (React__default['default'].createElement(VideoGalleryResponsiveHorizontalGallery, { isNarrow: isNarrow, shouldFloatLocalVideo: true, horizontalGalleryElements: horizontalGalleryTiles, styles: styles === null || styles === void 0 ? void 0 : styles.horizontalGallery })),
10184
- React__default['default'].createElement(react.LayerHost, { id: layerHostId, className: react.mergeStyles(layerHostStyle) }))));
10274
+ horizontalGallery),
10275
+ wrappedLocalVideoComponent,
10276
+ React__default['default'].createElement(react.LayerHost, { id: layerHostId, className: react.mergeStyles(layerHostStyle) })));
10185
10277
  };
10186
10278
 
10187
10279
  // Copyright (c) Microsoft Corporation.
@@ -10227,11 +10319,12 @@ const PinnedParticipantsLayout = (props) => {
10227
10319
  zIndex: LOCAL_VIDEO_TILE_ZINDEX
10228
10320
  }) }, localVideoComponent)) : horizontalGalleryTiles.length > 0 ? (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(localVideoTileContainerStyle(theme, isNarrow)) }, localVideoComponent)) : (React__default['default'].createElement(FloatingLocalVideo, { localVideoComponent: localVideoComponent, layerHostId: layerHostId, isNarrow: isNarrow, parentWidth: parentWidth, parentHeight: parentHeight }))) : undefined;
10229
10321
  return (React__default['default'].createElement(react.Stack, { styles: rootLayoutStyle },
10230
- wrappedLocalVideoComponent,
10231
- React__default['default'].createElement(react.Stack, { horizontal: false, styles: innerLayoutStyle },
10322
+ React__default['default'].createElement(react.Stack, { horizontal: false, styles: innerLayoutStyle, tokens: videoGalleryLayoutGap },
10232
10323
  screenShareComponent ? (screenShareComponent) : (React__default['default'].createElement(GridLayout, { key: "grid-layout", styles: styles === null || styles === void 0 ? void 0 : styles.gridLayout }, gridTiles)),
10233
- horizontalGalleryTiles.length > 0 && (React__default['default'].createElement(VideoGalleryResponsiveHorizontalGallery, { isNarrow: isNarrow, shouldFloatLocalVideo: true, horizontalGalleryElements: horizontalGalleryTiles, styles: styles === null || styles === void 0 ? void 0 : styles.horizontalGallery })),
10234
- React__default['default'].createElement(react.LayerHost, { id: layerHostId, className: react.mergeStyles(layerHostStyle) }))));
10324
+ horizontalGalleryTiles.length > 0 &&
10325
+ (isNarrow ? (React__default['default'].createElement(ScrollableHorizontalGallery, { horizontalGalleryElements: horizontalGalleryTiles })) : (React__default['default'].createElement(VideoGalleryResponsiveHorizontalGallery, { isNarrow: isNarrow, shouldFloatLocalVideo: true, horizontalGalleryElements: horizontalGalleryTiles, styles: styles === null || styles === void 0 ? void 0 : styles.horizontalGallery })))),
10326
+ wrappedLocalVideoComponent,
10327
+ React__default['default'].createElement(react.LayerHost, { id: layerHostId, className: react.mergeStyles(layerHostStyle) })));
10235
10328
  };
10236
10329
 
10237
10330
  // Copyright (c) Microsoft Corporation.
@@ -10351,7 +10444,11 @@ const VideoGallery = (props) => {
10351
10444
  /* @conditional-compile-remove(PSTN-calls) */
10352
10445
  participantState: participant.state,
10353
10446
  /* @conditional-compile-remove(pinned-participants) */
10354
- showRemoteVideoTileContextualMenu: remoteVideoTileMenuOptions && remoteVideoTileMenuOptions.kind === 'contextual',
10447
+ menuKind: remoteVideoTileMenuOptions
10448
+ ? remoteVideoTileMenuOptions.kind === 'drawer'
10449
+ ? 'drawer'
10450
+ : 'contextual'
10451
+ : undefined,
10355
10452
  /* @conditional-compile-remove(pinned-participants) */
10356
10453
  drawerMenuHostId: drawerMenuHostId,
10357
10454
  /* @conditional-compile-remove(pinned-participants) */
@@ -12313,13 +12410,19 @@ const _videoGalleryRemoteParticipantsMemo = (remoteParticipants) => {
12313
12410
  return [];
12314
12411
  }
12315
12412
  return memoizedAllConvertRemoteParticipant((memoizedFn) => {
12316
- return Object.values(remoteParticipants)
12413
+ return (Object.values(remoteParticipants)
12414
+ /**
12415
+ * hiding participants who are inLobby, idle, or connecting in ACS clients till we can admit users through ACS clients.
12416
+ * phone users will be in the connecting state until they are connected to the call.
12417
+ */
12317
12418
  .filter((participant) => {
12318
- return participant.state !== 'InLobby';
12419
+ return ((participant.state !== 'InLobby' && participant.state !== 'Idle' && participant.state !== 'Connecting') ||
12420
+ participant.identifier.kind === 'phoneNumber');
12319
12421
  })
12320
12422
  .map((participant) => {
12321
- return memoizedFn(toFlatCommunicationIdentifier(participant.identifier), participant.isMuted, checkIsSpeaking(participant), participant.videoStreams, participant.state, participant.displayName);
12322
- });
12423
+ const state = _isRingingPSTNParticipant(participant);
12424
+ return memoizedFn(toFlatCommunicationIdentifier(participant.identifier), participant.isMuted, checkIsSpeaking(participant), participant.videoStreams, state, participant.displayName);
12425
+ }));
12323
12426
  });
12324
12427
  };
12325
12428
  const memoizedAllConvertRemoteParticipant = memoizeFnAll((userId, isMuted, isSpeaking, videoStreams, state, displayName) => {
@@ -12456,13 +12559,22 @@ const convertRemoteParticipantsToParticipantListParticipants = (remoteParticipan
12456
12559
  /* eslint-disable @typescript-eslint/explicit-function-return-type */
12457
12560
  const conversionCallback = (memoizeFn) => {
12458
12561
  return (remoteParticipants
12459
- // temporarily hiding lobby participants in ACS clients till we can admit users through ACS clients
12562
+ /**
12563
+ * hiding participants who are inLobby, idle, or connecting in ACS clients till we can admit users through ACS clients.
12564
+ * phone users will be in the connecting state until they are connected to the call.
12565
+ */
12460
12566
  .filter((participant) => {
12461
- return participant.state !== 'InLobby';
12567
+ return ((participant.state !== 'InLobby' && participant.state !== 'Idle' && participant.state !== 'Connecting') ||
12568
+ participant.identifier.kind === 'phoneNumber');
12462
12569
  })
12463
12570
  .map((participant) => {
12464
12571
  const isScreenSharing = Object.values(participant.videoStreams).some((videoStream) => videoStream.mediaStreamType === 'ScreenSharing' && videoStream.isAvailable);
12465
- return memoizeFn(toFlatCommunicationIdentifier(participant.identifier), participant.displayName, participant.state, participant.isMuted, isScreenSharing, participant.isSpeaking,
12572
+ /**
12573
+ * We want to check the participant to see if they are a PSTN participant joining the call
12574
+ * and mapping their state to be 'Ringing'
12575
+ */
12576
+ const state = _isRingingPSTNParticipant(participant);
12577
+ return memoizeFn(toFlatCommunicationIdentifier(participant.identifier), participant.displayName, state, participant.isMuted, isScreenSharing, participant.isSpeaking,
12466
12578
  /* @conditional-compile-remove(rooms) */ participant.role);
12467
12579
  })
12468
12580
  .sort((a, b) => {
@@ -17484,6 +17596,8 @@ const bannerNotificationStyles = {
17484
17596
  */
17485
17597
  const callArrangementContainerStyles = {
17486
17598
  root: {
17599
+ width: '100%',
17600
+ height: '100%',
17487
17601
  flexDirection: 'column-reverse' // to allow first initial keyboard focus on ControlBar
17488
17602
  }
17489
17603
  };
@@ -18448,7 +18562,7 @@ const CallArrangement = (props) => {
18448
18562
  const isMobileWithActivePane = props.mobileView && activePane;
18449
18563
  /* @conditional-compile-remove(one-to-n-calling) @conditional-compile-remove(PSTN-calls) */
18450
18564
  const callCompositeContainerCSS = React.useMemo(() => {
18451
- return { display: isMobileWithActivePane ? 'none' : 'flex' };
18565
+ return { display: isMobileWithActivePane ? 'none' : 'flex', width: '100%', height: '100%' };
18452
18566
  }, [isMobileWithActivePane]);
18453
18567
  // To be removed once feature is out of beta, replace with callCompositeContainerCSS
18454
18568
  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type