@azure/communication-react 1.14.1-alpha-202403270012 → 1.14.1-alpha-202403280012

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 (89) hide show
  1. package/dist/communication-react.d.ts +69 -2
  2. package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-Yty3fOoA.js → RichTextSendBoxWrapper-D3ER8Kz9.js} +5 -2
  3. package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-Yty3fOoA.js.map → RichTextSendBoxWrapper-D3ER8Kz9.js.map} +1 -1
  4. package/dist/dist-cjs/communication-react/{index-BEomNZbT.js → index-BI61bnOi.js} +732 -120
  5. package/dist/dist-cjs/communication-react/index-BI61bnOi.js.map +1 -0
  6. package/dist/dist-cjs/communication-react/index.js +4 -1
  7. package/dist/dist-cjs/communication-react/index.js.map +1 -1
  8. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  9. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  10. package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts +5 -0
  11. package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
  12. package/dist/dist-esm/calling-stateful-client/src/CallContext.js +2 -0
  13. package/dist/dist-esm/calling-stateful-client/src/CallContext.js.map +1 -1
  14. package/dist/dist-esm/calling-stateful-client/src/Converter.js +6 -2
  15. package/dist/dist-esm/calling-stateful-client/src/Converter.js.map +1 -1
  16. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.d.ts +4 -0
  17. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.js +2 -2
  18. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.js.map +1 -1
  19. package/dist/dist-esm/react-components/src/components/MessageStatusIcon.js +1 -1
  20. package/dist/dist-esm/react-components/src/components/MessageStatusIcon.js.map +1 -1
  21. package/dist/dist-esm/react-components/src/components/MessageThread.js +13 -12
  22. package/dist/dist-esm/react-components/src/components/MessageThread.js.map +1 -1
  23. package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/RichTextRibbonButtons.d.ts +7 -0
  24. package/dist/dist-esm/react-components/src/components/RichTextEditor/{RichTextRibbonButtons.js → Buttons/RichTextRibbonButtons.js} +16 -20
  25. package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/RichTextRibbonButtons.js.map +1 -0
  26. package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/RichTextInsertTableButton.d.ts +7 -0
  27. package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/RichTextInsertTableButton.js +56 -0
  28. package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/RichTextInsertTableButton.js.map +1 -0
  29. package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/RichTextInsertTablePane.d.ts +16 -0
  30. package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/RichTextInsertTablePane.js +62 -0
  31. package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/RichTextInsertTablePane.js.map +1 -0
  32. package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/RichTextTableContextMenu.d.ts +8 -0
  33. package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/RichTextTableContextMenu.js +57 -0
  34. package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/RichTextTableContextMenu.js.map +1 -0
  35. package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/insertTableAction.d.ts +9 -0
  36. package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/insertTableAction.js +34 -0
  37. package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/insertTableAction.js.map +1 -0
  38. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.js +23 -11
  39. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.js.map +1 -1
  40. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.d.ts +44 -0
  41. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js +16 -6
  42. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js.map +1 -1
  43. package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js +2 -2
  44. package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js.map +1 -1
  45. package/dist/dist-esm/react-components/src/components/VideoGallery/LargeGalleryLayout.js +5 -3
  46. package/dist/dist-esm/react-components/src/components/VideoGallery/LargeGalleryLayout.js.map +1 -1
  47. package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.d.ts +25 -1
  48. package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.js +132 -2
  49. package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.js.map +1 -1
  50. package/dist/dist-esm/react-components/src/components/utils/RichTextEditorStringsUtils.d.ts +15 -0
  51. package/dist/dist-esm/react-components/src/components/utils/RichTextEditorStringsUtils.js +39 -0
  52. package/dist/dist-esm/react-components/src/components/utils/RichTextEditorStringsUtils.js.map +1 -0
  53. package/dist/dist-esm/react-components/src/components/utils/RichTextTableUtils.d.ts +22 -0
  54. package/dist/dist-esm/react-components/src/components/utils/RichTextTableUtils.js +29 -0
  55. package/dist/dist-esm/react-components/src/components/utils/RichTextTableUtils.js.map +1 -0
  56. package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +12 -1
  57. package/dist/dist-esm/react-components/src/theming/icons.d.ts +4 -0
  58. package/dist/dist-esm/react-components/src/theming/icons.js +10 -2
  59. package/dist/dist-esm/react-components/src/theming/icons.js.map +1 -1
  60. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js +2 -1
  61. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js.map +1 -1
  62. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.d.ts +4 -0
  63. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.js.map +1 -1
  64. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts +2 -1
  65. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +22 -4
  66. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  67. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.d.ts +1 -0
  68. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js +2 -2
  69. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js.map +1 -1
  70. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/DtmfDialpadPage.d.ts +1 -0
  71. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/DtmfDialpadPage.js +2 -2
  72. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/DtmfDialpadPage.js.map +1 -1
  73. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js +13 -1
  74. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js.map +1 -1
  75. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts +53 -3
  76. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +196 -57
  77. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
  78. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/state/CallWithChatAdapterState.d.ts +2 -2
  79. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/state/CallWithChatAdapterState.js +4 -5
  80. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/state/CallWithChatAdapterState.js.map +1 -1
  81. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.d.ts +6 -0
  82. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.js +22 -0
  83. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.js.map +1 -1
  84. package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts +4 -0
  85. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-US/strings.json +2 -1
  86. package/package.json +2 -1
  87. package/dist/dist-cjs/communication-react/index-BEomNZbT.js.map +0 -1
  88. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextRibbonButtons.d.ts +0 -12
  89. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextRibbonButtons.js.map +0 -1
@@ -18,6 +18,9 @@ var react$1 = require('@griffel/react');
18
18
  var roosterjsEditorPlugins = require('roosterjs-editor-plugins');
19
19
  var roosterjsEditorCore = require('roosterjs-editor-core');
20
20
  var roosterjsReact = require('roosterjs-react');
21
+ var roosterjsEditorDom = require('roosterjs-editor-dom');
22
+ var roosterjsEditorTypesCompatible = require('roosterjs-editor-types-compatible');
23
+ var roosterjsEditorApi = require('roosterjs-editor-api');
21
24
  var reactChat = require('@fluentui-contrib/react-chat');
22
25
  var uuid = require('uuid');
23
26
  var parse = require('html-react-parser');
@@ -173,7 +176,7 @@ function getDefaultExportFromCjs (x) {
173
176
  // Copyright (c) Microsoft Corporation.
174
177
  // Licensed under the MIT License.
175
178
  // GENERATED FILE. DO NOT EDIT MANUALLY.
176
- var telemetryVersion = '1.14.1-alpha-202403270012';
179
+ var telemetryVersion = '1.14.1-alpha-202403280012';
177
180
 
178
181
 
179
182
  var telemetryVersion$1 = /*@__PURE__*/getDefaultExportFromCjs(telemetryVersion);
@@ -1841,7 +1844,9 @@ function convertSdkCallToDeclarativeCall(call) {
1841
1844
  },
1842
1845
  /* @conditional-compile-remove(hide-attendee-name) */
1843
1846
  // TODO: Replace this once the SDK supports hide attendee name
1844
- hideAttendeeNames: false
1847
+ hideAttendeeNames: false,
1848
+ /* @conditional-compile-remove(meeting-id) */
1849
+ info: _isACSCall(call) ? call.info : _isTeamsCall(call) ? call.info : undefined
1845
1850
  };
1846
1851
  }
1847
1852
  /**
@@ -2024,6 +2029,8 @@ let CallContext$2 = class CallContext {
2024
2029
  existingCall.captionsFeature.currentSpokenLanguage = call.captionsFeature.currentSpokenLanguage;
2025
2030
  /* @conditional-compile-remove(close-captions) */
2026
2031
  existingCall.captionsFeature.currentCaptionLanguage = call.captionsFeature.currentCaptionLanguage;
2032
+ /* @conditional-compile-remove(meeting-id) */
2033
+ existingCall.info = call.info;
2027
2034
  }
2028
2035
  else {
2029
2036
  draft.calls[latestCallId] = call;
@@ -5624,7 +5631,7 @@ const typingIndicatorStringStyle = react.mergeStyles({
5624
5631
  wordBreak: 'break-word'
5625
5632
  });
5626
5633
 
5627
- 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"};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",boldTooltip:"Bold",italicTooltip:"Italic",underlineTooltip:"Underline",bulletListTooltip:"Bulleted list",numberListTooltip:"Numbered list",increaseIndentTooltip:"Increase indent",decreaseIndentTooltip:"Decrease indent",richTextFormatButtonTooltip:"Format"};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"};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:"{author} said {message}",messageContentMineAriaText:"You said {message}",editBoxTextLimit:"Your message is over the limit of {limitNumber} characters",editBoxPlaceholderText:"Edit your message",newMessagesIndicator:"New messages",noDisplayNameSub:"No name",editBoxCancelButton:"Cancel",editBoxSubmitButton:"Done",messageReadCount:"Read by {messageReadByCount} of {remoteParticipantsCount}",actionMenuMoreOptions:"More Options",downloadAttachment:"Download file",blockedWarningText:"This message was deleted due to organizational policy.",blockedWarningLinkText:"Details",attachmentCardGroupMessage:"The message has {attachmentCount} attachment",messageDeletedAnnouncementAriaLabel:"The message is deleted"};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."};var videoGallery$k={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Switch camera",localVideoMovementLabel:"Movable Local Video Tile",localVideoSelectedDescription:"{cameraName} selected",displayNamePlaceholder:"Unnamed participant",fitRemoteParticipantToFrame:"Fit to frame",fillRemoteParticipantFrame:"Fill frame",pinParticipantForMe:"Pin for me",pinParticipantForMeLimitReached:"Pin (limit reached)",unpinParticipantForMe:"Unpin",pinParticipantMenuItemAriaLabel:"Pin {participantName}",unpinParticipantMenuItemAriaLabel:"Unpin {participantName}",pinnedParticipantAnnouncementAriaLabel:"Pinned {participantName}",unpinnedParticipantAnnouncementAriaLabel:"Unpinned {participantName}",startSpotlightVideoTileMenuLabel:"Spotlight for everyone",addSpotlightVideoTileMenuLabel:"Add spotlight",spotlightLimitReachedMenuTitle:"Spotlight limit reached",stopSpotlightVideoTileMenuLabel:"Stop spotlighting",stopSpotlightOnSelfVideoTileMenuLabel:"Exit spotlight",attendeeRole:"Attendee"};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"};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 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,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};
5634
+ 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"};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",boldTooltip:"Bold",italicTooltip:"Italic",underlineTooltip:"Underline",bulletListTooltip:"Bulleted list",numberListTooltip:"Numbered list",increaseIndentTooltip:"Increase indent",decreaseIndentTooltip:"Decrease indent",insertTableTooltip:"Insert table",richTextFormatButtonTooltip:"Format",insertRowOrColumnMenu:"Insert",insertTableMenuTitle:"Insert {column} x {row} table",insertRowAboveMenu:"Insert above",insertRowBelowMenu:"Insert below",insertColumnLeftMenu:"Insert left",insertColumnRightMenu:"Insert right",deleteRowOrColumnMenu:"Delete",deleteColumnMenu:"Delete column",deleteRowMenu:"Delete row",deleteTableMenu:"Delete table"};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"};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:"{author} said {message}",messageContentMineAriaText:"You said {message}",editBoxTextLimit:"Your message is over the limit of {limitNumber} characters",editBoxPlaceholderText:"Edit your message",newMessagesIndicator:"New messages",noDisplayNameSub:"No name",editBoxCancelButton:"Cancel",editBoxSubmitButton:"Done",messageReadCount:"Read by {messageReadByCount} of {remoteParticipantsCount}",actionMenuMoreOptions:"More Options",downloadAttachment:"Download file",blockedWarningText:"This message was deleted due to organizational policy.",blockedWarningLinkText:"Details",attachmentCardGroupMessage:"The message has {attachmentCount} attachment",messageDeletedAnnouncementAriaLabel:"The message is deleted"};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."};var videoGallery$k={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Switch camera",localVideoMovementLabel:"Movable Local Video Tile",localVideoSelectedDescription:"{cameraName} selected",displayNamePlaceholder:"Unnamed participant",fitRemoteParticipantToFrame:"Fit to frame",fillRemoteParticipantFrame:"Fill frame",pinParticipantForMe:"Pin for me",pinParticipantForMeLimitReached:"Pin (limit reached)",unpinParticipantForMe:"Unpin",pinParticipantMenuItemAriaLabel:"Pin {participantName}",unpinParticipantMenuItemAriaLabel:"Unpin {participantName}",pinnedParticipantAnnouncementAriaLabel:"Pinned {participantName}",unpinnedParticipantAnnouncementAriaLabel:"Unpinned {participantName}",startSpotlightVideoTileMenuLabel:"Spotlight for everyone",addSpotlightVideoTileMenuLabel:"Add spotlight",spotlightLimitReachedMenuTitle:"Spotlight limit reached",stopSpotlightVideoTileMenuLabel:"Stop spotlighting",stopSpotlightOnSelfVideoTileMenuLabel:"Exit spotlight",attendeeRole:"Attendee"};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"};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 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,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};
5628
5635
 
5629
5636
  // Copyright (c) Microsoft Corporation.
5630
5637
  // Licensed under the MIT License.
@@ -6820,7 +6827,15 @@ const DEFAULT_COMPONENT_ICONS = {
6820
6827
  /* @conditional-compile-remove(rich-text-editor) */
6821
6828
  RichTextEditorButtonIcon: React.createElement(reactIcons.TextEditStyle20Regular, null),
6822
6829
  /* @conditional-compile-remove(rich-text-editor) */
6823
- RichTextEditorButtonIconFilled: React.createElement(reactIcons.TextEditStyle20Filled, null)
6830
+ RichTextEditorButtonIconFilled: React.createElement(reactIcons.TextEditStyle20Filled, null),
6831
+ /* @conditional-compile-remove(rich-text-editor) */
6832
+ RichTextInsertTableRegularIcon: React.createElement(reactIcons.Table20Regular, null),
6833
+ /* @conditional-compile-remove(rich-text-editor) */
6834
+ RichTextInsertTableFilledIcon: React.createElement(reactIcons.Table20Filled, null),
6835
+ /* @conditional-compile-remove(rich-text-editor) */
6836
+ RichTextTableInsertMenuIcon: React.createElement(reactIcons.TableAdd20Regular, null),
6837
+ /* @conditional-compile-remove(rich-text-editor) */
6838
+ RichTextTableDeleteMenuIcon: React.createElement(reactIcons.TableDismiss20Regular, null)
6824
6839
  };
6825
6840
 
6826
6841
  // Copyright (c) Microsoft Corporation.
@@ -9725,7 +9740,26 @@ const richTextEditorWrapperStyle = (theme, addTopOffset) => {
9725
9740
  paddingInlineEnd: `0.75rem`,
9726
9741
  lineHeight: '1.25rem',
9727
9742
  maxWidth: '100%',
9728
- color: theme.palette.neutralPrimary
9743
+ color: theme.palette.neutralPrimary,
9744
+ '& table': {
9745
+ background: 'transparent',
9746
+ borderCollapse: 'collapse',
9747
+ width: '100%',
9748
+ borderSpacing: '0',
9749
+ // don't shrink/expand cells during the input to the table
9750
+ tableLayout: 'fixed',
9751
+ '& tr': {
9752
+ background: 'transparent',
9753
+ border: `1px solid ${theme.palette.neutralLight}`,
9754
+ '& td': {
9755
+ background: 'transparent',
9756
+ border: `1px solid ${theme.palette.neutralLight}`,
9757
+ wordBreak: 'normal',
9758
+ padding: '0.125rem 0.25rem',
9759
+ verticalAlign: 'top'
9760
+ }
9761
+ }
9762
+ }
9729
9763
  });
9730
9764
  };
9731
9765
  /**
@@ -9776,6 +9810,15 @@ const ribbonOverflowButtonRootStyles = (theme) => {
9776
9810
  color: theme.palette.neutralPrimary
9777
9811
  }
9778
9812
  }
9813
+ },
9814
+ '.ribbon-table-button-regular-icon': {
9815
+ display: 'inline-block',
9816
+ margin: '-0.25rem 0.25rem 0 0.25rem',
9817
+ width: '1.25rem',
9818
+ height: '1.25rem'
9819
+ },
9820
+ '.ribbon-table-button-filled-icon': {
9821
+ display: 'none'
9779
9822
  }
9780
9823
  }
9781
9824
  };
@@ -9811,13 +9854,67 @@ const ribbonButtonStyle = (theme) => {
9811
9854
  rootExpandedHovered: ribbonButtonRootStyles(theme)
9812
9855
  };
9813
9856
  };
9857
+ const rootRibbonTableButtonStyle = (theme) => {
9858
+ // merge IStyles props
9859
+ return Object.assign({ minWidth: 'auto' }, ribbonTableButtonRootStyles(theme, false));
9860
+ };
9861
+ /**
9862
+ * @private
9863
+ */
9864
+ const ribbonTableButtonStyle = (theme) => {
9865
+ return {
9866
+ icon: { height: 'auto' },
9867
+ menuIcon: { height: 'auto' },
9868
+ root: rootRibbonTableButtonStyle(theme),
9869
+ rootChecked: ribbonTableButtonRootStyles(theme, true),
9870
+ rootHovered: ribbonTableButtonRootStyles(theme, true),
9871
+ rootCheckedHovered: ribbonTableButtonRootStyles(theme, true),
9872
+ rootCheckedPressed: ribbonTableButtonRootStyles(theme, true),
9873
+ rootPressed: ribbonTableButtonRootStyles(theme, true),
9874
+ rootExpanded: ribbonTableButtonRootStyles(theme, true),
9875
+ rootExpandedHovered: ribbonTableButtonRootStyles(theme, true)
9876
+ };
9877
+ };
9878
+ const ribbonTableButtonRootStyles = (theme, isSelected) => {
9879
+ return {
9880
+ backgroundColor: 'transparent',
9881
+ selectors: {
9882
+ '.ribbon-table-button-regular-icon': {
9883
+ width: '1.25rem',
9884
+ height: '1.25rem',
9885
+ marginTop: '-0.25rem',
9886
+ color: theme.palette.neutralPrimary,
9887
+ display: isSelected ? 'none' : 'inline-block'
9888
+ },
9889
+ '.ribbon-table-button-filled-icon': {
9890
+ width: '1.25rem',
9891
+ height: '1.25rem',
9892
+ marginTop: '-0.25rem',
9893
+ color: theme.palette.themePrimary,
9894
+ display: isSelected ? 'inline-block' : 'none'
9895
+ }
9896
+ }
9897
+ };
9898
+ };
9814
9899
  /**
9815
9900
  * @private
9816
9901
  */
9817
9902
  const ribbonDividerStyle = (theme) => {
9818
9903
  return {
9819
9904
  icon: { color: theme.palette.neutralQuaternaryAlt, margin: '0 -0.5rem', height: 'auto' },
9820
- root: { margin: '0', padding: '0', minWidth: 'auto' }
9905
+ root: { margin: '0', padding: '0', minWidth: 'auto' },
9906
+ rootHovered: {
9907
+ backgroundColor: 'transparent',
9908
+ selectors: {
9909
+ // Icon's color doesn't work here because of the specificity
9910
+ '.ms-Button-icon': {
9911
+ color: theme.palette.neutralQuaternaryAlt
9912
+ },
9913
+ '.ms-Button-menuIcon': {
9914
+ color: theme.palette.neutralQuaternaryAlt
9915
+ }
9916
+ }
9917
+ }
9821
9918
  };
9822
9919
  };
9823
9920
  /**
@@ -9844,18 +9941,241 @@ const sendBoxRichTextEditorStyle = (isExpanded) => {
9844
9941
  maxHeight: '5rem'
9845
9942
  };
9846
9943
  };
9944
+ /**
9945
+ * @private
9946
+ */
9947
+ const insertTableMenuCellButtonStyles = (theme) => {
9948
+ return {
9949
+ width: '1rem',
9950
+ height: '1rem',
9951
+ border: `solid 0.0625rem ${theme.palette.neutralTertiaryAlt}`,
9952
+ display: 'inline-block',
9953
+ cursor: 'pointer',
9954
+ background: 'transparent'
9955
+ };
9956
+ };
9957
+ /**
9958
+ * @private
9959
+ */
9960
+ const insertTableMenuCellButtonSelectedStyles = (theme) => {
9961
+ return {
9962
+ background: theme.palette.themePrimary
9963
+ };
9964
+ };
9965
+ /**
9966
+ * @private
9967
+ */
9968
+ const insertTableMenuTablePane = react.mergeStyles({
9969
+ padding: '0.5rem 0.625rem 0.75rem 0.625rem',
9970
+ boxSizing: 'content-box',
9971
+ minWidth: 'auto'
9972
+ });
9973
+ /**
9974
+ * @private
9975
+ */
9976
+ const insertTableMenuFocusZone = (theme) => {
9977
+ return react.mergeStyles({
9978
+ lineHeight: '12px',
9979
+ width: '5rem',
9980
+ border: `solid 0.0625rem ${theme.palette.neutralTertiaryAlt}`
9981
+ });
9982
+ };
9983
+ /**
9984
+ * @private
9985
+ */
9986
+ const insertTableMenuTitleStyles = react.mergeStyles({
9987
+ width: '100%',
9988
+ height: '1rem',
9989
+ fontSize: '0.75rem',
9990
+ marginBottom: '0.5rem'
9991
+ });
9992
+
9993
+ // Copyright (c) Microsoft Corporation.
9994
+ // Licensed under the MIT License.
9995
+ // This file uses RoosterJS React package implementation with updates to change table's size and remove styles
9996
+ /**
9997
+ * Insert table into editor at current selection
9998
+ * @param editor The editor instance
9999
+ * @param columns Number of columns in table
10000
+ * @param rows Number of rows in table
10001
+ */
10002
+ const insertTable = (editor, columns, rows) => {
10003
+ const document = editor.getDocument();
10004
+ const table = document.createElement('table');
10005
+ for (let i = 0; i < rows; i++) {
10006
+ const tr = document.createElement('tr');
10007
+ table.appendChild(tr);
10008
+ for (let j = 0; j < columns; j++) {
10009
+ const td = document.createElement('td');
10010
+ tr.appendChild(td);
10011
+ td.appendChild(document.createElement('br'));
10012
+ }
10013
+ }
10014
+ editor.focus();
10015
+ editor.addUndoSnapshot(() => {
10016
+ const vTable = new roosterjsEditorDom.VTable(table);
10017
+ vTable.writeBack();
10018
+ editor.insertNode(table);
10019
+ editor.runAsync((editor) => editor.select(new roosterjsEditorDom.Position(table, roosterjsEditorTypesCompatible.CompatiblePositionType.Begin).normalize()));
10020
+ }, roosterjsEditorTypesCompatible.CompatibleChangeSource.Format, undefined /* canUndoByBackspace */, {
10021
+ formatApiName: 'insertTable'
10022
+ });
10023
+ };
10024
+
10025
+ // Copyright (c) Microsoft Corporation.
10026
+ // Licensed under the MIT License.
10027
+ /**
10028
+ * @private
10029
+ *
10030
+ * String to be replaces by actual values of row and column.
10031
+ */
10032
+ const ColumnRowReplaceString = '{column} x {row}';
10033
+ /**
10034
+ * @private
10035
+ *
10036
+ * Function to create key pair for the selected table size.
10037
+ */
10038
+ function createKey(row, column) {
10039
+ return `${row},${column}`;
10040
+ }
10041
+ /**
10042
+ * @private
10043
+ *
10044
+ * Function to parse key to the selected table size valules.
10045
+ */
10046
+ function parseKey(key) {
10047
+ const [row, column] = key.split(',');
10048
+ return {
10049
+ row: parseInt(row),
10050
+ column: parseInt(column)
10051
+ };
10052
+ }
10053
+
10054
+ // Copyright (c) Microsoft Corporation.
10055
+ // Licensed under the MIT License.
10056
+ // This file uses RoosterJS React package implementation with updates to UI components and styles.
10057
+ const RowColumnInitialValue = 0;
10058
+ /**
10059
+ * @private
10060
+ * Component for the insert table pane
10061
+ */
10062
+ const RichTextInsertTablePane = (props) => {
10063
+ const { item, onClick, theme, maxColumnsNumber, maxRowsNumber } = props;
10064
+ const [column, setColumn] = React.useState(RowColumnInitialValue);
10065
+ const [row, setRow] = React.useState(RowColumnInitialValue);
10066
+ const updateSize = React.useCallback((target) => {
10067
+ if (target !== undefined && target.dataset.column !== undefined && target.dataset.row !== undefined) {
10068
+ const column = parseInt(target.dataset.column);
10069
+ const row = parseInt(target.dataset.row);
10070
+ if (column >= RowColumnInitialValue &&
10071
+ column < maxColumnsNumber &&
10072
+ row >= RowColumnInitialValue &&
10073
+ row < maxRowsNumber) {
10074
+ setColumn(column);
10075
+ setRow(row);
10076
+ }
10077
+ }
10078
+ }, [maxColumnsNumber, maxRowsNumber]);
10079
+ const onMouseEnter = React.useCallback((e) => {
10080
+ updateSize(e.target);
10081
+ }, [updateSize]);
10082
+ const onClickButton = React.useCallback((e) => {
10083
+ onClick(e, Object.assign(Object.assign({}, item), { key: createKey(formatRowColumnText(row), formatRowColumnText(column)) }));
10084
+ }, [row, column, onClick, item]);
10085
+ const items = React.useMemo(() => {
10086
+ var _a;
10087
+ const items = [];
10088
+ for (let i = 0; i < maxRowsNumber; i++) {
10089
+ for (let j = 0; j < maxColumnsNumber; j++) {
10090
+ const key = `cell_${i}_${j}`;
10091
+ const isSelected = j <= column && i <= row;
10092
+ items.push(React.createElement("button", { className: react.mergeStyles(insertTableMenuCellButtonStyles(theme), isSelected ? insertTableMenuCellButtonSelectedStyles(theme) : undefined), onClick: onClickButton, key: key, id: key, "data-column": j, "data-row": i, "data-is-focusable": true, onMouseEnter: onMouseEnter, "aria-label": formatText((_a = item.text) !== null && _a !== void 0 ? _a : '', i, j) }));
10093
+ }
10094
+ }
10095
+ return items;
10096
+ }, [maxRowsNumber, maxColumnsNumber, column, row, theme, onClickButton, onMouseEnter, item.text]);
10097
+ const text = React.useMemo(() => {
10098
+ var _a;
10099
+ return formatText((_a = item.text) !== null && _a !== void 0 ? _a : '', formatRowColumnText(row), formatRowColumnText(column));
10100
+ }, [column, item.text, row]);
10101
+ return (React.createElement("div", null,
10102
+ React.createElement("div", { className: insertTableMenuTitleStyles }, text),
10103
+ React.createElement(react.FocusZone, { defaultTabbableElement: `cell_${RowColumnInitialValue}_${RowColumnInitialValue}`, direction: react.FocusZoneDirection.bidirectional, onActiveElementChanged: updateSize, className: insertTableMenuFocusZone(theme) }, items)));
10104
+ };
10105
+ const formatText = (text, row, column) => {
10106
+ return text.replace(`${ColumnRowReplaceString}`, `${column.toString()} x ${row.toString()}`);
10107
+ };
10108
+ const formatRowColumnText = (value) => {
10109
+ return value + 1;
10110
+ };
10111
+
10112
+ // Copyright (c) Microsoft Corporation.
10113
+ // Licensed under the MIT License.
10114
+ // This file uses RoosterJS React package implementation with updates to UI components and styles.
10115
+ /**
10116
+ * "Insert table" button for the RoosterJS ribbon
10117
+ */
10118
+ const insertTableButton = (theme, maxRowsNumber, maxColumnsNumber) => {
10119
+ return {
10120
+ key: 'buttonNameInsertTable',
10121
+ unlocalizedText: 'Insert table',
10122
+ // Icon will be set in onRenderIcon callback
10123
+ iconName: '',
10124
+ onClick: (editor, key) => {
10125
+ const { row, column } = parseKey(key);
10126
+ insertTable(editor, column, row);
10127
+ },
10128
+ dropDownMenu: {
10129
+ items: {
10130
+ // the key of the item is also used as a key for localization
10131
+ insertTablePane: `Insert ${ColumnRowReplaceString} table`
10132
+ },
10133
+ itemRender: (item, onClick) => {
10134
+ return (React.createElement(RichTextInsertTablePane, { item: item, onClick: onClick, theme: theme, maxColumnsNumber: maxColumnsNumber, maxRowsNumber: maxRowsNumber }));
10135
+ },
10136
+ commandBarSubMenuProperties: {
10137
+ className: insertTableMenuTablePane
10138
+ }
10139
+ },
10140
+ commandBarProperties: {
10141
+ // hide the chevron icon
10142
+ menuIconProps: {
10143
+ hidden: true
10144
+ },
10145
+ onRenderIcon: (item) => {
10146
+ console.log('onRenderIcon', item);
10147
+ return React.createElement(TableIcon, null);
10148
+ },
10149
+ buttonStyles: ribbonTableButtonStyle(theme),
10150
+ canCheck: false
10151
+ }
10152
+ };
10153
+ };
10154
+ const TableIcon = () => {
10155
+ return (
10156
+ // update the visibility of the Table Icon with css classes that are triggered by command bar's state
10157
+ React.createElement(react.Stack, null,
10158
+ React.createElement(react.Icon, { iconName: "RichTextInsertTableFilledIcon", className: 'ribbon-table-button-filled-icon' }),
10159
+ React.createElement(react.Icon, { iconName: "RichTextInsertTableRegularIcon", className: 'ribbon-table-button-regular-icon' })));
10160
+ };
9847
10161
 
9848
10162
  // Copyright (c) Microsoft Corporation.
9849
10163
  // Licensed under the MIT License.
9850
- const dividerRibbonButton = (theme) => {
10164
+ const MaxRowsNumber = 5;
10165
+ const MaxColumnsNumber = 5;
10166
+ const dividerRibbonButton = (theme, key) => {
9851
10167
  return {
9852
- key: 'Divider',
10168
+ key: key,
9853
10169
  iconName: 'RichTextDividerIcon',
9854
10170
  unlocalizedText: '',
9855
10171
  onClick: () => { },
9856
10172
  isDisabled: () => true,
9857
10173
  commandBarProperties: {
9858
- buttonStyles: ribbonDividerStyle(theme)
10174
+ // show the item correctly for the overflow menu
10175
+ itemType: react.ContextualMenuItemType.Divider,
10176
+ buttonStyles: ribbonDividerStyle(theme),
10177
+ // this is still needed to remove checkmark icon space even though it is a divider
10178
+ canCheck: false
9859
10179
  }
9860
10180
  };
9861
10181
  };
@@ -9902,11 +10222,13 @@ const ribbonButtons = (theme) => {
9902
10222
  boldButton(theme),
9903
10223
  italicButton(theme),
9904
10224
  underlineButton(theme),
9905
- dividerRibbonButton(theme),
10225
+ dividerRibbonButton(theme, 'RichTextRibbonTextFormatDivider'),
9906
10226
  bulletListButton(theme),
9907
10227
  numberListButton(theme),
9908
10228
  indentIncreaseButton(theme),
9909
- indentDecreaseButton(theme)
10229
+ indentDecreaseButton(theme),
10230
+ dividerRibbonButton(theme, 'RichTextRibbonTableDivider'),
10231
+ insertTableButton(theme, MaxRowsNumber, MaxColumnsNumber)
9910
10232
  ].forEach((item) => {
9911
10233
  if (item !== undefined) {
9912
10234
  buttons.push(item);
@@ -9914,8 +10236,13 @@ const ribbonButtons = (theme) => {
9914
10236
  });
9915
10237
  return buttons;
9916
10238
  };
10239
+
10240
+ // Copyright (c) Microsoft Corporation.
10241
+ // Licensed under the MIT License.
9917
10242
  /**
9918
10243
  * @private
10244
+ *
10245
+ * Strings for the ribbon buttons where key should match `key` prop if any or the name of the item.
9919
10246
  */
9920
10247
  const ribbonButtonsStrings = (strings) => {
9921
10248
  return {
@@ -9925,9 +10252,82 @@ const ribbonButtonsStrings = (strings) => {
9925
10252
  buttonNameBulletedList: strings.bulletListTooltip,
9926
10253
  buttonNameNumberedList: strings.numberListTooltip,
9927
10254
  buttonNameIncreaseIndent: strings.increaseIndentTooltip,
9928
- buttonNameDecreaseIndent: strings.decreaseIndentTooltip
10255
+ buttonNameDecreaseIndent: strings.decreaseIndentTooltip,
10256
+ buttonNameInsertTable: strings.insertTableTooltip,
10257
+ insertTablePane: strings.insertTableMenuTitle
9929
10258
  };
9930
10259
  };
10260
+ /**
10261
+ * @private
10262
+ *
10263
+ * Strings for the table context menu where key should match `key` prop if any or the name of the item.
10264
+ */
10265
+ const tableContextMenuStrings = (strings) => {
10266
+ return {
10267
+ menuNameTableInsert: strings.insertRowOrColumnMenu,
10268
+ menuNameTableInsertAbove: strings.insertRowAboveMenu,
10269
+ menuNameTableInsertBelow: strings.insertRowBelowMenu,
10270
+ menuNameTableInsertLeft: strings.insertColumnLeftMenu,
10271
+ menuNameTableInsertRight: strings.insertColumnRightMenu,
10272
+ menuNameTableDelete: strings.deleteRowOrColumnMenu,
10273
+ menuNameTableDeleteColumn: strings.deleteColumnMenu,
10274
+ menuNameTableDeleteRow: strings.deleteRowMenu,
10275
+ menuNameTableDeleteTable: strings.deleteTableMenu
10276
+ };
10277
+ };
10278
+
10279
+ // Copyright (c) Microsoft Corporation.
10280
+ // Licensed under the MIT License.
10281
+ const onClick = (key, editor) => {
10282
+ editor.focus();
10283
+ const operation = TableEditOperationMap[key];
10284
+ if (typeof operation === 'number') {
10285
+ roosterjsEditorApi.editTable(editor, operation);
10286
+ }
10287
+ };
10288
+ const TableEditOperationMap = {
10289
+ menuNameTableInsertAbove: roosterjsEditorTypesCompatible.CompatibleTableOperation.InsertAbove,
10290
+ menuNameTableInsertBelow: roosterjsEditorTypesCompatible.CompatibleTableOperation.InsertBelow,
10291
+ menuNameTableInsertLeft: roosterjsEditorTypesCompatible.CompatibleTableOperation.InsertLeft,
10292
+ menuNameTableInsertRight: roosterjsEditorTypesCompatible.CompatibleTableOperation.InsertRight,
10293
+ menuNameTableDeleteTable: roosterjsEditorTypesCompatible.CompatibleTableOperation.DeleteTable,
10294
+ menuNameTableDeleteColumn: roosterjsEditorTypesCompatible.CompatibleTableOperation.DeleteColumn,
10295
+ menuNameTableDeleteRow: roosterjsEditorTypesCompatible.CompatibleTableOperation.DeleteRow
10296
+ };
10297
+ const tableEditInsertMenuItem = {
10298
+ key: 'menuNameTableInsert',
10299
+ unlocalizedText: 'Insert123',
10300
+ subItems: {
10301
+ menuNameTableInsertAbove: 'Insert above121312 ',
10302
+ menuNameTableInsertBelow: 'Insert below',
10303
+ menuNameTableInsertLeft: 'Insert left123 ',
10304
+ menuNameTableInsertRight: 'Insert right'
10305
+ },
10306
+ onClick
10307
+ };
10308
+ const tableEditDeleteMenuItem = {
10309
+ key: 'menuNameTableDelete',
10310
+ unlocalizedText: 'Delete',
10311
+ subItems: {
10312
+ menuNameTableDeleteColumn: 'Delete column',
10313
+ menuNameTableDeleteRow: 'Delete row',
10314
+ menuNameTableDeleteTable: 'Delete table'
10315
+ },
10316
+ onClick
10317
+ };
10318
+ const tableActions = [tableEditInsertMenuItem, tableEditDeleteMenuItem];
10319
+ /**
10320
+ * Create a new instance of ContextMenuProvider to support table editing functionalities in context menu
10321
+ * @returns A new ContextMenuProvider
10322
+ */
10323
+ const createTableEditMenuProvider = (strings) => {
10324
+ return roosterjsReact.createContextMenuProvider('tableEdit', tableActions, tableContextMenuStrings(strings !== null && strings !== void 0 ? strings : {}), (editor, node) => !!getEditingTable(editor, node));
10325
+ };
10326
+ const getEditingTable = (editor, node) => {
10327
+ const td = editor.getElementAtCursor('TD,TH', node);
10328
+ const table = td && editor.getElementAtCursor('table', td);
10329
+ return (table === null || table === void 0 ? void 0 : table.isContentEditable) ? { table, td } : null;
10330
+ };
9931
10331
 
9932
10332
  // Copyright (c) Microsoft Corporation.
9933
10333
  // Licensed under the MIT License.
@@ -9959,13 +10359,12 @@ const RichTextEditor = React.forwardRef((props, ref) => {
9959
10359
  }, []);
9960
10360
  const editorCreator = React.useCallback((div, options) => {
9961
10361
  editor.current = new roosterjsEditorCore.Editor(div, options);
9962
- // Remove default values for background color and color
9963
- // setBackgroundColor and setTextColor can't be used here as they cause the editor to be focused
9964
- // color will be set in richTextEditorWrapperStyle instead of inline styles
9965
- div.style.backgroundColor = '';
9966
- div.style.color = '';
9967
10362
  return editor.current;
9968
- }, []);
10363
+ },
10364
+ // trigger force editor reset when strings are changed to update context menu strings
10365
+ // see RosterJS documentation for 'editorCreator' for more details
10366
+ // eslint-disable-next-line react-hooks/exhaustive-deps
10367
+ [strings]);
9969
10368
  const placeholderPlugin = React.useMemo(() => {
9970
10369
  return new roosterjsEditorPlugins.Watermark('');
9971
10370
  }, []);
@@ -9975,12 +10374,15 @@ const RichTextEditor = React.forwardRef((props, ref) => {
9975
10374
  }
9976
10375
  }, [placeholderPlugin, placeholderText]);
9977
10376
  const plugins = React.useMemo(() => {
10377
+ // contextPlugin and tableEditMenuProvider allow to show insert/delete menu for the table
10378
+ const contextPlugin = roosterjsReact.createContextMenuPlugin();
10379
+ const tableEditMenuProvider = createTableEditMenuProvider(strings);
9978
10380
  const contentEdit = new roosterjsEditorPlugins.ContentEdit();
9979
10381
  const updateContentPlugin = roosterjsReact.createUpdateContentPlugin(roosterjsReact.UpdateMode.OnContentChangedEvent | roosterjsReact.UpdateMode.OnUserInput, (content) => {
9980
10382
  onChange && onChange(content);
9981
10383
  });
9982
- return [contentEdit, placeholderPlugin, updateContentPlugin, ribbonPlugin];
9983
- }, [onChange, placeholderPlugin, ribbonPlugin]);
10384
+ return [contentEdit, placeholderPlugin, updateContentPlugin, ribbonPlugin, contextPlugin, tableEditMenuProvider];
10385
+ }, [onChange, placeholderPlugin, ribbonPlugin, strings]);
9984
10386
  const ribbon = React.useMemo(() => {
9985
10387
  const buttons = ribbonButtons(theme);
9986
10388
  return (React.createElement(roosterjsReact.Ribbon, { styles: ribbonStyle, buttons: buttons, plugin: ribbonPlugin, overflowButtonProps: {
@@ -9992,10 +10394,18 @@ const RichTextEditor = React.forwardRef((props, ref) => {
9992
10394
  }
9993
10395
  }, strings: ribbonButtonsStrings(strings), "data-testid": 'rich-text-editor-ribbon' }));
9994
10396
  }, [strings, ribbonPlugin, theme]);
10397
+ const defaultFormat = React.useMemo(() => {
10398
+ // without setting any styles, text input is not handled properly for tables (when insert or paste one in the editor)
10399
+ // because of https://github.com/microsoft/roosterjs/blob/14dbb947e3ae94580109cbd05e48ceb05327c4dc/packages/roosterjs-editor-core/lib/corePlugins/TypeInContainerPlugin.ts#L75
10400
+ // this issue is fixed for content model package
10401
+ return {
10402
+ backgroundColor: 'transparent'
10403
+ };
10404
+ }, []);
9995
10405
  return (React.createElement("div", { "data-testid": 'rich-text-editor-wrapper' },
9996
10406
  showRichTextEditorFormatting && ribbon,
9997
10407
  React.createElement("div", { className: richTextEditorWrapperStyle(theme, !showRichTextEditorFormatting) },
9998
- React.createElement(roosterjsReact.Rooster, { initialContent: initialContent, inDarkMode: isDarkThemed(theme), plugins: plugins, className: richTextEditorStyle(props.styles), editorCreator: editorCreator,
10408
+ React.createElement(roosterjsReact.Rooster, { defaultFormat: defaultFormat, initialContent: initialContent, inDarkMode: isDarkThemed(theme), plugins: plugins, className: richTextEditorStyle(props.styles), editorCreator: editorCreator,
9999
10409
  // TODO: confirm the color during inline images implementation
10000
10410
  imageSelectionBorderColor: 'blue',
10001
10411
  // doNotAdjustEditorColor is used to fix the default background color for Rooster component
@@ -10281,12 +10691,20 @@ const RichTextSendBox = (props) => {
10281
10691
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
10282
10692
  const onRenderFileUploads = React.useCallback(() => {
10283
10693
  return (React.createElement(react.Stack, { className: attachmentUploadCardsStyles },
10284
- React.createElement(_AttachmentUploadCards, { activeFileUploads: activeFileUploads, onCancelFileUpload: onCancelFileUpload, strings: {
10285
- removeAttachment: strings.removeAttachment,
10286
- uploading: strings.uploading,
10287
- uploadCompleted: strings.uploadCompleted
10288
- } })));
10289
- }, [activeFileUploads, onCancelFileUpload, strings.removeAttachment, strings.uploadCompleted, strings.uploading]);
10694
+ React.createElement(FluentV9ThemeProvider, { v8Theme: theme },
10695
+ React.createElement(_AttachmentUploadCards, { activeFileUploads: activeFileUploads, onCancelFileUpload: onCancelFileUpload, strings: {
10696
+ removeAttachment: strings.removeAttachment,
10697
+ uploading: strings.uploading,
10698
+ uploadCompleted: strings.uploadCompleted
10699
+ } }))));
10700
+ }, [
10701
+ activeFileUploads,
10702
+ onCancelFileUpload,
10703
+ strings.removeAttachment,
10704
+ strings.uploadCompleted,
10705
+ strings.uploading,
10706
+ theme
10707
+ ]);
10290
10708
  const sendButton = React.useMemo(() => {
10291
10709
  return (React.createElement(InputBoxButton, { onRenderIcon: onRenderSendIcon, onClick: (e) => {
10292
10710
  sendMessageOnClick();
@@ -10872,7 +11290,7 @@ const LiveMessage = (props) => (React.createElement(AnnouncerContext.Consumer, n
10872
11290
  const MessageStatusIcon = (props) => {
10873
11291
  const { shouldAnnounce, iconName, iconClassName, ariaLabel } = props;
10874
11292
  return (React.createElement(React.Fragment, null,
10875
- ariaLabel && React.createElement(LiveMessage, { message: ariaLabel, ariaLive: "polite" }),
11293
+ ariaLabel && shouldAnnounce && React.createElement(LiveMessage, { message: ariaLabel, ariaLive: "polite" }),
10876
11294
  React.createElement("div", {
10877
11295
  // make icon accessible
10878
11296
  tabIndex: 0 },
@@ -12948,22 +13366,23 @@ const MessageThreadWrapper = (props) => {
12948
13366
  existsNewChatMessage && !disableJumpToNewMessageButton && (React.createElement("div", { className: react.mergeStyles(newMessageButtonContainerStyle, styles === null || styles === void 0 ? void 0 : styles.newMessageButtonContainer) }, onRenderJumpToNewMessageButton ? (onRenderJumpToNewMessageButton({ text: strings.newMessagesIndicator, onClick: scrollToBottom })) : (React.createElement(DefaultJumpToNewMessageButton, { text: strings.newMessagesIndicator, onClick: scrollToBottom })))),
12949
13367
  React.createElement(LiveAnnouncer, null,
12950
13368
  React.createElement(FluentV9ThemeProvider, { v8Theme: theme },
12951
- latestDeletedMessageId && (React.createElement(Announcer$1, { key: latestDeletedMessageId, announcementString: deletedMessageAriaLabel, ariaLive: 'assertive' })),
12952
13369
  React.createElement(reactChat.Chat
12953
13370
  // styles?.chatContainer used in className and style prop as style prop can't handle CSS selectors
12954
13371
  , {
12955
13372
  // styles?.chatContainer used in className and style prop as style prop can't handle CSS selectors
12956
- className: reactComponents.mergeClasses(classes.root, react.mergeStyles(styles === null || styles === void 0 ? void 0 : styles.chatContainer)), ref: chatScrollDivRef, style: Object.assign({}, createStyleFromV8Style(styles === null || styles === void 0 ? void 0 : styles.chatContainer)) }, messagesToDisplay.map((message) => {
12957
- return (React.createElement(MemoChatMessageComponentWrapper, Object.assign({}, message, { userId: userId, key: message.key, styles: styles, shouldOverlapAvatarAndMessage: isNarrow, strings: strings, onRenderAvatar: onRenderAvatar, onRenderMessage: onRenderMessage, onRenderMessageStatus: onRenderMessageStatus, defaultStatusRenderer: defaultStatusRenderer, onActionButtonClick: onActionButtonClickMemo, readCount: readCountForHoveredIndicator, participantCount: participantCount,
12958
- /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
12959
- fileDownloadHandler: props.fileDownloadHandler, inlineImageOptions: inlineImageOptions,
12960
- /* @conditional-compile-remove(date-time-customization) */
12961
- onDisplayDateTimeString: onDisplayDateTimeString,
12962
- /* @conditional-compile-remove(mention) */
12963
- mentionOptions: mentionOptions,
12964
- /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
12965
- onRenderFileDownloads: onRenderFileDownloads })));
12966
- }))))));
13373
+ className: reactComponents.mergeClasses(classes.root, react.mergeStyles(styles === null || styles === void 0 ? void 0 : styles.chatContainer)), ref: chatScrollDivRef, style: Object.assign({}, createStyleFromV8Style(styles === null || styles === void 0 ? void 0 : styles.chatContainer)) },
13374
+ latestDeletedMessageId && (React.createElement(Announcer$1, { key: latestDeletedMessageId, announcementString: deletedMessageAriaLabel, ariaLive: 'polite' })),
13375
+ messagesToDisplay.map((message) => {
13376
+ return (React.createElement(MemoChatMessageComponentWrapper, Object.assign({}, message, { userId: userId, key: message.key, styles: styles, shouldOverlapAvatarAndMessage: isNarrow, strings: strings, onRenderAvatar: onRenderAvatar, onRenderMessage: onRenderMessage, onRenderMessageStatus: onRenderMessageStatus, defaultStatusRenderer: defaultStatusRenderer, onActionButtonClick: onActionButtonClickMemo, readCount: readCountForHoveredIndicator, participantCount: participantCount,
13377
+ /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
13378
+ fileDownloadHandler: props.fileDownloadHandler, inlineImageOptions: inlineImageOptions,
13379
+ /* @conditional-compile-remove(date-time-customization) */
13380
+ onDisplayDateTimeString: onDisplayDateTimeString,
13381
+ /* @conditional-compile-remove(mention) */
13382
+ mentionOptions: mentionOptions,
13383
+ /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
13384
+ onRenderFileDownloads: onRenderFileDownloads })));
13385
+ }))))));
12967
13386
  };
12968
13387
  const MemoChatMessageComponentWrapper = React.memo((obj) => {
12969
13388
  return React.createElement(ChatMessageComponentWrapper, Object.assign({}, obj));
@@ -16779,7 +17198,7 @@ const OverflowGallery = (props) => {
16779
17198
  */
16780
17199
  const DefaultLayout = (props) => {
16781
17200
  const { remoteParticipants = [], localParticipant, dominantSpeakers, localVideoComponent, screenShareComponent, onRenderRemoteParticipant, styles, maxRemoteVideoStreams, parentWidth, parentHeight, pinnedParticipantUserIds = [], overflowGalleryPosition = 'horizontalBottom',
16782
- /* @conditional-compile-remove(spotlight) */ spotlightedParticipantUserIds } = props;
17201
+ /* @conditional-compile-remove(spotlight) */ spotlightedParticipantUserIds = [] } = props;
16783
17202
  const isNarrow = parentWidth ? isNarrowWidth(parentWidth) : false;
16784
17203
  const isShort = parentHeight ? isShortHeight(parentHeight) : false;
16785
17204
  // This is for tracking the number of children in the first page of overflow gallery.
@@ -16821,7 +17240,7 @@ const DefaultLayout = (props) => {
16821
17240
  : (_b = p.videoStream) === null || _b === void 0 ? void 0 : _b.isAvailable);
16822
17241
  });
16823
17242
  if (localVideoComponent) {
16824
- if (screenShareComponent) {
17243
+ if (screenShareComponent || /* @conditional-compile-remove(spotlight) */ spotlightedParticipantUserIds.length > 0) {
16825
17244
  overflowGalleryTiles = [localVideoComponent].concat(overflowGalleryTiles);
16826
17245
  }
16827
17246
  else {
@@ -17855,7 +18274,8 @@ const LARGE_GALLERY_PARTICIPANT_CAP = 48;
17855
18274
  * @private
17856
18275
  */
17857
18276
  const LargeGalleryLayout = (props) => {
17858
- const { remoteParticipants = [], localParticipant, dominantSpeakers, localVideoComponent, screenShareComponent, onRenderRemoteParticipant, styles, maxRemoteVideoStreams, parentWidth, parentHeight, pinnedParticipantUserIds = [], overflowGalleryPosition = 'horizontalBottom' } = props;
18277
+ const { remoteParticipants = [], localParticipant, dominantSpeakers, localVideoComponent, screenShareComponent, onRenderRemoteParticipant, styles, maxRemoteVideoStreams, parentWidth, parentHeight, pinnedParticipantUserIds = [], overflowGalleryPosition = 'horizontalBottom',
18278
+ /* @conditional-compile-remove(spotlight) */ spotlightedParticipantUserIds = [] } = props;
17859
18279
  const isNarrow = parentWidth ? isNarrowWidth(parentWidth) : false;
17860
18280
  const isShort = parentHeight ? isShortHeight(parentHeight) : false;
17861
18281
  const maxStreamsTrampoline = () => {
@@ -17877,7 +18297,8 @@ const LargeGalleryLayout = (props) => {
17877
18297
  ? childrenPerPage.current - ((pinnedParticipantUserIds.length + 1) % childrenPerPage.current)
17878
18298
  : childrenPerPage.current,
17879
18299
  pinnedParticipantUserIds,
17880
- /* @conditional-compile-remove(large-gallery) */ layout: 'largeGallery'
18300
+ /* @conditional-compile-remove(large-gallery) */ layout: 'largeGallery',
18301
+ /* @conditional-compile-remove(spotlight) */ spotlightedParticipantUserIds
17881
18302
  });
17882
18303
  let activeVideoStreams = 0;
17883
18304
  let gridTiles = gridParticipants.map((p) => {
@@ -17901,7 +18322,7 @@ const LargeGalleryLayout = (props) => {
17901
18322
  : (_b = p.videoStream) === null || _b === void 0 ? void 0 : _b.isAvailable);
17902
18323
  });
17903
18324
  if (localVideoComponent) {
17904
- if (screenShareComponent) {
18325
+ if (screenShareComponent || /* @conditional-compile-remove(spotlight) */ spotlightedParticipantUserIds.length > 0) {
17905
18326
  overflowGalleryTiles = [localVideoComponent].concat(overflowGalleryTiles);
17906
18327
  }
17907
18328
  else {
@@ -20157,8 +20578,8 @@ const DialpadButton = (props) => {
20157
20578
  const DialpadContainer = (props) => {
20158
20579
  var _a, _b;
20159
20580
  const theme = react.useTheme();
20160
- const { onSendDtmfTone, onClickDialpadButton, textFieldValue, onChange, showDeleteButton = true, longPressTrigger = 'mouseAndTouch', disableDtmfPlayback, dialpadMode = 'dialer' } = props;
20161
- const dtmfToneAudioContext = React.useRef(new AudioContext());
20581
+ const { onSendDtmfTone, onClickDialpadButton, textFieldValue, onChange, showDeleteButton = true, longPressTrigger = 'mouseAndTouch', disableDtmfPlayback, dialpadMode = 'dialer', dtmfAudioContext } = props;
20582
+ const dtmfToneAudioContext = React.useRef(dtmfAudioContext ? dtmfAudioContext : new AudioContext());
20162
20583
  const [plainTextValue, setPlainTextValue] = React.useState(textFieldValue !== null && textFieldValue !== void 0 ? textFieldValue : '');
20163
20584
  const plainTextValuePreviousRenderValue = React.useRef(plainTextValue);
20164
20585
  React.useEffect(() => {
@@ -24767,7 +25188,7 @@ const CallCompositeIcon = (props) => (React.createElement(react.FontIcon, Object
24767
25188
  */
24768
25189
  const CallWithChatCompositeIcon = (props) => (React.createElement(react.FontIcon, Object.assign({}, props)));
24769
25190
 
24770
- var call$k={cameraLabel:"Camera",noCamerasLabel:"No cameras found",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",chatButtonLabel:"Chat",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",defaultPlaceHolder:"Select an option",dismissSidePaneButtonLabel:"Close",videoEffectsPaneTitle:"Effects",videoEffectsPaneBackgroundSelectionTitle:"Background",configurationPageVideoEffectsButtonLabel:"Effects",unableToStartVideoEffect:"Unable to apply video effect.",blurBackgroundEffectButtonLabel:"Blur",blurBackgroundTooltip:"Blur Background",removeBackgroundEffectButtonLabel:"None",removeBackgroundTooltip:"Remove Background",cameraOffBackgroundEffectWarningText:"Your camera is off. Turn on camera to see video effect.",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leavingCallTitle:"Leaving...",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby.",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",notInvitedToRoomDetails:"You are not able to join this room because you do not have an invite.",notInvitedToRoomTitle:"Not invited to room",peopleButtonLabel:"People",selectedPeopleButtonLabel:"People Button Selected",peoplePaneTitle:"People",peoplePaneMoreButtonAriaLabel:"More",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call {numberOfPeople}",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",removeMenuLabel:"Remove",startSpotlightMenuLabel:"Spotlight for everyone",addSpotlightMenuLabel:"Add spotlight",stopSpotlightMenuLabel:"Stop spotlighting",stopSpotlightOnSelfMenuLabel:"Exit spotlight",spotlightLimitReachedMenuTitle:"Spotlight limit reached",stopAllSpotlightMenuLabel:"Stop all spotlights",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",roomNotFoundDetails:"The room ID provided could not be found.",roomNotFoundTitle:"Room not found",roomNotValidDetails:"This room is not valid at this current time.",roomNotValidTitle:"Room not valid",inviteToRoomRemovedDetails:"Your invite to join this room was removed.",inviteToRoomRemovedTitle:"Invite to room removed",soundLabel:"Sound",noMicrophonesLabel:"No microphones found",noSpeakersLabel:"No speakers found",startCallButtonLabel:"Start call",openDialpadButtonLabel:"Dial phone number",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",moreButtonCallingLabel:"More",resumeCallButtonLabel:"Resume",resumingCallButtonLabel:"Resuming...",resumeCallButtonAriaLabel:"Resume call",resumingCallButtonAriaLabel:"Resume call",holdScreenLabel:"You're on hold",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number",outboundCallingNoticeString:"Calling...",participantJoinedNoticeString:"{displayName} joined",twoParticipantJoinedNoticeString:"{displayName1} and {displayName2} have joined",threeParticipantJoinedNoticeString:"{displayName1}, {displayName2} and {displayName3} have joined",participantLeftNoticeString:"{displayName} left",twoParticipantLeftNoticeString:"{displayName1} and {displayName2} have left",threeParticipantLeftNoticeString:"{displayName1}, {displayName2} and {displayName3} have left",unnamedParticipantString:"unnamed participant",manyUnnamedParticipantsJoined:"unnamed participant and {numOfParticipants} other participants joined",manyUnnamedParticipantsLeft:"unnamed participant and {numOfParticipants} other participants left",manyParticipantsJoined:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants joined",manyParticipantsLeft:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants left",liveCaptionsLabel:"Live captions",captionsSettingsLabel:"Caption settings",startCaptionsButtonOnLabel:"Turn on captions",startCaptionsButtonOffLabel:"Turn off captions",startCaptionsButtonTooltipOnContent:"Turn off captions",startCaptionsButtonTooltipOffContent:"Turn on captions",captionsSettingsModalTitle:"Captions Settings",captionsSettingsSpokenLanguageDropdownLabel:"Spoken language",captionsSettingsCaptionLanguageDropdownLabel:"Captions language",captionsSettingsSpokenLanguageDropdownInfoText:"Language that everyone on this call is speaking.",captionsSettingsCaptionLanguageDropdownInfoText:"Captions will appear in this langugage.",captionsSettingsConfirmButtonLabel:"Confirm",captionsSettingsCancelButtonLabel:"Cancel",captionsSettingsModalAriaLabel:"Captions Setting Modal",captionsSettingsCloseModalButtonAriaLabel:"Close Captions Setting",captionsBannerMoreButtonCallingLabel:"More",captionsBannerMoreButtonTooltip:"More options",dismissModalAriaLabel:"Local and remote picture and picture, press enter to return to call",callRejectedTitle:"The call could not be completed",callRejectedMoreDetails:"The person you are trying to reach is unavailable. Please try again later.",callTimeoutTitle:"The call could not be completed",callTimeoutDetails:"The person you are trying to reach is unavailable. Please try again later.",callTimeoutBotTitle:"The call could not be completed",callTimeoutBotDetails:"The service that you are trying to reach is unavailable. Please try again later.",dtmfDialerButtonLabel:"Dialpad",dtmfDialerButtonTooltipOn:"Show dialpad",dtmfDialerButtonTooltipOff:"Hide dialpad",dtmfDialerMoreButtonLabelOn:"Show dialpad",dtmfDialerMoreButtonLabelOff:"Hide dialpad",spokenLanguageStrings:{"ar-ae":"Arabic - U.A.E.","ar-sa":"Arabic - Saudi Arabia","da-dk":"Danish","de-de":"German - Germany","en-au":"English - Australia","en-ca":"English - Canada","en-gb":"English - United Kingdom","en-in":"English - India","en-nz":"English - New Zealand","en-us":"English - United States","es-es":"Spanish - Spain (Modern Sort)","es-mx":"Spanish - Mexico","fi-fi":"Finnish","fr-ca":"French - Canada","fr-fr":"French - France","hi-in":"Hindi","it-it":"Italian - Italy","ja-jp":"Japanese","ko-kr":"Korean","nb-no":"Norwegian (Bokmål)","nl-be":"Dutch - Belgium","nl-nl":"Dutch - Netherlands","pl-pl":"Polish","pt-br":"Portuguese - Brazil","ru-ru":"Russian","sv-se":"Swedish","zh-cn":"Chinese - People's Republic of China","zh-hk":"Chinese - Hong Kong SAR","cs-cz":"Czech","pt-pt":"Portuguese - Portugal","tr-tr":"Turkish","vi-vn":"Vietnamese","th-th":"Thai","he-il":"Hebrew","cy-gb":"Welsh","uk-ua":"Ukrainian","el-gr":"Greek","hu-hu":"Hungarian","ro-ro":"Romanian","sk-sk":"Slovak","zh-tw":"Chinese - Taiwan"},captionLanguageStrings:{ar:"Arabic",da:"Danish",de:"German",en:"English",es:"Spanish",fi:"Finnish","fr-ca":"French - Canada",fr:"French - France",hi:"Hindi",it:"Italian",ja:"Japanese",ko:"Korean",nb:"Norwegian (Bokmål)",nl:"Dutch",pl:"Polish",pt:"Portuguese - Brazil",ru:"Russian",sv:"Swedish","zh-Hans":"Chinese (Simplified)","zh-Hant":"Chinese (Traditional)",cs:"Czech","pt-pt":"Portuguese - Portugal",tr:"Turkish",vi:"Vietnamese",th:"Thai",he:"Hebrew",cy:"Welsh",uk:"Ukrainian",el:"Greek",hu:"Hungarian",ro:"Romanian",sk:"Slovak"},captionsBannerSpinnerText:"Starting captions...",transferPageTransferorText:"Transferring...",transferPageTransferTargetText:"Connecting...",transferPageUnknownTransferorDisplayName:"Unknown",transferPageUnknownTransferTargetDisplayName:"Unknown",transferPageNoticeString:"You are being transferred",participantCouldNotBeReachedTitle:"Target participant is currently not available",participantCouldNotBeReachedMoreDetails:"Please contact participant when they are available",permissionToReachTargetParticipantNotAllowedTitle:"Permission to reach target participant is not allowed",permissionToReachTargetParticipantNotAllowedMoreDetails:"Please check that the target participant is in the same tenant",unableToResolveTenantTitle:"Unable to resolve tenant id for the target participant",unableToResolveTenantMoreDetails:"Please check the participant id is entered correctly",participantIdIsMalformedTitle:"Participant id is not in the correct format",participantIdIsMalformedMoreDetails:"Please check that the participant id is in the correct format",moreButtonGalleryControlLabel:"View",moreButtonGalleryPositionToggleLabel:"Move gallery to top",moreButtonGallerySpeakerLayoutLabel:"Speaker",moreButtonGalleryFloatingLocalLayoutLabel:"Dynamic",moreButtonGalleryDefaultLayoutLabel:"Gallery view",moreButtonGalleryFocusedContentLayoutLabel:"Focus on content",moreButtonLargeGalleryDefaultLayoutLabel:"Large Gallery",capabilityChangedNotification:{turnVideoOn:{lostDueToMeetingOption:"Your camera has been disabled. You can no longer share video.",grantedDueToMeetingOption:"Your camera has been enabled. Turn it on if you'd like to share video."},unmuteMic:{lostDueToMeetingOption:"Your mic has been disabled. You can no longer unmute.",grantedDueToMeetingOption:"Your mic has been enabled. Unmute if you'd like to speak."},shareScreen:{lostDueToRoleChangeToAttendee:"Your role has been changed. Some actions, like sharing content, won't be available to you.",grantedDueToRoleChangeToPresenter:"You're a presenter. You can share content and facilitate the meeting."}},surveyTitle:"Help us improve",starSurveyHelperText:"How was the quality of the call?",starSurveyOneStarText:"The quality was bad.",starSurveyTwoStarText:"The quality was poor.",starSurveyThreeStarText:"The quality was good.",starSurveyFourStarText:"The quality was great.",starSurveyFiveStarText:"The quality was excellent.",surveyConfirmButtonLabel:"Send Feedback",starRatingAriaLabel:"Select {0} of {1} stars",surveySkipButtonLabel:"Skip",tagsSurveyQuestion:"What could have been better?",tagsSurveyTextFieldDefaultText:"Other, please specify",tagsSurveyHelperText:"Check any issues you experienced",surveyTextboxDefaultText:"Other, please specify",endOfSurveyText:"Thank you for your feedback!",surveyIssues:{overallRating:{callCannotJoin:"I could not join call",callCannotInvite:"I could not invite others into the call",hadToRejoin:"I had to rejoin the call",callEndedUnexpectedly:"Call ended for me unexpectedly",otherIssues:"I was having other issues with the call"},audioRating:{noLocalAudio:"The other side could not hear any sound",noRemoteAudio:"I could not hear any sound",echo:"I heard echos on the call",audioNoise:"I heard noise on the call",lowVolume:"Volume was low",audioStoppedUnexpectedly:"Audio stopped unexpectedly",distortedSpeech:"Audio was distorted",audioInterruption:"Audio was interrupted",otherIssues:"I was having other audio issues in this call"},videoRating:{noVideoReceived:"I could not see any video",noVideoSent:"Others could not see me",lowQuality:"Video quality was low",freezes:"Video frozen",stoppedUnexpectedly:"Video stopped unexpectedly",darkVideoReceived:"I can only see dark screens when others turn on their camera",audioVideoOutOfSync:"Audio and Video was out of sync",otherIssues:"I was having other video issues in this call"},screenshareRating:{noContentLocal:"Other people could not see my screenshare",noContentRemote:"I could not see other people's screenshare",cannotPresent:"I could not present my screen",lowQuality:"Screen share quality was low",freezes:"Screen share frozen",stoppedUnexpectedly:"Screen share stopped unexpectedly",largeDelay:"Screen share has a large delay",otherIssues:"I was having other screen share issues in this call"}},SurveyIssuesHeadingStrings:{overallRating:"Overall",audioRating:"Audio",videoRating:"Video",screenshareRating:"Presenting"},spotlightPrompt:{startSpotlightHeading:"Spotlight for everyone?",startSpotlightText:"You'll highlight this video for everyone in the meeting.",startSpotlightOnSelfText:"You'll highlight your video for everyone in the meeting.",startSpotlightConfirmButtonLabel:"Spotlight for everyone",startSpotlightCancelButtonLabel:"Cancel",stopSpotlightHeading:"Stop spotlighting this video?",stopSpotlightOnSelfHeading:"Exit spotlight?",stopAllSpotlightHeading:"Stop spotlighting all videos?",stopSpotlightText:"This video will no longer be highlighted for everyone in the meeting.",stopSpotlightOnSelfText:"Your video will no longer be highlighted for everyone in the meeting.",stopAllSpotlightText:"The videos will no longer be highlighted for everyone in the meeting.",stopSpotlightConfirmButtonLabel:"Stop spotlighting",stopSpotlightOnSelfConfirmButtonLabel:"Exit spotlight",stopSpotlightCancelButtonLabel:"Cancel"},exitSpotlightButtonLabel:"Exit spotlight",exitSpotlightButtonTooltip:"Exit spotlight"};var chat$k={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$k={chatButtonLabel:"Chat",chatButtonNewMessageNotificationLabel:"New Message",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipClose:"Hide chat",chatButtonTooltipOpen:"Show chat",chatPaneTitle:"Chat",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",dismissSidePaneButtonLabel:"Close",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",moreDrawerCaptionsMenuTitle:"Live captions",moreDrawerSpokenLanguageMenuTitle:"Spoken language",moreDrawerCaptionLanguageMenuTitle:"Caption language",moreDrawerGalleryOptionsMenuTitle:"Gallery options",peopleButtonLabel:"People",selectedPeopleButtonLabel:"People Button Selected",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",peoplePaneTitle:"People",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",openDialpadButtonLabel:"Dial phone number",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number"};var en_US = {call:call$k,chat:chat$k,callWithChat:callWithChat$k};
25191
+ var call$k={cameraLabel:"Camera",noCamerasLabel:"No cameras found",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",chatButtonLabel:"Chat",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",defaultPlaceHolder:"Select an option",dismissSidePaneButtonLabel:"Close",videoEffectsPaneTitle:"Effects",videoEffectsPaneBackgroundSelectionTitle:"Background",configurationPageVideoEffectsButtonLabel:"Effects",unableToStartVideoEffect:"Unable to apply video effect.",blurBackgroundEffectButtonLabel:"Blur",blurBackgroundTooltip:"Blur Background",removeBackgroundEffectButtonLabel:"None",removeBackgroundTooltip:"Remove Background",cameraOffBackgroundEffectWarningText:"Your camera is off. Turn on camera to see video effect.",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leavingCallTitle:"Leaving...",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby.",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",notInvitedToRoomDetails:"You are not able to join this room because you do not have an invite.",notInvitedToRoomTitle:"Not invited to room",peopleButtonLabel:"People",selectedPeopleButtonLabel:"People Button Selected",peoplePaneTitle:"People",peoplePaneMoreButtonAriaLabel:"More",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call {numberOfPeople}",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",removeMenuLabel:"Remove",startSpotlightMenuLabel:"Spotlight for everyone",addSpotlightMenuLabel:"Add spotlight",stopSpotlightMenuLabel:"Stop spotlighting",stopSpotlightOnSelfMenuLabel:"Exit spotlight",spotlightLimitReachedMenuTitle:"Spotlight limit reached",stopAllSpotlightMenuLabel:"Stop all spotlights",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",roomNotFoundDetails:"The room ID provided could not be found.",roomNotFoundTitle:"Room not found",roomNotValidDetails:"This room is not valid at this current time.",roomNotValidTitle:"Room not valid",inviteToRoomRemovedDetails:"Your invite to join this room was removed.",inviteToRoomRemovedTitle:"Invite to room removed",soundLabel:"Sound",noMicrophonesLabel:"No microphones found",noSpeakersLabel:"No speakers found",startCallButtonLabel:"Start call",openDialpadButtonLabel:"Dial phone number",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",moreButtonCallingLabel:"More",resumeCallButtonLabel:"Resume",resumingCallButtonLabel:"Resuming...",resumeCallButtonAriaLabel:"Resume call",resumingCallButtonAriaLabel:"Resume call",holdScreenLabel:"You're on hold",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number",outboundCallingNoticeString:"Calling...",participantJoinedNoticeString:"{displayName} joined",twoParticipantJoinedNoticeString:"{displayName1} and {displayName2} have joined",threeParticipantJoinedNoticeString:"{displayName1}, {displayName2} and {displayName3} have joined",participantLeftNoticeString:"{displayName} left",twoParticipantLeftNoticeString:"{displayName1} and {displayName2} have left",threeParticipantLeftNoticeString:"{displayName1}, {displayName2} and {displayName3} have left",unnamedParticipantString:"unnamed participant",manyUnnamedParticipantsJoined:"unnamed participant and {numOfParticipants} other participants joined",manyUnnamedParticipantsLeft:"unnamed participant and {numOfParticipants} other participants left",manyParticipantsJoined:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants joined",manyParticipantsLeft:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants left",liveCaptionsLabel:"Live captions",captionsSettingsLabel:"Caption settings",startCaptionsButtonOnLabel:"Turn on captions",startCaptionsButtonOffLabel:"Turn off captions",startCaptionsButtonTooltipOnContent:"Turn off captions",startCaptionsButtonTooltipOffContent:"Turn on captions",captionsSettingsModalTitle:"Captions Settings",captionsSettingsSpokenLanguageDropdownLabel:"Spoken language",captionsSettingsCaptionLanguageDropdownLabel:"Captions language",captionsSettingsSpokenLanguageDropdownInfoText:"Language that everyone on this call is speaking.",captionsSettingsCaptionLanguageDropdownInfoText:"Captions will appear in this langugage.",captionsSettingsConfirmButtonLabel:"Confirm",captionsSettingsCancelButtonLabel:"Cancel",captionsSettingsModalAriaLabel:"Captions Setting Modal",captionsSettingsCloseModalButtonAriaLabel:"Close Captions Setting",captionsBannerMoreButtonCallingLabel:"More",captionsBannerMoreButtonTooltip:"More options",dismissModalAriaLabel:"Local and remote picture and picture, press enter to return to call",callRejectedTitle:"The call could not be completed",callRejectedMoreDetails:"The person you are trying to reach is unavailable. Please try again later.",callTimeoutTitle:"The call could not be completed",callTimeoutDetails:"The person you are trying to reach is unavailable. Please try again later.",callTimeoutBotTitle:"The call could not be completed",callTimeoutBotDetails:"The service that you are trying to reach is unavailable. Please try again later.",dtmfDialerButtonLabel:"Dialpad",dtmfDialerButtonTooltipOn:"Show dialpad",dtmfDialerButtonTooltipOff:"Hide dialpad",dtmfDialerMoreButtonLabelOn:"Show dialpad",dtmfDialerMoreButtonLabelOff:"Hide dialpad",spokenLanguageStrings:{"ar-ae":"Arabic - U.A.E.","ar-sa":"Arabic - Saudi Arabia","da-dk":"Danish","de-de":"German - Germany","en-au":"English - Australia","en-ca":"English - Canada","en-gb":"English - United Kingdom","en-in":"English - India","en-nz":"English - New Zealand","en-us":"English - United States","es-es":"Spanish - Spain (Modern Sort)","es-mx":"Spanish - Mexico","fi-fi":"Finnish","fr-ca":"French - Canada","fr-fr":"French - France","hi-in":"Hindi","it-it":"Italian - Italy","ja-jp":"Japanese","ko-kr":"Korean","nb-no":"Norwegian (Bokmål)","nl-be":"Dutch - Belgium","nl-nl":"Dutch - Netherlands","pl-pl":"Polish","pt-br":"Portuguese - Brazil","ru-ru":"Russian","sv-se":"Swedish","zh-cn":"Chinese - People's Republic of China","zh-hk":"Chinese - Hong Kong SAR","cs-cz":"Czech","pt-pt":"Portuguese - Portugal","tr-tr":"Turkish","vi-vn":"Vietnamese","th-th":"Thai","he-il":"Hebrew","cy-gb":"Welsh","uk-ua":"Ukrainian","el-gr":"Greek","hu-hu":"Hungarian","ro-ro":"Romanian","sk-sk":"Slovak","zh-tw":"Chinese - Taiwan"},captionLanguageStrings:{ar:"Arabic",da:"Danish",de:"German",en:"English",es:"Spanish",fi:"Finnish","fr-ca":"French - Canada",fr:"French - France",hi:"Hindi",it:"Italian",ja:"Japanese",ko:"Korean",nb:"Norwegian (Bokmål)",nl:"Dutch",pl:"Polish",pt:"Portuguese - Brazil",ru:"Russian",sv:"Swedish","zh-Hans":"Chinese (Simplified)","zh-Hant":"Chinese (Traditional)",cs:"Czech","pt-pt":"Portuguese - Portugal",tr:"Turkish",vi:"Vietnamese",th:"Thai",he:"Hebrew",cy:"Welsh",uk:"Ukrainian",el:"Greek",hu:"Hungarian",ro:"Romanian",sk:"Slovak"},captionsBannerSpinnerText:"Starting captions...",transferPageTransferorText:"Transferring...",transferPageTransferTargetText:"Connecting...",transferPageUnknownTransferorDisplayName:"Unknown",transferPageUnknownTransferTargetDisplayName:"Unknown",transferPageNoticeString:"You are being transferred",participantCouldNotBeReachedTitle:"Target participant is currently not available",participantCouldNotBeReachedMoreDetails:"Please contact participant when they are available",permissionToReachTargetParticipantNotAllowedTitle:"Permission to reach target participant is not allowed",permissionToReachTargetParticipantNotAllowedMoreDetails:"Please check that the target participant is in the same tenant",unableToResolveTenantTitle:"Unable to resolve tenant id for the target participant",unableToResolveTenantMoreDetails:"Please check the participant id is entered correctly",participantIdIsMalformedTitle:"Participant id is not in the correct format",participantIdIsMalformedMoreDetails:"Please check that the participant id is in the correct format",moreButtonGalleryControlLabel:"View",moreButtonGalleryPositionToggleLabel:"Move gallery to top",moreButtonGallerySpeakerLayoutLabel:"Speaker",moreButtonGalleryFloatingLocalLayoutLabel:"Dynamic",moreButtonGalleryDefaultLayoutLabel:"Gallery view",moreButtonGalleryFocusedContentLayoutLabel:"Focus on content",moreButtonLargeGalleryDefaultLayoutLabel:"Large Gallery",capabilityChangedNotification:{turnVideoOn:{lostDueToMeetingOption:"Your camera has been disabled. You can no longer share video.",grantedDueToMeetingOption:"Your camera has been enabled. Turn it on if you'd like to share video."},unmuteMic:{lostDueToMeetingOption:"Your mic has been disabled. You can no longer unmute.",grantedDueToMeetingOption:"Your mic has been enabled. Unmute if you'd like to speak."},shareScreen:{lostDueToRoleChangeToAttendee:"Your role has been changed. Some actions, like sharing content, won't be available to you.",grantedDueToRoleChangeToPresenter:"You're a presenter. You can share content and facilitate the meeting."}},surveyTitle:"Help us improve",starSurveyHelperText:"How was the quality of the call?",starSurveyOneStarText:"The quality was bad.",starSurveyTwoStarText:"The quality was poor.",starSurveyThreeStarText:"The quality was good.",starSurveyFourStarText:"The quality was great.",starSurveyFiveStarText:"The quality was excellent.",surveyConfirmButtonLabel:"Send Feedback",starRatingAriaLabel:"Select {0} of {1} stars",surveySkipButtonLabel:"Skip",tagsSurveyQuestion:"What could have been better?",tagsSurveyTextFieldDefaultText:"Other, please specify",tagsSurveyHelperText:"Check any issues you experienced",surveyTextboxDefaultText:"Other, please specify",endOfSurveyText:"Thank you for your feedback!",surveyIssues:{overallRating:{callCannotJoin:"I could not join call",callCannotInvite:"I could not invite others into the call",hadToRejoin:"I had to rejoin the call",callEndedUnexpectedly:"Call ended for me unexpectedly",otherIssues:"I was having other issues with the call"},audioRating:{noLocalAudio:"The other side could not hear any sound",noRemoteAudio:"I could not hear any sound",echo:"I heard echos on the call",audioNoise:"I heard noise on the call",lowVolume:"Volume was low",audioStoppedUnexpectedly:"Audio stopped unexpectedly",distortedSpeech:"Audio was distorted",audioInterruption:"Audio was interrupted",otherIssues:"I was having other audio issues in this call"},videoRating:{noVideoReceived:"I could not see any video",noVideoSent:"Others could not see me",lowQuality:"Video quality was low",freezes:"Video frozen",stoppedUnexpectedly:"Video stopped unexpectedly",darkVideoReceived:"I can only see dark screens when others turn on their camera",audioVideoOutOfSync:"Audio and Video was out of sync",otherIssues:"I was having other video issues in this call"},screenshareRating:{noContentLocal:"Other people could not see my screenshare",noContentRemote:"I could not see other people's screenshare",cannotPresent:"I could not present my screen",lowQuality:"Screen share quality was low",freezes:"Screen share frozen",stoppedUnexpectedly:"Screen share stopped unexpectedly",largeDelay:"Screen share has a large delay",otherIssues:"I was having other screen share issues in this call"}},SurveyIssuesHeadingStrings:{overallRating:"Overall",audioRating:"Audio",videoRating:"Video",screenshareRating:"Presenting"},spotlightPrompt:{startSpotlightHeading:"Spotlight for everyone?",startSpotlightText:"You'll highlight this video for everyone in the meeting.",startSpotlightOnSelfText:"You'll highlight your video for everyone in the meeting.",startSpotlightConfirmButtonLabel:"Spotlight for everyone",startSpotlightCancelButtonLabel:"Cancel",stopSpotlightHeading:"Stop spotlighting this video?",stopSpotlightOnSelfHeading:"Exit spotlight?",stopAllSpotlightHeading:"Stop spotlighting all videos?",stopSpotlightText:"This video will no longer be highlighted for everyone in the meeting.",stopSpotlightOnSelfText:"Your video will no longer be highlighted for everyone in the meeting.",stopAllSpotlightText:"The videos will no longer be highlighted for everyone in the meeting.",stopSpotlightConfirmButtonLabel:"Stop spotlighting",stopSpotlightOnSelfConfirmButtonLabel:"Exit spotlight",stopSpotlightCancelButtonLabel:"Cancel"},exitSpotlightButtonLabel:"Exit spotlight",exitSpotlightButtonTooltip:"Exit spotlight",invalidMeetingIdentifier:"Invalid meeting ID or passcode"};var chat$k={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$k={chatButtonLabel:"Chat",chatButtonNewMessageNotificationLabel:"New Message",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipClose:"Hide chat",chatButtonTooltipOpen:"Show chat",chatPaneTitle:"Chat",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",dismissSidePaneButtonLabel:"Close",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",moreDrawerCaptionsMenuTitle:"Live captions",moreDrawerSpokenLanguageMenuTitle:"Spoken language",moreDrawerCaptionLanguageMenuTitle:"Caption language",moreDrawerGalleryOptionsMenuTitle:"Gallery options",peopleButtonLabel:"People",selectedPeopleButtonLabel:"People Button Selected",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",peoplePaneTitle:"People",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",openDialpadButtonLabel:"Dial phone number",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number"};var en_US = {call:call$k,chat:chat$k,callWithChat:callWithChat$k};
24771
25192
 
24772
25193
  // Copyright (c) Microsoft Corporation.
24773
25194
  // Licensed under the MIT License.
@@ -25444,6 +25865,28 @@ const _createAzureCommunicationChatAdapterInner = (endpoint_1, userId_1, display
25444
25865
  const adapter = yield createAzureCommunicationChatAdapterFromClient(chatClient, chatThreadClient);
25445
25866
  return adapter;
25446
25867
  });
25868
+ /**
25869
+ * This inner function to create ChatAdapterPromise in case when threadID is not avaialble.
25870
+ * ThreadId is a promise to allow for lazy initialization of the adapter.
25871
+ * @internal
25872
+ */
25873
+ const _createLazyAzureCommunicationChatAdapterInner = (endpoint_2, userId_2, displayName_2, credential_2, threadId_2, ...args_2) => __awaiter$n(void 0, [endpoint_2, userId_2, displayName_2, credential_2, threadId_2, ...args_2], void 0, function* (endpoint, userId, displayName, credential, threadId, telemetryImplementationHint = 'Chat') {
25874
+ if (!_isValidIdentifier(userId)) {
25875
+ throw new Error('Provided userId is invalid. Please provide valid identifier object.');
25876
+ }
25877
+ const chatClient = _createStatefulChatClientInner({
25878
+ userId,
25879
+ displayName,
25880
+ endpoint,
25881
+ credential
25882
+ }, undefined, telemetryImplementationHint);
25883
+ return threadId.then((threadId) => __awaiter$n(void 0, void 0, void 0, function* () {
25884
+ const chatThreadClient = yield chatClient.getChatThreadClient(threadId);
25885
+ yield chatClient.startRealtimeNotifications();
25886
+ const adapter = yield createAzureCommunicationChatAdapterFromClient(chatClient, chatThreadClient);
25887
+ return adapter;
25888
+ }));
25889
+ });
25447
25890
  /**
25448
25891
  * A custom React hook to simplify the creation of {@link ChatAdapter}.
25449
25892
  *
@@ -26253,7 +26696,7 @@ const useSelector$2 = (selector, selectorProps) => {
26253
26696
  // Copyright (c) Microsoft Corporation.
26254
26697
  // Licensed under the MIT License.
26255
26698
  /* @conditional-compile-remove(rich-text-editor) */
26256
- const RichTextSendBoxWrapper = React.lazy(() => Promise.resolve().then(function () { return require('./RichTextSendBoxWrapper-Yty3fOoA.js'); }).then((module) => ({ default: module.RichTextSendBoxWrapper })));
26699
+ const RichTextSendBoxWrapper = React.lazy(() => Promise.resolve().then(function () { return require('./RichTextSendBoxWrapper-D3ER8Kz9.js'); }).then((module) => ({ default: module.RichTextSendBoxWrapper })));
26257
26700
  /**
26258
26701
  * @private
26259
26702
  */
@@ -26706,6 +27149,8 @@ const ACCESS_DENIED_TEAMS_MEETING_SUB_CODE = 5854;
26706
27149
  const REMOTE_PSTN_USER_HUNG_UP = 560000;
26707
27150
  const REMOVED_FROM_CALL_SUB_CODES = [5000, 5300, REMOTE_PSTN_USER_HUNG_UP];
26708
27151
  const CALL_REJECTED_CODE$1 = 603;
27152
+ /* @conditional-compile-remove(meeting-id) */
27153
+ const INVALID_MEETING_IDENTIFIER = 5751;
26709
27154
  /** @private */
26710
27155
  const ROOM_NOT_FOUND_SUB_CODE = 5732;
26711
27156
  /** @private */
@@ -26797,7 +27242,7 @@ const getCallEndReason = (call) => {
26797
27242
  * @private
26798
27243
  */
26799
27244
  const getEndedCallPageProps = (locale, endedCall) => {
26800
- var _a, _b, _c, _d, _e;
27245
+ var _a, _b, _c, _d, _e, _f;
26801
27246
  let title = locale.strings.call.leftCallTitle;
26802
27247
  let moreDetails = locale.strings.call.leftCallMoreDetails;
26803
27248
  let disableStartCallButton = false;
@@ -26893,6 +27338,16 @@ const getEndedCallPageProps = (locale, endedCall) => {
26893
27338
  }
26894
27339
  break;
26895
27340
  }
27341
+ /* @conditional-compile-remove(meeting-id) */
27342
+ switch ((_f = endedCall === null || endedCall === void 0 ? void 0 : endedCall.callEndReason) === null || _f === void 0 ? void 0 : _f.subCode) {
27343
+ case INVALID_MEETING_IDENTIFIER:
27344
+ if (locale.strings.call.callRejectedTitle) {
27345
+ title = locale.strings.call.callRejectedTitle;
27346
+ moreDetails = locale.strings.call.invalidMeetingIdentifier;
27347
+ disableStartCallButton = true;
27348
+ }
27349
+ break;
27350
+ }
26896
27351
  return { title, moreDetails, disableStartCallButton, iconName };
26897
27352
  };
26898
27353
  /**
@@ -32249,7 +32704,7 @@ const DtmfDialpadPageContent = (props) => {
32249
32704
  React.createElement(react.Text, { style: { margin: 'auto' } }, calleeName && calleeName !== 'Unnamed participant' ? calleeName === null || calleeName === void 0 ? void 0 : calleeName.toString() : ''),
32250
32705
  React.createElement(Dialpad, { onSendDtmfTone: (tone) => __awaiter$c(void 0, void 0, void 0, function* () {
32251
32706
  yield adapter.sendDtmfTone(tone);
32252
- }), longPressTrigger: props.mobileView ? 'touch' : 'mouseAndTouch', dialpadMode: 'dtmf' }))));
32707
+ }), longPressTrigger: props.mobileView ? 'touch' : 'mouseAndTouch', dialpadMode: 'dtmf', dtmfAudioContext: props.compositeAudioContext }))));
32253
32708
  };
32254
32709
  const DtmfDialerContentTimer = () => {
32255
32710
  const [time, setTime] = React.useState(0);
@@ -32274,7 +32729,7 @@ const DtmfDialerContentTimer = () => {
32274
32729
  */
32275
32730
  const DtmfDialpadPage = (props) => {
32276
32731
  const adapter = useAdapter();
32277
- return React.createElement(DtmfDialpadPageContent, { adapter: adapter, mobileView: props.mobileView });
32732
+ return React.createElement(DtmfDialpadPageContent, Object.assign({ adapter: adapter }, props, { mobileView: props.mobileView }));
32278
32733
  };
32279
32734
 
32280
32735
  // Copyright (c) Microsoft Corporation.
@@ -32320,7 +32775,7 @@ const buttonTextStyles = { label: { fontSize: '0.875rem' } };
32320
32775
  */
32321
32776
  const CallPage = (props) => {
32322
32777
  var _a;
32323
- const { callInvitationURL, onFetchAvatarPersonaData, onFetchParticipantMenuItems, options, mobileView, galleryLayout = 'floatingLocalVideo', onUserSetGalleryLayoutChange, userSetOverflowGalleryPosition = 'Responsive', onSetUserSetOverflowGalleryPosition, onCloseChatPane, pinnedParticipants, setPinnedParticipants } = props;
32778
+ const { callInvitationURL, onFetchAvatarPersonaData, onFetchParticipantMenuItems, options, mobileView, galleryLayout = 'floatingLocalVideo', onUserSetGalleryLayoutChange, userSetOverflowGalleryPosition = 'Responsive', onSetUserSetOverflowGalleryPosition, onCloseChatPane, pinnedParticipants, setPinnedParticipants, compositeAudioContext } = props;
32324
32779
  // To use useProps to get these states, we need to create another file wrapping Call,
32325
32780
  // It seems unnecessary in this case, so we get the updated states using this approach.
32326
32781
  const { callStatus } = useSelector$1(callStatusSelector);
@@ -32347,7 +32802,7 @@ const CallPage = (props) => {
32347
32802
  if (dtmfDialerPresent) {
32348
32803
  return (React.createElement(DtmfDialpadPage, { mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, options: props.options, updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, latestErrors: props.latestErrors, onDismissError: props.onDismissError,
32349
32804
  /* @conditional-compile-remove(capabilities) */
32350
- capabilitiesChangedNotificationBarProps: props.capabilitiesChangedNotificationBarProps, onSetDialpadPage: () => setDtmfDialerPresent(!dtmfDialerPresent), dtmfDialerPresent: dtmfDialerPresent }));
32805
+ capabilitiesChangedNotificationBarProps: props.capabilitiesChangedNotificationBarProps, onSetDialpadPage: () => setDtmfDialerPresent(!dtmfDialerPresent), dtmfDialerPresent: dtmfDialerPresent, compositeAudioContext: compositeAudioContext }));
32351
32806
  }
32352
32807
  else {
32353
32808
  return (React.createElement(MediaGallery, Object.assign({ isMobile: mobileView }, mediaGalleryProps, mediaGalleryHandlers, { onFetchAvatarPersonaData: onFetchAvatarPersonaData, remoteVideoTileMenuOptions: options === null || options === void 0 ? void 0 : options.remoteVideoTileMenuOptions, drawerMenuHostId: drawerMenuHostId, localVideoTileOptions: options === null || options === void 0 ? void 0 : options.localVideoTile, userSetOverflowGalleryPosition: userSetOverflowGalleryPosition, userSetGalleryLayout: galleryLayout, pinnedParticipants: pinnedParticipants, setPinnedParticipants: setPinnedParticipants,
@@ -34676,6 +35131,7 @@ const MainScreen = (props) => {
34676
35131
  adapter.off('callEnded', closeSidePane);
34677
35132
  };
34678
35133
  }, [adapter]);
35134
+ const compositeAudioContext = React.useRef(new AudioContext());
34679
35135
  /* @conditional-compile-remove(capabilities) */
34680
35136
  const capabilitiesChangedInfoAndRole = useSelector$1(capabilitiesChangedInfoAndRoleSelector);
34681
35137
  /* @conditional-compile-remove(capabilities) */
@@ -34765,7 +35221,7 @@ const MainScreen = (props) => {
34765
35221
  case 'call':
34766
35222
  pageElement = (React.createElement(CallPage, { callInvitationURL: callInvitationUrl, onFetchAvatarPersonaData: onFetchAvatarPersonaData, onFetchParticipantMenuItems: onFetchParticipantMenuItems, mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, options: props.options, updateSidePaneRenderer: setSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, onCloseChatPane: props.onCloseChatPane, latestErrors: latestErrors, onDismissError: onDismissError, galleryLayout: userSetGalleryLayout, onUserSetGalleryLayoutChange: setUserSetGalleryLayout, onSetUserSetOverflowGalleryPosition: setUserSetOverflowGalleryPosition, userSetOverflowGalleryPosition: userSetOverflowGalleryPosition,
34767
35223
  /* @conditional-compile-remove(capabilities) */
34768
- capabilitiesChangedNotificationBarProps: capabilitiesChangedNotificationBarProps, pinnedParticipants: pinnedParticipants, setPinnedParticipants: setPinnedParticipants }));
35224
+ capabilitiesChangedNotificationBarProps: capabilitiesChangedNotificationBarProps, pinnedParticipants: pinnedParticipants, setPinnedParticipants: setPinnedParticipants, compositeAudioContext: compositeAudioContext.current }));
34769
35225
  break;
34770
35226
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
34771
35227
  case 'hold':
@@ -35261,7 +35717,9 @@ class AzureCommunicationCallAdapter {
35261
35717
  ? locatorOrTargetCalless
35262
35718
  : undefined;
35263
35719
  this.deviceManager = deviceManager;
35264
- const isTeamsMeeting = this.locator ? 'meetingLink' in this.locator : false;
35720
+ const isTeamsMeeting = this.locator
35721
+ ? 'meetingLink' in this.locator || /* @conditional-compile-remove(meeting-id) */ 'meetingId' in this.locator
35722
+ : false;
35265
35723
  const isRoomsCall = this.locator ? 'roomId' in this.locator : false;
35266
35724
  this.onResolveVideoBackgroundEffectsDependency = (_a = options === null || options === void 0 ? void 0 : options.videoBackgroundOptions) === null || _a === void 0 ? void 0 : _a.onResolveDependency;
35267
35725
  this.context = new CallContext(callClient.getState(), isTeamsMeeting, isRoomsCall, options, this.targetCallees);
@@ -35492,18 +35950,34 @@ class AzureCommunicationCallAdapter {
35492
35950
  }
35493
35951
  _joinCall(audioOptions, videoOptions) {
35494
35952
  const isTeamsMeeting = this.locator ? 'meetingLink' in this.locator : false;
35953
+ /* @conditional-compile-remove(meeting-id) */
35954
+ const isTeamsMeetingId = this.locator ? 'meetingId' in this.locator : false;
35495
35955
  const isRoomsCall = this.locator ? 'roomId' in this.locator : false;
35496
35956
  /* @conditional-compile-remove(teams-identity-support) */
35497
35957
  if (_isTeamsCallAgent(this.callAgent)) {
35498
- if (!isTeamsMeeting) {
35499
- throw new Error('Locator not supported by TeamsCallAgent');
35958
+ if (isTeamsMeeting) {
35959
+ return this.callAgent.join(this.locator, {
35960
+ audioOptions,
35961
+ videoOptions
35962
+ });
35500
35963
  }
35964
+ /* @conditional-compile-remove(meeting-id) */
35965
+ if (isTeamsMeetingId) {
35966
+ return this.callAgent.join(this.locator, {
35967
+ audioOptions,
35968
+ videoOptions
35969
+ });
35970
+ }
35971
+ throw new Error('Locator not supported by TeamsCallAgent');
35972
+ }
35973
+ if (isTeamsMeeting) {
35501
35974
  return this.callAgent.join(this.locator, {
35502
35975
  audioOptions,
35503
35976
  videoOptions
35504
35977
  });
35505
35978
  }
35506
- if (isTeamsMeeting) {
35979
+ /* @conditional-compile-remove(meeting-id) */
35980
+ if (isTeamsMeetingId) {
35507
35981
  return this.callAgent.join(this.locator, {
35508
35982
  audioOptions,
35509
35983
  videoOptions
@@ -37200,12 +37674,11 @@ const isOnHoldTrampoline = (page) => {
37200
37674
  /**
37201
37675
  * @private
37202
37676
  */
37203
- function callWithChatAdapterStateFromBackingStates(callAdapter, chatAdapter) {
37677
+ function callWithChatAdapterStateFromBackingStates(callAdapter) {
37204
37678
  const callAdapterState = callAdapter.getState();
37205
- const chatAdapterState = chatAdapter.getState();
37206
37679
  return {
37207
37680
  call: callAdapterState.call,
37208
- chat: chatAdapterState.thread,
37681
+ chat: undefined,
37209
37682
  userId: callAdapterState.userId,
37210
37683
  page: callAdapterState.page,
37211
37684
  displayName: callAdapterState.displayName,
@@ -37213,9 +37686,9 @@ function callWithChatAdapterStateFromBackingStates(callAdapter, chatAdapter) {
37213
37686
  isLocalPreviewMicrophoneEnabled: callAdapterState.isLocalPreviewMicrophoneEnabled,
37214
37687
  isTeamsCall: callAdapterState.isTeamsCall,
37215
37688
  latestCallErrors: callAdapterState.latestErrors,
37216
- latestChatErrors: chatAdapterState.latestErrors,
37689
+ latestChatErrors: {},
37217
37690
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37218
- fileUploads: chatAdapterState.fileUploads,
37691
+ fileUploads: {},
37219
37692
  /* @conditional-compile-remove(PSTN-calls) */
37220
37693
  alternateCallerId: callAdapterState.alternateCallerId,
37221
37694
  /* @conditional-compile-remove(unsupported-browser) */
@@ -37315,44 +37788,61 @@ class CallWithChatContext {
37315
37788
  * Created for easy use with the {@link CallWithChatComposite}.
37316
37789
  */
37317
37790
  class AzureCommunicationCallWithChatAdapter {
37318
- constructor(callAdapter, chatAdapter) {
37791
+ constructor(callAdapter, chatAdapterPromise) {
37319
37792
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37320
37793
  this.registerActiveFileUploads = (files) => {
37321
- return this.chatAdapter.registerActiveFileUploads(files);
37794
+ var _a, _b;
37795
+ return (_b = (_a = this.chatAdapter) === null || _a === void 0 ? void 0 : _a.registerActiveFileUploads(files)) !== null && _b !== void 0 ? _b : [];
37322
37796
  };
37323
37797
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37324
37798
  this.registerCompletedFileUploads = (metadata) => {
37325
- return this.chatAdapter.registerCompletedFileUploads(metadata);
37799
+ var _a, _b;
37800
+ return (_b = (_a = this.chatAdapter) === null || _a === void 0 ? void 0 : _a.registerCompletedFileUploads(metadata)) !== null && _b !== void 0 ? _b : [];
37326
37801
  };
37327
37802
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37328
37803
  this.clearFileUploads = () => {
37329
- this.chatAdapter.clearFileUploads();
37804
+ this.chatAdapterPromise.then((adapter) => {
37805
+ adapter.clearFileUploads();
37806
+ });
37330
37807
  };
37331
37808
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37332
37809
  this.cancelFileUpload = (id) => {
37333
- this.chatAdapter.cancelFileUpload(id);
37810
+ this.chatAdapterPromise.then((adapter) => {
37811
+ adapter.cancelFileUpload(id);
37812
+ });
37334
37813
  };
37335
37814
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37336
37815
  this.updateFileUploadProgress = (id, progress) => {
37337
- this.chatAdapter.updateFileUploadProgress(id, progress);
37816
+ this.chatAdapterPromise.then((adapter) => {
37817
+ adapter.updateFileUploadProgress(id, progress);
37818
+ });
37338
37819
  };
37339
37820
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37340
37821
  this.updateFileUploadErrorMessage = (id, errorMessage) => {
37341
- this.chatAdapter.updateFileUploadErrorMessage(id, errorMessage);
37822
+ this.chatAdapterPromise.then((adapter) => {
37823
+ adapter.updateFileUploadErrorMessage(id, errorMessage);
37824
+ });
37342
37825
  };
37343
37826
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37344
37827
  this.updateFileUploadMetadata = (id, metadata) => {
37345
- this.chatAdapter.updateFileUploadMetadata(id, metadata);
37828
+ this.chatAdapterPromise.then((adapter) => {
37829
+ adapter.updateFileUploadMetadata(id, metadata);
37830
+ });
37346
37831
  };
37347
37832
  this.bindPublicMethods();
37348
37833
  this.callAdapter = callAdapter;
37349
- this.chatAdapter = chatAdapter;
37350
- this.context = new CallWithChatContext(callWithChatAdapterStateFromBackingStates(callAdapter, chatAdapter));
37834
+ this.context = new CallWithChatContext(callWithChatAdapterStateFromBackingStates(callAdapter));
37351
37835
  const onChatStateChange = (newChatAdapterState) => {
37352
37836
  this.context.updateClientStateWithChatState(newChatAdapterState);
37353
37837
  };
37354
- this.chatAdapter.onStateChange(onChatStateChange);
37355
37838
  this.onChatStateChange = onChatStateChange;
37839
+ this.chatAdapterPromise = chatAdapterPromise;
37840
+ this.chatAdapterPromise.then((chatAdapter) => {
37841
+ chatAdapter.onStateChange(this.onChatStateChange);
37842
+ /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37843
+ this.chatAdapter = chatAdapter;
37844
+ this.context.updateClientStateWithChatState(chatAdapter.getState());
37845
+ });
37356
37846
  const onCallStateChange = (newCallAdapterState) => {
37357
37847
  this.context.updateClientStateWithCallState(newCallAdapterState);
37358
37848
  };
@@ -37480,10 +37970,16 @@ class AzureCommunicationCallWithChatAdapter {
37480
37970
  }
37481
37971
  /** Dispose of the current CallWithChatAdapter. */
37482
37972
  dispose() {
37483
- this.chatAdapter.offStateChange(this.onChatStateChange);
37484
- this.callAdapter.offStateChange(this.onCallStateChange);
37485
- this.chatAdapter.dispose();
37486
- this.callAdapter.dispose();
37973
+ return __awaiter$2(this, void 0, void 0, function* () {
37974
+ this.chatAdapterPromise.then((adapter) => {
37975
+ adapter.offStateChange(this.onChatStateChange);
37976
+ });
37977
+ this.callAdapter.offStateChange(this.onCallStateChange);
37978
+ yield this.chatAdapterPromise.then((adapter) => {
37979
+ adapter.dispose();
37980
+ });
37981
+ this.callAdapter.dispose();
37982
+ });
37487
37983
  }
37488
37984
  /** Remove a participant from the Call only. */
37489
37985
  removeParticipant(userId) {
@@ -37621,53 +38117,71 @@ class AzureCommunicationCallWithChatAdapter {
37621
38117
  /** Fetch initial Call and Chat data such as chat messages. */
37622
38118
  fetchInitialData() {
37623
38119
  return __awaiter$2(this, void 0, void 0, function* () {
37624
- yield this.chatAdapter.fetchInitialData();
38120
+ return yield this.chatAdapterPromise.then((adapter) => {
38121
+ return adapter.fetchInitialData();
38122
+ });
37625
38123
  });
37626
38124
  }
37627
38125
  /** Send a chat message. */
37628
38126
  sendMessage(content) {
37629
38127
  return __awaiter$2(this, void 0, void 0, function* () {
37630
- yield this.chatAdapter.sendMessage(content);
38128
+ return yield this.chatAdapterPromise.then((adapter) => {
38129
+ return adapter.sendMessage(content);
38130
+ });
37631
38131
  });
37632
38132
  }
37633
38133
  /** Send a chat read receipt. */
37634
38134
  sendReadReceipt(chatMessageId) {
37635
38135
  return __awaiter$2(this, void 0, void 0, function* () {
37636
- yield this.chatAdapter.sendReadReceipt(chatMessageId);
38136
+ return yield this.chatAdapterPromise.then((adapter) => {
38137
+ return adapter.sendReadReceipt(chatMessageId);
38138
+ });
37637
38139
  });
37638
38140
  }
37639
38141
  /** Send an isTyping indicator. */
37640
38142
  sendTypingIndicator() {
37641
38143
  return __awaiter$2(this, void 0, void 0, function* () {
37642
- yield this.chatAdapter.sendTypingIndicator();
38144
+ return yield this.chatAdapterPromise.then((adapter) => {
38145
+ return adapter.sendTypingIndicator();
38146
+ });
37643
38147
  });
37644
38148
  }
37645
38149
  /** Load previous Chat messages. */
37646
38150
  loadPreviousChatMessages(messagesToLoad) {
37647
38151
  return __awaiter$2(this, void 0, void 0, function* () {
37648
- return yield this.chatAdapter.loadPreviousChatMessages(messagesToLoad);
38152
+ return yield this.chatAdapterPromise.then((adapter) => {
38153
+ return adapter.loadPreviousChatMessages(messagesToLoad);
38154
+ });
37649
38155
  });
37650
38156
  }
37651
38157
  /** Update an existing message. */
37652
38158
  updateMessage(messageId, content, metadata, options) {
37653
38159
  return __awaiter$2(this, void 0, void 0, function* () {
37654
- return yield this.chatAdapter.updateMessage(messageId, content, metadata,
37655
- /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ options);
38160
+ return this.chatAdapterPromise.then((adapter) => {
38161
+ return adapter.updateMessage(messageId, content, metadata,
38162
+ /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ options);
38163
+ });
37656
38164
  });
37657
38165
  }
37658
38166
  /** Delete an existing message. */
37659
38167
  deleteMessage(messageId) {
37660
38168
  return __awaiter$2(this, void 0, void 0, function* () {
37661
- return yield this.chatAdapter.deleteMessage(messageId);
38169
+ return yield this.chatAdapterPromise.then((adapter) => {
38170
+ return adapter.deleteMessage(messageId);
38171
+ });
37662
38172
  });
37663
38173
  }
37664
38174
  downloadResourceToCache(resourceDetails) {
37665
38175
  return __awaiter$2(this, void 0, void 0, function* () {
37666
- this.chatAdapter.downloadResourceToCache(resourceDetails);
38176
+ this.chatAdapterPromise.then((adapter) => {
38177
+ adapter.downloadResourceToCache(resourceDetails);
38178
+ });
37667
38179
  });
37668
38180
  }
37669
38181
  removeResourceFromCache(resourceDetails) {
37670
- this.chatAdapter.removeResourceFromCache(resourceDetails);
38182
+ this.chatAdapterPromise.then((adapter) => {
38183
+ adapter.removeResourceFromCache(resourceDetails);
38184
+ });
37671
38185
  }
37672
38186
  /* @conditional-compile-remove(PSTN-calls) */
37673
38187
  holdCall() {
@@ -37815,31 +38329,47 @@ class AzureCommunicationCallWithChatAdapter {
37815
38329
  this.callAdapter.on('isSpokenLanguageChanged', listener);
37816
38330
  break;
37817
38331
  case 'messageReceived':
37818
- this.chatAdapter.on('messageReceived', listener);
38332
+ this.chatAdapterPromise.then((adapter) => {
38333
+ adapter.on('messageReceived', listener);
38334
+ });
37819
38335
  break;
37820
38336
  case 'messageEdited':
37821
- this.chatAdapter.on('messageEdited', listener);
38337
+ this.chatAdapterPromise.then((adapter) => {
38338
+ adapter.on('messageEdited', listener);
38339
+ });
37822
38340
  break;
37823
38341
  case 'messageDeleted':
37824
- this.chatAdapter.on('messageDeleted', listener);
38342
+ this.chatAdapterPromise.then((adapter) => {
38343
+ adapter.on('messageDeleted', listener);
38344
+ });
37825
38345
  break;
37826
38346
  case 'messageSent':
37827
- this.chatAdapter.on('messageSent', listener);
38347
+ this.chatAdapterPromise.then((adapter) => {
38348
+ adapter.on('messageSent', listener);
38349
+ });
37828
38350
  break;
37829
38351
  case 'messageRead':
37830
- this.chatAdapter.on('messageRead', listener);
38352
+ this.chatAdapterPromise.then((adapter) => {
38353
+ adapter.on('messageRead', listener);
38354
+ });
37831
38355
  break;
37832
38356
  case 'chatParticipantsAdded':
37833
- this.chatAdapter.on('participantsAdded', listener);
38357
+ this.chatAdapterPromise.then((adapter) => {
38358
+ adapter.on('participantsAdded', listener);
38359
+ });
37834
38360
  break;
37835
38361
  case 'chatParticipantsRemoved':
37836
- this.chatAdapter.on('participantsRemoved', listener);
38362
+ this.chatAdapterPromise.then((adapter) => {
38363
+ adapter.on('participantsRemoved', listener);
38364
+ });
37837
38365
  break;
37838
38366
  case 'callError':
37839
38367
  this.callAdapter.on('error', listener);
37840
38368
  break;
37841
38369
  case 'chatError':
37842
- this.chatAdapter.on('error', listener);
38370
+ this.chatAdapterPromise.then((adapter) => {
38371
+ adapter.on('error', listener);
38372
+ });
37843
38373
  break;
37844
38374
  default:
37845
38375
  throw `Unknown AzureCommunicationCallWithChatAdapter Event: ${event}`;
@@ -37895,37 +38425,113 @@ class AzureCommunicationCallWithChatAdapter {
37895
38425
  this.callAdapter.off('isSpokenLanguageChanged', listener);
37896
38426
  break;
37897
38427
  case 'messageReceived':
37898
- this.chatAdapter.off('messageReceived', listener);
38428
+ this.chatAdapterPromise.then((adapter) => {
38429
+ adapter.off('messageReceived', listener);
38430
+ });
37899
38431
  break;
37900
38432
  case 'messageEdited':
37901
- this.chatAdapter.off('messageEdited', listener);
38433
+ this.chatAdapterPromise.then((adapter) => {
38434
+ adapter.off('messageEdited', listener);
38435
+ });
37902
38436
  break;
37903
38437
  case 'messageDeleted':
37904
- this.chatAdapter.off('messageDeleted', listener);
38438
+ this.chatAdapterPromise.then((adapter) => {
38439
+ adapter.off('messageDeleted', listener);
38440
+ });
37905
38441
  break;
37906
38442
  case 'messageSent':
37907
- this.chatAdapter.off('messageSent', listener);
38443
+ this.chatAdapterPromise.then((adapter) => {
38444
+ adapter.off('messageSent', listener);
38445
+ });
37908
38446
  break;
37909
38447
  case 'messageRead':
37910
- this.chatAdapter.off('messageRead', listener);
38448
+ this.chatAdapterPromise.then((adapter) => {
38449
+ adapter.off('messageRead', listener);
38450
+ });
37911
38451
  break;
37912
38452
  case 'chatParticipantsAdded':
37913
- this.chatAdapter.off('participantsAdded', listener);
38453
+ this.chatAdapterPromise.then((adapter) => {
38454
+ adapter.off('participantsAdded', listener);
38455
+ });
37914
38456
  break;
37915
38457
  case 'chatParticipantsRemoved':
37916
- this.chatAdapter.off('participantsRemoved', listener);
38458
+ this.chatAdapterPromise.then((adapter) => {
38459
+ adapter.off('participantsRemoved', listener);
38460
+ });
37917
38461
  break;
37918
38462
  case 'callError':
37919
38463
  this.callAdapter.off('error', listener);
37920
38464
  break;
37921
38465
  case 'chatError':
37922
- this.chatAdapter.off('error', listener);
38466
+ this.chatAdapterPromise.then((adapter) => {
38467
+ adapter.off('error', listener);
38468
+ });
37923
38469
  break;
37924
38470
  default:
37925
38471
  throw `Unknown AzureCommunicationCallWithChatAdapter Event: ${event}`;
37926
38472
  }
37927
38473
  }
37928
38474
  }
38475
+ /**
38476
+ * Arguments for use in {@link createAzureCommunicationCallWithChatAdapter} to join a Group Call with an associated Chat thread.
38477
+ * @public
38478
+ */
38479
+ class CallAndChatProvider {
38480
+ constructor(locator) {
38481
+ this.locator = locator;
38482
+ }
38483
+ getChatThread() {
38484
+ return __awaiter$2(this, void 0, void 0, function* () {
38485
+ return this.locator.chatThreadId;
38486
+ });
38487
+ }
38488
+ }
38489
+ /**
38490
+ * Arguments for use in {@link createAzureCommunicationCallWithChatAdapter} to join a Teams meeting with an associated Chat thread.
38491
+ *
38492
+ * @public
38493
+ */
38494
+ class TeamsMeetingLinkProvider {
38495
+ constructor(locator) {
38496
+ this.locator = locator;
38497
+ }
38498
+ getChatThread() {
38499
+ return __awaiter$2(this, void 0, void 0, function* () {
38500
+ return getChatThreadFromTeamsLink(this.locator.meetingLink);
38501
+ });
38502
+ }
38503
+ }
38504
+ /** @conditional-compile-remove(meeting-id) */
38505
+ /**
38506
+ * Arguments for use in {@link createAzureCommunicationCallWithChatAdapter} to join a Teams meeting using meeting id.
38507
+ *
38508
+ * @public
38509
+ */
38510
+ class TeamsMeetingIdProvider {
38511
+ constructor(locator, callAdapter) {
38512
+ this.locator = locator;
38513
+ this.callAdapter = callAdapter;
38514
+ }
38515
+ /**
38516
+ * Wait call to be connected to get thread ID.
38517
+ * @returns the chat thread ID for the given meeting ID.
38518
+ */
38519
+ getChatThread() {
38520
+ return __awaiter$2(this, void 0, void 0, function* () {
38521
+ return new Promise((resolve) => {
38522
+ const stateChangeListener = (state) => {
38523
+ var _a, _b, _c;
38524
+ if (((_a = state.call) === null || _a === void 0 ? void 0 : _a.state) === 'Connected' && ((_b = state.call.info) === null || _b === void 0 ? void 0 : _b.threadId)) {
38525
+ resolve((_c = state.call.info) === null || _c === void 0 ? void 0 : _c.threadId);
38526
+ }
38527
+ };
38528
+ this.callAdapter.then((adapter) => {
38529
+ adapter.onStateChange(stateChangeListener);
38530
+ });
38531
+ });
38532
+ });
38533
+ }
38534
+ }
37929
38535
  /**
37930
38536
  * Create a CallWithChatAdapter backed by Azure Communication services
37931
38537
  * to plug into the {@link CallWithChatComposite}.
@@ -37934,8 +38540,8 @@ class AzureCommunicationCallWithChatAdapter {
37934
38540
  */
37935
38541
  const createAzureCommunicationCallWithChatAdapter = (_a) => __awaiter$2(void 0, [_a], void 0, function* ({ userId, displayName, credential, endpoint, locator,
37936
38542
  /* @conditional-compile-remove(PSTN-calls) */ alternateCallerId, callAdapterOptions }) {
37937
- const callAdapterLocator = isTeamsMeetingLinkLocator(locator) ? locator : locator.callLocator;
37938
- const createCallAdapterPromise = _createAzureCommunicationCallAdapterInner({
38543
+ const callAdapterLocator = isTeamsMeetingLocator(locator) ? locator : locator.callLocator;
38544
+ const callAdapter = _createAzureCommunicationCallAdapterInner({
37939
38545
  userId,
37940
38546
  displayName,
37941
38547
  credential,
@@ -37944,12 +38550,9 @@ const createAzureCommunicationCallWithChatAdapter = (_a) => __awaiter$2(void 0,
37944
38550
  options: callAdapterOptions,
37945
38551
  telemetryImplementationHint: 'CallWithChat'
37946
38552
  });
37947
- const threadId = isTeamsMeetingLinkLocator(locator)
37948
- ? getChatThreadFromTeamsLink(locator.meetingLink)
37949
- : locator.chatThreadId;
37950
- const createChatAdapterPromise = _createAzureCommunicationChatAdapterInner(endpoint, userId, displayName, credential, threadId, 'CallWithChat');
37951
- const [callAdapter, chatAdapter] = yield Promise.all([createCallAdapterPromise, createChatAdapterPromise]);
37952
- return new AzureCommunicationCallWithChatAdapter(callAdapter, chatAdapter);
38553
+ const chatThreadAdapter = _createChatThreadAdapterInner(locator, callAdapter);
38554
+ const chatAdapter = _createLazyAzureCommunicationChatAdapterInner(endpoint, userId, displayName, credential, chatThreadAdapter.getChatThread(), 'CallWithChat');
38555
+ return new AzureCommunicationCallWithChatAdapter(yield callAdapter, chatAdapter);
37953
38556
  });
37954
38557
  /**
37955
38558
  * A custom React hook to simplify the creation of {@link CallWithChatAdapter}.
@@ -38077,13 +38680,22 @@ beforeDispose) => {
38077
38680
  * @public
38078
38681
  */
38079
38682
  const createAzureCommunicationCallWithChatAdapterFromClients = (_b) => __awaiter$2(void 0, [_b], void 0, function* ({ callClient, callAgent, callLocator, chatClient, chatThreadClient, callAdapterOptions }) {
38080
- const createCallAdapterPromise = createAzureCommunicationCallAdapterFromClient(callClient, callAgent, callLocator, callAdapterOptions);
38081
- const createChatAdapterPromise = createAzureCommunicationChatAdapterFromClient(chatClient, chatThreadClient);
38082
- const [callAdapter, chatAdapter] = yield Promise.all([createCallAdapterPromise, createChatAdapterPromise]);
38083
- return new AzureCommunicationCallWithChatAdapter(callAdapter, chatAdapter);
38683
+ const callAdapter = yield createAzureCommunicationCallAdapterFromClient(callClient, callAgent, callLocator, callAdapterOptions);
38684
+ const chatAdapterPromise = createAzureCommunicationChatAdapterFromClient(chatClient, chatThreadClient);
38685
+ return new AzureCommunicationCallWithChatAdapter(callAdapter, chatAdapterPromise);
38084
38686
  });
38085
- const isTeamsMeetingLinkLocator = (locator) => {
38086
- return 'meetingLink' in locator;
38687
+ const isTeamsMeetingLocator = (locator) => {
38688
+ return 'meetingLink' in locator || 'meetingId' in locator;
38689
+ };
38690
+ const _createChatThreadAdapterInner = (locator, adapter) => {
38691
+ if ('meetingLink' in locator) {
38692
+ return new TeamsMeetingLinkProvider(locator);
38693
+ }
38694
+ /** @conditional-compile-remove(meeting-id) */
38695
+ if ('meetingId' in locator) {
38696
+ return new TeamsMeetingIdProvider(locator, adapter);
38697
+ }
38698
+ return new CallAndChatProvider(locator);
38087
38699
  };
38088
38700
 
38089
38701
  var call$j={cameraLabel:"Camera",noCamerasLabel:"No cameras found",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",chatButtonLabel:"Chat",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",defaultPlaceHolder:"Select an option",dismissSidePaneButtonLabel:"Close",videoEffectsPaneTitle:"Effects",videoEffectsPaneBackgroundSelectionTitle:"Background",configurationPageVideoEffectsButtonLabel:"Effects",unableToStartVideoEffect:"Unable to apply video effect.",blurBackgroundEffectButtonLabel:"Blur",blurBackgroundTooltip:"Blur Background",removeBackgroundEffectButtonLabel:"None",removeBackgroundTooltip:"Remove Background",cameraOffBackgroundEffectWarningText:"Your camera is off. Turn on camera to see video effect.",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leavingCallTitle:"Leaving...",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby.",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",notInvitedToRoomDetails:"You are not able to join this room because you do not have an invite.",notInvitedToRoomTitle:"Not invited to room",peopleButtonLabel:"People",selectedPeopleButtonLabel:"People Button Selected",peoplePaneTitle:"People",peoplePaneMoreButtonAriaLabel:"More",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call {numberOfPeople}",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",removeMenuLabel:"Remove",startSpotlightMenuLabel:"Spotlight for everyone",addSpotlightMenuLabel:"Add spotlight",stopSpotlightMenuLabel:"Stop spotlighting",stopSpotlightOnSelfMenuLabel:"Exit spotlight",spotlightLimitReachedMenuTitle:"Spotlight limit reached",stopAllSpotlightMenuLabel:"Stop all spotlights",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",roomNotFoundDetails:"The room ID provided could not be found.",roomNotFoundTitle:"Room not found",roomNotValidDetails:"This room is not valid at this current time.",roomNotValidTitle:"Room not valid",inviteToRoomRemovedDetails:"Your invite to join this room was removed.",inviteToRoomRemovedTitle:"Invite to room removed",soundLabel:"Sound",noMicrophonesLabel:"No microphones found",noSpeakersLabel:"No speakers found",startCallButtonLabel:"Start call",openDialpadButtonLabel:"Dial phone number",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",moreButtonCallingLabel:"More",resumeCallButtonLabel:"Resume",resumingCallButtonLabel:"Resuming...",resumeCallButtonAriaLabel:"Resume call",resumingCallButtonAriaLabel:"Resume call",holdScreenLabel:"You're on hold",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number",outboundCallingNoticeString:"Calling...",participantJoinedNoticeString:"{displayName} joined",twoParticipantJoinedNoticeString:"{displayName1} and {displayName2} have joined",threeParticipantJoinedNoticeString:"{displayName1}, {displayName2} and {displayName3} have joined",participantLeftNoticeString:"{displayName} left",twoParticipantLeftNoticeString:"{displayName1} and {displayName2} have left",threeParticipantLeftNoticeString:"{displayName1}, {displayName2} and {displayName3} have left",unnamedParticipantString:"unnamed participant",manyUnnamedParticipantsJoined:"unnamed participant and {numOfParticipants} other participants joined",manyUnnamedParticipantsLeft:"unnamed participant and {numOfParticipants} other participants left",manyParticipantsJoined:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants joined",manyParticipantsLeft:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants left",liveCaptionsLabel:"Live captions",captionsSettingsLabel:"Caption settings",startCaptionsButtonOnLabel:"Turn on captions",startCaptionsButtonOffLabel:"Turn off captions",startCaptionsButtonTooltipOnContent:"Turn off captions",startCaptionsButtonTooltipOffContent:"Turn on captions",captionsSettingsModalTitle:"Captions Settings",captionsSettingsSpokenLanguageDropdownLabel:"Spoken language",captionsSettingsCaptionLanguageDropdownLabel:"Captions language",captionsSettingsSpokenLanguageDropdownInfoText:"Language that everyone on this call is speaking.",captionsSettingsCaptionLanguageDropdownInfoText:"Captions will appear in this langugage.",captionsSettingsConfirmButtonLabel:"Confirm",captionsSettingsCancelButtonLabel:"Cancel",captionsSettingsModalAriaLabel:"Captions Setting Modal",captionsSettingsCloseModalButtonAriaLabel:"Close Captions Setting",captionsBannerMoreButtonCallingLabel:"More",captionsBannerMoreButtonTooltip:"More options",dismissModalAriaLabel:"Local and remote picture and picture, press enter to return to call",callRejectedTitle:"The call could not be completed",callRejectedMoreDetails:"The person you are trying to reach is unavailable. Please try again later.",callTimeoutTitle:"The call could not be completed",callTimeoutDetails:"The person you are trying to reach is unavailable. Please try again later.",callTimeoutBotTitle:"The call could not be completed",callTimeoutBotDetails:"The service that you are trying to reach is unavailable. Please try again later.",dtmfDialerButtonLabel:"Dialpad",dtmfDialerButtonTooltipOn:"Show dialpad",dtmfDialerButtonTooltipOff:"Hide dialpad",dtmfDialerMoreButtonLabelOn:"Show dialpad",dtmfDialerMoreButtonLabelOff:"Hide dialpad",spokenLanguageStrings:{"ar-ae":"Arabic - U.A.E.","ar-sa":"Arabic - Saudi Arabia","da-dk":"Danish","de-de":"German - Germany","en-au":"English - Australia","en-ca":"English - Canada","en-gb":"English - United Kingdom","en-in":"English - India","en-nz":"English - New Zealand","en-us":"English - United States","es-es":"Spanish - Spain (Modern Sort)","es-mx":"Spanish - Mexico","fi-fi":"Finnish","fr-ca":"French - Canada","fr-fr":"French - France","hi-in":"Hindi","it-it":"Italian - Italy","ja-jp":"Japanese","ko-kr":"Korean","nb-no":"Norwegian (Bokmål)","nl-be":"Dutch - Belgium","nl-nl":"Dutch - Netherlands","pl-pl":"Polish","pt-br":"Portuguese - Brazil","ru-ru":"Russian","sv-se":"Swedish","zh-cn":"Chinese - People's Republic of China","zh-hk":"Chinese - Hong Kong SAR","cs-cz":"Czech","pt-pt":"Portuguese - Portugal","tr-tr":"Turkish","vi-vn":"Vietnamese","th-th":"Thai","he-il":"Hebrew","cy-gb":"Welsh","uk-ua":"Ukrainian","el-gr":"Greek","hu-hu":"Hungarian","ro-ro":"Romanian","sk-sk":"Slovak","zh-tw":"Chinese - Taiwan"},captionLanguageStrings:{ar:"Arabic",da:"Danish",de:"German",en:"English",es:"Spanish",fi:"Finnish","fr-ca":"French - Canada",fr:"French - France",hi:"Hindi",it:"Italian",ja:"Japanese",ko:"Korean",nb:"Norwegian (Bokmål)",nl:"Dutch",pl:"Polish",pt:"Portuguese - Brazil",ru:"Russian",sv:"Swedish","zh-Hans":"Chinese (Simplified)","zh-Hant":"Chinese (Traditional)",cs:"Czech","pt-pt":"Portuguese - Portugal",tr:"Turkish",vi:"Vietnamese",th:"Thai",he:"Hebrew",cy:"Welsh",uk:"Ukrainian",el:"Greek",hu:"Hungarian",ro:"Romanian",sk:"Slovak"},captionsBannerSpinnerText:"Starting captions...",transferPageTransferorText:"Transferring...",transferPageTransferTargetText:"Connecting...",transferPageUnknownTransferorDisplayName:"Unknown",transferPageUnknownTransferTargetDisplayName:"Unknown",transferPageNoticeString:"You are being transferred",participantCouldNotBeReachedTitle:"Target participant is currently not available",participantCouldNotBeReachedMoreDetails:"Please contact participant when they are available",permissionToReachTargetParticipantNotAllowedTitle:"Permission to reach target participant is not allowed",permissionToReachTargetParticipantNotAllowedMoreDetails:"Please check that the target participant is in the same tenant",unableToResolveTenantTitle:"Unable to resolve tenant id for the target participant",unableToResolveTenantMoreDetails:"Please check the participant id is entered correctly",participantIdIsMalformedTitle:"Participant id is not in the correct format",participantIdIsMalformedMoreDetails:"Please check that the participant id is in the correct format",moreButtonGalleryControlLabel:"View",moreButtonGalleryPositionToggleLabel:"Move gallery to top",moreButtonGallerySpeakerLayoutLabel:"Speaker",moreButtonGalleryFloatingLocalLayoutLabel:"Dynamic",moreButtonGalleryDefaultLayoutLabel:"Gallery view",moreButtonGalleryFocusedContentLayoutLabel:"Focus on content",moreButtonLargeGalleryDefaultLayoutLabel:"Large Gallery",capabilityChangedNotification:{turnVideoOn:{lostDueToMeetingOption:"Your camera has been disabled. You can no longer share video.",grantedDueToMeetingOption:"Your camera has been enabled. Turn it on if you'd like to share video."},unmuteMic:{lostDueToMeetingOption:"Your mic has been disabled. You can no longer unmute.",grantedDueToMeetingOption:"Your mic has been enabled. Unmute if you'd like to speak."},shareScreen:{lostDueToRoleChangeToAttendee:"Your role has been changed. Some actions, like sharing content, won't be available to you.",grantedDueToRoleChangeToPresenter:"You're a presenter. You can share content and facilitate the meeting."}},surveyTitle:"Help us improve",starSurveyHelperText:"How was the quality of the call?",starSurveyOneStarText:"The quality was bad.",starSurveyTwoStarText:"The quality was poor.",starSurveyThreeStarText:"The quality was good.",starSurveyFourStarText:"The quality was great.",starSurveyFiveStarText:"The quality was excellent.",surveyConfirmButtonLabel:"Send Feedback",starRatingAriaLabel:"Select {0} of {1} stars",surveySkipButtonLabel:"Skip",tagsSurveyQuestion:"What could have been better?",tagsSurveyTextFieldDefaultText:"Other, please specify",tagsSurveyHelperText:"Check any issues you experienced",surveyTextboxDefaultText:"Other, please specify",endOfSurveyText:"Thank you for your feedback!",surveyIssues:{overallRating:{callCannotJoin:"I could not join call",callCannotInvite:"I could not invite others into the call",hadToRejoin:"I had to rejoin the call",callEndedUnexpectedly:"Call ended for me unexpectedly",otherIssues:"I was having other issues with the call"},audioRating:{noLocalAudio:"The other side could not hear any sound",noRemoteAudio:"I could not hear any sound",echo:"I heard echos on the call",audioNoise:"I heard noise on the call",lowVolume:"Volume was low",audioStoppedUnexpectedly:"Audio stopped unexpectedly",distortedSpeech:"Audio was distorted",audioInterruption:"Audio was interrupted",otherIssues:"I was having other audio issues in this call"},videoRating:{noVideoReceived:"I could not see any video",noVideoSent:"Others could not see me",lowQuality:"Video quality was low",freezes:"Video frozen",stoppedUnexpectedly:"Video stopped unexpectedly",darkVideoReceived:"I can only see dark screens when others turn on their camera",audioVideoOutOfSync:"Audio and Video was out of sync",otherIssues:"I was having other video issues in this call"},screenshareRating:{noContentLocal:"Other people could not see my screenshare",noContentRemote:"I could not see other people's screenshare",cannotPresent:"I could not present my screen",lowQuality:"Screen share quality was low",freezes:"Screen share frozen",stoppedUnexpectedly:"Screen share stopped unexpectedly",largeDelay:"Screen share has a large delay",otherIssues:"I was having other screen share issues in this call"}},SurveyIssuesHeadingStrings:{overallRating:"Overall",audioRating:"Audio",videoRating:"Video",screenshareRating:"Presenting"},spotlightPrompt:{startSpotlightHeading:"Spotlight for everyone?",startSpotlightText:"You'll highlight this video for everyone in the meeting.",startSpotlightOnSelfText:"You'll highlight your video for everyone in the meeting.",startSpotlightConfirmButtonLabel:"Spotlight for everyone",startSpotlightCancelButtonLabel:"Cancel",stopSpotlightHeading:"Stop spotlighting this video?",stopSpotlightOnSelfHeading:"Exit spotlight?",stopAllSpotlightHeading:"Stop spotlighting all videos?",stopSpotlightText:"This video will no longer be highlighted for everyone in the meeting.",stopSpotlightOnSelfText:"Your video will no longer be highlighted for everyone in the meeting.",stopAllSpotlightText:"The videos will no longer be highlighted for everyone in the meeting.",stopSpotlightConfirmButtonLabel:"Stop spotlighting",stopSpotlightOnSelfConfirmButtonLabel:"Exit spotlight",stopSpotlightCancelButtonLabel:"Cancel"},exitSpotlightButtonLabel:"Exit spotlight",exitSpotlightButtonTooltip:"Exit spotlight"};var chat$j={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$j={chatButtonLabel:"Chat",chatButtonNewMessageNotificationLabel:"New Message",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipClose:"Hide chat",chatButtonTooltipOpen:"Show chat",chatPaneTitle:"Chat",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",dismissSidePaneButtonLabel:"Close",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",moreDrawerCaptionsMenuTitle:"Live captions",moreDrawerSpokenLanguageMenuTitle:"Spoken language",moreDrawerCaptionLanguageMenuTitle:"Caption language",moreDrawerGalleryOptionsMenuTitle:"Gallery options",peopleButtonLabel:"People",selectedPeopleButtonLabel:"People Button Selected",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",peoplePaneTitle:"People",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",openDialpadButtonLabel:"Dial phone number",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number"};var en_GB = {call:call$j,chat:chat$j,callWithChat:callWithChat$j};
@@ -38639,4 +39251,4 @@ exports.useTeamsCall = useTeamsCall;
38639
39251
  exports.useTeamsCallAdapter = useTeamsCallAdapter;
38640
39252
  exports.useTeamsCallAgent = useTeamsCallAgent;
38641
39253
  exports.useTheme = useTheme;
38642
- //# sourceMappingURL=index-BEomNZbT.js.map
39254
+ //# sourceMappingURL=index-BI61bnOi.js.map