@azure/communication-react 1.18.0-alpha-202407060013 → 1.18.0-alpha-202407100014

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 (83) hide show
  1. package/dist/communication-react.d.ts +110 -4
  2. package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-DMEk2o-G.js → ChatMessageComponentAsRichTextEditBox-B4-VwPSY.js} +62 -17
  3. package/dist/dist-cjs/communication-react/ChatMessageComponentAsRichTextEditBox-B4-VwPSY.js.map +1 -0
  4. package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-ByJFtf0Z.js → RichTextSendBoxWrapper-C_Nb8f_T.js} +2 -2
  5. package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-ByJFtf0Z.js.map → RichTextSendBoxWrapper-C_Nb8f_T.js.map} +1 -1
  6. package/dist/dist-cjs/communication-react/{index-BPO9X27C.js → index-CTMK90l4.js} +418 -111
  7. package/dist/dist-cjs/communication-react/index-CTMK90l4.js.map +1 -0
  8. package/dist/dist-cjs/communication-react/index.js +2 -1
  9. package/dist/dist-cjs/communication-react/index.js.map +1 -1
  10. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  11. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  12. package/dist/dist-esm/calling-component-bindings/src/notificationStackSelector.js +21 -2
  13. package/dist/dist-esm/calling-component-bindings/src/notificationStackSelector.js.map +1 -1
  14. package/dist/dist-esm/chat-component-bindings/src/handlers/createHandlers.js +42 -4
  15. package/dist/dist-esm/chat-component-bindings/src/handlers/createHandlers.js.map +1 -1
  16. package/dist/dist-esm/chat-component-bindings/src/messageThreadSelector.js +34 -8
  17. package/dist/dist-esm/chat-component-bindings/src/messageThreadSelector.js.map +1 -1
  18. package/dist/dist-esm/chat-stateful-client/src/ChatClientState.d.ts +11 -0
  19. package/dist/dist-esm/chat-stateful-client/src/ChatClientState.js.map +1 -1
  20. package/dist/dist-esm/chat-stateful-client/src/ResourceDownloadQueue.js +3 -0
  21. package/dist/dist-esm/chat-stateful-client/src/ResourceDownloadQueue.js.map +1 -1
  22. package/dist/dist-esm/chat-stateful-client/src/index.d.ts +1 -0
  23. package/dist/dist-esm/chat-stateful-client/src/index.js.map +1 -1
  24. package/dist/dist-esm/communication-react/src/index.d.ts +3 -0
  25. package/dist/dist-esm/communication-react/src/index.js +2 -0
  26. package/dist/dist-esm/communication-react/src/index.js.map +1 -1
  27. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsEditBoxPicker.d.ts +4 -0
  28. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsEditBoxPicker.js +7 -1
  29. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsEditBoxPicker.js.map +1 -1
  30. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsRichTextEditBox.d.ts +4 -0
  31. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsRichTextEditBox.js +62 -15
  32. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsRichTextEditBox.js.map +1 -1
  33. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponent.js +1 -3
  34. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponent.js.map +1 -1
  35. package/dist/dist-esm/react-components/src/components/ErrorBar.d.ts +4 -0
  36. package/dist/dist-esm/react-components/src/components/ErrorBar.js +2 -2
  37. package/dist/dist-esm/react-components/src/components/ErrorBar.js.map +1 -1
  38. package/dist/dist-esm/react-components/src/components/IncomingCallNotification.d.ts +64 -0
  39. package/dist/dist-esm/react-components/src/components/IncomingCallNotification.js +86 -0
  40. package/dist/dist-esm/react-components/src/components/IncomingCallNotification.js.map +1 -0
  41. package/dist/dist-esm/react-components/src/components/MessageThread.d.ts +18 -0
  42. package/dist/dist-esm/react-components/src/components/MessageThread.js.map +1 -1
  43. package/dist/dist-esm/react-components/src/components/NotificationStack.d.ts +5 -0
  44. package/dist/dist-esm/react-components/src/components/NotificationStack.js.map +1 -1
  45. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/CopyPastePlugin.d.ts +7 -0
  46. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/CopyPastePlugin.js +5 -1
  47. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/CopyPastePlugin.js.map +1 -1
  48. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/TableEditContextMenuProvider.js +0 -1
  49. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/TableEditContextMenuProvider.js.map +1 -1
  50. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.d.ts +0 -4
  51. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js +7 -35
  52. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js.map +1 -1
  53. package/dist/dist-esm/react-components/src/components/index.d.ts +1 -0
  54. package/dist/dist-esm/react-components/src/components/index.js +2 -0
  55. package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
  56. package/dist/dist-esm/react-components/src/components/styles/Common.style.d.ts +4 -0
  57. package/dist/dist-esm/react-components/src/components/styles/Common.style.js +4 -0
  58. package/dist/dist-esm/react-components/src/components/styles/Common.style.js.map +1 -1
  59. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js +18 -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/SendBoxUtils.d.ts +17 -1
  62. package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.js +70 -4
  63. package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.js.map +1 -1
  64. package/dist/dist-esm/react-components/src/components/utils.js +2 -0
  65. package/dist/dist-esm/react-components/src/components/utils.js.map +1 -1
  66. package/dist/dist-esm/react-components/src/localization/LocalizationProvider.d.ts +2 -0
  67. package/dist/dist-esm/react-components/src/localization/LocalizationProvider.js.map +1 -1
  68. package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +16 -1
  69. package/dist/dist-esm/react-components/src/theming/icons.d.ts +3 -0
  70. package/dist/dist-esm/react-components/src/theming/icons.js +5 -1
  71. package/dist/dist-esm/react-components/src/theming/icons.js.map +1 -1
  72. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +10 -0
  73. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
  74. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/NetworkReconnectTile.js +3 -3
  75. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/NetworkReconnectTile.js.map +1 -1
  76. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js +71 -24
  77. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js.map +1 -1
  78. package/dist/dist-esm/react-composites/src/composites/common/SendBoxPicker.js +3 -1
  79. package/dist/dist-esm/react-composites/src/composites/common/SendBoxPicker.js.map +1 -1
  80. package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts +3 -0
  81. package/package.json +1 -1
  82. package/dist/dist-cjs/communication-react/ChatMessageComponentAsRichTextEditBox-DMEk2o-G.js.map +0 -1
  83. package/dist/dist-cjs/communication-react/index-BPO9X27C.js.map +0 -1
@@ -175,7 +175,7 @@ function getDefaultExportFromCjs (x) {
175
175
  // Copyright (c) Microsoft Corporation.
176
176
  // Licensed under the MIT License.
177
177
  // GENERATED FILE. DO NOT EDIT MANUALLY.
178
- var telemetryVersion = '1.18.0-alpha-202407060013';
178
+ var telemetryVersion = '1.18.0-alpha-202407100014';
179
179
 
180
180
 
181
181
  var telemetryVersion$1 = /*@__PURE__*/getDefaultExportFromCjs(telemetryVersion);
@@ -526,6 +526,12 @@ const getSupportedSpokenLanguages = (state, props) => {
526
526
  var _a;
527
527
  return (_a = state.calls[props.callId]) === null || _a === void 0 ? void 0 : _a.captionsFeature.supportedSpokenLanguages;
528
528
  };
529
+ /* @conditional-compile-remove(teams-meeting-conference) */
530
+ /** @private */
531
+ const getTeamsMeetingConference = (state, props) => {
532
+ var _a;
533
+ return (_a = state.calls[props.callId]) === null || _a === void 0 ? void 0 : _a.teamsMeetingConference;
534
+ };
529
535
 
530
536
  // Copyright (c) Microsoft Corporation.
531
537
  // Licensed under the MIT License.
@@ -1336,7 +1342,14 @@ const createDefaultTeamsCallingHandlers = memoizeOne((callClient, callAgent, dev
1336
1342
  *
1337
1343
  * @beta
1338
1344
  */
1339
- const notificationStackSelector = reselect.createSelector([getLatestErrors$1, getDiagnostics, getDeviceManager$1, getEnvironmentInfo], (latestErrors, diagnostics, deviceManager, environmentInfo) => {
1345
+ const notificationStackSelector = reselect.createSelector([
1346
+ getLatestErrors$1,
1347
+ getDiagnostics,
1348
+ getDeviceManager$1,
1349
+ getEnvironmentInfo,
1350
+ /* @conditional-compile-remove(teams-meeting-conference) */ getTeamsMeetingConference
1351
+ ], (latestErrors, diagnostics, deviceManager, environmentInfo,
1352
+ /* @conditional-compile-remove(teams-meeting-conference) */ meetingConference) => {
1340
1353
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
1341
1354
  // The order in which the errors are returned is significant: The `Notification` shows errors on the UI in that order.
1342
1355
  // There are several options for the ordering:
@@ -1355,9 +1368,19 @@ const notificationStackSelector = reselect.createSelector([getLatestErrors$1, ge
1355
1368
  return (environmentInfo === null || environmentInfo === void 0 ? void 0 : environmentInfo.environment.platform) === 'mac';
1356
1369
  };
1357
1370
  // Errors reported via diagnostics are more reliable than from API method failures, so process those first.
1371
+ let isTeamsMeetingWithPhones = false;
1372
+ /* @conditional-compile-remove(teams-meeting-conference) */
1373
+ if (meetingConference && meetingConference.length > 0) {
1374
+ isTeamsMeetingWithPhones = true;
1375
+ }
1358
1376
  if (((_a = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.network.latest.networkReceiveQuality) === null || _a === void 0 ? void 0 : _a.value) === communicationCalling.DiagnosticQuality.Bad ||
1359
1377
  ((_b = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.network.latest.networkReceiveQuality) === null || _b === void 0 ? void 0 : _b.value) === communicationCalling.DiagnosticQuality.Poor) {
1360
- activeErrorMessages.push({ type: 'callNetworkQualityLow' });
1378
+ if (isTeamsMeetingWithPhones) {
1379
+ activeErrorMessages.push({ type: 'teamsMeetingCallNetworkQualityLow' });
1380
+ }
1381
+ else {
1382
+ activeErrorMessages.push({ type: 'callNetworkQualityLow' });
1383
+ }
1361
1384
  }
1362
1385
  if (((_c = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.noSpeakerDevicesEnumerated) === null || _c === void 0 ? void 0 : _c.value) === true) {
1363
1386
  activeErrorMessages.push({ type: 'callNoSpeakerFound' });
@@ -5932,7 +5955,7 @@ const typingIndicatorStringStyle = react.mergeStyles({
5932
5955
  wordBreak: 'break-word'
5933
5956
  });
5934
5957
 
5935
- var participantItem$k={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed participant",participantStateRinging:"Calling...",participantStateHold:"On hold",attendeeRole:"Attendee"};var ParticipantList$l={overflowParticipantCount:"+{overflowCount} more"};var typingIndicator$k={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$k={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",attachmentUploadsPendingError:"Uploading... Please wait.",removeAttachment:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed",attachmentMoreMenu:"More Options"};var richTextSendBox$k={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",attachmentUploadsPendingError:"Uploading... Please wait.",removeAttachment:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed",richTextBoldTooltip:"Bold",richTextItalicTooltip:"Italic",richTextUnderlineTooltip:"Underline",richTextBulletListTooltip:"Bulleted list",richTextNumberListTooltip:"Numbered list",richTextIncreaseIndentTooltip:"Increase indent",richTextDecreaseIndentTooltip:"Decrease indent",richTextInsertTableTooltip:"Insert table",richTextFormatButtonTooltip:"Format",richTextInsertRowOrColumnMenu:"Insert",richTextInsertTableMenuTitle:"Insert {column} x {row} table",richTextInsertRowAboveMenu:"Insert above",richTextInsertRowBelowMenu:"Insert below",richTextInsertColumnLeftMenu:"Insert left",richTextInsertColumnRightMenu:"Insert right",richTextDeleteRowOrColumnMenu:"Delete",richTextDeleteColumnMenu:"Delete column",richTextDeleteRowMenu:"Delete row",richTextDeleteTableMenu:"Delete table",richTextToolbarMoreButtonAriaLabel:"More options",attachmentMoreMenu:"More Options"};var mentionPopover$k={mentionPopoverHeader:"Suggestions"};var imageOverlay$k={downloadButtonLabel:"Download",dismissButtonAriaLabel:"Close"};var messageStatusIndicator$k={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$k={label:"Leave",tooltipContent:"Leave call",leaveOption:"Leave",endCallOption:"End call for everyone"};var cameraButton$k={onLabel:"Camera",offLabel:"Camera",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",videoEffectsMenuItemTitle:"Effects"};var microphoneButton$k={onLabel:"Mic",offLabel:"Mic",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",microphonePrimaryActionSplitButtonTitle:"Use microphone"};var devicesButton$k={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$k={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$k={onLabel:"Stop presenting",offLabel:"Present",tooltipDisabledContent:"Presenting is disabled",tooltipOnContent:"Presenting your screen",tooltipOffContent:"Present your screen"};var raiseHandButton$k={offLabel:"Raise",onLabel:"Lower",tooltipDisabledContent:"Raise Hand action is disabled",tooltipOnContent:"Lower Hand",tooltipOffContent:"Raise Hand"};var reactionButton$k={label:"React",ariaLabel:"React Button, Send a reaction",tooltipDisabledContent:"Reaction action is disabled",tooltipContent:"Send a reaction",likeReactionTooltipContent:"Like",heartReactionTooltipContent:"Love",laughReactionTooltipContent:"Laugh",applauseReactionTooltipContent:"Applause",surprisedReactionTooltipContent:"Surprised"};var messageThread$k={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:"{status} {author} said {message}",messageContentMineAriaText:"{status} 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:"Done",messageReadCount:"Read by {messageReadByCount} of {remoteParticipantsCount}",actionMenuMoreOptions:"More Options",downloadAttachment:"Download file",openAttachment:"Open file",blockedWarningText:"This message was deleted due to organizational policy.",blockedWarningLinkText:"Details",attachmentCardGroupMessage:"The message has {attachmentCount} attachment",messageDeletedAnnouncementAriaLabel:"The message is deleted",richTextBoldTooltip:"Bold",richTextItalicTooltip:"Italic",richTextUnderlineTooltip:"Underline",richTextBulletListTooltip:"Bulleted list",richTextNumberListTooltip:"Numbered list",richTextIncreaseIndentTooltip:"Increase indent",richTextDecreaseIndentTooltip:"Decrease indent",richTextInsertTableTooltip:"Insert table",richTextFormatButtonTooltip:"Format",richTextInsertRowOrColumnMenu:"Insert",richTextInsertTableMenuTitle:"Insert {column} x {row} table",richTextInsertRowAboveMenu:"Insert above",richTextInsertRowBelowMenu:"Insert below",richTextInsertColumnLeftMenu:"Insert left",richTextInsertColumnRightMenu:"Insert right",richTextDeleteRowOrColumnMenu:"Delete",richTextDeleteColumnMenu:"Delete column",richTextDeleteRowMenu:"Delete row",richTextDeleteTableMenu:"Delete table",richTextToolbarMoreButtonAriaLabel:"More options"};var errorBar$k={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:"There was an issue starting screen share.",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.",cameraFrozenForRemoteParticipants:"Users in the call are having issues seeing your video. Please check your devices and network.",unableToStartVideoEffect:"Unable to apply video effect.",startSpotlightWhileMaxParticipantsAreSpotlighted:"Cannot start spotlight on participant(s) because the maximum number of participants are already spotlighted.",mutedByRemoteParticipant:"You were muted by another participant."};var notificationStack={callingNetworkFailure:{title:"Troubling connecting call",message:"You seem to be offline. Please check your network connection and try again.",closeButtonAriaLabel:"Close"},startVideoGeneric:{title:"Failed to start video.",closeButtonAriaLabel:"Close"},stopVideoGeneric:{title:"Failed to stop video.",closeButtonAriaLabel:"Close"},muteGeneric:{title:"Failed to mute microphone.",closeButtonAriaLabel:"Close"},unmuteGeneric:{title:"Failed to unmute microphone.",closeButtonAriaLabel:"Close"},speakingWhileMuted:{title:"You're muted.",closeButtonAriaLabel:"Close"},startScreenShareGeneric:{title:"There was an issue starting screen share.",closeButtonAriaLabel:"Close"},stopScreenShareGeneric:{title:"Failed to stop screen sharing.",closeButtonAriaLabel:"Close"},callNetworkQualityLow:{title:"Network quality is low.",closeButtonAriaLabel:"Close"},callNoSpeakerFound:{title:"No speakers or headphones found",message:"Connect an audio device to hear the call.",closeButtonAriaLabel:"Close"},callNoMicrophoneFound:{title:"No microphones found",message:"Connect an audio input device.",closeButtonAriaLabel:"Close"},callMicrophoneAccessDenied:{title:"Unable to access microphone",message:"Click the lock in the address bar to grant permission to this webpage.",closeButtonAriaLabel:"Close"},callMicrophoneAccessDeniedSafari:{title:"Unable to access microphone",message:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",closeButtonAriaLabel:"Close"},callMicrophoneMutedBySystem:{title:"You are muted by your system.",closeButtonAriaLabel:"Close"},callMicrophoneUnmutedBySystem:{title:"Your microphone recovered and you were unmuted by your system.",closeButtonAriaLabel:"Close"},callMacOsMicrophoneAccessDenied:{title:"Unable to access microphone",message:"Grant microphone permission in your macOS privacy settings.",closeButtonAriaLabel:"Close"},callLocalVideoFreeze:{title:"Network bandwidth is poor",message:"Your video may appear paused for others on the call.",closeButtonAriaLabel:"Close"},callCameraAccessDenied:{title:"Unable to access camera",message:"Click the lock in the address bar to grant permission to this webpage.",closeButtonAriaLabel:"Close"},callCameraAccessDeniedSafari:{title:"Unable to access camera",message:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",closeButtonAriaLabel:"Close"},callCameraAlreadyInUse:{title:"Unable to access camera",message:"It may already be in use by another application.",closeButtonAriaLabel:"Close"},callVideoStoppedBySystem:{title:"Your video has been stopped by your system.",closeButtonAriaLabel:"Close"},callVideoRecoveredBySystem:{title:"Your video has resumed.",closeButtonAriaLabel:"Close"},callMacOsCameraAccessDenied:{title:"MacOS is blocking access to your camera",message:"Update your privacy settings to allow this browser to access your camera.",closeButtonAriaLabel:"Close"},callMacOsScreenShareAccessDenied:{title:"MacOS is blocking screen sharing",message:"Update your privacy settings to allow this browser to record your screen.",closeButtonAriaLabel:"Close"},failedToJoinCallGeneric:{title:"Failed to join call.",closeButtonAriaLabel:"Close"},failedToJoinCallInvalidMeetingLink:{title:"Unable to join Meeting. Invalid Link.",closeButtonAriaLabel:"Close"},cameraFrozenForRemoteParticipants:{title:"Users in the call are having issues seeing your video",message:"Please check your devices and network.",closeButtonAriaLabel:"Close"},unableToStartVideoEffect:{title:"Unable to apply video effect.",closeButtonAriaLabel:"Close"},startSpotlightWhileMaxParticipantsAreSpotlighted:{title:"Cannot start spotlight on participant(s)",message:"The maximum number of participants are already spotlighted.",closeButtonAriaLabel:"Close"},mutedByRemoteParticipant:{title:"You were muted by another participant.",closeButtonAriaLabel:"Close"},recordingStarted:{title:"Recording has started.",message:"By joining, you are giving consent for this meeting to be transcribed.",closeButtonAriaLabel:"Close"},transcriptionStarted:{title:"Transcription has started.",message:"By joining, you are giving consent for this meeting to be transcribed.",closeButtonAriaLabel:"Close"},recordingStopped:{title:"Recording is being saved.",message:"Recording has stopped.",closeButtonAriaLabel:"Close"},transcriptionStopped:{title:"Transcription is being saved.",message:"Transcription has stopped.",closeButtonAriaLabel:"Close"},recordingAndTranscriptionStarted:{title:"Recording and transcription have started.",message:"By joining, you are giving consent for this meeting to be transcribed.",closeButtonAriaLabel:"Close"},recordingAndTranscriptionStopped:{title:"Recording and transcription are being saved.",message:"Recording and transcription have stopped.",closeButtonAriaLabel:"Close"},recordingStoppedStillTranscribing:{title:"Recording has stopped.",message:"You are now only transcribing this meeting.",closeButtonAriaLabel:"Close"},transcriptionStoppedStillRecording:{title:"Transcription has stopped.",message:"You are now only recording this meeting.",closeButtonAriaLabel:"Close"}};var videoGallery$k={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Switch camera",localVideoMovementLabel:"Movable Local Video Tile",localVideoMovementAriaLabel:"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}",startSpotlightVideoTileMenuLabel:"Spotlight for everyone",addSpotlightVideoTileMenuLabel:"Add spotlight",spotlightLimitReachedMenuTitle:"Spotlight limit reached",stopSpotlightVideoTileMenuLabel:"Stop spotlighting",stopSpotlightOnSelfVideoTileMenuLabel:"Exit spotlight",attendeeRole:"Attendee",muteParticipantMenuItemLabel:"Mute"};var dialpad$k={placeholderText:"Enter phone number",deleteButtonAriaLabel:"Delete"};var holdButton$k={onLabel:"Resume",offLabel:"Hold",tooltipOnContent:"Resume call",tooltipOffContent:"Hold call"};var videoTile$k={participantStateRinging:"Calling...",participantStateHold:"On hold",moreOptionsButtonAriaLabel:"More Options"};var CameraAndMicrophoneSitePermissionsRequest$k={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$k={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$k={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$k={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$k={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$k={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$k={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$k={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$k={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$k={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$k={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$k={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$l={primaryText:"Browser not supported",secondaryText:"Please join this call using a compatible browser.",moreHelpLinkText:"See compatibility requirements"};var UnsupportedBrowserVersion$l={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$l={primaryText:"Operating system not supported",secondaryText:"Please join this call using a device with a compatible operating system.",moreHelpLinkText:"See compatibility requirements"};var BrowserPermissionDenied$k={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$k={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$k={leftNavButtonAriaLabel:"previous page",rightNavButtonAriaLabel:"next page"};var MeetingConferencePhoneInfo$k={meetingConferencePhoneInfoModalTitle:"Join call from your phone",meetingConferencePhoneInfoModalDialIn:"Dial number",meetingConferencePhoneInfoModalMeetingId:"Enter meeting ID",meetingConferencePhoneInfoModalWait:"Wait to be admitted by organizer",meetingConferencePhoneInfoModalNoPhoneAvailable:"No phone available",meetingConferencePhoneInfoModalTollGeoData:"{country}, {city}",meetingConferencePhoneInfoModalTollFree:"(Toll-free)",meetingConferencePhoneInfoModalToll:"(Toll)"};var en_US$1 = {participantItem:participantItem$k,ParticipantList:ParticipantList$l,typingIndicator:typingIndicator$k,sendBox:sendBox$k,richTextSendBox:richTextSendBox$k,mentionPopover:mentionPopover$k,imageOverlay:imageOverlay$k,messageStatusIndicator:messageStatusIndicator$k,endCallButton:endCallButton$k,cameraButton:cameraButton$k,microphoneButton:microphoneButton$k,devicesButton:devicesButton$k,participantsButton:participantsButton$k,screenShareButton:screenShareButton$k,raiseHandButton:raiseHandButton$k,reactionButton:reactionButton$k,messageThread:messageThread$k,errorBar:errorBar$k,notificationStack:notificationStack,videoGallery:videoGallery$k,dialpad:dialpad$k,holdButton:holdButton$k,videoTile:videoTile$k,CameraAndMicrophoneSitePermissionsRequest:CameraAndMicrophoneSitePermissionsRequest$k,CameraSitePermissionsRequest:CameraSitePermissionsRequest$k,MicrophoneSitePermissionsRequest:MicrophoneSitePermissionsRequest$k,CameraAndMicrophoneSitePermissionsCheck:CameraAndMicrophoneSitePermissionsCheck$k,CameraSitePermissionsCheck:CameraSitePermissionsCheck$k,MicrophoneSitePermissionsCheck:MicrophoneSitePermissionsCheck$k,CameraAndMicrophoneSitePermissionsDenied:CameraAndMicrophoneSitePermissionsDenied$k,CameraAndMicrophoneSitePermissionsDeniedSafari:CameraAndMicrophoneSitePermissionsDeniedSafari$k,CameraSitePermissionsDenied:CameraSitePermissionsDenied$k,MicrophoneSitePermissionsDenied:MicrophoneSitePermissionsDenied$k,CameraSitePermissionsDeniedSafari:CameraSitePermissionsDeniedSafari$k,MicrophoneSitePermissionsDeniedSafari:MicrophoneSitePermissionsDeniedSafari$k,UnsupportedBrowser:UnsupportedBrowser$l,UnsupportedBrowserVersion:UnsupportedBrowserVersion$l,UnsupportedOperatingSystem:UnsupportedOperatingSystem$l,BrowserPermissionDenied:BrowserPermissionDenied$k,BrowserPermissionDeniedIOS:BrowserPermissionDeniedIOS$k,verticalGallery:verticalGallery$k,MeetingConferencePhoneInfo:MeetingConferencePhoneInfo$k};
5958
+ var participantItem$k={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed participant",participantStateRinging:"Calling...",participantStateHold:"On hold",attendeeRole:"Attendee"};var ParticipantList$l={overflowParticipantCount:"+{overflowCount} more"};var typingIndicator$k={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$k={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",attachmentUploadsPendingError:"Uploading... Please wait.",removeAttachment:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed",attachmentMoreMenu:"More Options"};var richTextSendBox$k={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",attachmentUploadsPendingError:"Uploading... Please wait.",removeAttachment:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed",richTextBoldTooltip:"Bold",richTextItalicTooltip:"Italic",richTextUnderlineTooltip:"Underline",richTextBulletListTooltip:"Bulleted list",richTextNumberListTooltip:"Numbered list",richTextIncreaseIndentTooltip:"Increase indent",richTextDecreaseIndentTooltip:"Decrease indent",richTextInsertTableTooltip:"Insert table",richTextFormatButtonTooltip:"Format",richTextInsertRowOrColumnMenu:"Insert",richTextInsertTableMenuTitle:"Insert {column} x {row} table",richTextInsertRowAboveMenu:"Insert above",richTextInsertRowBelowMenu:"Insert below",richTextInsertColumnLeftMenu:"Insert left",richTextInsertColumnRightMenu:"Insert right",richTextDeleteRowOrColumnMenu:"Delete",richTextDeleteColumnMenu:"Delete column",richTextDeleteRowMenu:"Delete row",richTextDeleteTableMenu:"Delete table",richTextToolbarMoreButtonAriaLabel:"More options",attachmentMoreMenu:"More Options"};var mentionPopover$k={mentionPopoverHeader:"Suggestions"};var imageOverlay$k={downloadButtonLabel:"Download",dismissButtonAriaLabel:"Close"};var messageStatusIndicator$k={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$k={label:"Leave",tooltipContent:"Leave call",leaveOption:"Leave",endCallOption:"End call for everyone"};var cameraButton$k={onLabel:"Camera",offLabel:"Camera",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",videoEffectsMenuItemTitle:"Effects"};var microphoneButton$k={onLabel:"Mic",offLabel:"Mic",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",microphonePrimaryActionSplitButtonTitle:"Use microphone"};var devicesButton$k={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$k={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$k={onLabel:"Stop presenting",offLabel:"Present",tooltipDisabledContent:"Presenting is disabled",tooltipOnContent:"Presenting your screen",tooltipOffContent:"Present your screen"};var raiseHandButton$k={offLabel:"Raise",onLabel:"Lower",tooltipDisabledContent:"Raise Hand action is disabled",tooltipOnContent:"Lower Hand",tooltipOffContent:"Raise Hand"};var reactionButton$k={label:"React",ariaLabel:"React Button, Send a reaction",tooltipDisabledContent:"Reaction action is disabled",tooltipContent:"Send a reaction",likeReactionTooltipContent:"Like",heartReactionTooltipContent:"Love",laughReactionTooltipContent:"Laugh",applauseReactionTooltipContent:"Applause",surprisedReactionTooltipContent:"Surprised"};var messageThread$k={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:"{status} {author} said {message}",messageContentMineAriaText:"{status} 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:"Done",messageReadCount:"Read by {messageReadByCount} of {remoteParticipantsCount}",actionMenuMoreOptions:"More Options",downloadAttachment:"Download file",openAttachment:"Open file",blockedWarningText:"This message was deleted due to organizational policy.",blockedWarningLinkText:"Details",attachmentCardGroupMessage:"The message has {attachmentCount} attachment",messageDeletedAnnouncementAriaLabel:"The message is deleted",richTextBoldTooltip:"Bold",richTextItalicTooltip:"Italic",richTextUnderlineTooltip:"Underline",richTextBulletListTooltip:"Bulleted list",richTextNumberListTooltip:"Numbered list",richTextIncreaseIndentTooltip:"Increase indent",richTextDecreaseIndentTooltip:"Decrease indent",richTextInsertTableTooltip:"Insert table",richTextFormatButtonTooltip:"Format",richTextInsertRowOrColumnMenu:"Insert",richTextInsertTableMenuTitle:"Insert {column} x {row} table",richTextInsertRowAboveMenu:"Insert above",richTextInsertRowBelowMenu:"Insert below",richTextInsertColumnLeftMenu:"Insert left",richTextInsertColumnRightMenu:"Insert right",richTextDeleteRowOrColumnMenu:"Delete",richTextDeleteColumnMenu:"Delete column",richTextDeleteRowMenu:"Delete row",richTextDeleteTableMenu:"Delete table",richTextToolbarMoreButtonAriaLabel:"More options",attachmentUploadsPendingError:"Uploading... Please wait."};var errorBar$k={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:"There was an issue starting screen share.",stopScreenShareGeneric:"Failed to stop screen sharing",callNetworkQualityLow:"Network quality is low.",teamsMeetingCallNetworkQualityLow:"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.",cameraFrozenForRemoteParticipants:"Users in the call are having issues seeing your video. Please check your devices and network.",unableToStartVideoEffect:"Unable to apply video effect.",startSpotlightWhileMaxParticipantsAreSpotlighted:"Cannot start spotlight on participant(s) because the maximum number of participants are already spotlighted.",mutedByRemoteParticipant:"You were muted by another participant."};var notificationStack={callingNetworkFailure:{title:"Troubling connecting call",message:"You seem to be offline. Please check your network connection and try again.",closeButtonAriaLabel:"Close"},startVideoGeneric:{title:"Failed to start video.",closeButtonAriaLabel:"Close"},stopVideoGeneric:{title:"Failed to stop video.",closeButtonAriaLabel:"Close"},muteGeneric:{title:"Failed to mute microphone.",closeButtonAriaLabel:"Close"},unmuteGeneric:{title:"Failed to unmute microphone.",closeButtonAriaLabel:"Close"},speakingWhileMuted:{title:"You're muted.",closeButtonAriaLabel:"Close"},startScreenShareGeneric:{title:"There was an issue starting screen share.",closeButtonAriaLabel:"Close"},stopScreenShareGeneric:{title:"Failed to stop screen sharing.",closeButtonAriaLabel:"Close"},callNetworkQualityLow:{title:"Network quality is low.",closeButtonAriaLabel:"Close"},teamsMeetingCallNetworkQualityLow:{title:"Network quality is low.",closeButtonAriaLabel:"Close",message:"Join this call from your phone for better sound. You can continue viewing the meeting on this device.",primaryButtonLabel:"Join by Phone"},callNoSpeakerFound:{title:"No speakers or headphones found",message:"Connect an audio device to hear the call.",closeButtonAriaLabel:"Close"},callNoMicrophoneFound:{title:"No microphones found",message:"Connect an audio input device.",closeButtonAriaLabel:"Close"},callMicrophoneAccessDenied:{title:"Unable to access microphone",message:"Click the lock in the address bar to grant permission to this webpage.",closeButtonAriaLabel:"Close"},callMicrophoneAccessDeniedSafari:{title:"Unable to access microphone",message:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",closeButtonAriaLabel:"Close"},callMicrophoneMutedBySystem:{title:"You are muted by your system.",closeButtonAriaLabel:"Close"},callMicrophoneUnmutedBySystem:{title:"Your microphone recovered and you were unmuted by your system.",closeButtonAriaLabel:"Close"},callMacOsMicrophoneAccessDenied:{title:"Unable to access microphone",message:"Grant microphone permission in your macOS privacy settings.",closeButtonAriaLabel:"Close"},callLocalVideoFreeze:{title:"Network bandwidth is poor",message:"Your video may appear paused for others on the call.",closeButtonAriaLabel:"Close"},callCameraAccessDenied:{title:"Unable to access camera",message:"Click the lock in the address bar to grant permission to this webpage.",closeButtonAriaLabel:"Close"},callCameraAccessDeniedSafari:{title:"Unable to access camera",message:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",closeButtonAriaLabel:"Close"},callCameraAlreadyInUse:{title:"Unable to access camera",message:"It may already be in use by another application.",closeButtonAriaLabel:"Close"},callVideoStoppedBySystem:{title:"Your video has been stopped by your system.",closeButtonAriaLabel:"Close"},callVideoRecoveredBySystem:{title:"Your video has resumed.",closeButtonAriaLabel:"Close"},callMacOsCameraAccessDenied:{title:"MacOS is blocking access to your camera",message:"Update your privacy settings to allow this browser to access your camera.",closeButtonAriaLabel:"Close"},callMacOsScreenShareAccessDenied:{title:"MacOS is blocking screen sharing",message:"Update your privacy settings to allow this browser to record your screen.",closeButtonAriaLabel:"Close"},failedToJoinCallGeneric:{title:"Failed to join call.",closeButtonAriaLabel:"Close"},failedToJoinCallInvalidMeetingLink:{title:"Unable to join Meeting. Invalid Link.",closeButtonAriaLabel:"Close"},cameraFrozenForRemoteParticipants:{title:"Users in the call are having issues seeing your video",message:"Please check your devices and network.",closeButtonAriaLabel:"Close"},unableToStartVideoEffect:{title:"Unable to apply video effect.",closeButtonAriaLabel:"Close"},startSpotlightWhileMaxParticipantsAreSpotlighted:{title:"Cannot start spotlight on participant(s)",message:"The maximum number of participants are already spotlighted.",closeButtonAriaLabel:"Close"},mutedByRemoteParticipant:{title:"You were muted by another participant.",closeButtonAriaLabel:"Close"},recordingStarted:{title:"Recording has started.",message:"By joining, you are giving consent for this meeting to be transcribed.",closeButtonAriaLabel:"Close"},transcriptionStarted:{title:"Transcription has started.",message:"By joining, you are giving consent for this meeting to be transcribed.",closeButtonAriaLabel:"Close"},recordingStopped:{title:"Recording is being saved.",message:"Recording has stopped.",closeButtonAriaLabel:"Close"},transcriptionStopped:{title:"Transcription is being saved.",message:"Transcription has stopped.",closeButtonAriaLabel:"Close"},recordingAndTranscriptionStarted:{title:"Recording and transcription have started.",message:"By joining, you are giving consent for this meeting to be transcribed.",closeButtonAriaLabel:"Close"},recordingAndTranscriptionStopped:{title:"Recording and transcription are being saved.",message:"Recording and transcription have stopped.",closeButtonAriaLabel:"Close"},recordingStoppedStillTranscribing:{title:"Recording has stopped.",message:"You are now only transcribing this meeting.",closeButtonAriaLabel:"Close"},transcriptionStoppedStillRecording:{title:"Transcription has stopped.",message:"You are now only recording this meeting.",closeButtonAriaLabel:"Close"}};var videoGallery$k={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Switch camera",localVideoMovementLabel:"Movable Local Video Tile",localVideoMovementAriaLabel:"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}",startSpotlightVideoTileMenuLabel:"Spotlight for everyone",addSpotlightVideoTileMenuLabel:"Add spotlight",spotlightLimitReachedMenuTitle:"Spotlight limit reached",stopSpotlightVideoTileMenuLabel:"Stop spotlighting",stopSpotlightOnSelfVideoTileMenuLabel:"Exit spotlight",attendeeRole:"Attendee",muteParticipantMenuItemLabel:"Mute"};var dialpad$k={placeholderText:"Enter phone number",deleteButtonAriaLabel:"Delete"};var holdButton$k={onLabel:"Resume",offLabel:"Hold",tooltipOnContent:"Resume call",tooltipOffContent:"Hold call"};var videoTile$k={participantStateRinging:"Calling...",participantStateHold:"On hold",moreOptionsButtonAriaLabel:"More Options"};var CameraAndMicrophoneSitePermissionsRequest$k={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$k={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$k={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$k={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$k={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$k={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$k={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$k={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$k={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$k={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$k={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$k={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$l={primaryText:"Browser not supported",secondaryText:"Please join this call using a compatible browser.",moreHelpLinkText:"See compatibility requirements"};var UnsupportedBrowserVersion$l={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$l={primaryText:"Operating system not supported",secondaryText:"Please join this call using a device with a compatible operating system.",moreHelpLinkText:"See compatibility requirements"};var BrowserPermissionDenied$k={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$k={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$k={leftNavButtonAriaLabel:"previous page",rightNavButtonAriaLabel:"next page"};var MeetingConferencePhoneInfo$k={meetingConferencePhoneInfoModalTitle:"Join call from your phone",meetingConferencePhoneInfoModalDialIn:"Dial number",meetingConferencePhoneInfoModalMeetingId:"Enter meeting ID",meetingConferencePhoneInfoModalWait:"Wait to be admitted by organizer",meetingConferencePhoneInfoModalNoPhoneAvailable:"No phone available",meetingConferencePhoneInfoModalTollGeoData:"{country}, {city}",meetingConferencePhoneInfoModalTollFree:"(Toll-free)",meetingConferencePhoneInfoModalToll:"(Toll)"};var IncomingCallNotification$1={incomingCallNotificationPlaceholderId:"Unknown User",incomingCallNotificationPlaceholderAlert:"Incoming call",incomingCallNoticicationAcceptWithAudioAriaLabel:"Accept with audio",incomingCallNoticicationAcceptWithVideoAriaLabel:"Accept with video",incomingCallNoticicationRejectAriaLabel:"Reject"};var en_US$1 = {participantItem:participantItem$k,ParticipantList:ParticipantList$l,typingIndicator:typingIndicator$k,sendBox:sendBox$k,richTextSendBox:richTextSendBox$k,mentionPopover:mentionPopover$k,imageOverlay:imageOverlay$k,messageStatusIndicator:messageStatusIndicator$k,endCallButton:endCallButton$k,cameraButton:cameraButton$k,microphoneButton:microphoneButton$k,devicesButton:devicesButton$k,participantsButton:participantsButton$k,screenShareButton:screenShareButton$k,raiseHandButton:raiseHandButton$k,reactionButton:reactionButton$k,messageThread:messageThread$k,errorBar:errorBar$k,notificationStack:notificationStack,videoGallery:videoGallery$k,dialpad:dialpad$k,holdButton:holdButton$k,videoTile:videoTile$k,CameraAndMicrophoneSitePermissionsRequest:CameraAndMicrophoneSitePermissionsRequest$k,CameraSitePermissionsRequest:CameraSitePermissionsRequest$k,MicrophoneSitePermissionsRequest:MicrophoneSitePermissionsRequest$k,CameraAndMicrophoneSitePermissionsCheck:CameraAndMicrophoneSitePermissionsCheck$k,CameraSitePermissionsCheck:CameraSitePermissionsCheck$k,MicrophoneSitePermissionsCheck:MicrophoneSitePermissionsCheck$k,CameraAndMicrophoneSitePermissionsDenied:CameraAndMicrophoneSitePermissionsDenied$k,CameraAndMicrophoneSitePermissionsDeniedSafari:CameraAndMicrophoneSitePermissionsDeniedSafari$k,CameraSitePermissionsDenied:CameraSitePermissionsDenied$k,MicrophoneSitePermissionsDenied:MicrophoneSitePermissionsDenied$k,CameraSitePermissionsDeniedSafari:CameraSitePermissionsDeniedSafari$k,MicrophoneSitePermissionsDeniedSafari:MicrophoneSitePermissionsDeniedSafari$k,UnsupportedBrowser:UnsupportedBrowser$l,UnsupportedBrowserVersion:UnsupportedBrowserVersion$l,UnsupportedOperatingSystem:UnsupportedOperatingSystem$l,BrowserPermissionDenied:BrowserPermissionDenied$k,BrowserPermissionDeniedIOS:BrowserPermissionDeniedIOS$k,verticalGallery:verticalGallery$k,MeetingConferencePhoneInfo:MeetingConferencePhoneInfo$k,IncomingCallNotification:IncomingCallNotification$1};
5936
5959
 
5937
5960
  // Copyright (c) Microsoft Corporation.
5938
5961
  // Licensed under the MIT License.
@@ -6431,6 +6454,8 @@ const NotificationIconProps = (notificationType) => {
6431
6454
  */
6432
6455
  const customNotificationIconName = {
6433
6456
  callNetworkQualityLow: 'ErrorBarCallNetworkQualityLow',
6457
+ /* @conditional-compile-remove(teams-meeting-conference) */
6458
+ teamsMeetingCallNetworkQualityLow: 'ErrorBarCallNetworkQualityLow',
6434
6459
  callNoSpeakerFound: 'ErrorBarCallNoSpeakerFound',
6435
6460
  callNoMicrophoneFound: 'ErrorBarCallNoMicrophoneFound',
6436
6461
  callMicrophoneAccessDenied: 'ErrorBarCallMicrophoneAccessDenied',
@@ -6554,8 +6579,8 @@ const ErrorBar = (props) => {
6554
6579
  lineHeight: 'inherit'
6555
6580
  },
6556
6581
  dismissal: {
6557
- height: 0,
6558
- paddingTop: '0.8rem'
6582
+ height: '2rem',
6583
+ paddingBottom: '0.8rem'
6559
6584
  }
6560
6585
  }, key: error.type, messageBarType: messageBarType(error.type), messageBarIconProps: messageBarIconProps(error.type), onDismiss: () => {
6561
6586
  var _a;
@@ -7265,7 +7290,10 @@ const DEFAULT_COMPONENT_ICONS = {
7265
7290
  /* @conditional-compile-remove(rich-text-editor) */
7266
7291
  RichTextTableDeleteMenuIcon: React.createElement(reactIcons.TableDismiss20Regular, null),
7267
7292
  /* @conditional-compile-remove(soft-mute) */
7268
- ContextualMenuMicMutedIcon: React.createElement(reactIcons.MicOff20Regular, null)
7293
+ ContextualMenuMicMutedIcon: React.createElement(reactIcons.MicOff20Regular, null),
7294
+ IncomingCallNotificationRejectIcon: React.createElement(reactIcons.CallEnd20Filled, null),
7295
+ IncomingCallNotificationAcceptIcon: React.createElement(reactIcons.Call20Filled, null),
7296
+ IncomingCallNotificationAcceptWithVideoIcon: React.createElement(reactIcons.Video20Filled, null)
7269
7297
  };
7270
7298
 
7271
7299
  // Copyright (c) Microsoft Corporation.
@@ -9510,15 +9538,21 @@ const isAttachmentUploadCompleted = (attachmentsWithProgress) => {
9510
9538
  };
9511
9539
  /* @conditional-compile-remove(rich-text-editor-image-upload) */
9512
9540
  /**
9513
- * @private
9541
+ * @internal
9514
9542
  */
9515
9543
  // Before sending the image, we need to add the image id we get back after uploading the images to the message content.
9516
9544
  const addUploadedImagesToMessage = (message, uploadInlineImages) => {
9545
+ if (message === '') {
9546
+ return message;
9547
+ }
9517
9548
  const document = new DOMParser().parseFromString(message !== null && message !== void 0 ? message : '', 'text/html');
9518
9549
  document.querySelectorAll('img').forEach((img) => {
9519
- var _a, _b;
9520
- img.id = (_b = (_a = uploadInlineImages.find((imageUpload) => !imageUpload.error && imageUpload.url === img.src)) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : '';
9521
- img.src = '';
9550
+ var _a;
9551
+ if (!img.id) {
9552
+ const uploadInlineImage = uploadInlineImages.find((imageUpload) => !imageUpload.error && (imageUpload.url === img.src || imageUpload.id === img.id));
9553
+ img.id = (_a = uploadInlineImage === null || uploadInlineImage === void 0 ? void 0 : uploadInlineImage.id) !== null && _a !== void 0 ? _a : '';
9554
+ img.src = '';
9555
+ }
9522
9556
  });
9523
9557
  const newMessage = document.body.innerHTML;
9524
9558
  return newMessage;
@@ -9559,6 +9593,66 @@ hasCompletedAttachmentUploads, hasError, disabled }) => {
9559
9593
  hasError ||
9560
9594
  disabled);
9561
9595
  };
9596
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
9597
+ /**
9598
+ * @internal
9599
+ */
9600
+ const cancelInlineImageUpload = (imageSrcArray, imageUploadsInProgress, onCancelInlineImageUpload) => {
9601
+ if (imageSrcArray && imageUploadsInProgress && (imageUploadsInProgress === null || imageUploadsInProgress === void 0 ? void 0 : imageUploadsInProgress.length) > 0) {
9602
+ imageUploadsInProgress === null || imageUploadsInProgress === void 0 ? void 0 : imageUploadsInProgress.map((uploadImage) => {
9603
+ if (uploadImage.url && imageSrcArray && !(imageSrcArray === null || imageSrcArray === void 0 ? void 0 : imageSrcArray.includes(uploadImage.url))) {
9604
+ onCancelInlineImageUpload === null || onCancelInlineImageUpload === void 0 ? void 0 : onCancelInlineImageUpload(uploadImage.id);
9605
+ }
9606
+ });
9607
+ }
9608
+ };
9609
+ /* @conditional-compile-remove(file-sharing-acs) */
9610
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
9611
+ /**
9612
+ * @internal
9613
+ */
9614
+ const toAttachmentMetadata = (attachmentsWithProgress,
9615
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */ attachmentType) => {
9616
+ return attachmentsWithProgress === null || attachmentsWithProgress === void 0 ? void 0 : attachmentsWithProgress.filter((attachment) => {
9617
+ var _a;
9618
+ return !('error' in attachment) && !((_a = attachment.error) === null || _a === void 0 ? void 0 : _a.message);
9619
+ }).map((attachment) => {
9620
+ let url = attachment.url || '';
9621
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
9622
+ if (attachmentType === 'image') {
9623
+ url = '';
9624
+ }
9625
+ return {
9626
+ id: attachment.id,
9627
+ name: attachment.name,
9628
+ url,
9629
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
9630
+ attachmentType: attachmentType
9631
+ };
9632
+ });
9633
+ };
9634
+ /* @conditional-compile-remove(file-sharing-acs) */
9635
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
9636
+ /**
9637
+ * @internal
9638
+ */
9639
+ const insertAttachmentsAndImages = (content, attachments, imageUploadsInProgress) => {
9640
+ if (!attachments && !imageUploadsInProgress) {
9641
+ return { content, attachmentArray: undefined };
9642
+ }
9643
+ /* @conditional-compile-remove(file-sharing-acs) */
9644
+ let attachmentArray = toAttachmentMetadata(attachments);
9645
+ let newContent = content;
9646
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
9647
+ if (imageUploadsInProgress) {
9648
+ newContent = addUploadedImagesToMessage(content, imageUploadsInProgress);
9649
+ const imageArray = toAttachmentMetadata(imageUploadsInProgress, 'image');
9650
+ if (imageArray) {
9651
+ attachmentArray = attachmentArray ? attachmentArray === null || attachmentArray === void 0 ? void 0 : attachmentArray.concat(imageArray) : imageArray;
9652
+ }
9653
+ }
9654
+ return { content: newContent, attachmentArray };
9655
+ };
9562
9656
 
9563
9657
  // Copyright (c) Microsoft Corporation.
9564
9658
  // Licensed under the MIT License.
@@ -10730,6 +10824,10 @@ class CopyPastePlugin {
10730
10824
  }
10731
10825
  }
10732
10826
  }
10827
+ /**
10828
+ * @internal
10829
+ * Exported only for unit testing
10830
+ */
10733
10831
  const handleBeforePasteEvent = (event,
10734
10832
  /* @conditional-compile-remove(rich-text-editor-image-upload) */ onPaste) => {
10735
10833
  if (event.eventType === PluginEventType.BeforePaste && event.pasteType === 'normal') {
@@ -11482,7 +11580,6 @@ class TableEditContextMenuProvider {
11482
11580
  this.editor = null;
11483
11581
  }
11484
11582
  getContextMenuItems(node) {
11485
- // return this.items;
11486
11583
  if (this.editor && isTableEditable(this.editor, node)) {
11487
11584
  return this.items;
11488
11585
  }
@@ -12015,8 +12112,8 @@ const RichTextSendBox = (props) => {
12015
12112
  }
12016
12113
  setContent(newValue);
12017
12114
  }, [
12018
- /* @conditional-compile-remove(rich-text-editor-image-upload) */ onCancelInlineImageUpload,
12019
12115
  setContent,
12116
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */ onCancelInlineImageUpload,
12020
12117
  /* @conditional-compile-remove(rich-text-editor-image-upload) */ imageUploadsInProgress
12021
12118
  ]);
12022
12119
  const hasContent = React.useMemo(() => {
@@ -12026,28 +12123,6 @@ const RichTextSendBox = (props) => {
12026
12123
  const plainTextContent = (_a = editorComponentRef.current) === null || _a === void 0 ? void 0 : _a.getPlainContent();
12027
12124
  return sanitizeText(contentValue !== null && contentValue !== void 0 ? contentValue : '').length > 0 && sanitizeText(plainTextContent !== null && plainTextContent !== void 0 ? plainTextContent : '').length > 0;
12028
12125
  }, [contentValue]);
12029
- /* @conditional-compile-remove(file-sharing-acs) */
12030
- /* @conditional-compile-remove(rich-text-editor-image-upload) */
12031
- const toAttachmentMetadata = React.useCallback((attachmentsWithProgress,
12032
- /* @conditional-compile-remove(rich-text-editor-image-upload) */ attachmentType) => {
12033
- return attachmentsWithProgress === null || attachmentsWithProgress === void 0 ? void 0 : attachmentsWithProgress.filter((attachment) => {
12034
- var _a;
12035
- return !('error' in attachment) && !((_a = attachment.error) === null || _a === void 0 ? void 0 : _a.message);
12036
- }).map((attachment) => {
12037
- let url = attachment.url || '';
12038
- /* @conditional-compile-remove(rich-text-editor-image-upload) */
12039
- if (attachmentType === 'image') {
12040
- url = '';
12041
- }
12042
- return {
12043
- id: attachment.id,
12044
- name: attachment.name,
12045
- url,
12046
- /* @conditional-compile-remove(rich-text-editor-image-upload) */
12047
- attachmentType: attachmentType
12048
- };
12049
- });
12050
- }, []);
12051
12126
  const sendMessageOnClick = React.useCallback(() => {
12052
12127
  var _a, _b;
12053
12128
  if (disabled || contentValueOverflow) {
@@ -12071,15 +12146,12 @@ const RichTextSendBox = (props) => {
12071
12146
  /* @conditional-compile-remove(file-sharing-acs) */ isAttachmentUploadCompleted(attachments) ||
12072
12147
  /* @conditional-compile-remove(rich-text-editor-image-upload) */ isAttachmentUploadCompleted(imageUploadsInProgress)) {
12073
12148
  /* @conditional-compile-remove(file-sharing-acs) */
12074
- let attachmentArray = toAttachmentMetadata(attachments);
12075
12149
  /* @conditional-compile-remove(rich-text-editor-image-upload) */
12076
- if (imageUploadsInProgress) {
12077
- const imageArray = toAttachmentMetadata(imageUploadsInProgress, 'image');
12078
- if (imageArray) {
12079
- message = addUploadedImagesToMessage(message, imageUploadsInProgress);
12080
- attachmentArray = attachmentArray === null || attachmentArray === void 0 ? void 0 : attachmentArray.concat(imageArray);
12081
- }
12082
- }
12150
+ const { content, attachmentArray } = insertAttachmentsAndImages(contentValue,
12151
+ /* @conditional-compile-remove(file-sharing-acs) */ attachments,
12152
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */ imageUploadsInProgress);
12153
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
12154
+ message = content;
12083
12155
  onSendMessage(message,
12084
12156
  /* @conditional-compile-remove(file-sharing-acs) */ /* @conditional-compile-remove(rich-text-editor-composite-support) */
12085
12157
  {
@@ -12105,9 +12177,6 @@ const RichTextSendBox = (props) => {
12105
12177
  /* @conditional-compile-remove(file-sharing-acs) */
12106
12178
  /* @conditional-compile-remove(rich-text-editor-image-upload) */
12107
12179
  strings.attachmentUploadsPendingError,
12108
- /* @conditional-compile-remove(file-sharing-acs) */
12109
- /* @conditional-compile-remove(rich-text-editor-image-upload) */
12110
- toAttachmentMetadata,
12111
12180
  onSendMessage
12112
12181
  ]);
12113
12182
  const hasErrorMessage = React.useMemo(() => {
@@ -12289,6 +12358,26 @@ const MessageStatusIndicatorIconStyle = react.mergeStyles({
12289
12358
  height: `${MESSAGE_STATUS_INDICATOR_SIZE_REM}rem`
12290
12359
  });
12291
12360
 
12361
+ // Copyright (c) Microsoft Corporation.
12362
+ // Licensed under the MIT License.
12363
+ /**
12364
+ * @private
12365
+ */
12366
+ const scrollbarStyles = {
12367
+ '::-webkit-scrollbar, *::-webkit-scrollbar': {
12368
+ width: '0.3rem',
12369
+ height: '0.3rem'
12370
+ },
12371
+ '::-webkit-scrollbar-thumb, *::-webkit-scrollbar-thumb': {
12372
+ borderRadius: '10px',
12373
+ background: 'rgba(150, 150, 150)'
12374
+ }
12375
+ };
12376
+ /**
12377
+ * @private
12378
+ */
12379
+ const ERROR_IMAGE_SVG_PATH = 'M2.85 2.15a.5.5 0 1 0-.7.7l1.4 1.41A2.99 2.99 0 0 0 3 6v8a3 3 0 0 0 3 3h8c.65 0 1.25-.2 1.74-.55l1.4 1.4a.5.5 0 0 0 .71-.7l-15-15Zm6.56 7.97a1.5 1.5 0 0 0-.46.31l-4.67 4.59A2 2 0 0 1 4 14V6a2 2 0 0 1 .28-1.02l5.13 5.14ZM6 16a2 2 0 0 1-1.01-.27l4.66-4.58c.2-.2.5-.2.7 0l4.66 4.58A2 2 0 0 1 14 16H6ZM16 6v7.88l.9.9A3 3 0 0 0 17 14V6a3 3 0 0 0-3-3H6a3 3 0 0 0-.78.1l.9.9H14a2 2 0 0 1 2 2Zm-2 1.5a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0Zm-1 0a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0Z';
12380
+
12292
12381
  // Copyright (c) Microsoft Corporation.
12293
12382
  // Licensed under the MIT License.
12294
12383
  // Minimum chat bubble width. This matches the minimum chat bubble width from FluentUI
@@ -12482,6 +12571,23 @@ const useChatMessageStyles = reactComponents.makeStyles({
12482
12571
  top: '0',
12483
12572
  left: '0',
12484
12573
  display: 'block'
12574
+ },
12575
+ '& .broken-image-wrapper': {
12576
+ width: '12rem',
12577
+ height: '12rem',
12578
+ marginTop: '0.75rem',
12579
+ display: 'flex',
12580
+ justifyContent: 'center',
12581
+ alignItems: 'center',
12582
+ outline: `1px solid ${reactComponents.tokens.colorNeutralForegroundDisabled}`,
12583
+ backgroundColor: reactComponents.tokens.colorNeutralBackground2
12584
+ },
12585
+ '& .broken-image-wrapper:after': {
12586
+ content: `''`,
12587
+ maskImage: `url("data:image/svg+xml,%3Csvg width='3rem' height='3rem' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg' fill='currentColor'%3E%3Cpath d='${ERROR_IMAGE_SVG_PATH}' fill='currentColor' /%3E%3C/svg%3E");`,
12588
+ width: '3rem',
12589
+ height: '3rem',
12590
+ backgroundColor: `${reactComponents.tokens.colorNeutralForeground2}`
12485
12591
  }
12486
12592
  },
12487
12593
  bodyWithoutAvatar: {
@@ -14161,7 +14267,7 @@ class _ErrorBoundary extends React.Component {
14161
14267
  // Copyright (c) Microsoft Corporation.
14162
14268
  // Licensed under the MIT License.
14163
14269
  /* @conditional-compile-remove(rich-text-editor) */
14164
- const ChatMessageComponentAsRichTextEditBox = React.lazy(() => Promise.resolve().then(function () { return require('./ChatMessageComponentAsRichTextEditBox-DMEk2o-G.js'); }));
14270
+ const ChatMessageComponentAsRichTextEditBox = React.lazy(() => Promise.resolve().then(function () { return require('./ChatMessageComponentAsRichTextEditBox-B4-VwPSY.js'); }));
14165
14271
  /**
14166
14272
  * @private
14167
14273
  * Use this function to load RoosterJS dependencies early in the lifecycle.
@@ -14169,7 +14275,7 @@ const ChatMessageComponentAsRichTextEditBox = React.lazy(() => Promise.resolve()
14169
14275
  *
14170
14276
  * @conditional-compile-remove(rich-text-editor)
14171
14277
  */
14172
- const loadChatMessageComponentAsRichTextEditBox = () => Promise.resolve().then(function () { return require('./ChatMessageComponentAsRichTextEditBox-DMEk2o-G.js'); });
14278
+ const loadChatMessageComponentAsRichTextEditBox = () => Promise.resolve().then(function () { return require('./ChatMessageComponentAsRichTextEditBox-B4-VwPSY.js'); });
14173
14279
  /**
14174
14280
  * @private
14175
14281
  */
@@ -14185,7 +14291,13 @@ const ChatMessageComponentAsEditBoxPicker = (props) => {
14185
14291
  React.createElement(React.Suspense, { fallback: simpleEditBox },
14186
14292
  React.createElement(ChatMessageComponentAsRichTextEditBox, Object.assign({}, props, {
14187
14293
  /* @conditional-compile-remove(rich-text-editor-image-upload) */
14188
- onPaste: richTextEditorOptions === null || richTextEditorOptions === void 0 ? void 0 : richTextEditorOptions.onPaste })))));
14294
+ onPaste: richTextEditorOptions === null || richTextEditorOptions === void 0 ? void 0 : richTextEditorOptions.onPaste,
14295
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
14296
+ onUploadInlineImage: richTextEditorOptions === null || richTextEditorOptions === void 0 ? void 0 : richTextEditorOptions.onUploadInlineImage,
14297
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
14298
+ imageUploadsInProgress: richTextEditorOptions === null || richTextEditorOptions === void 0 ? void 0 : richTextEditorOptions.imageUploadsInProgress,
14299
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
14300
+ onCancelInlineImageUpload: richTextEditorOptions === null || richTextEditorOptions === void 0 ? void 0 : richTextEditorOptions.onCancelInlineImageUpload })))));
14189
14301
  }
14190
14302
  return simpleEditBox;
14191
14303
  };
@@ -14246,9 +14358,7 @@ const ChatMyMessageComponent = (props) => {
14246
14358
  message.messageId &&
14247
14359
  (yield props.onUpdateMessage(message.messageId, text,
14248
14360
  /* @conditional-compile-remove(file-sharing-acs) */
14249
- {
14250
- attachments: attachments
14251
- }));
14361
+ { attachments: attachments }));
14252
14362
  setIsEditing(false);
14253
14363
  });
14254
14364
  }, [message, props]);
@@ -22857,22 +22967,6 @@ const _VideoBackgroundEffectsPicker = (props) => {
22857
22967
  })));
22858
22968
  };
22859
22969
 
22860
- // Copyright (c) Microsoft Corporation.
22861
- // Licensed under the MIT License.
22862
- /**
22863
- * @private
22864
- */
22865
- const scrollbarStyles = {
22866
- '::-webkit-scrollbar, *::-webkit-scrollbar': {
22867
- width: '0.3rem',
22868
- height: '0.3rem'
22869
- },
22870
- '::-webkit-scrollbar-thumb, *::-webkit-scrollbar-thumb': {
22871
- borderRadius: '10px',
22872
- background: 'rgba(150, 150, 150)'
22873
- }
22874
- };
22875
-
22876
22970
  // Copyright (c) Microsoft Corporation.
22877
22971
  // Licensed under the MIT License.
22878
22972
  /**
@@ -23650,6 +23744,88 @@ const NotificationStack = (props) => {
23650
23744
  })));
23651
23745
  };
23652
23746
 
23747
+ // Copyright (c) Microsoft Corporation.
23748
+ // Licensed under the MIT License.
23749
+ /**
23750
+ * A Notification component that is to be used to represent incoming calls to the end user.
23751
+ * Allows the user to accept or reject the incoming call.
23752
+ * @beta
23753
+ */
23754
+ const IncomingCallNotification = (props) => {
23755
+ const { callerName, alertText, avatar, onAcceptWithAudio, onAcceptWithVideo, onReject } = props;
23756
+ const theme = react.useTheme();
23757
+ /* @conditional-compile-remove(one-to-n-calling) */
23758
+ const localeStrings = useLocale$1().strings.IncomingCallNotification;
23759
+ return (React.createElement(react.Stack, { horizontal: true, verticalAlign: "center", styles: incomingCallToastStyle(theme) },
23760
+ React.createElement(react.Stack, { horizontalAlign: "start", styles: incomingCallToastAvatarContainerStyle },
23761
+ React.createElement(react.Persona, { imageUrl: avatar, text: callerName, size: react.PersonaSize.size40, hidePersonaDetails: true, "aria-label": callerName })),
23762
+ React.createElement(react.Stack, { grow: 1, horizontalAlign: "center", style: { alignItems: 'flex-start', fontFamily: 'Segoe UI' } },
23763
+ React.createElement(react.Stack, { style: { fontSize: '0.875rem' } },
23764
+ React.createElement(react.Text, null, callerName !== null && callerName !== void 0 ? callerName :
23765
+ /* @conditional-compile-remove(one-to-n-calling) */ localeStrings.incomingCallNotificationPlaceholderId)),
23766
+ React.createElement(react.Stack, { style: { fontSize: '0.75rem' } },
23767
+ React.createElement(react.Text, null, alertText !== null && alertText !== void 0 ? alertText :
23768
+ /* @conditional-compile-remove(one-to-n-calling) */ localeStrings.incomingCallNotificationPlaceholderAlert))),
23769
+ React.createElement(react.Stack, { horizontal: true, tokens: { childrenGap: 10 } },
23770
+ React.createElement(react.IconButton, { styles: incomingCallRejectButtonStyle(theme), onClick: () => onReject(), iconProps: { iconName: 'IncomingCallNotificationRejectIcon' },
23771
+ /* @conditional-compile-remove(one-to-n-calling) */
23772
+ ariaLabel: localeStrings.incomingCallNoticicationRejectAriaLabel }),
23773
+ React.createElement(react.IconButton, { styles: incomingCallAcceptButtonStyle(theme), onClick: () => onAcceptWithVideo(), iconProps: { iconName: 'IncomingCallNotificationAcceptWithVideoIcon' },
23774
+ /* @conditional-compile-remove(one-to-n-calling) */
23775
+ ariaLabel: localeStrings.incomingCallNoticicationAcceptWithVideoAriaLabel }),
23776
+ React.createElement(react.IconButton, { styles: incomingCallAcceptButtonStyle(theme), onClick: () => onAcceptWithAudio(), iconProps: { iconName: 'IncomingCallNotificationAcceptIcon' },
23777
+ /* @conditional-compile-remove(one-to-n-calling) */
23778
+ ariaLabel: localeStrings.incomingCallNoticicationAcceptWithAudioAriaLabel }))));
23779
+ };
23780
+ const incomingCallToastStyle = (theme) => {
23781
+ return {
23782
+ root: {
23783
+ minWidth: '20rem',
23784
+ opacity: 0.95,
23785
+ borderRadius: '0.5rem',
23786
+ boxShadow: theme.effects.elevation8,
23787
+ padding: '1rem'
23788
+ }
23789
+ };
23790
+ };
23791
+ const incomingCallToastAvatarContainerStyle = {
23792
+ root: {
23793
+ marginRight: '0.5rem'
23794
+ }
23795
+ };
23796
+ const incomingCallAcceptButtonStyle = (theme) => {
23797
+ return {
23798
+ root: {
23799
+ backgroundColor: theme.palette.greenDark,
23800
+ color: theme.palette.white,
23801
+ borderRadius: '2rem',
23802
+ minWidth: '2rem',
23803
+ width: '2rem',
23804
+ border: 'none'
23805
+ },
23806
+ rootHovered: {
23807
+ backgroundColor: theme.palette.green,
23808
+ color: theme.palette.white
23809
+ }
23810
+ };
23811
+ };
23812
+ const incomingCallRejectButtonStyle = (theme) => {
23813
+ return {
23814
+ root: {
23815
+ backgroundColor: theme.palette.redDark,
23816
+ color: theme.palette.white,
23817
+ borderRadius: '2rem',
23818
+ minWidth: '2rem',
23819
+ width: '2rem',
23820
+ border: 'none'
23821
+ },
23822
+ rootHovered: {
23823
+ backgroundColor: theme.palette.red,
23824
+ color: theme.palette.white
23825
+ }
23826
+ };
23827
+ };
23828
+
23653
23829
  // Copyright (c) Microsoft Corporation.
23654
23830
  // Licensed under the MIT License.
23655
23831
  /**
@@ -24643,19 +24819,38 @@ const createDefaultChatHandlers = memoizeOne((chatClient, chatThreadClient) => {
24643
24819
  // affecting conditional-compile-remove(attachment-upload)
24644
24820
  onSendMessage: function (content, options) {
24645
24821
  return __awaiter$w(this, void 0, void 0, function* () {
24822
+ var _a, _b;
24646
24823
  const sendMessageRequest = {
24647
24824
  content,
24648
24825
  senderDisplayName: chatClient.getState().displayName
24649
24826
  };
24650
24827
  /* @conditional-compile-remove(file-sharing-acs) */
24828
+ const fileAttachments = (_a = options === null || options === void 0 ? void 0 : options.attachments) === null || _a === void 0 ? void 0 : _a.filter((attachment) => {
24829
+ const file = attachment;
24830
+ return file.attachmentType === undefined;
24831
+ });
24832
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
24833
+ let imageAttachments;
24651
24834
  /* @conditional-compile-remove(rich-text-editor-image-upload) */
24835
+ (_b = options === null || options === void 0 ? void 0 : options.attachments) === null || _b === void 0 ? void 0 : _b.map((attachment) => {
24836
+ const image = attachment;
24837
+ if (image.attachmentType === 'image') {
24838
+ imageAttachments === undefined ? (imageAttachments = [image]) : imageAttachments.push(image);
24839
+ }
24840
+ });
24652
24841
  if (options &&
24653
24842
  'attachments' in options &&
24654
24843
  options.attachments &&
24655
- options.attachments[0] &&
24656
- !options.attachments[0].attachmentType) {
24844
+ /* @conditional-compile-remove(file-sharing-acs) */
24845
+ ((fileAttachments && fileAttachments.length > 0) ||
24846
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
24847
+ (imageAttachments && imageAttachments.length > 0))) {
24657
24848
  const chatSDKOptions = {
24658
- metadata: Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.metadata), { fileSharingMetadata: JSON.stringify(options === null || options === void 0 ? void 0 : options.attachments) }),
24849
+ metadata: Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.metadata), {
24850
+ /* @conditional-compile-remove(file-sharing-acs) */
24851
+ fileSharingMetadata: JSON.stringify(fileAttachments) }),
24852
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
24853
+ attachments: imageAttachments,
24659
24854
  type: options.type
24660
24855
  };
24661
24856
  yield chatThreadClient.sendMessage(sendMessageRequest, chatSDKOptions);
@@ -24684,10 +24879,29 @@ const createDefaultChatHandlers = memoizeOne((chatClient, chatThreadClient) => {
24684
24879
  /* @conditional-compile-remove(file-sharing-acs) */
24685
24880
  options) {
24686
24881
  return __awaiter$w(this, void 0, void 0, function* () {
24882
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
24883
+ let imageAttachments;
24884
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
24885
+ // get image attachments from content, including the ones before the editing and newly added ones during editing.
24886
+ const document = new DOMParser().parseFromString(content !== null && content !== void 0 ? content : '', 'text/html');
24887
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
24888
+ document.querySelectorAll('img').forEach((img) => {
24889
+ if (imageAttachments === undefined) {
24890
+ imageAttachments = [];
24891
+ }
24892
+ imageAttachments.push({
24893
+ id: img.id,
24894
+ attachmentType: 'image'
24895
+ });
24896
+ });
24897
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
24898
+ content = document.body.innerHTML;
24687
24899
  const updateMessageOptions = {
24688
24900
  content,
24689
24901
  /* @conditional-compile-remove(file-sharing-acs) */
24690
- metadata: Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.metadata), { fileSharingMetadata: JSON.stringify(options === null || options === void 0 ? void 0 : options.attachments) })
24902
+ metadata: Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.metadata), { fileSharingMetadata: JSON.stringify(options === null || options === void 0 ? void 0 : options.attachments) }),
24903
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
24904
+ attachments: imageAttachments
24691
24905
  };
24692
24906
  yield chatThreadClient.updateMessage(messageId, updateMessageOptions);
24693
24907
  });
@@ -25129,11 +25343,20 @@ const processChatMessageContent = (message) => {
25129
25343
  if (content) {
25130
25344
  const document = new DOMParser().parseFromString(content !== null && content !== void 0 ? content : '', 'text/html');
25131
25345
  document.querySelectorAll('img').forEach((img) => {
25132
- var _a, _b;
25346
+ var _a, _b, _c;
25133
25347
  const attachmentPreviewUrl = (_a = attachments.find((attachment) => attachment.id === img.id)) === null || _a === void 0 ? void 0 : _a.previewUrl;
25134
25348
  if (attachmentPreviewUrl) {
25135
25349
  const resourceCache = (_b = message.resourceCache) === null || _b === void 0 ? void 0 : _b[attachmentPreviewUrl];
25136
- img.src = getResourceSourceUrl(resourceCache);
25350
+ const src = getResourceSourceUrl(resourceCache);
25351
+ // if in error state
25352
+ if (src === undefined) {
25353
+ const brokenImageView = getBrokenImageViewNode(img);
25354
+ (_c = img.parentElement) === null || _c === void 0 ? void 0 : _c.replaceChild(brokenImageView, img);
25355
+ }
25356
+ else {
25357
+ // else in loading or success state
25358
+ img.setAttribute('src', src);
25359
+ }
25137
25360
  }
25138
25361
  });
25139
25362
  content = document.body.innerHTML;
@@ -25159,22 +25382,28 @@ const generateImageAttachmentImgHtml = (message, attachment) => {
25159
25382
  const contentType = extractAttachmentContentTypeFromName(attachment.name);
25160
25383
  const resourceCache = (_a = message.resourceCache) === null || _a === void 0 ? void 0 : _a[attachment.previewUrl];
25161
25384
  const src = getResourceSourceUrl(resourceCache);
25385
+ // if in error state
25386
+ if (src === undefined) {
25387
+ return `\r\n<p>${getBrokenImageViewNode()}</p>`;
25388
+ }
25389
+ // else in loading or success state
25162
25390
  return `\r\n<p><img alt="image" src="${src}" itemscope="${contentType}" id="${attachment.id}"></p>`;
25163
25391
  }
25164
25392
  return '';
25165
25393
  };
25166
25394
  const getResourceSourceUrl = (result) => {
25167
- let src = '';
25168
25395
  if (result) {
25169
- if (result.error || !result.sourceUrl) {
25170
- // In case of an error we set src to some invalid value to show broken image
25171
- src = 'blob://';
25396
+ if (!result.error && result.sourceUrl) {
25397
+ // return sourceUrl for success state
25398
+ return result.sourceUrl;
25172
25399
  }
25173
25400
  else {
25174
- src = result.sourceUrl;
25401
+ // return undefined for error state
25402
+ return undefined;
25175
25403
  }
25176
25404
  }
25177
- return src;
25405
+ // return empty string for loading state
25406
+ return '';
25178
25407
  };
25179
25408
  const extractAttachmentContentTypeFromName = (name) => {
25180
25409
  if (name === undefined) {
@@ -25308,6 +25537,17 @@ const sanitizedMessageContentType = (type) => {
25308
25537
  ? lowerCaseType
25309
25538
  : 'unknown';
25310
25539
  };
25540
+ const getBrokenImageViewNode = (img) => {
25541
+ var _a;
25542
+ const wrapper = document.createElement('div');
25543
+ Array.from((_a = img === null || img === void 0 ? void 0 : img.attributes) !== null && _a !== void 0 ? _a : []).forEach((attr) => {
25544
+ var _a;
25545
+ wrapper.setAttribute(attr.nodeName, (_a = attr.nodeValue) !== null && _a !== void 0 ? _a : '');
25546
+ });
25547
+ wrapper.setAttribute('class', 'broken-image-wrapper');
25548
+ wrapper.setAttribute('data-ui-id', 'broken-image-icon');
25549
+ return wrapper;
25550
+ };
25311
25551
  const isMessageValidToRender = (message) => {
25312
25552
  var _a, _b, _c, _d, _e;
25313
25553
  if (message.deletedOn) {
@@ -25781,6 +26021,9 @@ const fetchImageSource = (src, authentication, options) => __awaiter$v(void 0, v
25781
26021
  token = (yield authentication.credential.getToken()).token;
25782
26022
  }
25783
26023
  const response = yield fetchWithAuthentication(src, token, options);
26024
+ if (response.status >= 400) {
26025
+ throw new Error(`Failed to fetch image source. Status code: ${response.status}`);
26026
+ }
25784
26027
  const blob = yield response.blob();
25785
26028
  return URL.createObjectURL(blob);
25786
26029
  });
@@ -28372,7 +28615,7 @@ const AttachmentDownloadErrorBar = (props) => {
28372
28615
  /**
28373
28616
  * Wrapper for RichTextSendBox component to allow us to use usePropsFor with richTextSendBox with lazy loading
28374
28617
  */
28375
- const RichTextSendBoxWrapper = React.lazy(() => Promise.resolve().then(function () { return require('./RichTextSendBoxWrapper-ByJFtf0Z.js'); }).then((module) => ({ default: module.RichTextSendBoxWrapper })));
28618
+ const RichTextSendBoxWrapper = React.lazy(() => Promise.resolve().then(function () { return require('./RichTextSendBoxWrapper-C_Nb8f_T.js'); }).then((module) => ({ default: module.RichTextSendBoxWrapper })));
28376
28619
  /**
28377
28620
  * @private
28378
28621
  * Use this function to load RoosterJS dependencies early in the lifecycle.
@@ -28380,13 +28623,15 @@ const RichTextSendBoxWrapper = React.lazy(() => Promise.resolve().then(function
28380
28623
  *
28381
28624
  /* @conditional-compile-remove(rich-text-editor-composite-support)
28382
28625
  */
28383
- const loadRichTextSendBox = () => Promise.resolve().then(function () { return require('./RichTextSendBoxWrapper-ByJFtf0Z.js'); }).then((module) => ({ default: module.RichTextSendBoxWrapper }));
28626
+ const loadRichTextSendBox = () => Promise.resolve().then(function () { return require('./RichTextSendBoxWrapper-C_Nb8f_T.js'); }).then((module) => ({ default: module.RichTextSendBoxWrapper }));
28384
28627
  /**
28385
28628
  * @private
28386
28629
  */
28387
28630
  const SendBoxPicker = (props) => {
28388
28631
  /* @conditional-compile-remove(rich-text-editor-composite-support) */
28389
28632
  const { richTextEditorOptions } = props;
28633
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
28634
+ const { onPaste, onUploadInlineImage, imageUploadsInProgress, onCancelInlineImageUpload } = richTextEditorOptions || {};
28390
28635
  const sendBoxProps = usePropsFor$2(SendBox);
28391
28636
  /* @conditional-compile-remove(rich-text-editor-composite-support) */
28392
28637
  const isRichTextEditorEnabled = React.useMemo(() => {
@@ -28397,7 +28642,7 @@ const SendBoxPicker = (props) => {
28397
28642
  if (isRichTextEditorEnabled) {
28398
28643
  return (React.createElement(_ErrorBoundary, { fallback: sendBox },
28399
28644
  React.createElement(React.Suspense, { fallback: sendBox },
28400
- React.createElement(RichTextSendBoxWrapper, Object.assign({}, props)))));
28645
+ React.createElement(RichTextSendBoxWrapper, Object.assign({}, props, { onPaste: onPaste, onUploadInlineImage: onUploadInlineImage, imageUploadsInProgress: imageUploadsInProgress, onCancelInlineImageUpload: onCancelInlineImageUpload })))));
28401
28646
  }
28402
28647
  return sendBox;
28403
28648
  };
@@ -28553,6 +28798,20 @@ const ChatScreen = (props) => {
28553
28798
  const theme = useTheme();
28554
28799
  /* @conditional-compile-remove(rich-text-editor-image-upload) */
28555
28800
  const [inlineImageUploads, handleInlineImageUploadAction, onUploadInlineImage, onCancelInlineImageUploadHandler] = useImageUpload();
28801
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
28802
+ const [textOnlyChat, setTextOnlyChat] = React.useState(false);
28803
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
28804
+ React.useEffect(() => {
28805
+ const updateChatState = (newState) => {
28806
+ var _a, _b;
28807
+ setTextOnlyChat(((_b = (_a = newState.thread.properties) === null || _a === void 0 ? void 0 : _a.messagingPolicy) === null || _b === void 0 ? void 0 : _b.textOnlyChat) === true);
28808
+ };
28809
+ updateChatState(adapter.getState());
28810
+ adapter.onStateChange(updateChatState);
28811
+ return () => {
28812
+ adapter.offStateChange(updateChatState);
28813
+ };
28814
+ }, [adapter]);
28556
28815
  React.useEffect(() => {
28557
28816
  // Initial data should be always fetched by the composite(or external caller) instead of the adapter
28558
28817
  const fetchData = () => __awaiter$m(void 0, void 0, void 0, function* () {
@@ -28770,9 +29029,11 @@ const ChatScreen = (props) => {
28770
29029
  }
28771
29030
  }, [overlayImageItem === null || overlayImageItem === void 0 ? void 0 : overlayImageItem.attachmentId]);
28772
29031
  /* @conditional-compile-remove(file-sharing-acs) */
28773
- const AttachmentButton = React.useCallback(() => {
29032
+ const attachmentButton = React.useMemo(() => {
28774
29033
  var _a, _b, _c;
28775
- if (!((_a = attachmentOptions === null || attachmentOptions === void 0 ? void 0 : attachmentOptions.uploadOptions) === null || _a === void 0 ? void 0 : _a.handleAttachmentSelection)) {
29034
+ if (!((_a = attachmentOptions === null || attachmentOptions === void 0 ? void 0 : attachmentOptions.uploadOptions) === null || _a === void 0 ? void 0 : _a.handleAttachmentSelection) ||
29035
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
29036
+ textOnlyChat) {
28776
29037
  return null;
28777
29038
  }
28778
29039
  return (React.createElement(AttachmentUploadButtonWrapper, { supportedMediaTypes: (_b = attachmentOptions === null || attachmentOptions === void 0 ? void 0 : attachmentOptions.uploadOptions) === null || _b === void 0 ? void 0 : _b.supportedMediaTypes, disableMultipleUploads: (_c = attachmentOptions === null || attachmentOptions === void 0 ? void 0 : attachmentOptions.uploadOptions) === null || _c === void 0 ? void 0 : _c.disableMultipleUploads, onChange: attachmentUploadButtonOnChange }));
@@ -28780,7 +29041,9 @@ const ChatScreen = (props) => {
28780
29041
  (_c = attachmentOptions === null || attachmentOptions === void 0 ? void 0 : attachmentOptions.uploadOptions) === null || _c === void 0 ? void 0 : _c.handleAttachmentSelection,
28781
29042
  (_d = attachmentOptions === null || attachmentOptions === void 0 ? void 0 : attachmentOptions.uploadOptions) === null || _d === void 0 ? void 0 : _d.supportedMediaTypes,
28782
29043
  (_e = attachmentOptions === null || attachmentOptions === void 0 ? void 0 : attachmentOptions.uploadOptions) === null || _e === void 0 ? void 0 : _e.disableMultipleUploads,
28783
- attachmentUploadButtonOnChange
29044
+ attachmentUploadButtonOnChange,
29045
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
29046
+ textOnlyChat
28784
29047
  ]);
28785
29048
  /* @conditional-compile-remove(file-sharing-acs) */
28786
29049
  const attachments = React.useMemo(() => {
@@ -28810,33 +29073,47 @@ const ChatScreen = (props) => {
28810
29073
  return;
28811
29074
  });
28812
29075
  }, [adapter, /* @conditional-compile-remove(rich-text-editor-image-upload) */ handleInlineImageUploadAction]);
29076
+ const onUpdateMessageHandler = React.useCallback((messageId, content) => __awaiter$m(void 0, void 0, void 0, function* () {
29077
+ yield messageThreadProps.onUpdateMessage(messageId, content);
29078
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
29079
+ handleInlineImageUploadAction({ type: AttachmentUploadActionType.Clear });
29080
+ }), [/* @conditional-compile-remove(rich-text-editor-image-upload) */ handleInlineImageUploadAction, messageThreadProps]);
29081
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
29082
+ const onCancelEditMessageHandler = React.useCallback(() => {
29083
+ handleInlineImageUploadAction({ type: AttachmentUploadActionType.Clear });
29084
+ }, [handleInlineImageUploadAction]);
28813
29085
  /* @conditional-compile-remove(file-sharing-acs) */
28814
29086
  const onCancelUploadHandler = React.useCallback((id) => {
28815
29087
  var _a, _b;
28816
29088
  handleUploadAction({ type: AttachmentUploadActionType.Remove, id });
28817
29089
  (_b = (_a = attachmentOptions === null || attachmentOptions === void 0 ? void 0 : attachmentOptions.uploadOptions) === null || _a === void 0 ? void 0 : _a.handleAttachmentRemoval) === null || _b === void 0 ? void 0 : _b.call(_a, id);
28818
29090
  }, [attachmentOptions === null || attachmentOptions === void 0 ? void 0 : attachmentOptions.uploadOptions]);
28819
- /* @conditional-compile-remove(rich-text-editor-image-upload) */
28820
- const removeImageTags = React.useCallback((event) => {
28821
- event.content.querySelectorAll('img').forEach((image) => {
28822
- // If the image is the only child of its parent, remove all the parents of this img element.
28823
- let parentNode = image.parentElement;
28824
- let currentNode = image;
28825
- while ((parentNode === null || parentNode === void 0 ? void 0 : parentNode.childNodes.length) === 1) {
28826
- currentNode = parentNode;
28827
- parentNode = parentNode.parentElement;
28828
- }
28829
- currentNode === null || currentNode === void 0 ? void 0 : currentNode.remove();
28830
- });
28831
- }, []);
28832
29091
  /* @conditional-compile-remove(rich-text-editor-composite-support) */
28833
29092
  const richTextEditorOptions = React.useMemo(() => {
28834
29093
  return (options === null || options === void 0 ? void 0 : options.richTextEditor)
28835
29094
  ? {
28836
- /* @conditional-compile-remove(rich-text-editor-image-upload) */ onPaste: removeImageTags
29095
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */ onPaste: textOnlyChat
29096
+ ? removeImageTags
29097
+ : undefined,
29098
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
29099
+ onUploadInlineImage: onUploadInlineImage,
29100
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
29101
+ imageUploadsInProgress: imageUploadsInProgress,
29102
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
29103
+ onCancelInlineImageUpload: onCancelInlineImageUploadHandler
28837
29104
  }
28838
29105
  : undefined;
28839
- }, [options === null || options === void 0 ? void 0 : options.richTextEditor, removeImageTags]);
29106
+ }, [
29107
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
29108
+ imageUploadsInProgress,
29109
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
29110
+ onCancelInlineImageUploadHandler,
29111
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
29112
+ onUploadInlineImage,
29113
+ options === null || options === void 0 ? void 0 : options.richTextEditor,
29114
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
29115
+ textOnlyChat
29116
+ ]);
28840
29117
  return (React.createElement(react.Stack, { className: chatContainer, grow: true },
28841
29118
  (options === null || options === void 0 ? void 0 : options.topic) !== false && React.createElement(ChatHeader, Object.assign({}, headerProps)),
28842
29119
  React.createElement(react.Stack, { className: chatArea, tokens: participantListContainerPadding, horizontal: true, grow: true },
@@ -28846,7 +29123,9 @@ const ChatScreen = (props) => {
28846
29123
  React.createElement(AttachmentDownloadErrorBar, { onDismissDownloadErrorMessage: React.useCallback(() => {
28847
29124
  setDownloadErrorMessage('');
28848
29125
  }, []), attachmentDownloadErrorMessage: downloadErrorMessage || '' }),
28849
- React.createElement(MessageThread, Object.assign({}, messageThreadProps, { onRenderAvatar: onRenderAvatarCallback, onRenderMessage: onRenderMessage,
29126
+ React.createElement(MessageThread, Object.assign({}, messageThreadProps, { onUpdateMessage: onUpdateMessageHandler,
29127
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
29128
+ onCancelEditMessage: onCancelEditMessageHandler, onRenderAvatar: onRenderAvatarCallback, onRenderMessage: onRenderMessage,
28850
29129
  /* @conditional-compile-remove(file-sharing-acs) */
28851
29130
  onRenderAttachmentDownloads: onRenderAttachmentDownloads, inlineImageOptions: inlineImageOptions, numberOfChatMessagesToReload: defaultNumberOfChatMessagesToReload, styles: messageThreadStyles,
28852
29131
  /* @conditional-compile-remove(rich-text-editor-composite-support) */
@@ -28856,8 +29135,7 @@ const ChatScreen = (props) => {
28856
29135
  React.createElement(react.Stack, { horizontal: formFactor === 'mobile' },
28857
29136
  formFactor === 'mobile' && (
28858
29137
  /* @conditional-compile-remove(file-sharing-acs) */
28859
- React.createElement(react.Stack, { verticalAlign: "center" },
28860
- React.createElement(AttachmentButton, null))),
29138
+ React.createElement(react.Stack, { verticalAlign: "center" }, attachmentButton)),
28861
29139
  React.createElement(react.Stack, { grow: true },
28862
29140
  React.createElement(SendBoxPicker, { styles: sendBoxStyles, autoFocus: options === null || options === void 0 ? void 0 : options.autoFocus,
28863
29141
  /* @conditional-compile-remove(rich-text-editor-composite-support) */
@@ -28875,9 +29153,9 @@ const ChatScreen = (props) => {
28875
29153
  imageUploadsInProgress: imageUploadsInProgress,
28876
29154
  /* @conditional-compile-remove(rich-text-editor-image-upload) */
28877
29155
  onCancelInlineImageUpload: onCancelInlineImageUploadHandler })),
28878
- formFactor !== 'mobile' && (
28879
- /* @conditional-compile-remove(file-sharing-acs) */
28880
- React.createElement(AttachmentButton, null))))),
29156
+ formFactor !== 'mobile' &&
29157
+ /* @conditional-compile-remove(file-sharing-acs) */
29158
+ attachmentButton))),
28881
29159
  /* @conditional-compile-remove(chat-composite-participant-pane) */
28882
29160
  (options === null || options === void 0 ? void 0 : options.participantPane) === true && (React.createElement(ChatScreenPeoplePane, { onFetchAvatarPersonaData: onFetchAvatarPersonaData, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, isMobile: formFactor === 'mobile' }))),
28883
29161
  overlayImageItem && (React.createElement(ImageOverlay, Object.assign({}, overlayImageItem, { isOpen: isImageOverlayOpen, onDismiss: () => {
@@ -28890,6 +29168,20 @@ const ChatScreen = (props) => {
28890
29168
  });
28891
29169
  }, onDownloadButtonClicked: onDownloadButtonClicked })))));
28892
29170
  };
29171
+ // TODO-vhuseinova: delete after the function is added to utils
29172
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
29173
+ const removeImageTags = (event) => {
29174
+ event.content.querySelectorAll('img').forEach((image) => {
29175
+ // If the image is the only child of its parent, remove all the parents of this img element.
29176
+ let parentNode = image.parentElement;
29177
+ let currentNode = image;
29178
+ while ((parentNode === null || parentNode === void 0 ? void 0 : parentNode.childNodes.length) === 1) {
29179
+ currentNode = parentNode;
29180
+ parentNode = parentNode.parentElement;
29181
+ }
29182
+ currentNode === null || currentNode === void 0 ? void 0 : currentNode.remove();
29183
+ });
29184
+ };
28893
29185
 
28894
29186
  // Copyright (c) Microsoft Corporation.
28895
29187
  // Licensed under the MIT License.
@@ -34796,6 +35088,16 @@ const CallArrangement = (props) => {
34796
35088
  const isCaptionsOn = useSelector$1(getCaptionsStatus);
34797
35089
  const minMaxDragPosition = useMinMaxDragPosition(props.modalLayerHostId);
34798
35090
  const pipStyles = React.useMemo(() => getPipStyles(theme), [theme]);
35091
+ /* @conditional-compile-remove(notifications) */
35092
+ if (isTeamsMeeting) {
35093
+ filteredLatestErrorNotifications
35094
+ .filter((notification) => notification.type === 'teamsMeetingCallNetworkQualityLow')
35095
+ .forEach((notification) => {
35096
+ notification.onClickPrimaryButton = props.mobileView
35097
+ ? toggleMeetingPhoneInfoPane
35098
+ : toggleTeamsMeetingConferenceModal;
35099
+ });
35100
+ }
34799
35101
  const verticalControlBar = props.mobileView && containerWidth && containerHeight && containerWidth / containerHeight > 1 ? true : false;
34800
35102
  // Filter out shareScreen capability notifications if on mobile
34801
35103
  const filteredCapabilitesChangedNotifications = props.mobileView
@@ -35181,7 +35483,7 @@ const NetworkReconnectTile = (props) => {
35181
35483
  React.createElement(react.Stack, { horizontal: true, horizontalAlign: "space-between", verticalAlign: "center", className: phoneInfoInstructionLine },
35182
35484
  React.createElement(react.Stack.Item, null,
35183
35485
  React.createElement(react.Stack, { horizontal: true },
35184
- React.createElement(react.Stack, { className: infoConnectionLinkStyle(theme) }),
35486
+ !props.isMobile && React.createElement(react.Stack, { className: infoConnectionLinkStyle(theme) }),
35185
35487
  React.createElement(react.Stack.Item, { className: phoneInfoIcon(theme) },
35186
35488
  React.createElement(react.Icon, { iconName: "DtmfDialpadButton", className: phoneInfoIconStyle(theme) })),
35187
35489
  React.createElement(react.Stack.Item, null,
@@ -35189,12 +35491,12 @@ const NetworkReconnectTile = (props) => {
35189
35491
  React.createElement(react.Text, { className: phoneInfoTextStyle },
35190
35492
  meetingCoordinates[0].conferenceId,
35191
35493
  "#")),
35192
- React.createElement(react.Stack, { horizontal: true, horizontalAlign: "space-between", verticalAlign: "center", className: phoneInfoInstructionLine },
35494
+ !props.isMobile && (React.createElement(react.Stack, { horizontal: true, horizontalAlign: "space-between", verticalAlign: "center", className: phoneInfoInstructionLine },
35193
35495
  React.createElement(react.Stack, { horizontal: true },
35194
35496
  React.createElement(react.Stack.Item, { className: phoneInfoIcon(theme), style: { marginLeft: _pxToRem(2) } },
35195
35497
  React.createElement(react.Icon, { iconName: "PhoneInfoWait", className: phoneInfoIconStyle(theme) })),
35196
35498
  React.createElement(react.Stack.Item, null,
35197
- React.createElement(react.Text, { className: phoneInfoLabelStyle }, localeStrings.meetingConferencePhoneInfoModalWait))))))) }, handlers)));
35499
+ React.createElement(react.Text, { className: phoneInfoLabelStyle }, localeStrings.meetingConferencePhoneInfoModalWait)))))))) }, handlers)));
35198
35500
  };
35199
35501
 
35200
35502
  // Copyright (c) Microsoft Corporation.
@@ -41891,6 +42193,7 @@ exports.FluentV9ThemeProvider = FluentV9ThemeProvider;
41891
42193
  exports.GridLayout = GridLayout;
41892
42194
  exports.HoldButton = HoldButton;
41893
42195
  exports.ImageOverlay = ImageOverlay;
42196
+ exports.IncomingCallNotification = IncomingCallNotification;
41894
42197
  exports.InputBoxButton = InputBoxButton;
41895
42198
  exports.LocalizationProvider = LocalizationProvider$1;
41896
42199
  exports.MAXIMUM_LENGTH_OF_MESSAGE = MAXIMUM_LENGTH_OF_MESSAGE;
@@ -41921,6 +42224,7 @@ exports._IdentifierProvider = _IdentifierProvider;
41921
42224
  exports._formatString = _formatString;
41922
42225
  exports.attachmentMetadataReducer = attachmentMetadataReducer;
41923
42226
  exports.attachmentUploadCardsStyles = attachmentUploadCardsStyles;
42227
+ exports.cancelInlineImageUpload = cancelInlineImageUpload;
41924
42228
  exports.createAzureCommunicationCallAdapter = createAzureCommunicationCallAdapter;
41925
42229
  exports.createAzureCommunicationCallAdapterFromClient = createAzureCommunicationCallAdapterFromClient;
41926
42230
  exports.createAzureCommunicationCallWithChatAdapter = createAzureCommunicationCallWithChatAdapter;
@@ -41944,7 +42248,10 @@ exports.getMessageState = getMessageState;
41944
42248
  exports.getMessageWithAttachmentMetadata = getMessageWithAttachmentMetadata;
41945
42249
  exports.getSelector = getSelector$1;
41946
42250
  exports.getSelector$1 = getSelector;
42251
+ exports.hasIncompleteAttachmentUploads = hasIncompleteAttachmentUploads;
41947
42252
  exports.imageOverlayTheme = imageOverlayTheme;
42253
+ exports.insertAttachmentsAndImages = insertAttachmentsAndImages;
42254
+ exports.isAttachmentUploadCompleted = isAttachmentUploadCompleted;
41948
42255
  exports.lightTheme = lightTheme;
41949
42256
  exports.onRenderCancelIcon = onRenderCancelIcon;
41950
42257
  exports.onRenderSubmitIcon = onRenderSubmitIcon;
@@ -41972,4 +42279,4 @@ exports.useTeamsCall = useTeamsCall;
41972
42279
  exports.useTeamsCallAdapter = useTeamsCallAdapter;
41973
42280
  exports.useTeamsCallAgent = useTeamsCallAgent;
41974
42281
  exports.useTheme = useTheme;
41975
- //# sourceMappingURL=index-BPO9X27C.js.map
42282
+ //# sourceMappingURL=index-CTMK90l4.js.map