@azure/communication-react 1.5.1-alpha-202303280014 → 1.5.1-alpha-202303300013

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 (79) hide show
  1. package/dist/communication-react.d.ts +43 -7
  2. package/dist/dist-cjs/communication-react/index.js +348 -176
  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-stateful-client/src/CallClientState.d.ts +1 -1
  7. package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
  8. package/dist/dist-esm/chat-component-bindings/src/messageThreadSelector.js +29 -2
  9. package/dist/dist-esm/chat-component-bindings/src/messageThreadSelector.js.map +1 -1
  10. package/dist/dist-esm/chat-component-bindings/src/utils/constants.d.ts +4 -0
  11. package/dist/dist-esm/chat-component-bindings/src/utils/constants.js +4 -0
  12. package/dist/dist-esm/chat-component-bindings/src/utils/constants.js.map +1 -1
  13. package/dist/dist-esm/chat-component-bindings/src/utils/updateMessagesWithAttached.js +32 -26
  14. package/dist/dist-esm/chat-component-bindings/src/utils/updateMessagesWithAttached.js.map +1 -1
  15. package/dist/dist-esm/chat-stateful-client/src/convertChatMessage.js +6 -1
  16. package/dist/dist-esm/chat-stateful-client/src/convertChatMessage.js.map +1 -1
  17. package/dist/dist-esm/chat-stateful-client/src/types/ChatMessageWithStatus.d.ts +1 -0
  18. package/dist/dist-esm/chat-stateful-client/src/types/ChatMessageWithStatus.js.map +1 -1
  19. package/dist/dist-esm/communication-react/src/index.d.ts +2 -1
  20. package/dist/dist-esm/communication-react/src/index.js.map +1 -1
  21. package/dist/dist-esm/react-components/src/components/CaptionsBanner.d.ts +3 -3
  22. package/dist/dist-esm/react-components/src/components/CaptionsBanner.js +6 -27
  23. package/dist/dist-esm/react-components/src/components/CaptionsBanner.js.map +1 -1
  24. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponent.d.ts +2 -1
  25. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponent.js +11 -13
  26. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponent.js.map +1 -1
  27. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsMessageBubble.d.ts +2 -1
  28. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsMessageBubble.js +34 -20
  29. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsMessageBubble.js.map +1 -1
  30. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageContent.d.ts +11 -2
  31. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageContent.js +47 -9
  32. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageContent.js.map +1 -1
  33. package/dist/dist-esm/react-components/src/components/MessageThread.d.ts +10 -3
  34. package/dist/dist-esm/react-components/src/components/MessageThread.js +57 -36
  35. package/dist/dist-esm/react-components/src/components/MessageThread.js.map +1 -1
  36. package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.d.ts +1 -1
  37. package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js +14 -14
  38. package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js.map +1 -1
  39. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.d.ts +1 -1
  40. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.js +19 -19
  41. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.js.map +1 -1
  42. package/dist/dist-esm/react-components/src/components/VideoGallery/Layout.d.ts +2 -2
  43. package/dist/dist-esm/react-components/src/components/VideoGallery/Layout.js.map +1 -1
  44. package/dist/dist-esm/react-components/src/components/VideoGallery/OverflowGallery.d.ts +3 -3
  45. package/dist/dist-esm/react-components/src/components/VideoGallery/OverflowGallery.js +9 -9
  46. package/dist/dist-esm/react-components/src/components/VideoGallery/OverflowGallery.js.map +1 -1
  47. package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.d.ts +4 -4
  48. package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.js +20 -20
  49. package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.js.map +1 -1
  50. package/dist/dist-esm/react-components/src/components/VideoGallery.d.ts +2 -2
  51. package/dist/dist-esm/react-components/src/components/VideoGallery.js +3 -3
  52. package/dist/dist-esm/react-components/src/components/VideoGallery.js.map +1 -1
  53. package/dist/dist-esm/react-components/src/components/index.d.ts +1 -1
  54. package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
  55. package/dist/dist-esm/react-components/src/components/styles/CaptionsBanner.style.d.ts +13 -0
  56. package/dist/dist-esm/react-components/src/components/styles/CaptionsBanner.style.js +35 -0
  57. package/dist/dist-esm/react-components/src/components/styles/CaptionsBanner.style.js.map +1 -0
  58. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.d.ts +5 -0
  59. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js +28 -0
  60. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js.map +1 -1
  61. package/dist/dist-esm/react-components/src/components/utils/getParticipantsWhoHaveReadMessage.d.ts +6 -4
  62. package/dist/dist-esm/react-components/src/components/utils/getParticipantsWhoHaveReadMessage.js +1 -1
  63. package/dist/dist-esm/react-components/src/components/utils/getParticipantsWhoHaveReadMessage.js.map +1 -1
  64. package/dist/dist-esm/react-components/src/index.d.ts +1 -0
  65. package/dist/dist-esm/react-components/src/index.js.map +1 -1
  66. package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +3 -1
  67. package/dist/dist-esm/react-components/src/theming/icons.d.ts +1 -0
  68. package/dist/dist-esm/react-components/src/theming/icons.js +8 -0
  69. package/dist/dist-esm/react-components/src/theming/icons.js.map +1 -1
  70. package/dist/dist-esm/react-components/src/types/ChatMessage.d.ts +20 -1
  71. package/dist/dist-esm/react-components/src/types/ChatMessage.js.map +1 -1
  72. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +2 -2
  73. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  74. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +1 -1
  75. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
  76. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js +3 -3
  77. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js.map +1 -1
  78. package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts +8 -0
  79. package/package.json +10 -10
@@ -162,7 +162,7 @@ const _toCommunicationIdentifier = (id) => {
162
162
  // Copyright (c) Microsoft Corporation.
163
163
  // Licensed under the MIT license.
164
164
  // GENERATED FILE. DO NOT EDIT MANUALLY.
165
- var telemetryVersion = '1.5.1-alpha-202303280014';
165
+ var telemetryVersion = '1.5.1-alpha-202303300013';
166
166
 
167
167
  // Copyright (c) Microsoft Corporation.
168
168
  /**
@@ -4166,7 +4166,7 @@ const typingIndicatorStringStyle = react.mergeStyles({
4166
4166
  wordBreak: 'break-word'
4167
4167
  });
4168
4168
 
4169
- 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",onSplitButtonPrimaryActionCamera:"Turn off camera",offSplitButtonPrimaryActionCamera:"Turn on camera",cameraPrimaryActionSplitButtonTitle:"Use camera"};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",offSplitButtonMicrophonePrimaryAction:"Unmute microphone",onSplitButtonMicrophonePrimaryAction:"Mute microphone",micPrimaryActionSplitButtonTitle:"Use microphone"};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.",startScreenSharingGeneric:"There was an issue starting screen share.",cameraFrozenForRemoteParticipants:"Users in the call are having issues seeing your video. Please check your devices and network."};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",pinParticipantMenuItemAriaLabel:"Pin {participantName}",unpinParticipantMenuItemAriaLabel:"Unpin {participantName}",pinnedParticipantAnnouncementAriaLabel:"Pinned {participantName}",unpinnedParticipantAnnouncementAriaLabel:"Unpinned {participantName}"};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 VerticalGallery$1={leftNavButtonAriaLabel:"previous page",rightNavButtonAriaLabel:"next page"};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,VerticalGallery:VerticalGallery$1};
4169
+ 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",onSplitButtonPrimaryActionCamera:"Turn off camera",offSplitButtonPrimaryActionCamera:"Turn on camera",cameraPrimaryActionSplitButtonTitle:"Use camera"};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",offSplitButtonMicrophonePrimaryAction:"Unmute microphone",onSplitButtonMicrophonePrimaryAction:"Mute microphone",micPrimaryActionSplitButtonTitle:"Use microphone"};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",blockedWarningText:"This message was deleted due to organizational policy.",blockedWarningLinkText:"Details"};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.",startScreenSharingGeneric:"There was an issue starting screen share.",cameraFrozenForRemoteParticipants:"Users in the call are having issues seeing your video. Please check your devices and network."};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",pinParticipantMenuItemAriaLabel:"Pin {participantName}",unpinParticipantMenuItemAriaLabel:"Unpin {participantName}",pinnedParticipantAnnouncementAriaLabel:"Pinned {participantName}",unpinnedParticipantAnnouncementAriaLabel:"Unpinned {participantName}"};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 VerticalGallery$1={leftNavButtonAriaLabel:"previous page",rightNavButtonAriaLabel:"next page"};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,VerticalGallery:VerticalGallery$1};
4170
4170
 
4171
4171
  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};
4172
4172
 
@@ -5233,6 +5233,10 @@ const BrowserPermissionDenied20Filled = () => {
5233
5233
  React__default['default'].createElement("div", { className: react.mergeStyles(scaledIconStyles(theme)) },
5234
5234
  React__default['default'].createElement(reactIcons.Important20Filled, null))));
5235
5235
  };
5236
+ /* @conditional-compile-remove(data-loss-prevention) */
5237
+ const DataLossPreventionProhibited16Regular = () => {
5238
+ return React__default['default'].createElement(reactIcons.Prohibited16Regular, null);
5239
+ };
5236
5240
  /**
5237
5241
  * The default set of icons that are available to use in the UI components.
5238
5242
  *
@@ -5257,6 +5261,8 @@ const DEFAULT_COMPONENT_ICONS = {
5257
5261
  CancelFileUpload: React__default['default'].createElement(reactIcons.Dismiss16Regular, null),
5258
5262
  /* @conditional-compile-remove(file-sharing) */
5259
5263
  DownloadFile: React__default['default'].createElement(reactIcons.ArrowDownload16Regular, null),
5264
+ /* @conditional-compile-remove(data-loss-prevention) */
5265
+ DataLossPreventionProhibited: React__default['default'].createElement(DataLossPreventionProhibited16Regular, null),
5260
5266
  EditBoxCancel: React__default['default'].createElement(reactIcons.Dismiss20Regular, null),
5261
5267
  EditBoxSubmit: React__default['default'].createElement(reactIcons.Checkmark20Regular, null),
5262
5268
  ErrorBarCallCameraAccessDenied: React__default['default'].createElement(reactIcons.VideoProhibited16Filled, null),
@@ -6172,6 +6178,34 @@ const defaultChatMessageContainer = (theme) => ({
6172
6178
  // This makes message bubble show border in high contrast mode making each message distinguishable
6173
6179
  border: '1px solid transparent'
6174
6180
  });
6181
+ /**
6182
+ * @private
6183
+ * @conditional-compile-remove(data-loss-prevention)
6184
+ */
6185
+ const defaultBlockedMessageStyleContainer = (theme) => ({
6186
+ maxWidth: '100%',
6187
+ minWidth: `${CHAT_MESSAGE_CONTAINER_MIN_WIDTH_REM}rem`,
6188
+ marginRight: '0rem',
6189
+ color: theme.palette.neutralSecondary,
6190
+ '& i': {
6191
+ paddingTop: '0.25rem'
6192
+ },
6193
+ '& p': {
6194
+ // Deal with awkward padding seen in messages from Teams.
6195
+ // For more info see https://github.com/Azure/communication-ui-library/pull/1507
6196
+ marginBlock: '0.125rem',
6197
+ paddingRight: '0.75rem',
6198
+ fontStyle: 'italic'
6199
+ },
6200
+ '& a': {
6201
+ marginBlock: '0.125rem',
6202
+ fontStyle: 'normal',
6203
+ color: theme.palette.themePrimary,
6204
+ textDecoration: 'none'
6205
+ },
6206
+ // This makes message bubble show border in high contrast mode making each message distinguishable
6207
+ border: '1px solid transparent'
6208
+ });
6175
6209
  /**
6176
6210
  * @private
6177
6211
  */
@@ -6744,20 +6778,44 @@ const ChatMessageContent = (props) => {
6744
6778
  return React__default['default'].createElement(React__default['default'].Fragment, null);
6745
6779
  }
6746
6780
  };
6781
+ const MessageContentWithLiveAria = (props) => {
6782
+ return (React__default['default'].createElement("div", { "data-ui-status": props.message.status, role: "text", "aria-label": props.ariaLabel },
6783
+ React__default['default'].createElement(reactAriaLive.LiveMessage, { message: props.liveMessage, "aria-live": "polite" }),
6784
+ props.content));
6785
+ };
6747
6786
  const MessageContentAsRichTextHTML = (props) => {
6748
6787
  const htmlToReactParser = new htmlToReact.Parser();
6749
- const liveAuthor = _formatString(props.liveAuthorIntro, { author: `${props.message.senderDisplayName}` });
6750
- return (React__default['default'].createElement("div", { "data-ui-status": props.message.status, role: "text", "aria-label": props.messageContentAriaText },
6751
- React__default['default'].createElement(reactAriaLive.LiveMessage, { message: `${props.message.mine ? '' : liveAuthor} ${extractContent(props.message.content || '')}`, "aria-live": "polite" }),
6752
- htmlToReactParser.parse(props.message.content)));
6788
+ const liveAuthor = _formatString(props.strings.liveAuthorIntro, { author: `${props.message.senderDisplayName}` });
6789
+ return (React__default['default'].createElement(MessageContentWithLiveAria, { message: props.message, liveMessage: `${props.message.mine ? '' : liveAuthor} ${extractContent(props.message.content || '')}`, ariaLabel: messageContentAriaText(props), content: htmlToReactParser.parse(props.message.content) }));
6753
6790
  };
6754
6791
  const MessageContentAsText = (props) => {
6755
- const liveAuthor = _formatString(props.liveAuthorIntro, { author: `${props.message.senderDisplayName}` });
6756
- return (React__default['default'].createElement("div", { "data-ui-status": props.message.status, role: "text", "aria-label": props.messageContentAriaText },
6757
- React__default['default'].createElement(reactAriaLive.LiveMessage, { message: `${props.message.mine ? '' : liveAuthor} ${props.message.content}`, "aria-live": "polite" }),
6758
- React__default['default'].createElement(Linkify__default['default'], { componentDecorator: (decoratedHref, decoratedText, key) => {
6792
+ const liveAuthor = _formatString(props.strings.liveAuthorIntro, { author: `${props.message.senderDisplayName}` });
6793
+ return (React__default['default'].createElement(MessageContentWithLiveAria, { message: props.message, liveMessage: `${props.message.mine ? '' : liveAuthor} ${extractContent(props.message.content || '')}`, ariaLabel: messageContentAriaText(props), content: React__default['default'].createElement(Linkify__default['default'], { componentDecorator: (decoratedHref, decoratedText, key) => {
6759
6794
  return (React__default['default'].createElement(react.Link, { target: "_blank", href: decoratedHref, key: key }, decoratedText));
6760
- } }, props.message.content)));
6795
+ } }, props.message.content) }));
6796
+ };
6797
+ /* @conditional-compile-remove(data-loss-prevention) */
6798
+ /**
6799
+ * @private
6800
+ */
6801
+ const BlockedMessageContent = (props) => {
6802
+ var _a;
6803
+ const Icon = React__default['default'].createElement(react.FontIcon, { iconName: 'DataLossPreventionProhibited' });
6804
+ const blockedMessage = props.message.warningText === false
6805
+ ? ''
6806
+ : props.message.warningText === '' || props.message.warningText === undefined
6807
+ ? props.strings.blockedWarningText
6808
+ : props.message.warningText;
6809
+ const blockedMessageLink = props.message.link;
6810
+ const blockedMessageLinkText = blockedMessageLink
6811
+ ? (_a = props.message.linkText) !== null && _a !== void 0 ? _a : props.strings.blockedWarningLinkText
6812
+ : '';
6813
+ const liveAuthor = props.message.mine || props.message.senderDisplayName === undefined ? '' : props.message.senderDisplayName;
6814
+ const liveBlockedWarningText = `${liveAuthor} ${blockedMessage} ${blockedMessageLinkText}`;
6815
+ return (React__default['default'].createElement(MessageContentWithLiveAria, { message: props.message, liveMessage: liveBlockedWarningText, ariaLabel: liveBlockedWarningText, content: React__default['default'].createElement(react.Stack, { horizontal: true, wrap: true },
6816
+ Icon,
6817
+ blockedMessage && React__default['default'].createElement("p", null, blockedMessage),
6818
+ blockedMessageLink && (React__default['default'].createElement(react.Link, { target: '_blank', href: blockedMessageLink }, blockedMessageLinkText))) }));
6761
6819
  };
6762
6820
  // https://stackoverflow.com/questions/28899298/extract-the-text-out-of-html-string-using-javascript
6763
6821
  const extractContent = (s) => {
@@ -6765,6 +6823,18 @@ const extractContent = (s) => {
6765
6823
  span.innerHTML = s;
6766
6824
  return span.textContent || span.innerText;
6767
6825
  };
6826
+ const messageContentAriaText = (props) => {
6827
+ return props.message.content
6828
+ ? props.message.mine
6829
+ ? _formatString(props.strings.messageContentMineAriaText, {
6830
+ message: props.message.content
6831
+ })
6832
+ : _formatString(props.strings.messageContentAriaText, {
6833
+ author: `${props.message.senderDisplayName}`,
6834
+ message: props.message.content
6835
+ })
6836
+ : undefined;
6837
+ };
6768
6838
 
6769
6839
  // Copyright (c) Microsoft Corporation.
6770
6840
  /**
@@ -6900,7 +6970,10 @@ const MessageBubble = (props) => {
6900
6970
  const messageRef = React.useRef(null);
6901
6971
  const messageActionButtonRef = React.useRef(null);
6902
6972
  const [chatMessageActionFlyoutTarget, setChatMessageActionFlyoutTarget] = React.useState(undefined);
6903
- const chatActionsEnabled = !disableEditing && message.status !== 'sending' && !!message.mine;
6973
+ const chatActionsEnabled = !disableEditing &&
6974
+ message.status !== 'sending' &&
6975
+ !!message.mine &&
6976
+ /* @conditional-compile-remove(data-loss-prevention) */ message.messageType !== 'blocked';
6904
6977
  const [messageReadBy, setMessageReadBy] = React.useState([]);
6905
6978
  const actionMenuProps = wasInteractionByTouch
6906
6979
  ? undefined
@@ -6911,8 +6984,10 @@ const MessageBubble = (props) => {
6911
6984
  // Force show the action button while the flyout is open (otherwise this will dismiss when the pointer is hovered over the flyout)
6912
6985
  forceShow: chatMessageActionFlyoutTarget === messageActionButtonRef,
6913
6986
  onActionButtonClick: () => {
6914
- props.onActionButtonClick(message, setMessageReadBy);
6915
- setChatMessageActionFlyoutTarget(messageActionButtonRef);
6987
+ if (message.messageType === 'chat') {
6988
+ props.onActionButtonClick(message, setMessageReadBy);
6989
+ setChatMessageActionFlyoutTarget(messageActionButtonRef);
6990
+ }
6916
6991
  },
6917
6992
  theme
6918
6993
  });
@@ -6935,23 +7010,29 @@ const MessageBubble = (props) => {
6935
7010
  locale,
6936
7011
  fileDownloadHandler
6937
7012
  ]);
6938
- const messageContentAriaText = props.message.content
6939
- ? props.message.mine
6940
- ? _formatString(strings.messageContentMineAriaText, {
6941
- message: props.message.content
6942
- })
6943
- : _formatString(strings.messageContentAriaText, {
6944
- author: `${props.message.senderDisplayName}`,
6945
- message: props.message.content
6946
- })
6947
- : undefined;
7013
+ const editedOn = 'editedOn' in message ? message.editedOn : undefined;
7014
+ const getMessageDetails = React.useCallback(() => {
7015
+ if (messageStatus === 'failed') {
7016
+ return React__default['default'].createElement("div", { className: chatMessageFailedTagStyle(theme) }, strings.failToSendTag);
7017
+ }
7018
+ else if (message.messageType === 'chat' && editedOn) {
7019
+ return React__default['default'].createElement("div", { className: chatMessageEditedTagStyle(theme) }, strings.editedTag);
7020
+ }
7021
+ return undefined;
7022
+ }, [editedOn, message.messageType, messageStatus, strings.editedTag, strings.failToSendTag, theme]);
7023
+ const getContent = React.useCallback(() => {
7024
+ /* @conditional-compile-remove(data-loss-prevention) */
7025
+ if (message.messageType === 'blocked') {
7026
+ return (React__default['default'].createElement("div", { tabIndex: 0 },
7027
+ React__default['default'].createElement(BlockedMessageContent, { message: message, strings: strings })));
7028
+ }
7029
+ return (React__default['default'].createElement("div", { tabIndex: 0 },
7030
+ React__default['default'].createElement(ChatMessageContent, { message: message, strings: strings }),
7031
+ props.onRenderFileDownloads ? props.onRenderFileDownloads(userId, message) : defaultOnRenderFileDownloads()));
7032
+ }, [defaultOnRenderFileDownloads, message, props, strings, userId]);
6948
7033
  const chatMessage = (React__default['default'].createElement(React__default['default'].Fragment, null,
6949
7034
  React__default['default'].createElement("div", { ref: messageRef },
6950
- React__default['default'].createElement(reactNorthstar.Chat.Message, { "data-ui-id": "chat-composite-message", className: react.mergeStyles(messageContainerStyle), styles: messageContainerStyle, content: React__default['default'].createElement("div", { tabIndex: 0 },
6951
- React__default['default'].createElement(ChatMessageContent, { message: message, liveAuthorIntro: strings.liveAuthorIntro, messageContentAriaText: messageContentAriaText }),
6952
- props.onRenderFileDownloads
6953
- ? props.onRenderFileDownloads(userId, message)
6954
- : defaultOnRenderFileDownloads()), author: React__default['default'].createElement(reactNorthstar.Text, { className: chatMessageDateStyle }, message.senderDisplayName), mine: message.mine, timestamp: React__default['default'].createElement(reactNorthstar.Text, { "data-ui-id": ids.messageTimestamp }, formattedTimestamp), details: messageStatus === 'failed' ? (React__default['default'].createElement("div", { className: chatMessageFailedTagStyle(theme) }, strings.failToSendTag)) : message.editedOn ? (React__default['default'].createElement("div", { className: chatMessageEditedTagStyle(theme) }, strings.editedTag)) : undefined, positionActionMenu: false, actionMenu: actionMenuProps, onTouchStart: () => setWasInteractionByTouch(true), onPointerDown: () => setWasInteractionByTouch(false), onKeyDown: () => setWasInteractionByTouch(false), onBlur: () => setWasInteractionByTouch(false), onClick: () => {
7035
+ React__default['default'].createElement(reactNorthstar.Chat.Message, { "data-ui-id": "chat-composite-message", className: react.mergeStyles(messageContainerStyle), styles: messageContainerStyle, content: getContent(), author: React__default['default'].createElement(reactNorthstar.Text, { className: chatMessageDateStyle }, message.senderDisplayName), mine: message.mine, timestamp: React__default['default'].createElement(reactNorthstar.Text, { "data-ui-id": ids.messageTimestamp }, formattedTimestamp), details: getMessageDetails(), positionActionMenu: false, actionMenu: actionMenuProps, onTouchStart: () => setWasInteractionByTouch(true), onPointerDown: () => setWasInteractionByTouch(false), onKeyDown: () => setWasInteractionByTouch(false), onBlur: () => setWasInteractionByTouch(false), onClick: () => {
6955
7036
  if (!wasInteractionByTouch) {
6956
7037
  return;
6957
7038
  }
@@ -6961,7 +7042,9 @@ const MessageBubble = (props) => {
6961
7042
  // In doing so here we set the target of the flyout to be the message and
6962
7043
  // not the 3-dot menu button to position the flyout correctly.
6963
7044
  setChatMessageActionFlyoutTarget(messageRef);
6964
- props.onActionButtonClick(message, setMessageReadBy);
7045
+ if (message.messageType === 'chat') {
7046
+ props.onActionButtonClick(message, setMessageReadBy);
7047
+ }
6965
7048
  } })),
6966
7049
  chatActionsEnabled && (React__default['default'].createElement(ChatMessageActionFlyout, { hidden: !chatMessageActionFlyoutTarget, target: chatMessageActionFlyoutTarget, increaseFlyoutItemSize: wasInteractionByTouch, onDismiss: onActionFlyoutDismiss, onEditClick: onEditClick, onRemoveClick: onRemoveClick, onResendClick: onResendClick, strings: strings, messageReadBy: messageReadBy, messageStatus: messageStatus !== null && messageStatus !== void 0 ? messageStatus : 'failed', remoteParticipantsCount: remoteParticipantsCount, onRenderAvatar: onRenderAvatar, showMessageStatus: showMessageStatus }))));
6967
7050
  return chatMessage;
@@ -6987,28 +7070,26 @@ const ChatMessageComponent = (props) => {
6987
7070
  const [isEditing, setIsEditing] = React.useState(false);
6988
7071
  const onEditClick = React.useCallback(() => setIsEditing(true), [setIsEditing]);
6989
7072
  const { onDeleteMessage, onSendMessage, message } = props;
7073
+ const clientMessageId = 'clientMessageId' in message ? message.clientMessageId : undefined;
7074
+ const content = 'content' in message ? message.content : undefined;
6990
7075
  const onRemoveClick = React.useCallback(() => {
6991
7076
  if (onDeleteMessage && message.messageId) {
6992
7077
  onDeleteMessage(message.messageId);
6993
7078
  }
6994
7079
  // when fail to send, message does not have message id, delete message using clientmessageid
6995
- else if (onDeleteMessage && message.clientMessageId) {
6996
- onDeleteMessage(message.clientMessageId);
7080
+ else if (onDeleteMessage && message.messageType === 'chat' && clientMessageId) {
7081
+ onDeleteMessage(clientMessageId);
6997
7082
  }
6998
- }, [message.messageId, message.clientMessageId, onDeleteMessage]);
7083
+ }, [onDeleteMessage, message.messageId, message.messageType, clientMessageId]);
6999
7084
  const onResendClick = React.useCallback(() => {
7000
- var _a;
7001
- onDeleteMessage && message.clientMessageId && onDeleteMessage(message.clientMessageId);
7002
- onSendMessage && onSendMessage((_a = message.content) !== null && _a !== void 0 ? _a : '');
7003
- }, [message.clientMessageId, message.content, onSendMessage, onDeleteMessage]);
7004
- if (props.message.messageType !== 'chat') {
7005
- return React__default['default'].createElement(React__default['default'].Fragment, null);
7006
- }
7007
- else if (isEditing) {
7085
+ onDeleteMessage && clientMessageId && onDeleteMessage(clientMessageId);
7086
+ onSendMessage && onSendMessage(content !== undefined ? content : '');
7087
+ }, [clientMessageId, content, onSendMessage, onDeleteMessage]);
7088
+ if (isEditing && message.messageType === 'chat') {
7008
7089
  return (React__default['default'].createElement(ChatMessageComponentAsEditBox, { message: message, inlineEditButtons: props.inlineAcceptRejectEditButtons, strings: props.strings, onSubmit: (text, metadata, options) => __awaiter$r(void 0, void 0, void 0, function* () {
7009
7090
  props.onUpdateMessage &&
7010
- props.message.messageId &&
7011
- (yield props.onUpdateMessage(props.message.messageId, text, metadata, options));
7091
+ message.messageId &&
7092
+ (yield props.onUpdateMessage(message.messageId, text, metadata, options));
7012
7093
  setIsEditing(false);
7013
7094
  }), onCancel: () => {
7014
7095
  setIsEditing(false);
@@ -7097,7 +7178,7 @@ const isShortHeight = (containerHeightRem) => containerHeightRem <= _convertRemT
7097
7178
  *
7098
7179
  * if MessageId of B is larger than message Id of A, then B is created after A
7099
7180
  * if the last read message is created after the message A is sent, then user should have read message A as well */
7100
- const getParticipantsWhoHaveReadMessage = (message, readReceiptsBySenderId) => {
7181
+ var getParticipantsWhoHaveReadMessage = (message, readReceiptsBySenderId) => {
7101
7182
  return (Object.entries(readReceiptsBySenderId)
7102
7183
  // Filter to only read receipts that match the message OR the participant has read a different message after this message has been created
7103
7184
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -7207,7 +7288,7 @@ const DefaultSystemMessage = (props) => {
7207
7288
  return React__default['default'].createElement(React__default['default'].Fragment, null);
7208
7289
  };
7209
7290
  const memoizeAllMessages = memoizeFnAll((_messageKey, message, showMessageDate, showMessageStatus, onRenderAvatar, shouldOverlapAvatarAndMessage, styles, onRenderMessageStatus, defaultStatusRenderer, defaultChatMessageRenderer, strings, theme, _attached, statusToRender, participantCount, readCount, onRenderMessage, onUpdateMessage, onDeleteMessage, onSendMessage, disableEditing) => {
7210
- var _a, _b, _c, _d, _e, _f, _g;
7291
+ var _a, _b, _c, _d, _e, _f, _g, _h;
7211
7292
  const messageProps = {
7212
7293
  message,
7213
7294
  strings,
@@ -7217,40 +7298,54 @@ const memoizeAllMessages = memoizeFnAll((_messageKey, message, showMessageDate,
7217
7298
  onSendMessage,
7218
7299
  disableEditing
7219
7300
  };
7301
+ const chatMessageItemProps = (message, messageProps) => {
7302
+ var _a, _b, _c;
7303
+ const chatMessageComponent = onRenderMessage === undefined
7304
+ ? defaultChatMessageRenderer(messageProps)
7305
+ : onRenderMessage(messageProps, defaultChatMessageRenderer);
7306
+ const personaOptions = {
7307
+ hidePersonaDetails: true,
7308
+ size: react.PersonaSize.size32,
7309
+ text: message.senderDisplayName,
7310
+ showOverflowTooltip: false
7311
+ };
7312
+ const chatItemMessageStyle = (message.mine ? styles === null || styles === void 0 ? void 0 : styles.myChatItemMessageContainer : styles === null || styles === void 0 ? void 0 : styles.chatItemMessageContainer) ||
7313
+ defaultChatItemMessageContainer(shouldOverlapAvatarAndMessage);
7314
+ const chatGutterStyles = message.attached === 'top' || message.attached === false ? gutterWithAvatar : gutterWithHiddenAvatar;
7315
+ return {
7316
+ gutter: {
7317
+ styles: chatGutterStyles,
7318
+ content: message.mine ? ('') : onRenderAvatar ? (onRenderAvatar((_a = message.senderId) !== null && _a !== void 0 ? _a : '', personaOptions)) : (React__default['default'].createElement(react.Persona, Object.assign({}, personaOptions)))
7319
+ },
7320
+ contentPosition: message.mine ? 'end' : 'start',
7321
+ message: {
7322
+ styles: chatItemMessageStyle,
7323
+ content: (React__default['default'].createElement(reactNorthstar.Flex, { hAlign: message.mine ? 'end' : undefined, vAlign: "end" },
7324
+ chatMessageComponent,
7325
+ React__default['default'].createElement("div", { className: react.mergeStyles(messageStatusContainerStyle((_b = message.mine) !== null && _b !== void 0 ? _b : false), (styles === null || styles === void 0 ? void 0 : styles.messageStatusContainer) ? styles.messageStatusContainer((_c = message.mine) !== null && _c !== void 0 ? _c : false) : '') }, showMessageStatus && statusToRender ? (onRenderMessageStatus ? (onRenderMessageStatus({ status: statusToRender })) : (defaultStatusRenderer(message, statusToRender, participantCount !== null && participantCount !== void 0 ? participantCount : 0, readCount !== null && readCount !== void 0 ? readCount : 0))) : (React__default['default'].createElement("div", { className: react.mergeStyles(noMessageStatusStyle) })))))
7326
+ },
7327
+ attached: message.attached,
7328
+ key: _messageKey
7329
+ };
7330
+ };
7331
+ /* @conditional-compile-remove(data-loss-prevention) */
7332
+ // Similar logic as switch statement case 'chat', if statement for conditional compile (merge logic to switch case when stablize)
7333
+ if (message.messageType === 'blocked') {
7334
+ const myChatMessageStyle = message.status === 'failed'
7335
+ ? (_b = (_a = styles === null || styles === void 0 ? void 0 : styles.failedMyChatMessageContainer) !== null && _a !== void 0 ? _a : styles === null || styles === void 0 ? void 0 : styles.myChatMessageContainer) !== null && _b !== void 0 ? _b : FailedMyChatMessageContainer
7336
+ : (_c = styles === null || styles === void 0 ? void 0 : styles.myChatMessageContainer) !== null && _c !== void 0 ? _c : defaultBlockedMessageStyleContainer(theme);
7337
+ const blockedMessageStyle = (_d = styles === null || styles === void 0 ? void 0 : styles.blockedMessageContainer) !== null && _d !== void 0 ? _d : defaultBlockedMessageStyleContainer(theme);
7338
+ messageProps.messageContainerStyle = message.mine ? myChatMessageStyle : blockedMessageStyle;
7339
+ return chatMessageItemProps(message, messageProps);
7340
+ }
7220
7341
  switch (message.messageType) {
7221
7342
  case 'chat': {
7222
7343
  const myChatMessageStyle = message.status === 'failed'
7223
- ? (_b = (_a = styles === null || styles === void 0 ? void 0 : styles.failedMyChatMessageContainer) !== null && _a !== void 0 ? _a : styles === null || styles === void 0 ? void 0 : styles.myChatMessageContainer) !== null && _b !== void 0 ? _b : FailedMyChatMessageContainer
7224
- : (_c = styles === null || styles === void 0 ? void 0 : styles.myChatMessageContainer) !== null && _c !== void 0 ? _c : defaultMyChatMessageContainer;
7225
- const chatMessageStyle = (_d = styles === null || styles === void 0 ? void 0 : styles.chatMessageContainer) !== null && _d !== void 0 ? _d : defaultChatMessageContainer(theme);
7344
+ ? (_f = (_e = styles === null || styles === void 0 ? void 0 : styles.failedMyChatMessageContainer) !== null && _e !== void 0 ? _e : styles === null || styles === void 0 ? void 0 : styles.myChatMessageContainer) !== null && _f !== void 0 ? _f : FailedMyChatMessageContainer
7345
+ : (_g = styles === null || styles === void 0 ? void 0 : styles.myChatMessageContainer) !== null && _g !== void 0 ? _g : defaultMyChatMessageContainer;
7346
+ const chatMessageStyle = (_h = styles === null || styles === void 0 ? void 0 : styles.chatMessageContainer) !== null && _h !== void 0 ? _h : defaultChatMessageContainer(theme);
7226
7347
  messageProps.messageContainerStyle = message.mine ? myChatMessageStyle : chatMessageStyle;
7227
- const chatMessageComponent = onRenderMessage === undefined
7228
- ? defaultChatMessageRenderer(messageProps)
7229
- : onRenderMessage(messageProps, defaultChatMessageRenderer);
7230
- const personaOptions = {
7231
- hidePersonaDetails: true,
7232
- size: react.PersonaSize.size32,
7233
- text: message.senderDisplayName,
7234
- showOverflowTooltip: false
7235
- };
7236
- const chatItemMessageStyle = (message.mine ? styles === null || styles === void 0 ? void 0 : styles.myChatItemMessageContainer : styles === null || styles === void 0 ? void 0 : styles.chatItemMessageContainer) ||
7237
- defaultChatItemMessageContainer(shouldOverlapAvatarAndMessage);
7238
- const chatGutterStyles = message.attached === 'top' || message.attached === false ? gutterWithAvatar : gutterWithHiddenAvatar;
7239
- return {
7240
- gutter: {
7241
- styles: chatGutterStyles,
7242
- content: message.mine ? ('') : onRenderAvatar ? (onRenderAvatar((_e = message.senderId) !== null && _e !== void 0 ? _e : '', personaOptions)) : (React__default['default'].createElement(react.Persona, Object.assign({}, personaOptions)))
7243
- },
7244
- contentPosition: message.mine ? 'end' : 'start',
7245
- message: {
7246
- styles: chatItemMessageStyle,
7247
- content: (React__default['default'].createElement(reactNorthstar.Flex, { hAlign: message.mine ? 'end' : undefined, vAlign: "end" },
7248
- chatMessageComponent,
7249
- React__default['default'].createElement("div", { className: react.mergeStyles(messageStatusContainerStyle((_f = message.mine) !== null && _f !== void 0 ? _f : false), (styles === null || styles === void 0 ? void 0 : styles.messageStatusContainer) ? styles.messageStatusContainer((_g = message.mine) !== null && _g !== void 0 ? _g : false) : '') }, showMessageStatus && statusToRender ? (onRenderMessageStatus ? (onRenderMessageStatus({ status: statusToRender })) : (defaultStatusRenderer(message, statusToRender, participantCount !== null && participantCount !== void 0 ? participantCount : 0, readCount !== null && readCount !== void 0 ? readCount : 0))) : (React__default['default'].createElement("div", { className: react.mergeStyles(noMessageStatusStyle) })))))
7250
- },
7251
- attached: message.attached,
7252
- key: _messageKey
7253
- };
7348
+ return chatMessageItemProps(message, messageProps);
7254
7349
  }
7255
7350
  case 'system': {
7256
7351
  messageProps.messageContainerStyle = styles === null || styles === void 0 ? void 0 : styles.systemMessageContainer;
@@ -7515,7 +7610,8 @@ const MessageThread = (props) => {
7515
7610
  const strings = React.useMemo(() => (Object.assign(Object.assign({}, localeStrings), props.strings)), [localeStrings, props.strings]);
7516
7611
  // To rerender the defaultChatMessageRenderer if app running across days(every new day chat time stamp need to be regenerated)
7517
7612
  const defaultChatMessageRenderer = React.useCallback((messageProps) => {
7518
- if (messageProps.message.messageType === 'chat') {
7613
+ if (messageProps.message.messageType === 'chat' ||
7614
+ /* @conditional-compile-remove(data-loss-prevention) */ messageProps.message.messageType === 'blocked') {
7519
7615
  return (React__default['default'].createElement(ChatMessageComponent, Object.assign({}, messageProps, { onRenderFileDownloads: onRenderFileDownloads,
7520
7616
  /* @conditional-compile-remove(file-sharing) */
7521
7617
  strings: strings, message: messageProps.message, userId: props.userId, remoteParticipantsCount: participantCount ? participantCount - 1 : 0, inlineAcceptRejectEditButtons: !isNarrow, onRenderAvatar: onRenderAvatar, showMessageStatus: showMessageStatus, messageStatus: messageProps.message.status, onActionButtonClick: onActionButtonClickMemo,
@@ -7554,8 +7650,9 @@ const MessageThread = (props) => {
7554
7650
  return messages.map((message, index) => {
7555
7651
  let key = message.messageId;
7556
7652
  let statusToRender = undefined;
7557
- if (message.messageType === 'chat') {
7558
- if (!message.messageId || message.messageId === '') {
7653
+ if (message.messageType === 'chat' ||
7654
+ /* @conditional-compile-remove(data-loss-prevention) */ message.messageType === 'blocked') {
7655
+ if ((!message.messageId || message.messageId === '') && 'clientMessageId' in message) {
7559
7656
  key = message.clientMessageId;
7560
7657
  }
7561
7658
  if (showMessageStatus && message.mine) {
@@ -7581,7 +7678,10 @@ const MessageThread = (props) => {
7581
7678
  return memoizedMessageFn(key !== null && key !== void 0 ? key : 'id_' + index, message, showMessageDate, showMessageStatus, onRenderAvatar, isNarrow, styles, onRenderMessageStatus, defaultStatusRenderer, defaultChatMessageRenderer, strings, theme,
7582
7679
  // Temporary solution to make sure we re-render if attach attribute is changed.
7583
7680
  // The proper fix should be in selector.
7584
- message.messageType === 'chat' ? message.attached : undefined, statusToRender, participantCount, readCountForHoveredIndicator, onRenderMessage, onUpdateMessage, onDeleteMessage, onSendMessage, props.disableEditing);
7681
+ message.messageType === 'chat' ||
7682
+ /* @conditional-compile-remove(data-loss-prevention) */ message.messageType === 'blocked'
7683
+ ? message.attached
7684
+ : undefined, statusToRender, participantCount, readCountForHoveredIndicator, onRenderMessage, onUpdateMessage, onDeleteMessage, onSendMessage, props.disableEditing);
7585
7685
  });
7586
7686
  }), [
7587
7687
  messages,
@@ -9283,11 +9383,11 @@ const participantsById = (participants) => {
9283
9383
 
9284
9384
  // Copyright (c) Microsoft Corporation.
9285
9385
  const DEFAULT_MAX_REMOTE_VIDEOSTREAMS = 4;
9286
- const DEFAULT_MAX_HORIZONTAL_GALLERY_DOMINANT_SPEAKERS = 6;
9386
+ const DEFAULT_MAX_OVERFLOW_GALLERY_DOMINANT_SPEAKERS = 6;
9287
9387
  const _useOrganizedParticipants = (props) => {
9288
9388
  const visibleGridParticipants = React.useRef([]);
9289
- const visibleHorizontalGalleryParticipants = React.useRef([]);
9290
- const { remoteParticipants = [], dominantSpeakers = [], maxRemoteVideoStreams = DEFAULT_MAX_REMOTE_VIDEOSTREAMS, maxHorizontalGalleryDominantSpeakers = DEFAULT_MAX_HORIZONTAL_GALLERY_DOMINANT_SPEAKERS, isScreenShareActive = false, pinnedParticipantUserIds = [] } = props;
9389
+ const visibleOverflowGalleryParticipants = React.useRef([]);
9390
+ const { remoteParticipants = [], dominantSpeakers = [], maxRemoteVideoStreams = DEFAULT_MAX_REMOTE_VIDEOSTREAMS, maxOverflowGalleryDominantSpeakers = DEFAULT_MAX_OVERFLOW_GALLERY_DOMINANT_SPEAKERS, isScreenShareActive = false, pinnedParticipantUserIds = [] } = props;
9291
9391
  const videoParticipants = remoteParticipants.filter((p) => { var _a; return (_a = p.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable; });
9292
9392
  visibleGridParticipants.current =
9293
9393
  pinnedParticipantUserIds.length > 0 || isScreenShareActive
@@ -9304,12 +9404,12 @@ const _useOrganizedParticipants = (props) => {
9304
9404
  const callingParticipants = remoteParticipantsOrdered.filter((p) => p.state === ('Connecting' ));
9305
9405
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
9306
9406
  const callingParticipantsSet = new Set(callingParticipants.map((p) => p.userId));
9307
- visibleHorizontalGalleryParticipants.current = smartDominantSpeakerParticipants({
9407
+ visibleOverflowGalleryParticipants.current = smartDominantSpeakerParticipants({
9308
9408
  participants: remoteParticipantsOrdered.filter((p) => !visibleGridParticipantsSet.has(p.userId) &&
9309
9409
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ !callingParticipantsSet.has(p.userId)),
9310
9410
  dominantSpeakers: dominantSpeakers,
9311
- lastVisibleParticipants: visibleHorizontalGalleryParticipants.current,
9312
- maxDominantSpeakers: maxHorizontalGalleryDominantSpeakers
9411
+ lastVisibleParticipants: visibleOverflowGalleryParticipants.current,
9412
+ maxDominantSpeakers: maxOverflowGalleryDominantSpeakers
9313
9413
  });
9314
9414
  const getGridParticipants = React.useCallback(() => {
9315
9415
  if (isScreenShareActive) {
@@ -9318,32 +9418,32 @@ const _useOrganizedParticipants = (props) => {
9318
9418
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
9319
9419
  return visibleGridParticipants.current.length > 0
9320
9420
  ? visibleGridParticipants.current
9321
- : visibleHorizontalGalleryParticipants.current.concat(callingParticipants);
9421
+ : visibleOverflowGalleryParticipants.current.concat(callingParticipants);
9322
9422
  }, [
9323
9423
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ callingParticipants,
9324
9424
  isScreenShareActive
9325
9425
  ]);
9326
9426
  const gridParticipants = getGridParticipants();
9327
- const getHorizontalGalleryRemoteParticipants = React.useCallback(() => {
9427
+ const getOverflowGalleryRemoteParticipants = React.useCallback(() => {
9328
9428
  if (isScreenShareActive) {
9329
- // If screen sharing is active, assign video and audio participants as horizontal gallery participants
9429
+ // If screen sharing is active, assign video and audio participants as overflow gallery participants
9330
9430
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
9331
- return visibleGridParticipants.current.concat(visibleHorizontalGalleryParticipants.current.concat(callingParticipants));
9431
+ return visibleGridParticipants.current.concat(visibleOverflowGalleryParticipants.current.concat(callingParticipants));
9332
9432
  }
9333
9433
  else {
9334
9434
  // If screen sharing is not active, then assign all video tiles as grid tiles.
9335
9435
  // If there are no video tiles, then assign audio tiles as grid tiles.
9336
9436
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
9337
9437
  return visibleGridParticipants.current.length > 0
9338
- ? visibleHorizontalGalleryParticipants.current.concat(callingParticipants)
9438
+ ? visibleOverflowGalleryParticipants.current.concat(callingParticipants)
9339
9439
  : [];
9340
9440
  }
9341
9441
  }, [
9342
9442
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ callingParticipants,
9343
9443
  isScreenShareActive
9344
9444
  ]);
9345
- const horizontalGalleryParticipants = getHorizontalGalleryRemoteParticipants();
9346
- return { gridParticipants, horizontalGalleryParticipants };
9445
+ const overflowGalleryParticipants = getOverflowGalleryRemoteParticipants();
9446
+ return { gridParticipants, overflowGalleryParticipants: overflowGalleryParticipants };
9347
9447
  };
9348
9448
  /* @conditional-compile-remove(pinned-participants) */
9349
9449
  const _useOrganizedParticipantsWithPinnedParticipants = (props) => {
@@ -9373,9 +9473,9 @@ const _useOrganizedParticipantsWithPinnedParticipants = (props) => {
9373
9473
  }
9374
9474
  return {
9375
9475
  gridParticipants: props.isScreenShareActive ? [] : pinnedParticipants,
9376
- horizontalGalleryParticipants: props.isScreenShareActive
9377
- ? pinnedParticipants.concat(useOrganizedParticipantsResult.horizontalGalleryParticipants)
9378
- : useOrganizedParticipantsResult.gridParticipants.concat(useOrganizedParticipantsResult.horizontalGalleryParticipants)
9476
+ overflowGalleryParticipants: props.isScreenShareActive
9477
+ ? pinnedParticipants.concat(useOrganizedParticipantsResult.overflowGalleryParticipants)
9478
+ : useOrganizedParticipantsResult.gridParticipants.concat(useOrganizedParticipantsResult.overflowGalleryParticipants)
9379
9479
  };
9380
9480
  };
9381
9481
  const putVideoParticipantsFirst = (remoteParticipants) => {
@@ -9394,7 +9494,7 @@ const putVideoParticipantsFirst = (remoteParticipants) => {
9394
9494
  return remoteParticipantSortedByVideo;
9395
9495
  };
9396
9496
  /**
9397
- * Hook to determine which participants should be in grid and horizontal gallery and their order respectively
9497
+ * Hook to determine which participants should be in grid and overflow gallery and their order respectively
9398
9498
  * @private
9399
9499
  */
9400
9500
  const useOrganizedParticipants = (args) => {
@@ -10109,11 +10209,11 @@ const OverflowGallery = (props) => {
10109
10209
  const { shouldFloatLocalVideo = false, onFetchTilesToRender, isNarrow = false,
10110
10210
  /* @conditional-compile-remove(vertical-gallery) */
10111
10211
  isShort = false, overflowGalleryElements, horizontalGalleryStyles,
10112
- /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout = 'HorizontalBottom',
10113
- /* @conditional-compile-remove(vertical-gallery) */ veritcalGalleryStyles, onChildrenPerPageChange } = props;
10212
+ /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition = 'HorizontalBottom',
10213
+ /* @conditional-compile-remove(vertical-gallery) */ verticalGalleryStyles, onChildrenPerPageChange } = props;
10114
10214
  const containerStyles = React.useMemo(() => {
10115
10215
  /* @conditional-compile-remove(vertical-gallery) */
10116
- if (overflowGalleryLayout === 'VerticalRight') {
10216
+ if (overflowGalleryPosition === 'VerticalRight') {
10117
10217
  return verticalGalleryContainerStyle(shouldFloatLocalVideo, isNarrow, isShort);
10118
10218
  }
10119
10219
  return horizontalGalleryContainerStyle(shouldFloatLocalVideo, isNarrow);
@@ -10121,23 +10221,23 @@ const OverflowGallery = (props) => {
10121
10221
  shouldFloatLocalVideo,
10122
10222
  /* @conditional-compile-remove(vertical-gallery) */ isShort,
10123
10223
  isNarrow,
10124
- /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout
10224
+ /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition
10125
10225
  ]);
10126
10226
  const galleryStyles = React.useMemo(() => {
10127
10227
  /* @conditional-compile-remove(vertical-gallery) */
10128
- if (overflowGalleryLayout === 'VerticalRight') {
10129
- return react.concatStyleSets(verticalGalleryStyle(isShort), veritcalGalleryStyles);
10228
+ if (overflowGalleryPosition === 'VerticalRight') {
10229
+ return react.concatStyleSets(verticalGalleryStyle(isShort), verticalGalleryStyles);
10130
10230
  }
10131
10231
  return react.concatStyleSets(horizontalGalleryStyle(isNarrow), horizontalGalleryStyles);
10132
10232
  }, [
10133
10233
  isNarrow,
10134
10234
  /* @conditional-compile-remove(vertical-gallery) */ isShort,
10135
10235
  horizontalGalleryStyles,
10136
- /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout,
10137
- /* @conditional-compile-remove(vertical-gallery) */ veritcalGalleryStyles
10236
+ /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition,
10237
+ /* @conditional-compile-remove(vertical-gallery) */ verticalGalleryStyles
10138
10238
  ]);
10139
10239
  /* @conditional-compile-remove(vertical-gallery) */
10140
- if (overflowGalleryLayout === 'VerticalRight') {
10240
+ if (overflowGalleryPosition === 'VerticalRight') {
10141
10241
  return (React__default['default'].createElement(ResponsiveVerticalGallery, { key: "responsive-vertical-gallery", containerStyles: containerStyles, verticalGalleryStyles: galleryStyles, controlBarHeightRem: HORIZONTAL_GALLERY_BUTTON_WIDTH, gapHeightRem: HORIZONTAL_GALLERY_GAP, isShort: isShort, onFetchTilesToRender: onFetchTilesToRender, onChildrenPerPageChange: onChildrenPerPageChange }, overflowGalleryElements));
10142
10242
  }
10143
10243
  /* @conditional-compile-remove(pinned-participants) */
@@ -10153,7 +10253,7 @@ const OverflowGallery = (props) => {
10153
10253
  // Copyright (c) Microsoft Corporation.
10154
10254
  /**
10155
10255
  * DefaultLayout displays remote participants, local video component, and screen sharing component in
10156
- * a grid and horizontal gallery.
10256
+ * a grid an overflow gallery.
10157
10257
  *
10158
10258
  * @private
10159
10259
  */
@@ -10161,19 +10261,19 @@ const DefaultLayout = (props) => {
10161
10261
  const { remoteParticipants = [], dominantSpeakers, localVideoComponent, screenShareComponent, onRenderRemoteParticipant, styles, maxRemoteVideoStreams, parentWidth,
10162
10262
  /* @conditional-compile-remove(vertical-gallery) */
10163
10263
  parentHeight, pinnedParticipantUserIds = [],
10164
- /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout = 'HorizontalBottom' } = props;
10264
+ /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition = 'HorizontalBottom' } = props;
10165
10265
  const isNarrow = parentWidth ? isNarrowWidth(parentWidth) : false;
10166
10266
  /* @conditional-compile-remove(vertical-gallery) */
10167
10267
  const isShort = parentHeight ? isShortHeight(parentHeight) : false;
10168
- // This is for tracking the number of children in the first page of horizontal gallery.
10169
- // This number will be used for the maxHorizontalDominantSpeakers when organizing the remote participants.
10268
+ // This is for tracking the number of children in the first page of overflow gallery.
10269
+ // This number will be used for the maxOverflowGalleryDominantSpeakers when organizing the remote participants.
10170
10270
  const childrenPerPage = React.useRef(4);
10171
- const { gridParticipants, horizontalGalleryParticipants } = useOrganizedParticipants({
10271
+ const { gridParticipants, overflowGalleryParticipants } = useOrganizedParticipants({
10172
10272
  remoteParticipants,
10173
10273
  dominantSpeakers,
10174
10274
  maxRemoteVideoStreams,
10175
10275
  isScreenShareActive: !!screenShareComponent,
10176
- maxHorizontalGalleryDominantSpeakers: screenShareComponent
10276
+ maxOverflowGalleryDominantSpeakers: screenShareComponent
10177
10277
  ? childrenPerPage.current - (pinnedParticipantUserIds.length % childrenPerPage.current)
10178
10278
  : childrenPerPage.current,
10179
10279
  /* @conditional-compile-remove(pinned-participants) */ pinnedParticipantUserIds
@@ -10195,7 +10295,7 @@ const DefaultLayout = (props) => {
10195
10295
  const [indexesToRender, setIndexesToRender] = React.useState([
10196
10296
  ...Array(maxRemoteVideoStreams - activeVideoStreams).keys()
10197
10297
  ]);
10198
- const horizontalGalleryTiles = horizontalGalleryParticipants.map((p, i) => {
10298
+ const overflowGalleryTiles = overflowGalleryParticipants.map((p, i) => {
10199
10299
  var _a, _b;
10200
10300
  return onRenderRemoteParticipant(p, maxRemoteVideoStreams && maxRemoteVideoStreams >= 0
10201
10301
  ? ((_a = p.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable) && indexesToRender.includes(i) && activeVideoStreams++ < maxRemoteVideoStreams
@@ -10205,32 +10305,32 @@ const DefaultLayout = (props) => {
10205
10305
  gridTiles.push(localVideoComponent);
10206
10306
  }
10207
10307
  const overflowGallery = React.useMemo(() => {
10208
- if (horizontalGalleryTiles.length === 0) {
10308
+ if (overflowGalleryTiles.length === 0) {
10209
10309
  return null;
10210
10310
  }
10211
10311
  return (React__default['default'].createElement(OverflowGallery, { isNarrow: isNarrow,
10212
10312
  /* @conditional-compile-remove(vertical-gallery) */
10213
- isShort: isShort, shouldFloatLocalVideo: false, overflowGalleryElements: horizontalGalleryTiles, horizontalGalleryStyles: styles === null || styles === void 0 ? void 0 : styles.horizontalGallery,
10313
+ isShort: isShort, shouldFloatLocalVideo: false, overflowGalleryElements: overflowGalleryTiles, horizontalGalleryStyles: styles === null || styles === void 0 ? void 0 : styles.horizontalGallery,
10214
10314
  /* @conditional-compile-remove(vertical-gallery) */
10215
- veritcalGalleryStyles: styles === null || styles === void 0 ? void 0 : styles.verticalGallery,
10315
+ verticalGalleryStyles: styles === null || styles === void 0 ? void 0 : styles.verticalGallery,
10216
10316
  /* @conditional-compile-remove(pinned-participants) */
10217
- overflowGalleryLayout: overflowGalleryLayout, onFetchTilesToRender: setIndexesToRender, onChildrenPerPageChange: (n) => {
10317
+ overflowGalleryPosition: overflowGalleryPosition, onFetchTilesToRender: setIndexesToRender, onChildrenPerPageChange: (n) => {
10218
10318
  childrenPerPage.current = n;
10219
10319
  } }));
10220
10320
  }, [
10221
10321
  isNarrow,
10222
10322
  /* @conditional-compile-remove(vertical-gallery) */ isShort,
10223
- horizontalGalleryTiles,
10323
+ overflowGalleryTiles,
10224
10324
  styles === null || styles === void 0 ? void 0 : styles.horizontalGallery,
10325
+ /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition,
10225
10326
  setIndexesToRender,
10226
- /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout,
10227
10327
  /* @conditional-compile-remove(vertical-gallery) */ styles === null || styles === void 0 ? void 0 : styles.verticalGallery
10228
10328
  ]);
10229
10329
  return (React__default['default'].createElement(react.Stack
10230
10330
  /* @conditional-compile-remove(vertical-gallery) */
10231
10331
  , {
10232
10332
  /* @conditional-compile-remove(vertical-gallery) */
10233
- horizontal: overflowGalleryLayout === 'VerticalRight', styles: rootLayoutStyle$1, tokens: videoGalleryLayoutGap },
10333
+ horizontal: overflowGalleryPosition === 'VerticalRight', styles: rootLayoutStyle$1, tokens: videoGalleryLayoutGap },
10234
10334
  screenShareComponent ? (screenShareComponent) : (React__default['default'].createElement(GridLayout, { key: "grid-layout", styles: styles === null || styles === void 0 ? void 0 : styles.gridLayout }, gridTiles)),
10235
10335
  overflowGallery));
10236
10336
  };
@@ -10974,26 +11074,26 @@ const layerHostStyle = {
10974
11074
  // Copyright (c) Microsoft Corporation.
10975
11075
  /**
10976
11076
  * FloatingLocalVideoLayout displays remote participants and a screen sharing component in
10977
- * a grid and horizontal gallery while floating the local video
11077
+ * a grid and overflow gallery while floating the local video
10978
11078
  *
10979
11079
  * @private
10980
11080
  */
10981
11081
  const FloatingLocalVideoLayout = (props) => {
10982
- const { remoteParticipants = [], dominantSpeakers, localVideoComponent, screenShareComponent, onRenderRemoteParticipant, styles, maxRemoteVideoStreams, showCameraSwitcherInLocalPreview, parentWidth, parentHeight, pinnedParticipantUserIds = [],
10983
- /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout = 'HorizontalBottom' } = props;
11082
+ const { remoteParticipants = [], dominantSpeakers, localVideoComponent, screenShareComponent, onRenderRemoteParticipant, styles, maxRemoteVideoStreams, showCameraSwitcherInLocalPreview, parentWidth, parentHeight,
11083
+ /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition = 'HorizontalBottom', pinnedParticipantUserIds = [] } = props;
10984
11084
  const theme = useTheme();
10985
11085
  const isNarrow = parentWidth ? isNarrowWidth(parentWidth) : false;
10986
11086
  /* @conditional-compile-remove(vertical-gallery) */
10987
11087
  const isShort = parentHeight ? isShortHeight(parentHeight) : false;
10988
- // This is for tracking the number of children in the first page of horizontal gallery.
10989
- // This number will be used for the maxHorizontalDominantSpeakers when organizing the remote participants.
11088
+ // This is for tracking the number of children in the first page of overflow gallery.
11089
+ // This number will be used for the maxOverflowGalleryDominantSpeakers when organizing the remote participants.
10990
11090
  const childrenPerPage = React.useRef(4);
10991
- const { gridParticipants, horizontalGalleryParticipants } = useOrganizedParticipants({
11091
+ const { gridParticipants, overflowGalleryParticipants } = useOrganizedParticipants({
10992
11092
  remoteParticipants,
10993
11093
  dominantSpeakers,
10994
11094
  maxRemoteVideoStreams,
10995
11095
  isScreenShareActive: !!screenShareComponent,
10996
- maxHorizontalGalleryDominantSpeakers: screenShareComponent
11096
+ maxOverflowGalleryDominantSpeakers: screenShareComponent
10997
11097
  ? childrenPerPage.current - (pinnedParticipantUserIds.length % childrenPerPage.current)
10998
11098
  : childrenPerPage.current,
10999
11099
  /* @conditional-compile-remove(pinned-participants) */ pinnedParticipantUserIds
@@ -11019,7 +11119,7 @@ const FloatingLocalVideoLayout = (props) => {
11019
11119
  const [indexesToRender, setIndexesToRender] = React.useState([
11020
11120
  ...Array(maxRemoteVideoStreams - activeVideoStreams).keys()
11021
11121
  ]);
11022
- const horizontalGalleryTiles = horizontalGalleryParticipants.map((p, i) => {
11122
+ const overflowGalleryTiles = overflowGalleryParticipants.map((p, i) => {
11023
11123
  var _a, _b;
11024
11124
  return onRenderRemoteParticipant(p, maxRemoteVideoStreams && maxRemoteVideoStreams >= 0
11025
11125
  ? ((_a = p.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable) && indexesToRender.includes(i) && activeVideoStreams++ < maxRemoteVideoStreams
@@ -11031,7 +11131,7 @@ const FloatingLocalVideoLayout = (props) => {
11031
11131
  return SMALL_FLOATING_MODAL_SIZE_REM;
11032
11132
  }
11033
11133
  /* @conditional-compile-remove(vertical-gallery) */
11034
- if ((horizontalGalleryTiles.length > 0 || !!screenShareComponent) && overflowGalleryLayout === 'VerticalRight') {
11134
+ if ((overflowGalleryTiles.length > 0 || !!screenShareComponent) && overflowGalleryPosition === 'VerticalRight') {
11035
11135
  return isNarrow
11036
11136
  ? SMALL_FLOATING_MODAL_SIZE_REM
11037
11137
  : isShort
@@ -11040,10 +11140,10 @@ const FloatingLocalVideoLayout = (props) => {
11040
11140
  }
11041
11141
  return LARGE_FLOATING_MODAL_SIZE_REM;
11042
11142
  }, [
11043
- horizontalGalleryTiles.length,
11143
+ overflowGalleryTiles.length,
11044
11144
  isNarrow,
11045
11145
  /* @conditional-compile-remove(vertical-gallery) */ isShort,
11046
- /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout,
11146
+ /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition,
11047
11147
  /* @conditional-compile-remove(vertical-gallery) */ screenShareComponent
11048
11148
  ]);
11049
11149
  const wrappedLocalVideoComponent = localVideoComponent && shouldFloatLocalVideo ? (
@@ -11051,30 +11151,30 @@ const FloatingLocalVideoLayout = (props) => {
11051
11151
  showCameraSwitcherInLocalPreview ? (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(localVideoTileWithControlsContainerStyle(theme, localVideoSizeRem), {
11052
11152
  boxShadow: theme.effects.elevation8,
11053
11153
  zIndex: LOCAL_VIDEO_TILE_ZINDEX
11054
- }) }, localVideoComponent)) : horizontalGalleryTiles.length > 0 || !!screenShareComponent ? (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(localVideoTileContainerStyle(theme, localVideoSizeRem)) }, localVideoComponent)) : (React__default['default'].createElement(FloatingLocalVideo, { localVideoComponent: localVideoComponent, layerHostId: layerHostId, localVideoSizeRem: localVideoSizeRem, parentWidth: parentWidth, parentHeight: parentHeight }))) : undefined;
11154
+ }) }, localVideoComponent)) : overflowGalleryTiles.length > 0 || !!screenShareComponent ? (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(localVideoTileContainerStyle(theme, localVideoSizeRem)) }, localVideoComponent)) : (React__default['default'].createElement(FloatingLocalVideo, { localVideoComponent: localVideoComponent, layerHostId: layerHostId, localVideoSizeRem: localVideoSizeRem, parentWidth: parentWidth, parentHeight: parentHeight }))) : undefined;
11055
11155
  const overflowGallery = React.useMemo(() => {
11056
- if (horizontalGalleryTiles.length === 0 && !screenShareComponent) {
11156
+ if (overflowGalleryTiles.length === 0 && !screenShareComponent) {
11057
11157
  return null;
11058
11158
  }
11059
11159
  return (React__default['default'].createElement(OverflowGallery
11060
11160
  /* @conditional-compile-remove(vertical-gallery) */
11061
11161
  , {
11062
11162
  /* @conditional-compile-remove(vertical-gallery) */
11063
- isShort: isShort, onFetchTilesToRender: setIndexesToRender, isNarrow: isNarrow, shouldFloatLocalVideo: true, overflowGalleryElements: horizontalGalleryTiles, horizontalGalleryStyles: styles === null || styles === void 0 ? void 0 : styles.horizontalGallery,
11163
+ isShort: isShort, onFetchTilesToRender: setIndexesToRender, isNarrow: isNarrow, shouldFloatLocalVideo: true, overflowGalleryElements: overflowGalleryTiles, horizontalGalleryStyles: styles === null || styles === void 0 ? void 0 : styles.horizontalGallery,
11064
11164
  /* @conditional-compile-remove(vertical-gallery) */
11065
- veritcalGalleryStyles: styles === null || styles === void 0 ? void 0 : styles.verticalGallery,
11165
+ verticalGalleryStyles: styles === null || styles === void 0 ? void 0 : styles.verticalGallery,
11066
11166
  /* @conditional-compile-remove(vertical-gallery) */
11067
- overflowGalleryLayout: overflowGalleryLayout, onChildrenPerPageChange: (n) => {
11167
+ overflowGalleryPosition: overflowGalleryPosition, onChildrenPerPageChange: (n) => {
11068
11168
  childrenPerPage.current = n;
11069
11169
  } }));
11070
11170
  }, [
11071
11171
  isNarrow,
11072
11172
  /* @conditional-compile-remove(vertical-gallery) */ isShort,
11073
- horizontalGalleryTiles,
11173
+ overflowGalleryTiles,
11074
11174
  styles === null || styles === void 0 ? void 0 : styles.horizontalGallery,
11175
+ /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition,
11075
11176
  setIndexesToRender,
11076
11177
  screenShareComponent,
11077
- /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout,
11078
11178
  /* @conditional-compile-remove(vertical-gallery) */ styles === null || styles === void 0 ? void 0 : styles.verticalGallery
11079
11179
  ]);
11080
11180
  return (React__default['default'].createElement(react.Stack, { styles: rootLayoutStyle },
@@ -11084,7 +11184,7 @@ const FloatingLocalVideoLayout = (props) => {
11084
11184
  /* @conditional-compile-remove(vertical-gallery) */
11085
11185
  , {
11086
11186
  /* @conditional-compile-remove(vertical-gallery) */
11087
- horizontal: overflowGalleryLayout === 'VerticalRight', styles: innerLayoutStyle, tokens: videoGalleryLayoutGap },
11187
+ horizontal: overflowGalleryPosition === 'VerticalRight', styles: innerLayoutStyle, tokens: videoGalleryLayoutGap },
11088
11188
  screenShareComponent ? (screenShareComponent) : (React__default['default'].createElement(GridLayout, { key: "grid-layout", styles: styles === null || styles === void 0 ? void 0 : styles.gridLayout }, gridTiles)),
11089
11189
  overflowGallery)));
11090
11190
  };
@@ -11135,7 +11235,7 @@ const VideoGallery = (props) => {
11135
11235
  /* @conditional-compile-remove(pinned-participants) */
11136
11236
  remoteVideoTileMenuOptions = DEFAULT_REMOTE_VIDEO_TILE_MENU_OPTIONS,
11137
11237
  /* @conditional-compile-remove(vertical-gallery) */
11138
- overflowGalleryLayout = 'HorizontalBottom' } = props;
11238
+ overflowGalleryPosition = 'HorizontalBottom' } = props;
11139
11239
  const ids = useIdentifiers();
11140
11240
  const theme = useTheme();
11141
11241
  const localeStrings = useLocale$1().strings.videoGallery;
@@ -11297,7 +11397,7 @@ const VideoGallery = (props) => {
11297
11397
  parentWidth: containerWidth,
11298
11398
  parentHeight: containerHeight,
11299
11399
  /* @conditional-compile-remove(pinned-participants) */ pinnedParticipantUserIds: pinnedParticipants,
11300
- /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout
11400
+ /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition
11301
11401
  }), [
11302
11402
  remoteParticipants,
11303
11403
  screenShareComponent,
@@ -11311,7 +11411,7 @@ const VideoGallery = (props) => {
11311
11411
  onRenderRemoteVideoTile,
11312
11412
  defaultOnRenderVideoTile,
11313
11413
  /* @conditional-compile-remove(pinned-participants) */ pinnedParticipants,
11314
- /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout
11414
+ /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition
11315
11415
  ]);
11316
11416
  const videoGalleryLayout = React.useMemo(() => {
11317
11417
  if (layout === 'floatingLocalVideo') {
@@ -13280,6 +13380,38 @@ const _DevicePermissionDropdown = (props) => {
13280
13380
  }, options: options !== null && options !== void 0 ? options : [], styles: styles }));
13281
13381
  };
13282
13382
 
13383
+ // Copyright (c) Microsoft Corporation.
13384
+ /**
13385
+ * @private
13386
+ */
13387
+ react.mergeStyles({
13388
+ overflowY: 'scroll',
13389
+ overflowX: 'hidden',
13390
+ width: '100%',
13391
+ height: _pxToRem(60),
13392
+ display: 'grid',
13393
+ gridTemplateColumns: 'auto 1fr',
13394
+ alignItems: 'stretch',
13395
+ columnGap: _pxToRem(16),
13396
+ padding: _pxToRem(8)
13397
+ });
13398
+ /**
13399
+ * @private
13400
+ */
13401
+ react.mergeStyles({
13402
+ fontWeight: 600,
13403
+ fontSize: _pxToRem(12),
13404
+ lineHeight: _pxToRem(30)
13405
+ });
13406
+ /**
13407
+ * @private
13408
+ */
13409
+ react.mergeStyles({
13410
+ fontWeight: 400,
13411
+ fontSize: _pxToRem(16),
13412
+ lineHeight: _pxToRem(30)
13413
+ });
13414
+
13283
13415
  // Copyright (c) Microsoft Corporation.
13284
13416
  // Licensed under the MIT license.
13285
13417
  /**
@@ -14121,6 +14253,10 @@ const PARTICIPANTS_THRESHOLD = 20;
14121
14253
  * @private
14122
14254
  */
14123
14255
  const MINUTE_IN_MS = 1000 * 60;
14256
+ /**
14257
+ * @private
14258
+ */
14259
+ const DEFAULT_DATA_LOSS_PREVENTION_POLICY_URL = 'https://go.microsoft.com/fwlink/?LinkId=2132837';
14124
14260
  /**
14125
14261
  * @private
14126
14262
  *
@@ -14165,39 +14301,49 @@ const updateMessagesWithAttached = (chatMessagesWithStatus) => {
14165
14301
  chatMessagesWithStatus.sort(compareMessages);
14166
14302
  chatMessagesWithStatus.forEach((message, index, messages) => {
14167
14303
  var _a, _b;
14168
- if (message.messageType !== 'chat') {
14169
- return;
14170
- }
14171
- /**
14172
- * Attached === true means it is within a group of messages in the current order
14173
- * Attached === top/bottom means it is on the top/bottom boundary
14174
- * Attached === false means it is just a single message
14175
- * A group of messages: continuous messages that belong to the same sender and not intercepted by other senders.
14176
- */
14177
- let attached = false;
14178
- const previousMessage = index > 0 ? messages[index - 1] : undefined;
14179
- const nextMessage = index === messages.length - 1 ? undefined : messages[index + 1];
14180
- const previousSenderId = (previousMessage === null || previousMessage === void 0 ? void 0 : previousMessage.messageType) === 'chat' ? previousMessage.senderId : undefined;
14181
- const nextSenderId = (nextMessage === null || nextMessage === void 0 ? void 0 : nextMessage.messageType) === 'chat' ? nextMessage.senderId : undefined;
14182
- const timediff = new Date((_a = message === null || message === void 0 ? void 0 : message.createdOn) !== null && _a !== void 0 ? _a : '').getTime() - new Date((_b = previousMessage === null || previousMessage === void 0 ? void 0 : previousMessage.createdOn) !== null && _b !== void 0 ? _b : '').getTime();
14183
- const diffMins = Math.round(timediff / MINUTE_IN_MS); // minutes
14184
- if (previousSenderId !== message.senderId) {
14185
- attached = message.senderId === nextSenderId ? 'top' : false;
14186
- }
14187
- else if (diffMins && diffMins >= 5) {
14188
- // if there are more than or equal to 5 mins time gap between messages do not attach and show time stamp
14189
- attached = false;
14190
- }
14191
- else {
14192
- attached = message.senderId === nextSenderId ? true : 'bottom';
14304
+ if (message.messageType === 'chat' ||
14305
+ /* @conditional-compile-remove(data-loss-prevention) */ message.messageType === 'blocked') {
14306
+ /**
14307
+ * Attached === true means it is within a group of messages in the current order
14308
+ * Attached === top/bottom means it is on the top/bottom boundary
14309
+ * Attached === false means it is just a single message
14310
+ * A group of messages: continuous messages that belong to the same sender and not intercepted by other senders.
14311
+ */
14312
+ let attached = false;
14313
+ const previousMessage = index > 0 ? messages[index - 1] : undefined;
14314
+ const nextMessage = index === messages.length - 1 ? undefined : messages[index + 1];
14315
+ const previousSenderId = (previousMessage === null || previousMessage === void 0 ? void 0 : previousMessage.messageType) === 'chat' ||
14316
+ /* @conditional-compile-remove(data-loss-prevention) */ (previousMessage === null || previousMessage === void 0 ? void 0 : previousMessage.messageType) === 'blocked'
14317
+ ? previousMessage.senderId
14318
+ : undefined;
14319
+ const nextSenderId = (nextMessage === null || nextMessage === void 0 ? void 0 : nextMessage.messageType) === 'chat' ||
14320
+ /* @conditional-compile-remove(data-loss-prevention) */ (nextMessage === null || nextMessage === void 0 ? void 0 : nextMessage.messageType) === 'blocked'
14321
+ ? nextMessage.senderId
14322
+ : undefined;
14323
+ const timediff = new Date((_a = message === null || message === void 0 ? void 0 : message.createdOn) !== null && _a !== void 0 ? _a : '').getTime() - new Date((_b = previousMessage === null || previousMessage === void 0 ? void 0 : previousMessage.createdOn) !== null && _b !== void 0 ? _b : '').getTime();
14324
+ const diffMins = Math.round(timediff / MINUTE_IN_MS); // minutes
14325
+ if (previousSenderId !== message.senderId) {
14326
+ attached = message.senderId === nextSenderId ? 'top' : false;
14327
+ }
14328
+ else if (diffMins && diffMins >= 5) {
14329
+ // if there are more than or equal to 5 mins time gap between messages do not attach and show time stamp
14330
+ attached = false;
14331
+ }
14332
+ else {
14333
+ attached = message.senderId === nextSenderId ? true : 'bottom';
14334
+ }
14335
+ message.attached = attached;
14193
14336
  }
14194
- message.attached = attached;
14195
14337
  });
14196
14338
  };
14197
14339
 
14198
14340
  // Copyright (c) Microsoft Corporation.
14199
14341
  const memoizedAllConvertChatMessage = memoizeFnAll((_key, chatMessage, userId, isSeen, isLargeGroup) => {
14200
14342
  const messageType = chatMessage.type.toLowerCase();
14343
+ /* @conditional-compile-remove(data-loss-prevention) */
14344
+ if (chatMessage.policyViolation) {
14345
+ return convertToUiBlockedMessage(chatMessage, userId, isSeen, isLargeGroup);
14346
+ }
14201
14347
  if (messageType === ACSKnownMessageType.text ||
14202
14348
  messageType === ACSKnownMessageType.richtextHtml ||
14203
14349
  messageType === ACSKnownMessageType.html) {
@@ -14221,6 +14367,23 @@ const extractAttachedFilesMetadata = (metadata) => {
14221
14367
  return [];
14222
14368
  }
14223
14369
  };
14370
+ /* @conditional-compile-remove(data-loss-prevention) */
14371
+ const convertToUiBlockedMessage = (message, userId, isSeen, isLargeGroup) => {
14372
+ var _a;
14373
+ const messageSenderId = message.sender !== undefined ? toFlatCommunicationIdentifier(message.sender) : userId;
14374
+ return {
14375
+ messageType: 'blocked',
14376
+ createdOn: message.createdOn,
14377
+ warningText: (_a = message.content) === null || _a === void 0 ? void 0 : _a.message,
14378
+ status: !isLargeGroup && message.status === 'delivered' && isSeen ? 'seen' : message.status,
14379
+ senderDisplayName: message.senderDisplayName,
14380
+ senderId: messageSenderId,
14381
+ messageId: message.id,
14382
+ deletedOn: message.deletedOn,
14383
+ mine: messageSenderId === userId,
14384
+ link: DEFAULT_DATA_LOSS_PREVENTION_POLICY_URL
14385
+ };
14386
+ };
14224
14387
  const convertToUiChatMessage = (message, userId, isSeen, isLargeGroup) => {
14225
14388
  var _a;
14226
14389
  const messageSenderId = message.sender !== undefined ? toFlatCommunicationIdentifier(message.sender) : userId;
@@ -14309,7 +14472,7 @@ const messageThreadSelector = reselect.createSelector([getUserId, getChatMessage
14309
14472
  // TODO: Add support for topicUpdated system messages in MessageThread component.
14310
14473
  // message.type === ACSKnownMessageType.topicUpdated ||
14311
14474
  message.clientMessageId !== undefined)
14312
- .filter(messagesWithContentOrFileSharingMetadata)
14475
+ .filter(isMessageValidToRender)
14313
14476
  .map((message) => {
14314
14477
  var _a;
14315
14478
  return memoizedFn((_a = message.id) !== null && _a !== void 0 ? _a : message.clientMessageId, message, userId, message.createdOn <= latestReadTime, isLargeGroup);
@@ -14329,7 +14492,7 @@ const sanitizedMessageContentType = (type) => {
14329
14492
  ? lowerCaseType
14330
14493
  : 'unknown';
14331
14494
  };
14332
- const messagesWithContentOrFileSharingMetadata = (message) => {
14495
+ const isMessageValidToRender = (message) => {
14333
14496
  var _a, _b;
14334
14497
  if (message.deletedOn) {
14335
14498
  return false;
@@ -14337,6 +14500,10 @@ const messagesWithContentOrFileSharingMetadata = (message) => {
14337
14500
  if ((_a = message.metadata) === null || _a === void 0 ? void 0 : _a['fileSharingMetadata']) {
14338
14501
  return true;
14339
14502
  }
14503
+ /* @conditional-compile-remove(data-loss-prevention) */
14504
+ if (message.policyViolation) {
14505
+ return true;
14506
+ }
14340
14507
  return !!(message.content && ((_b = message.content) === null || _b === void 0 ? void 0 : _b.message) !== '');
14341
14508
  };
14342
14509
 
@@ -14985,7 +15152,12 @@ const toChatError = (target, error) => {
14985
15152
  * @private
14986
15153
  */
14987
15154
  const convertChatMessage = (message, status = 'delivered', clientMessageId) => {
14988
- return Object.assign(Object.assign({}, message), { clientMessageId: clientMessageId, status });
15155
+ var _a, _b;
15156
+ return Object.assign(Object.assign({}, message), { clientMessageId: clientMessageId, status,
15157
+ /* @conditional-compile-remove(data-loss-prevention) */
15158
+ policyViolation: !!(((_a = message.sender) === null || _a === void 0 ? void 0 : _a.kind) === 'microsoftTeamsUser' &&
15159
+ !!message.editedOn &&
15160
+ ((_b = message.content) === null || _b === void 0 ? void 0 : _b.message) === '') });
14989
15161
  };
14990
15162
 
14991
15163
  // Copyright (c) Microsoft Corporation.
@@ -19581,7 +19753,7 @@ const CallArrangement = (props) => {
19581
19753
  const isMobileWithActivePane = props.mobileView && activePane;
19582
19754
  /* @conditional-compile-remove(one-to-n-calling) @conditional-compile-remove(PSTN-calls) */
19583
19755
  const callCompositeContainerCSS = React.useMemo(() => {
19584
- return { display: isMobileWithActivePane ? 'none' : 'flex', width: '100%', height: '100%' };
19756
+ return { display: isMobileWithActivePane ? 'none' : 'flex', minWidth: 0, width: '100%', height: '100%' };
19585
19757
  }, [isMobileWithActivePane]);
19586
19758
  // To be removed once feature is out of beta, replace with callCompositeContainerCSS
19587
19759
  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
@@ -19846,7 +20018,7 @@ const MediaGallery = (props) => {
19846
20018
  : { kind: 'contextual' };
19847
20019
  }, [(_a = props.remoteVideoTileMenuOptions) === null || _a === void 0 ? void 0 : _a.isHidden, props.isMobile, props.drawerMenuHostId]);
19848
20020
  /* @conditional-compile-remove(vertical-gallery) */
19849
- const overflowGalleryLayout = React.useMemo(() => containerWidth && containerHeight && containerWidth / containerHeight >= 16 / 9
20021
+ const overflowGalleryPosition = React.useMemo(() => containerWidth && containerHeight && containerWidth / containerHeight >= 16 / 9
19850
20022
  ? 'VerticalRight'
19851
20023
  : 'HorizontalBottom', [containerWidth, containerHeight]);
19852
20024
  const VideoGalleryMemoized = React.useMemo(() => {
@@ -19854,14 +20026,14 @@ const MediaGallery = (props) => {
19854
20026
  /* @conditional-compile-remove(pinned-participants) */
19855
20027
  remoteVideoTileMenuOptions: remoteVideoTileMenuOptions,
19856
20028
  /* @conditional-compile-remove(vertical-gallery) */
19857
- overflowGalleryLayout: overflowGalleryLayout })));
20029
+ overflowGalleryPosition: overflowGalleryPosition })));
19858
20030
  }, [
19859
20031
  videoGalleryProps,
19860
20032
  props.isMobile,
19861
20033
  onRenderAvatar,
19862
20034
  cameraSwitcherProps,
19863
20035
  /* @conditional-compile-remove(pinned-participants) */ remoteVideoTileMenuOptions,
19864
- /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout
20036
+ /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition
19865
20037
  ]);
19866
20038
  return (React__default['default'].createElement("div", { ref: containerRef, style: mediaGalleryContainerStyles },
19867
20039
  React__default['default'].createElement(Announcer, { announcementString: announcerString, ariaLive: 'polite' }),
@@ -22214,10 +22386,10 @@ class AzureCommunicationCallAdapter {
22214
22386
  }
22215
22387
  onRemoteParticipantsUpdated({ added, removed }) {
22216
22388
  if (added && added.length > 0) {
22217
- this.emitter.emit('participantsJoined', added);
22389
+ this.emitter.emit('participantsJoined', { joined: added });
22218
22390
  }
22219
22391
  if (removed && removed.length > 0) {
22220
- this.emitter.emit('participantsLeft', removed);
22392
+ this.emitter.emit('participantsLeft', { removed: removed });
22221
22393
  }
22222
22394
  added.forEach((participant) => {
22223
22395
  this.participantSubscribers.set(toFlatCommunicationIdentifier(participant.identifier), new ParticipantSubscriber(participant, this.emitter));