@azure/communication-react 1.14.1-alpha-202403270012 → 1.14.1-alpha-202403290012
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.
- package/dist/communication-react.d.ts +203 -63
- package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-Yty3fOoA.js → RichTextSendBoxWrapper-CH6WvEGZ.js} +7 -4
- package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-Yty3fOoA.js.map → RichTextSendBoxWrapper-CH6WvEGZ.js.map} +1 -1
- package/dist/dist-cjs/communication-react/{index-BEomNZbT.js → index-qxnuqL7s.js} +1017 -321
- package/dist/dist-cjs/communication-react/index-qxnuqL7s.js.map +1 -0
- package/dist/dist-cjs/communication-react/index.js +6 -3
- package/dist/dist-cjs/communication-react/index.js.map +1 -1
- package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
- package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts +5 -0
- package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/CallContext.js +2 -0
- package/dist/dist-esm/calling-stateful-client/src/CallContext.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/Converter.js +6 -2
- package/dist/dist-esm/calling-stateful-client/src/Converter.js.map +1 -1
- package/dist/dist-esm/chat-component-bindings/src/messageThreadSelector.js +1 -2
- package/dist/dist-esm/chat-component-bindings/src/messageThreadSelector.js.map +1 -1
- package/dist/dist-esm/communication-react/src/index.d.ts +1 -1
- package/dist/dist-esm/communication-react/src/index.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/AttachmentCard.d.ts +11 -15
- package/dist/dist-esm/react-components/src/components/AttachmentCard.js +25 -41
- package/dist/dist-esm/react-components/src/components/AttachmentCard.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/AttachmentDownloadCards.d.ts +18 -11
- package/dist/dist-esm/react-components/src/components/AttachmentDownloadCards.js +74 -62
- package/dist/dist-esm/react-components/src/components/AttachmentDownloadCards.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/AttachmentUploadCards.js +37 -4
- package/dist/dist-esm/react-components/src/components/AttachmentUploadCards.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentWrapper.d.ts +6 -3
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentWrapper.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/MessageComponents/ChatMessageComponentAsMessageBubble.d.ts +5 -5
- package/dist/dist-esm/react-components/src/components/ChatMessage/MessageComponents/ChatMessageComponentAsMessageBubble.js +7 -7
- package/dist/dist-esm/react-components/src/components/ChatMessage/MessageComponents/ChatMessageComponentAsMessageBubble.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/MessageComponents/FluentChatMessageComponent.js +13 -18
- package/dist/dist-esm/react-components/src/components/ChatMessage/MessageComponents/FluentChatMessageComponent.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponent.d.ts +9 -9
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponent.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponentAsMessageBubble.d.ts +9 -9
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponentAsMessageBubble.js +10 -10
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponentAsMessageBubble.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/FluentChatMyMessageComponent.js +12 -10
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/FluentChatMyMessageComponent.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.d.ts +4 -0
- package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.js +2 -2
- package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/MessageStatusIcon.js +1 -1
- package/dist/dist-esm/react-components/src/components/MessageStatusIcon.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/MessageThread.d.ts +10 -9
- package/dist/dist-esm/react-components/src/components/MessageThread.js +17 -13
- package/dist/dist-esm/react-components/src/components/MessageThread.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/RichTextRibbonButtons.d.ts +7 -0
- package/dist/dist-esm/react-components/src/components/RichTextEditor/{RichTextRibbonButtons.js → Buttons/RichTextRibbonButtons.js} +16 -20
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/RichTextRibbonButtons.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/RichTextInsertTableButton.d.ts +7 -0
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/RichTextInsertTableButton.js +56 -0
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/RichTextInsertTableButton.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/RichTextInsertTablePane.d.ts +16 -0
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/RichTextInsertTablePane.js +62 -0
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/RichTextInsertTablePane.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/RichTextTableContextMenu.d.ts +8 -0
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/RichTextTableContextMenu.js +57 -0
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/RichTextTableContextMenu.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/insertTableAction.d.ts +9 -0
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/insertTableAction.js +34 -0
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/insertTableAction.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.js +23 -11
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.d.ts +44 -0
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js +16 -6
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js +2 -2
- package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery/LargeGalleryLayout.js +5 -3
- package/dist/dist-esm/react-components/src/components/VideoGallery/LargeGalleryLayout.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/index.d.ts +2 -2
- package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/styles/AttachmentCard.styles.d.ts +1 -1
- package/dist/dist-esm/react-components/src/components/styles/AttachmentCard.styles.js +1 -1
- package/dist/dist-esm/react-components/src/components/styles/AttachmentCard.styles.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.d.ts +25 -1
- package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.js +132 -2
- package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/utils/ChatMessageComponentUtils.d.ts +10 -2
- package/dist/dist-esm/react-components/src/components/utils/ChatMessageComponentUtils.js +20 -14
- package/dist/dist-esm/react-components/src/components/utils/ChatMessageComponentUtils.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/utils/RichTextEditorStringsUtils.d.ts +15 -0
- package/dist/dist-esm/react-components/src/components/utils/RichTextEditorStringsUtils.js +39 -0
- package/dist/dist-esm/react-components/src/components/utils/RichTextEditorStringsUtils.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/utils/RichTextTableUtils.d.ts +22 -0
- package/dist/dist-esm/react-components/src/components/utils/RichTextTableUtils.js +29 -0
- package/dist/dist-esm/react-components/src/components/utils/RichTextTableUtils.js.map +1 -0
- package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +13 -1
- package/dist/dist-esm/react-components/src/theming/icons.d.ts +7 -2
- package/dist/dist-esm/react-components/src/theming/icons.js +15 -5
- package/dist/dist-esm/react-components/src/theming/icons.js.map +1 -1
- package/dist/dist-esm/react-components/src/types/Attachment.d.ts +97 -37
- package/dist/dist-esm/react-components/src/types/Attachment.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js +2 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.d.ts +4 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts +2 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +22 -4
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.js +3 -3
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalPreview.js +2 -2
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalPreview.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.d.ts +1 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js +2 -2
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/DtmfDialpadPage.d.ts +1 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/DtmfDialpadPage.js +2 -2
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/DtmfDialpadPage.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallConfiguration.styles.d.ts +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallConfiguration.styles.js +32 -17
- package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallConfiguration.styles.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/LocalDeviceSettings.styles.d.ts +5 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/LocalDeviceSettings.styles.js +12 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/LocalDeviceSettings.styles.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/LocalPreview.styles.d.ts +2 -14
- package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/LocalPreview.styles.js +14 -10
- package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/LocalPreview.styles.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js +13 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts +53 -3
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +196 -57
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/state/CallWithChatAdapterState.d.ts +2 -2
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/state/CallWithChatAdapterState.js +4 -5
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/state/CallWithChatAdapterState.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/AttachmentDownloadErrorBar.d.ts +15 -0
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/{FileDownloadErrorBar.js → AttachmentDownloadErrorBar.js} +5 -5
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/AttachmentDownloadErrorBar.js.map +1 -0
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.d.ts +4 -5
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js +10 -7
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.d.ts +6 -0
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.js +22 -0
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/FileUploadButton.js +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/FileUploadButton.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/index.d.ts +2 -0
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/index.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/index.d.ts +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/index.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/PeoplePaneContent.js +11 -2
- package/dist/dist-esm/react-composites/src/composites/common/PeoplePaneContent.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts +7 -2
- package/dist/dist-esm/react-composites/src/composites/localization/locales/en-US/strings.json +2 -1
- package/package.json +2 -1
- package/dist/dist-cjs/communication-react/index-BEomNZbT.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextRibbonButtons.d.ts +0 -12
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextRibbonButtons.js.map +0 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/FileDownloadErrorBar.d.ts +0 -15
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/FileDownloadErrorBar.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-
|
179
|
+
var telemetryVersion = '1.14.1-alpha-202403290012';
|
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",openAttachment:"Open file",blockedWarningText:"This message was deleted due to organizational policy.",blockedWarningLinkText:"Details",attachmentCardGroupMessage:"The message has {attachmentCount} attachment",messageDeletedAnnouncementAriaLabel:"The message is deleted"};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.
|
@@ -6701,9 +6708,11 @@ const DEFAULT_COMPONENT_ICONS = {
|
|
6701
6708
|
/* @conditional-compile-remove(reaction) */
|
6702
6709
|
ReactionButtonIcon: React.createElement(reactIcons.Emoji20Regular, null),
|
6703
6710
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
6704
|
-
|
6711
|
+
CancelAttachmentUpload: React.createElement(reactIcons.Dismiss16Regular, null),
|
6705
6712
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
6706
|
-
|
6713
|
+
DownloadAttachment: React.createElement(reactIcons.ArrowDownload20Regular, null),
|
6714
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
6715
|
+
OpenAttachment: React.createElement(reactIcons.Open20Regular, null),
|
6707
6716
|
/* @conditional-compile-remove(data-loss-prevention) */
|
6708
6717
|
DataLossPreventionProhibited: React.createElement(DataLossPreventionProhibited16Regular, null),
|
6709
6718
|
EditBoxCancel: React.createElement(reactIcons.Dismiss20Regular, null),
|
@@ -6820,7 +6829,15 @@ const DEFAULT_COMPONENT_ICONS = {
|
|
6820
6829
|
/* @conditional-compile-remove(rich-text-editor) */
|
6821
6830
|
RichTextEditorButtonIcon: React.createElement(reactIcons.TextEditStyle20Regular, null),
|
6822
6831
|
/* @conditional-compile-remove(rich-text-editor) */
|
6823
|
-
RichTextEditorButtonIconFilled: React.createElement(reactIcons.TextEditStyle20Filled, null)
|
6832
|
+
RichTextEditorButtonIconFilled: React.createElement(reactIcons.TextEditStyle20Filled, null),
|
6833
|
+
/* @conditional-compile-remove(rich-text-editor) */
|
6834
|
+
RichTextInsertTableRegularIcon: React.createElement(reactIcons.Table20Regular, null),
|
6835
|
+
/* @conditional-compile-remove(rich-text-editor) */
|
6836
|
+
RichTextInsertTableFilledIcon: React.createElement(reactIcons.Table20Filled, null),
|
6837
|
+
/* @conditional-compile-remove(rich-text-editor) */
|
6838
|
+
RichTextTableInsertMenuIcon: React.createElement(reactIcons.TableAdd20Regular, null),
|
6839
|
+
/* @conditional-compile-remove(rich-text-editor) */
|
6840
|
+
RichTextTableDeleteMenuIcon: React.createElement(reactIcons.TableDismiss20Regular, null)
|
6824
6841
|
};
|
6825
6842
|
|
6826
6843
|
// Copyright (c) Microsoft Corporation.
|
@@ -8774,7 +8791,7 @@ const useAttachmentCardStyles = reactComponents.makeStyles({
|
|
8774
8791
|
/**
|
8775
8792
|
* @private
|
8776
8793
|
*/
|
8777
|
-
const
|
8794
|
+
const attachmentNameContainerClassName = react.mergeStyles({
|
8778
8795
|
marginTop: _pxToRem(5),
|
8779
8796
|
width: '5.75rem',
|
8780
8797
|
overflow: 'hidden',
|
@@ -8786,6 +8803,15 @@ const fileNameContainerClassName = react.mergeStyles({
|
|
8786
8803
|
|
8787
8804
|
// Copyright (c) Microsoft Corporation.
|
8788
8805
|
// Licensed under the MIT License.
|
8806
|
+
var __awaiter$C = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
8807
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
8808
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
8809
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
8810
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
8811
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8812
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
8813
|
+
});
|
8814
|
+
};
|
8789
8815
|
/**
|
8790
8816
|
* @internal
|
8791
8817
|
* A component for displaying an attachment card with attachment icon and progress bar.
|
@@ -8794,36 +8820,8 @@ const fileNameContainerClassName = react.mergeStyles({
|
|
8794
8820
|
*/
|
8795
8821
|
const _AttachmentCard = (props) => {
|
8796
8822
|
var _a, _b, _c, _d;
|
8797
|
-
const {
|
8823
|
+
const { attachment, progress, menuActions, onActionHandlerFailed } = props;
|
8798
8824
|
const attachmentCardStyles = useAttachmentCardStyles();
|
8799
|
-
// default/placeholder before actual code implemented
|
8800
|
-
const menuActions = React.useMemo(() => {
|
8801
|
-
return [
|
8802
|
-
{
|
8803
|
-
name: actionIcon && (actionIcon === null || actionIcon === void 0 ? void 0 : actionIcon.props.ariaLabel),
|
8804
|
-
icon: actionIcon !== null && actionIcon !== void 0 ? actionIcon : React.createElement(React.Fragment, null),
|
8805
|
-
onClick: (attachment) => {
|
8806
|
-
if (attachment) {
|
8807
|
-
actionHandler === null || actionHandler === void 0 ? void 0 : actionHandler();
|
8808
|
-
}
|
8809
|
-
}
|
8810
|
-
}
|
8811
|
-
];
|
8812
|
-
}, [actionIcon, actionHandler]);
|
8813
|
-
// placeholder before refactoring the props
|
8814
|
-
const attachment = React.useMemo(() => {
|
8815
|
-
return {
|
8816
|
-
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
8817
|
-
id: 'attachmentId',
|
8818
|
-
extension: attachmentExtension,
|
8819
|
-
name: attachmentName,
|
8820
|
-
url: 'https://localhost' // placeholder not used
|
8821
|
-
};
|
8822
|
-
}, [attachmentExtension, attachmentName]);
|
8823
|
-
// placeholder before refactoring the props
|
8824
|
-
const onDownloadErrorMessage = React.useCallback((errorMessage) => {
|
8825
|
-
console.log(errorMessage);
|
8826
|
-
}, []);
|
8827
8825
|
const isUploadComplete = React.useMemo(() => {
|
8828
8826
|
return progress !== undefined && progress > 0 && progress < 1;
|
8829
8827
|
}, [progress]);
|
@@ -8834,24 +8832,27 @@ const _AttachmentCard = (props) => {
|
|
8834
8832
|
const showProgressIndicator = progress !== undefined && progress > 0 && progress < 1;
|
8835
8833
|
React.useEffect(() => {
|
8836
8834
|
if (showProgressIndicator) {
|
8837
|
-
setAnnouncerString(`${uploadStartedString} ${
|
8835
|
+
setAnnouncerString(`${uploadStartedString} ${attachment.name}`);
|
8838
8836
|
}
|
8839
8837
|
else if (progress === 1) {
|
8840
|
-
setAnnouncerString(`${
|
8838
|
+
setAnnouncerString(`${attachment.name} ${uploadCompletedString}`);
|
8841
8839
|
}
|
8842
8840
|
else {
|
8843
8841
|
setAnnouncerString(undefined);
|
8844
8842
|
}
|
8845
|
-
}, [progress, showProgressIndicator,
|
8843
|
+
}, [progress, showProgressIndicator, attachment.name, uploadStartedString, uploadCompletedString]);
|
8846
8844
|
return (React.createElement("div", { "data-is-focusable": true },
|
8847
8845
|
React.createElement(Announcer$1, { announcementString: announcerString, ariaLive: 'polite' }),
|
8848
8846
|
React.createElement(reactComponents.Card, { className: attachmentCardStyles.root, size: "small", role: "listitem" },
|
8849
|
-
React.createElement(reactComponents.CardHeader, { image: React.createElement(react.Icon, { "data-ui-id": '
|
8850
|
-
extension:
|
8847
|
+
React.createElement(reactComponents.CardHeader, { image: React.createElement(react.Icon, { "data-ui-id": 'attachmenttype-icon', iconName: reactFileTypeIcons.getFileTypeIconProps({
|
8848
|
+
extension: React.useMemo(() => {
|
8849
|
+
var _a, _b;
|
8850
|
+
return (_b = (_a = attachment.extension) !== null && _a !== void 0 ? _a : attachment.name.split('.').pop()) !== null && _b !== void 0 ? _b : '';
|
8851
|
+
}, [attachment]),
|
8851
8852
|
size: 24,
|
8852
8853
|
imageFileType: 'svg'
|
8853
|
-
}).iconName }), header: React.createElement("div", { className:
|
8854
|
-
React.createElement(reactComponents.Text, { title:
|
8854
|
+
}).iconName }), header: React.createElement("div", { className: attachmentNameContainerClassName },
|
8855
|
+
React.createElement(reactComponents.Text, { title: attachment.name }, attachment.name)), action: getMenuItems(menuActions, attachment, onActionHandlerFailed) })),
|
8855
8856
|
isUploadComplete ? (React.createElement(reactComponents.CardFooter, null,
|
8856
8857
|
React.createElement(reactComponents.ProgressBar, { thickness: "medium", value: progress, shape: "rounded" }))) : (React.createElement(React.Fragment, null, " "))));
|
8857
8858
|
};
|
@@ -8871,14 +8872,14 @@ const getMenuItems = (menuActions, attachment, handleOnClickError) => {
|
|
8871
8872
|
React.createElement(reactComponents.MenuTrigger, null,
|
8872
8873
|
React.createElement(reactComponents.ToolbarButton, { "aria-label": "More", icon: React.createElement(reactIcons.MoreHorizontal24Filled, null) })),
|
8873
8874
|
React.createElement(reactComponents.MenuPopover, null,
|
8874
|
-
React.createElement(reactComponents.MenuList, null, menuActions.map((menuItem, index) => (React.createElement(reactComponents.MenuItem, { key: index, icon: menuItem.icon, onClick: () => {
|
8875
|
+
React.createElement(reactComponents.MenuList, null, menuActions.map((menuItem, index) => (React.createElement(reactComponents.MenuItem, { key: index, icon: menuItem.icon, onClick: () => __awaiter$C(void 0, void 0, void 0, function* () {
|
8875
8876
|
try {
|
8876
|
-
menuItem.onClick(attachment);
|
8877
|
+
yield menuItem.onClick(attachment);
|
8877
8878
|
}
|
8878
8879
|
catch (e) {
|
8879
8880
|
handleOnClickError === null || handleOnClickError === void 0 ? void 0 : handleOnClickError(e.message);
|
8880
8881
|
}
|
8881
|
-
} }, menuItem.name))))))));
|
8882
|
+
}) }, menuItem.name))))))));
|
8882
8883
|
};
|
8883
8884
|
|
8884
8885
|
// Copyright (c) Microsoft Corporation.
|
@@ -8920,16 +8921,48 @@ const actionIconStyle = { height: '1rem' };
|
|
8920
8921
|
* @internal
|
8921
8922
|
*/
|
8922
8923
|
const _AttachmentUploadCards = (props) => {
|
8924
|
+
var _a;
|
8923
8925
|
const attachments = props.activeFileUploads;
|
8926
|
+
const localeStrings = useLocaleAttachmentCardStringsTrampoline();
|
8927
|
+
const removeFileButtonString = React.useMemo(() => () => {
|
8928
|
+
var _a, _b;
|
8929
|
+
return (_b = (_a = props.strings) === null || _a === void 0 ? void 0 : _a.removeAttachment) !== null && _b !== void 0 ? _b : localeStrings.removeAttachment;
|
8930
|
+
}, [(_a = props.strings) === null || _a === void 0 ? void 0 : _a.removeAttachment, localeStrings.removeAttachment]);
|
8924
8931
|
if (!attachments || attachments.length === 0) {
|
8925
8932
|
return React.createElement(React.Fragment, null);
|
8926
8933
|
}
|
8927
8934
|
return (React.createElement(_AttachmentCardGroup, null, attachments &&
|
8928
8935
|
attachments
|
8929
8936
|
.filter((attachment) => !attachment.error)
|
8930
|
-
.map((attachment) =>
|
8931
|
-
|
8932
|
-
|
8937
|
+
.map((attachment) => {
|
8938
|
+
var _a, _b, _c, _d;
|
8939
|
+
return (React.createElement(_AttachmentCard
|
8940
|
+
// temp converter before upload is refactored
|
8941
|
+
, {
|
8942
|
+
// temp converter before upload is refactored
|
8943
|
+
attachment: {
|
8944
|
+
id: attachment.id,
|
8945
|
+
name: attachment.filename,
|
8946
|
+
extension: extension(attachment.filename),
|
8947
|
+
progress: attachment.progress,
|
8948
|
+
uploadStatus: attachment.error
|
8949
|
+
? {
|
8950
|
+
message: (_a = attachment.error) === null || _a === void 0 ? void 0 : _a.message,
|
8951
|
+
timestamp: (_b = attachment.error) === null || _b === void 0 ? void 0 : _b.timestamp
|
8952
|
+
}
|
8953
|
+
: undefined
|
8954
|
+
}, progress: attachment.progress, key: attachment.id, menuActions: [
|
8955
|
+
{
|
8956
|
+
name: (_d = (_c = props.strings) === null || _c === void 0 ? void 0 : _c.removeAttachment) !== null && _d !== void 0 ? _d : 'Remove',
|
8957
|
+
icon: (React.createElement("div", { "aria-label": removeFileButtonString() },
|
8958
|
+
React.createElement(react.Icon, { iconName: "CancelAttachmentUpload", className: react.mergeStyles(actionIconStyle) }))),
|
8959
|
+
onClick: () => {
|
8960
|
+
props.onCancelFileUpload && props.onCancelFileUpload(attachment.id);
|
8961
|
+
return Promise.resolve();
|
8962
|
+
}
|
8963
|
+
}
|
8964
|
+
], strings: props.strings }));
|
8965
|
+
})));
|
8933
8966
|
};
|
8934
8967
|
|
8935
8968
|
// Copyright (c) Microsoft Corporation.
|
@@ -9725,7 +9758,26 @@ const richTextEditorWrapperStyle = (theme, addTopOffset) => {
|
|
9725
9758
|
paddingInlineEnd: `0.75rem`,
|
9726
9759
|
lineHeight: '1.25rem',
|
9727
9760
|
maxWidth: '100%',
|
9728
|
-
color: theme.palette.neutralPrimary
|
9761
|
+
color: theme.palette.neutralPrimary,
|
9762
|
+
'& table': {
|
9763
|
+
background: 'transparent',
|
9764
|
+
borderCollapse: 'collapse',
|
9765
|
+
width: '100%',
|
9766
|
+
borderSpacing: '0',
|
9767
|
+
// don't shrink/expand cells during the input to the table
|
9768
|
+
tableLayout: 'fixed',
|
9769
|
+
'& tr': {
|
9770
|
+
background: 'transparent',
|
9771
|
+
border: `1px solid ${theme.palette.neutralLight}`,
|
9772
|
+
'& td': {
|
9773
|
+
background: 'transparent',
|
9774
|
+
border: `1px solid ${theme.palette.neutralLight}`,
|
9775
|
+
wordBreak: 'normal',
|
9776
|
+
padding: '0.125rem 0.25rem',
|
9777
|
+
verticalAlign: 'top'
|
9778
|
+
}
|
9779
|
+
}
|
9780
|
+
}
|
9729
9781
|
});
|
9730
9782
|
};
|
9731
9783
|
/**
|
@@ -9776,6 +9828,15 @@ const ribbonOverflowButtonRootStyles = (theme) => {
|
|
9776
9828
|
color: theme.palette.neutralPrimary
|
9777
9829
|
}
|
9778
9830
|
}
|
9831
|
+
},
|
9832
|
+
'.ribbon-table-button-regular-icon': {
|
9833
|
+
display: 'inline-block',
|
9834
|
+
margin: '-0.25rem 0.25rem 0 0.25rem',
|
9835
|
+
width: '1.25rem',
|
9836
|
+
height: '1.25rem'
|
9837
|
+
},
|
9838
|
+
'.ribbon-table-button-filled-icon': {
|
9839
|
+
display: 'none'
|
9779
9840
|
}
|
9780
9841
|
}
|
9781
9842
|
};
|
@@ -9811,13 +9872,67 @@ const ribbonButtonStyle = (theme) => {
|
|
9811
9872
|
rootExpandedHovered: ribbonButtonRootStyles(theme)
|
9812
9873
|
};
|
9813
9874
|
};
|
9875
|
+
const rootRibbonTableButtonStyle = (theme) => {
|
9876
|
+
// merge IStyles props
|
9877
|
+
return Object.assign({ minWidth: 'auto' }, ribbonTableButtonRootStyles(theme, false));
|
9878
|
+
};
|
9879
|
+
/**
|
9880
|
+
* @private
|
9881
|
+
*/
|
9882
|
+
const ribbonTableButtonStyle = (theme) => {
|
9883
|
+
return {
|
9884
|
+
icon: { height: 'auto' },
|
9885
|
+
menuIcon: { height: 'auto' },
|
9886
|
+
root: rootRibbonTableButtonStyle(theme),
|
9887
|
+
rootChecked: ribbonTableButtonRootStyles(theme, true),
|
9888
|
+
rootHovered: ribbonTableButtonRootStyles(theme, true),
|
9889
|
+
rootCheckedHovered: ribbonTableButtonRootStyles(theme, true),
|
9890
|
+
rootCheckedPressed: ribbonTableButtonRootStyles(theme, true),
|
9891
|
+
rootPressed: ribbonTableButtonRootStyles(theme, true),
|
9892
|
+
rootExpanded: ribbonTableButtonRootStyles(theme, true),
|
9893
|
+
rootExpandedHovered: ribbonTableButtonRootStyles(theme, true)
|
9894
|
+
};
|
9895
|
+
};
|
9896
|
+
const ribbonTableButtonRootStyles = (theme, isSelected) => {
|
9897
|
+
return {
|
9898
|
+
backgroundColor: 'transparent',
|
9899
|
+
selectors: {
|
9900
|
+
'.ribbon-table-button-regular-icon': {
|
9901
|
+
width: '1.25rem',
|
9902
|
+
height: '1.25rem',
|
9903
|
+
marginTop: '-0.25rem',
|
9904
|
+
color: theme.palette.neutralPrimary,
|
9905
|
+
display: isSelected ? 'none' : 'inline-block'
|
9906
|
+
},
|
9907
|
+
'.ribbon-table-button-filled-icon': {
|
9908
|
+
width: '1.25rem',
|
9909
|
+
height: '1.25rem',
|
9910
|
+
marginTop: '-0.25rem',
|
9911
|
+
color: theme.palette.themePrimary,
|
9912
|
+
display: isSelected ? 'inline-block' : 'none'
|
9913
|
+
}
|
9914
|
+
}
|
9915
|
+
};
|
9916
|
+
};
|
9814
9917
|
/**
|
9815
9918
|
* @private
|
9816
9919
|
*/
|
9817
9920
|
const ribbonDividerStyle = (theme) => {
|
9818
9921
|
return {
|
9819
9922
|
icon: { color: theme.palette.neutralQuaternaryAlt, margin: '0 -0.5rem', height: 'auto' },
|
9820
|
-
root: { margin: '0', padding: '0', minWidth: 'auto' }
|
9923
|
+
root: { margin: '0', padding: '0', minWidth: 'auto' },
|
9924
|
+
rootHovered: {
|
9925
|
+
backgroundColor: 'transparent',
|
9926
|
+
selectors: {
|
9927
|
+
// Icon's color doesn't work here because of the specificity
|
9928
|
+
'.ms-Button-icon': {
|
9929
|
+
color: theme.palette.neutralQuaternaryAlt
|
9930
|
+
},
|
9931
|
+
'.ms-Button-menuIcon': {
|
9932
|
+
color: theme.palette.neutralQuaternaryAlt
|
9933
|
+
}
|
9934
|
+
}
|
9935
|
+
}
|
9821
9936
|
};
|
9822
9937
|
};
|
9823
9938
|
/**
|
@@ -9844,18 +9959,241 @@ const sendBoxRichTextEditorStyle = (isExpanded) => {
|
|
9844
9959
|
maxHeight: '5rem'
|
9845
9960
|
};
|
9846
9961
|
};
|
9962
|
+
/**
|
9963
|
+
* @private
|
9964
|
+
*/
|
9965
|
+
const insertTableMenuCellButtonStyles = (theme) => {
|
9966
|
+
return {
|
9967
|
+
width: '1rem',
|
9968
|
+
height: '1rem',
|
9969
|
+
border: `solid 0.0625rem ${theme.palette.neutralTertiaryAlt}`,
|
9970
|
+
display: 'inline-block',
|
9971
|
+
cursor: 'pointer',
|
9972
|
+
background: 'transparent'
|
9973
|
+
};
|
9974
|
+
};
|
9975
|
+
/**
|
9976
|
+
* @private
|
9977
|
+
*/
|
9978
|
+
const insertTableMenuCellButtonSelectedStyles = (theme) => {
|
9979
|
+
return {
|
9980
|
+
background: theme.palette.themePrimary
|
9981
|
+
};
|
9982
|
+
};
|
9983
|
+
/**
|
9984
|
+
* @private
|
9985
|
+
*/
|
9986
|
+
const insertTableMenuTablePane = react.mergeStyles({
|
9987
|
+
padding: '0.5rem 0.625rem 0.75rem 0.625rem',
|
9988
|
+
boxSizing: 'content-box',
|
9989
|
+
minWidth: 'auto'
|
9990
|
+
});
|
9991
|
+
/**
|
9992
|
+
* @private
|
9993
|
+
*/
|
9994
|
+
const insertTableMenuFocusZone = (theme) => {
|
9995
|
+
return react.mergeStyles({
|
9996
|
+
lineHeight: '12px',
|
9997
|
+
width: '5rem',
|
9998
|
+
border: `solid 0.0625rem ${theme.palette.neutralTertiaryAlt}`
|
9999
|
+
});
|
10000
|
+
};
|
10001
|
+
/**
|
10002
|
+
* @private
|
10003
|
+
*/
|
10004
|
+
const insertTableMenuTitleStyles = react.mergeStyles({
|
10005
|
+
width: '100%',
|
10006
|
+
height: '1rem',
|
10007
|
+
fontSize: '0.75rem',
|
10008
|
+
marginBottom: '0.5rem'
|
10009
|
+
});
|
10010
|
+
|
10011
|
+
// Copyright (c) Microsoft Corporation.
|
10012
|
+
// Licensed under the MIT License.
|
10013
|
+
// This file uses RoosterJS React package implementation with updates to change table's size and remove styles
|
10014
|
+
/**
|
10015
|
+
* Insert table into editor at current selection
|
10016
|
+
* @param editor The editor instance
|
10017
|
+
* @param columns Number of columns in table
|
10018
|
+
* @param rows Number of rows in table
|
10019
|
+
*/
|
10020
|
+
const insertTable = (editor, columns, rows) => {
|
10021
|
+
const document = editor.getDocument();
|
10022
|
+
const table = document.createElement('table');
|
10023
|
+
for (let i = 0; i < rows; i++) {
|
10024
|
+
const tr = document.createElement('tr');
|
10025
|
+
table.appendChild(tr);
|
10026
|
+
for (let j = 0; j < columns; j++) {
|
10027
|
+
const td = document.createElement('td');
|
10028
|
+
tr.appendChild(td);
|
10029
|
+
td.appendChild(document.createElement('br'));
|
10030
|
+
}
|
10031
|
+
}
|
10032
|
+
editor.focus();
|
10033
|
+
editor.addUndoSnapshot(() => {
|
10034
|
+
const vTable = new roosterjsEditorDom.VTable(table);
|
10035
|
+
vTable.writeBack();
|
10036
|
+
editor.insertNode(table);
|
10037
|
+
editor.runAsync((editor) => editor.select(new roosterjsEditorDom.Position(table, roosterjsEditorTypesCompatible.CompatiblePositionType.Begin).normalize()));
|
10038
|
+
}, roosterjsEditorTypesCompatible.CompatibleChangeSource.Format, undefined /* canUndoByBackspace */, {
|
10039
|
+
formatApiName: 'insertTable'
|
10040
|
+
});
|
10041
|
+
};
|
10042
|
+
|
10043
|
+
// Copyright (c) Microsoft Corporation.
|
10044
|
+
// Licensed under the MIT License.
|
10045
|
+
/**
|
10046
|
+
* @private
|
10047
|
+
*
|
10048
|
+
* String to be replaces by actual values of row and column.
|
10049
|
+
*/
|
10050
|
+
const ColumnRowReplaceString = '{column} x {row}';
|
10051
|
+
/**
|
10052
|
+
* @private
|
10053
|
+
*
|
10054
|
+
* Function to create key pair for the selected table size.
|
10055
|
+
*/
|
10056
|
+
function createKey(row, column) {
|
10057
|
+
return `${row},${column}`;
|
10058
|
+
}
|
10059
|
+
/**
|
10060
|
+
* @private
|
10061
|
+
*
|
10062
|
+
* Function to parse key to the selected table size valules.
|
10063
|
+
*/
|
10064
|
+
function parseKey(key) {
|
10065
|
+
const [row, column] = key.split(',');
|
10066
|
+
return {
|
10067
|
+
row: parseInt(row),
|
10068
|
+
column: parseInt(column)
|
10069
|
+
};
|
10070
|
+
}
|
10071
|
+
|
10072
|
+
// Copyright (c) Microsoft Corporation.
|
10073
|
+
// Licensed under the MIT License.
|
10074
|
+
// This file uses RoosterJS React package implementation with updates to UI components and styles.
|
10075
|
+
const RowColumnInitialValue = 0;
|
10076
|
+
/**
|
10077
|
+
* @private
|
10078
|
+
* Component for the insert table pane
|
10079
|
+
*/
|
10080
|
+
const RichTextInsertTablePane = (props) => {
|
10081
|
+
const { item, onClick, theme, maxColumnsNumber, maxRowsNumber } = props;
|
10082
|
+
const [column, setColumn] = React.useState(RowColumnInitialValue);
|
10083
|
+
const [row, setRow] = React.useState(RowColumnInitialValue);
|
10084
|
+
const updateSize = React.useCallback((target) => {
|
10085
|
+
if (target !== undefined && target.dataset.column !== undefined && target.dataset.row !== undefined) {
|
10086
|
+
const column = parseInt(target.dataset.column);
|
10087
|
+
const row = parseInt(target.dataset.row);
|
10088
|
+
if (column >= RowColumnInitialValue &&
|
10089
|
+
column < maxColumnsNumber &&
|
10090
|
+
row >= RowColumnInitialValue &&
|
10091
|
+
row < maxRowsNumber) {
|
10092
|
+
setColumn(column);
|
10093
|
+
setRow(row);
|
10094
|
+
}
|
10095
|
+
}
|
10096
|
+
}, [maxColumnsNumber, maxRowsNumber]);
|
10097
|
+
const onMouseEnter = React.useCallback((e) => {
|
10098
|
+
updateSize(e.target);
|
10099
|
+
}, [updateSize]);
|
10100
|
+
const onClickButton = React.useCallback((e) => {
|
10101
|
+
onClick(e, Object.assign(Object.assign({}, item), { key: createKey(formatRowColumnText(row), formatRowColumnText(column)) }));
|
10102
|
+
}, [row, column, onClick, item]);
|
10103
|
+
const items = React.useMemo(() => {
|
10104
|
+
var _a;
|
10105
|
+
const items = [];
|
10106
|
+
for (let i = 0; i < maxRowsNumber; i++) {
|
10107
|
+
for (let j = 0; j < maxColumnsNumber; j++) {
|
10108
|
+
const key = `cell_${i}_${j}`;
|
10109
|
+
const isSelected = j <= column && i <= row;
|
10110
|
+
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) }));
|
10111
|
+
}
|
10112
|
+
}
|
10113
|
+
return items;
|
10114
|
+
}, [maxRowsNumber, maxColumnsNumber, column, row, theme, onClickButton, onMouseEnter, item.text]);
|
10115
|
+
const text = React.useMemo(() => {
|
10116
|
+
var _a;
|
10117
|
+
return formatText((_a = item.text) !== null && _a !== void 0 ? _a : '', formatRowColumnText(row), formatRowColumnText(column));
|
10118
|
+
}, [column, item.text, row]);
|
10119
|
+
return (React.createElement("div", null,
|
10120
|
+
React.createElement("div", { className: insertTableMenuTitleStyles }, text),
|
10121
|
+
React.createElement(react.FocusZone, { defaultTabbableElement: `cell_${RowColumnInitialValue}_${RowColumnInitialValue}`, direction: react.FocusZoneDirection.bidirectional, onActiveElementChanged: updateSize, className: insertTableMenuFocusZone(theme) }, items)));
|
10122
|
+
};
|
10123
|
+
const formatText = (text, row, column) => {
|
10124
|
+
return text.replace(`${ColumnRowReplaceString}`, `${column.toString()} x ${row.toString()}`);
|
10125
|
+
};
|
10126
|
+
const formatRowColumnText = (value) => {
|
10127
|
+
return value + 1;
|
10128
|
+
};
|
9847
10129
|
|
9848
10130
|
// Copyright (c) Microsoft Corporation.
|
9849
10131
|
// Licensed under the MIT License.
|
9850
|
-
|
10132
|
+
// This file uses RoosterJS React package implementation with updates to UI components and styles.
|
10133
|
+
/**
|
10134
|
+
* "Insert table" button for the RoosterJS ribbon
|
10135
|
+
*/
|
10136
|
+
const insertTableButton = (theme, maxRowsNumber, maxColumnsNumber) => {
|
9851
10137
|
return {
|
9852
|
-
key: '
|
10138
|
+
key: 'buttonNameInsertTable',
|
10139
|
+
unlocalizedText: 'Insert table',
|
10140
|
+
// Icon will be set in onRenderIcon callback
|
10141
|
+
iconName: '',
|
10142
|
+
onClick: (editor, key) => {
|
10143
|
+
const { row, column } = parseKey(key);
|
10144
|
+
insertTable(editor, column, row);
|
10145
|
+
},
|
10146
|
+
dropDownMenu: {
|
10147
|
+
items: {
|
10148
|
+
// the key of the item is also used as a key for localization
|
10149
|
+
insertTablePane: `Insert ${ColumnRowReplaceString} table`
|
10150
|
+
},
|
10151
|
+
itemRender: (item, onClick) => {
|
10152
|
+
return (React.createElement(RichTextInsertTablePane, { item: item, onClick: onClick, theme: theme, maxColumnsNumber: maxColumnsNumber, maxRowsNumber: maxRowsNumber }));
|
10153
|
+
},
|
10154
|
+
commandBarSubMenuProperties: {
|
10155
|
+
className: insertTableMenuTablePane
|
10156
|
+
}
|
10157
|
+
},
|
10158
|
+
commandBarProperties: {
|
10159
|
+
// hide the chevron icon
|
10160
|
+
menuIconProps: {
|
10161
|
+
hidden: true
|
10162
|
+
},
|
10163
|
+
onRenderIcon: (item) => {
|
10164
|
+
console.log('onRenderIcon', item);
|
10165
|
+
return React.createElement(TableIcon, null);
|
10166
|
+
},
|
10167
|
+
buttonStyles: ribbonTableButtonStyle(theme),
|
10168
|
+
canCheck: false
|
10169
|
+
}
|
10170
|
+
};
|
10171
|
+
};
|
10172
|
+
const TableIcon = () => {
|
10173
|
+
return (
|
10174
|
+
// update the visibility of the Table Icon with css classes that are triggered by command bar's state
|
10175
|
+
React.createElement(react.Stack, null,
|
10176
|
+
React.createElement(react.Icon, { iconName: "RichTextInsertTableFilledIcon", className: 'ribbon-table-button-filled-icon' }),
|
10177
|
+
React.createElement(react.Icon, { iconName: "RichTextInsertTableRegularIcon", className: 'ribbon-table-button-regular-icon' })));
|
10178
|
+
};
|
10179
|
+
|
10180
|
+
// Copyright (c) Microsoft Corporation.
|
10181
|
+
// Licensed under the MIT License.
|
10182
|
+
const MaxRowsNumber = 5;
|
10183
|
+
const MaxColumnsNumber = 5;
|
10184
|
+
const dividerRibbonButton = (theme, key) => {
|
10185
|
+
return {
|
10186
|
+
key: key,
|
9853
10187
|
iconName: 'RichTextDividerIcon',
|
9854
10188
|
unlocalizedText: '',
|
9855
10189
|
onClick: () => { },
|
9856
10190
|
isDisabled: () => true,
|
9857
10191
|
commandBarProperties: {
|
9858
|
-
|
10192
|
+
// show the item correctly for the overflow menu
|
10193
|
+
itemType: react.ContextualMenuItemType.Divider,
|
10194
|
+
buttonStyles: ribbonDividerStyle(theme),
|
10195
|
+
// this is still needed to remove checkmark icon space even though it is a divider
|
10196
|
+
canCheck: false
|
9859
10197
|
}
|
9860
10198
|
};
|
9861
10199
|
};
|
@@ -9902,11 +10240,13 @@ const ribbonButtons = (theme) => {
|
|
9902
10240
|
boldButton(theme),
|
9903
10241
|
italicButton(theme),
|
9904
10242
|
underlineButton(theme),
|
9905
|
-
dividerRibbonButton(theme),
|
10243
|
+
dividerRibbonButton(theme, 'RichTextRibbonTextFormatDivider'),
|
9906
10244
|
bulletListButton(theme),
|
9907
10245
|
numberListButton(theme),
|
9908
10246
|
indentIncreaseButton(theme),
|
9909
|
-
indentDecreaseButton(theme)
|
10247
|
+
indentDecreaseButton(theme),
|
10248
|
+
dividerRibbonButton(theme, 'RichTextRibbonTableDivider'),
|
10249
|
+
insertTableButton(theme, MaxRowsNumber, MaxColumnsNumber)
|
9910
10250
|
].forEach((item) => {
|
9911
10251
|
if (item !== undefined) {
|
9912
10252
|
buttons.push(item);
|
@@ -9914,8 +10254,13 @@ const ribbonButtons = (theme) => {
|
|
9914
10254
|
});
|
9915
10255
|
return buttons;
|
9916
10256
|
};
|
10257
|
+
|
10258
|
+
// Copyright (c) Microsoft Corporation.
|
10259
|
+
// Licensed under the MIT License.
|
9917
10260
|
/**
|
9918
10261
|
* @private
|
10262
|
+
*
|
10263
|
+
* Strings for the ribbon buttons where key should match `key` prop if any or the name of the item.
|
9919
10264
|
*/
|
9920
10265
|
const ribbonButtonsStrings = (strings) => {
|
9921
10266
|
return {
|
@@ -9925,10 +10270,83 @@ const ribbonButtonsStrings = (strings) => {
|
|
9925
10270
|
buttonNameBulletedList: strings.bulletListTooltip,
|
9926
10271
|
buttonNameNumberedList: strings.numberListTooltip,
|
9927
10272
|
buttonNameIncreaseIndent: strings.increaseIndentTooltip,
|
9928
|
-
buttonNameDecreaseIndent: strings.decreaseIndentTooltip
|
10273
|
+
buttonNameDecreaseIndent: strings.decreaseIndentTooltip,
|
10274
|
+
buttonNameInsertTable: strings.insertTableTooltip,
|
10275
|
+
insertTablePane: strings.insertTableMenuTitle
|
10276
|
+
};
|
10277
|
+
};
|
10278
|
+
/**
|
10279
|
+
* @private
|
10280
|
+
*
|
10281
|
+
* Strings for the table context menu where key should match `key` prop if any or the name of the item.
|
10282
|
+
*/
|
10283
|
+
const tableContextMenuStrings = (strings) => {
|
10284
|
+
return {
|
10285
|
+
menuNameTableInsert: strings.insertRowOrColumnMenu,
|
10286
|
+
menuNameTableInsertAbove: strings.insertRowAboveMenu,
|
10287
|
+
menuNameTableInsertBelow: strings.insertRowBelowMenu,
|
10288
|
+
menuNameTableInsertLeft: strings.insertColumnLeftMenu,
|
10289
|
+
menuNameTableInsertRight: strings.insertColumnRightMenu,
|
10290
|
+
menuNameTableDelete: strings.deleteRowOrColumnMenu,
|
10291
|
+
menuNameTableDeleteColumn: strings.deleteColumnMenu,
|
10292
|
+
menuNameTableDeleteRow: strings.deleteRowMenu,
|
10293
|
+
menuNameTableDeleteTable: strings.deleteTableMenu
|
9929
10294
|
};
|
9930
10295
|
};
|
9931
10296
|
|
10297
|
+
// Copyright (c) Microsoft Corporation.
|
10298
|
+
// Licensed under the MIT License.
|
10299
|
+
const onClick = (key, editor) => {
|
10300
|
+
editor.focus();
|
10301
|
+
const operation = TableEditOperationMap[key];
|
10302
|
+
if (typeof operation === 'number') {
|
10303
|
+
roosterjsEditorApi.editTable(editor, operation);
|
10304
|
+
}
|
10305
|
+
};
|
10306
|
+
const TableEditOperationMap = {
|
10307
|
+
menuNameTableInsertAbove: roosterjsEditorTypesCompatible.CompatibleTableOperation.InsertAbove,
|
10308
|
+
menuNameTableInsertBelow: roosterjsEditorTypesCompatible.CompatibleTableOperation.InsertBelow,
|
10309
|
+
menuNameTableInsertLeft: roosterjsEditorTypesCompatible.CompatibleTableOperation.InsertLeft,
|
10310
|
+
menuNameTableInsertRight: roosterjsEditorTypesCompatible.CompatibleTableOperation.InsertRight,
|
10311
|
+
menuNameTableDeleteTable: roosterjsEditorTypesCompatible.CompatibleTableOperation.DeleteTable,
|
10312
|
+
menuNameTableDeleteColumn: roosterjsEditorTypesCompatible.CompatibleTableOperation.DeleteColumn,
|
10313
|
+
menuNameTableDeleteRow: roosterjsEditorTypesCompatible.CompatibleTableOperation.DeleteRow
|
10314
|
+
};
|
10315
|
+
const tableEditInsertMenuItem = {
|
10316
|
+
key: 'menuNameTableInsert',
|
10317
|
+
unlocalizedText: 'Insert123',
|
10318
|
+
subItems: {
|
10319
|
+
menuNameTableInsertAbove: 'Insert above121312 ',
|
10320
|
+
menuNameTableInsertBelow: 'Insert below',
|
10321
|
+
menuNameTableInsertLeft: 'Insert left123 ',
|
10322
|
+
menuNameTableInsertRight: 'Insert right'
|
10323
|
+
},
|
10324
|
+
onClick
|
10325
|
+
};
|
10326
|
+
const tableEditDeleteMenuItem = {
|
10327
|
+
key: 'menuNameTableDelete',
|
10328
|
+
unlocalizedText: 'Delete',
|
10329
|
+
subItems: {
|
10330
|
+
menuNameTableDeleteColumn: 'Delete column',
|
10331
|
+
menuNameTableDeleteRow: 'Delete row',
|
10332
|
+
menuNameTableDeleteTable: 'Delete table'
|
10333
|
+
},
|
10334
|
+
onClick
|
10335
|
+
};
|
10336
|
+
const tableActions = [tableEditInsertMenuItem, tableEditDeleteMenuItem];
|
10337
|
+
/**
|
10338
|
+
* Create a new instance of ContextMenuProvider to support table editing functionalities in context menu
|
10339
|
+
* @returns A new ContextMenuProvider
|
10340
|
+
*/
|
10341
|
+
const createTableEditMenuProvider = (strings) => {
|
10342
|
+
return roosterjsReact.createContextMenuProvider('tableEdit', tableActions, tableContextMenuStrings(strings !== null && strings !== void 0 ? strings : {}), (editor, node) => !!getEditingTable(editor, node));
|
10343
|
+
};
|
10344
|
+
const getEditingTable = (editor, node) => {
|
10345
|
+
const td = editor.getElementAtCursor('TD,TH', node);
|
10346
|
+
const table = td && editor.getElementAtCursor('table', td);
|
10347
|
+
return (table === null || table === void 0 ? void 0 : table.isContentEditable) ? { table, td } : null;
|
10348
|
+
};
|
10349
|
+
|
9932
10350
|
// Copyright (c) Microsoft Corporation.
|
9933
10351
|
// Licensed under the MIT License.
|
9934
10352
|
/**
|
@@ -9959,13 +10377,12 @@ const RichTextEditor = React.forwardRef((props, ref) => {
|
|
9959
10377
|
}, []);
|
9960
10378
|
const editorCreator = React.useCallback((div, options) => {
|
9961
10379
|
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
10380
|
return editor.current;
|
9968
|
-
},
|
10381
|
+
},
|
10382
|
+
// trigger force editor reset when strings are changed to update context menu strings
|
10383
|
+
// see RosterJS documentation for 'editorCreator' for more details
|
10384
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
10385
|
+
[strings]);
|
9969
10386
|
const placeholderPlugin = React.useMemo(() => {
|
9970
10387
|
return new roosterjsEditorPlugins.Watermark('');
|
9971
10388
|
}, []);
|
@@ -9975,12 +10392,15 @@ const RichTextEditor = React.forwardRef((props, ref) => {
|
|
9975
10392
|
}
|
9976
10393
|
}, [placeholderPlugin, placeholderText]);
|
9977
10394
|
const plugins = React.useMemo(() => {
|
10395
|
+
// contextPlugin and tableEditMenuProvider allow to show insert/delete menu for the table
|
10396
|
+
const contextPlugin = roosterjsReact.createContextMenuPlugin();
|
10397
|
+
const tableEditMenuProvider = createTableEditMenuProvider(strings);
|
9978
10398
|
const contentEdit = new roosterjsEditorPlugins.ContentEdit();
|
9979
10399
|
const updateContentPlugin = roosterjsReact.createUpdateContentPlugin(roosterjsReact.UpdateMode.OnContentChangedEvent | roosterjsReact.UpdateMode.OnUserInput, (content) => {
|
9980
10400
|
onChange && onChange(content);
|
9981
10401
|
});
|
9982
|
-
return [contentEdit, placeholderPlugin, updateContentPlugin, ribbonPlugin];
|
9983
|
-
}, [onChange, placeholderPlugin, ribbonPlugin]);
|
10402
|
+
return [contentEdit, placeholderPlugin, updateContentPlugin, ribbonPlugin, contextPlugin, tableEditMenuProvider];
|
10403
|
+
}, [onChange, placeholderPlugin, ribbonPlugin, strings]);
|
9984
10404
|
const ribbon = React.useMemo(() => {
|
9985
10405
|
const buttons = ribbonButtons(theme);
|
9986
10406
|
return (React.createElement(roosterjsReact.Ribbon, { styles: ribbonStyle, buttons: buttons, plugin: ribbonPlugin, overflowButtonProps: {
|
@@ -9992,10 +10412,18 @@ const RichTextEditor = React.forwardRef((props, ref) => {
|
|
9992
10412
|
}
|
9993
10413
|
}, strings: ribbonButtonsStrings(strings), "data-testid": 'rich-text-editor-ribbon' }));
|
9994
10414
|
}, [strings, ribbonPlugin, theme]);
|
10415
|
+
const defaultFormat = React.useMemo(() => {
|
10416
|
+
// without setting any styles, text input is not handled properly for tables (when insert or paste one in the editor)
|
10417
|
+
// because of https://github.com/microsoft/roosterjs/blob/14dbb947e3ae94580109cbd05e48ceb05327c4dc/packages/roosterjs-editor-core/lib/corePlugins/TypeInContainerPlugin.ts#L75
|
10418
|
+
// this issue is fixed for content model package
|
10419
|
+
return {
|
10420
|
+
backgroundColor: 'transparent'
|
10421
|
+
};
|
10422
|
+
}, []);
|
9995
10423
|
return (React.createElement("div", { "data-testid": 'rich-text-editor-wrapper' },
|
9996
10424
|
showRichTextEditorFormatting && ribbon,
|
9997
10425
|
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,
|
10426
|
+
React.createElement(roosterjsReact.Rooster, { defaultFormat: defaultFormat, initialContent: initialContent, inDarkMode: isDarkThemed(theme), plugins: plugins, className: richTextEditorStyle(props.styles), editorCreator: editorCreator,
|
9999
10427
|
// TODO: confirm the color during inline images implementation
|
10000
10428
|
imageSelectionBorderColor: 'blue',
|
10001
10429
|
// doNotAdjustEditorColor is used to fix the default background color for Rooster component
|
@@ -10281,12 +10709,20 @@ const RichTextSendBox = (props) => {
|
|
10281
10709
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
10282
10710
|
const onRenderFileUploads = React.useCallback(() => {
|
10283
10711
|
return (React.createElement(react.Stack, { className: attachmentUploadCardsStyles },
|
10284
|
-
React.createElement(
|
10285
|
-
|
10286
|
-
|
10287
|
-
|
10288
|
-
|
10289
|
-
|
10712
|
+
React.createElement(FluentV9ThemeProvider, { v8Theme: theme },
|
10713
|
+
React.createElement(_AttachmentUploadCards, { activeFileUploads: activeFileUploads, onCancelFileUpload: onCancelFileUpload, strings: {
|
10714
|
+
removeAttachment: strings.removeAttachment,
|
10715
|
+
uploading: strings.uploading,
|
10716
|
+
uploadCompleted: strings.uploadCompleted
|
10717
|
+
} }))));
|
10718
|
+
}, [
|
10719
|
+
activeFileUploads,
|
10720
|
+
onCancelFileUpload,
|
10721
|
+
strings.removeAttachment,
|
10722
|
+
strings.uploadCompleted,
|
10723
|
+
strings.uploading,
|
10724
|
+
theme
|
10725
|
+
]);
|
10290
10726
|
const sendButton = React.useMemo(() => {
|
10291
10727
|
return (React.createElement(InputBoxButton, { onRenderIcon: onRenderSendIcon, onClick: (e) => {
|
10292
10728
|
sendMessageOnClick();
|
@@ -10872,7 +11308,7 @@ const LiveMessage = (props) => (React.createElement(AnnouncerContext.Consumer, n
|
|
10872
11308
|
const MessageStatusIcon = (props) => {
|
10873
11309
|
const { shouldAnnounce, iconName, iconClassName, ariaLabel } = props;
|
10874
11310
|
return (React.createElement(React.Fragment, null,
|
10875
|
-
ariaLabel && React.createElement(LiveMessage, { message: ariaLabel, ariaLive: "polite" }),
|
11311
|
+
ariaLabel && shouldAnnounce && React.createElement(LiveMessage, { message: ariaLabel, ariaLive: "polite" }),
|
10876
11312
|
React.createElement("div", {
|
10877
11313
|
// make icon accessible
|
10878
11314
|
tabIndex: 0 },
|
@@ -11663,15 +12099,6 @@ const processHtmlToReact = (props) => {
|
|
11663
12099
|
|
11664
12100
|
// Copyright (c) Microsoft Corporation.
|
11665
12101
|
// Licensed under the MIT License.
|
11666
|
-
var __awaiter$C = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
11667
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
11668
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
11669
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
11670
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
11671
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
11672
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
11673
|
-
});
|
11674
|
-
};
|
11675
12102
|
const attachmentDownloadCardsStyle = {
|
11676
12103
|
marginTop: '0.25rem'
|
11677
12104
|
};
|
@@ -11680,66 +12107,94 @@ const attachmentDownloadCardsStyle = {
|
|
11680
12107
|
*/
|
11681
12108
|
const _AttachmentDownloadCards = (props) => {
|
11682
12109
|
var _a, _b;
|
11683
|
-
const {
|
11684
|
-
const [showSpinner, setShowSpinner] = React.useState(false);
|
12110
|
+
const { attachments, message } = props;
|
11685
12111
|
const localeStrings = useLocaleStringsTrampoline();
|
12112
|
+
const getMenuActions = React.useCallback((attachment, localeStrings, message, action) => {
|
12113
|
+
const defaultMenuActions = getDefaultMenuActions(localeStrings, message);
|
12114
|
+
try {
|
12115
|
+
const actions = action === null || action === void 0 ? void 0 : action(attachment, message);
|
12116
|
+
if (actions && actions.length > 0) {
|
12117
|
+
return actions;
|
12118
|
+
}
|
12119
|
+
else {
|
12120
|
+
return defaultMenuActions;
|
12121
|
+
}
|
12122
|
+
}
|
12123
|
+
catch (error) {
|
12124
|
+
return defaultMenuActions;
|
12125
|
+
}
|
12126
|
+
}, []);
|
11686
12127
|
const downloadAttachmentButtonString = React.useMemo(() => () => {
|
11687
12128
|
var _a, _b;
|
11688
12129
|
return (_b = (_a = props.strings) === null || _a === void 0 ? void 0 : _a.downloadAttachment) !== null && _b !== void 0 ? _b : localeStrings.downloadAttachment;
|
11689
12130
|
}, [(_a = props.strings) === null || _a === void 0 ? void 0 : _a.downloadAttachment, localeStrings.downloadAttachment]);
|
11690
|
-
const isShowDownloadIcon = React.useCallback((attachment) => {
|
11691
|
-
var _a;
|
11692
|
-
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11693
|
-
return ((_a = attachment.payload) === null || _a === void 0 ? void 0 : _a.teamsFileAttachment) !== 'true';
|
11694
|
-
}, []);
|
11695
12131
|
const attachmentCardGroupDescription = React.useMemo(() => () => {
|
11696
12132
|
var _a, _b, _c;
|
11697
|
-
const
|
12133
|
+
const attachmentGroupLocaleString = (_b = (_a = props.strings) === null || _a === void 0 ? void 0 : _a.attachmentCardGroupMessage) !== null && _b !== void 0 ? _b : localeStrings.attachmentCardGroupMessage;
|
11698
12134
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11699
|
-
return _formatString(
|
11700
|
-
attachmentCount: `${(_c =
|
12135
|
+
return _formatString(attachmentGroupLocaleString, {
|
12136
|
+
attachmentCount: `${(_c = attachments === null || attachments === void 0 ? void 0 : attachments.length) !== null && _c !== void 0 ? _c : 0}`
|
11701
12137
|
});
|
11702
|
-
}, [(_b = props.strings) === null || _b === void 0 ? void 0 : _b.attachmentCardGroupMessage, localeStrings.attachmentCardGroupMessage,
|
11703
|
-
|
11704
|
-
if (!props.downloadHandler) {
|
11705
|
-
window.open(file.url, '_blank', 'noopener,noreferrer');
|
11706
|
-
}
|
11707
|
-
else {
|
11708
|
-
setShowSpinner(true);
|
11709
|
-
try {
|
11710
|
-
const response = yield props.downloadHandler(userId, file);
|
11711
|
-
setShowSpinner(false);
|
11712
|
-
if (response instanceof URL) {
|
11713
|
-
window.open(response.toString(), '_blank', 'noopener,noreferrer');
|
11714
|
-
}
|
11715
|
-
else {
|
11716
|
-
props.onDownloadErrorMessage && props.onDownloadErrorMessage(response.errorMessage);
|
11717
|
-
}
|
11718
|
-
}
|
11719
|
-
finally {
|
11720
|
-
setShowSpinner(false);
|
11721
|
-
}
|
11722
|
-
}
|
11723
|
-
}), [props]);
|
11724
|
-
if (!fileMetadata || fileMetadata.length === 0 || !fileMetadata) {
|
12138
|
+
}, [(_b = props.strings) === null || _b === void 0 ? void 0 : _b.attachmentCardGroupMessage, localeStrings.attachmentCardGroupMessage, attachments]);
|
12139
|
+
if (!attachments || attachments.length === 0 || !attachments) {
|
11725
12140
|
return React.createElement(React.Fragment, null);
|
11726
12141
|
}
|
11727
|
-
return (React.createElement("div", { style: attachmentDownloadCardsStyle, "data-ui-id": "
|
11728
|
-
React.createElement(_AttachmentCardGroup, { ariaLabel: attachmentCardGroupDescription() },
|
11729
|
-
|
11730
|
-
React.createElement(_AttachmentCard, {
|
12142
|
+
return (React.createElement("div", { style: attachmentDownloadCardsStyle, "data-ui-id": "attachment-download-card-group" },
|
12143
|
+
React.createElement(_AttachmentCardGroup, { ariaLabel: attachmentCardGroupDescription() }, attachments &&
|
12144
|
+
attachments.map((attachment) => (React.createElement(react.TooltipHost, { content: downloadAttachmentButtonString(), key: attachment.name },
|
12145
|
+
React.createElement(_AttachmentCard, { attachment: attachment, key: attachment.id, menuActions: getMenuActions(attachment, localeStrings, message, props.actionsForAttachment), onActionHandlerFailed: props.onActionHandlerFailed })))))));
|
11731
12146
|
};
|
11732
12147
|
/**
|
11733
12148
|
* @private
|
11734
12149
|
*/
|
11735
|
-
const DownloadIconTrampoline = () => {
|
11736
|
-
// @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload)
|
11737
|
-
return React.createElement(reactIcons.ArrowDownload20Regular, { "data-ui-id": 'file-download-card-download-icon' });
|
11738
|
-
};
|
11739
12150
|
const useLocaleStringsTrampoline = () => {
|
11740
12151
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11741
12152
|
return useLocale$1().strings.messageThread;
|
11742
12153
|
};
|
12154
|
+
/**
|
12155
|
+
* @private
|
12156
|
+
*/
|
12157
|
+
const getDefaultMenuActions = (locale, chatMessage) => {
|
12158
|
+
var _a;
|
12159
|
+
// if message is sent by a Teams user, we need to use a different icon ("open")
|
12160
|
+
if ((_a = chatMessage === null || chatMessage === void 0 ? void 0 : chatMessage.senderId) === null || _a === void 0 ? void 0 : _a.includes('8:orgid:')) {
|
12161
|
+
return [
|
12162
|
+
Object.assign(Object.assign({}, defaultAttachmentMenuAction), { name: locale.openAttachment, icon: React.createElement(react.Icon, { iconName: "OpenAttachment" }) })
|
12163
|
+
];
|
12164
|
+
}
|
12165
|
+
// otherwise, use the default icon ("download")
|
12166
|
+
return [
|
12167
|
+
Object.assign(Object.assign({}, defaultAttachmentMenuAction), { name: locale.downloadAttachment })
|
12168
|
+
];
|
12169
|
+
};
|
12170
|
+
/**
|
12171
|
+
* @beta
|
12172
|
+
*
|
12173
|
+
* The default menu action for downloading attachments. This action will open the attachment's URL in a new tab.
|
12174
|
+
*/
|
12175
|
+
const defaultAttachmentMenuAction = {
|
12176
|
+
/**
|
12177
|
+
*
|
12178
|
+
* name is used for aria-label only when there's one button. For multiple buttons, it's used as a label.
|
12179
|
+
* by default it's an unlocalized string when this is used as a imported constant,
|
12180
|
+
* but you can overwrite it with your own localized string.
|
12181
|
+
*
|
12182
|
+
* i.e. defaultAttachmentMenuAction.name = localize('Download');
|
12183
|
+
*
|
12184
|
+
* when no action is provided, the UI library will overwrite this name
|
12185
|
+
* with a localized string this string when it's used in the UI.
|
12186
|
+
*/
|
12187
|
+
name: 'Download',
|
12188
|
+
// this is the icon shown on the right of the attachment card
|
12189
|
+
icon: React.createElement(react.Icon, { iconName: "DownloadAttachment", "data-ui-id": "attachment-download-card-download-icon" }),
|
12190
|
+
// this is the action that runs when the icon is clicked
|
12191
|
+
onClick: (attachment) => {
|
12192
|
+
return new Promise((resolve) => {
|
12193
|
+
window.open(attachment.url, '_blank', 'noopener,noreferrer');
|
12194
|
+
resolve();
|
12195
|
+
});
|
12196
|
+
}
|
12197
|
+
};
|
11743
12198
|
|
11744
12199
|
// Copyright (c) Microsoft Corporation.
|
11745
12200
|
// Licensed under the MIT License.
|
@@ -11834,12 +12289,18 @@ const getFluentUIAttachedValue = (messageAttachedStatus) => {
|
|
11834
12289
|
* Get the message bubble content for the message.
|
11835
12290
|
*/
|
11836
12291
|
function getMessageBubbleContent(message, strings, userId, inlineImageOptions,
|
11837
|
-
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11838
|
-
onRenderFileDownloads,
|
11839
12292
|
/* @conditional-compile-remove(mention) */
|
11840
12293
|
mentionDisplayOptions,
|
11841
12294
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11842
|
-
|
12295
|
+
/**
|
12296
|
+
* Optional callback to render message attachments in the message component.
|
12297
|
+
*/
|
12298
|
+
onRenderAttachmentDownloads,
|
12299
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12300
|
+
/**
|
12301
|
+
* Optional callback to define custom actions for attachments.
|
12302
|
+
*/
|
12303
|
+
actionsForAttachment) {
|
11843
12304
|
/* @conditional-compile-remove(data-loss-prevention) */
|
11844
12305
|
if (message.messageType === 'blocked') {
|
11845
12306
|
return (React.createElement("div", { tabIndex: 0 },
|
@@ -11849,27 +12310,27 @@ fileDownloadHandler) {
|
|
11849
12310
|
React.createElement(ChatMessageContent, { message: message, strings: strings,
|
11850
12311
|
/* @conditional-compile-remove(mention) */
|
11851
12312
|
mentionDisplayOptions: mentionDisplayOptions, inlineImageOptions: inlineImageOptions }),
|
11852
|
-
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11853
|
-
?
|
11854
|
-
:
|
11855
|
-
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12313
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ onRenderAttachmentDownloads
|
12314
|
+
? onRenderAttachmentDownloads(userId, message)
|
12315
|
+
: defaultOnRenderAttachmentDownloads(message, strings,
|
12316
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12317
|
+
actionsForAttachment)));
|
11856
12318
|
}
|
11857
12319
|
/**
|
11858
|
-
* Default component for rendering
|
12320
|
+
* Default component for rendering attachment downloads.
|
11859
12321
|
*/
|
11860
12322
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11861
|
-
const
|
11862
|
-
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11863
|
-
fileDownloadHandler) => {
|
12323
|
+
const defaultOnRenderAttachmentDownloads = (message, strings, actionsForAttachment) => {
|
11864
12324
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11865
|
-
return (React.createElement(_AttachmentDownloadCards, {
|
12325
|
+
return (React.createElement(_AttachmentDownloadCards, { message: message,
|
11866
12326
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11867
|
-
|
12327
|
+
attachments: message.files || [],
|
11868
12328
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11869
|
-
|
12329
|
+
actionsForAttachment: actionsForAttachment,
|
11870
12330
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11871
12331
|
strings: {
|
11872
12332
|
downloadAttachment: strings.downloadAttachment,
|
12333
|
+
openAttachment: strings.openAttachment,
|
11873
12334
|
attachmentCardGroupMessage: strings.attachmentCardGroupMessage
|
11874
12335
|
} }));
|
11875
12336
|
};
|
@@ -11910,13 +12371,13 @@ const MessageBubble$1 = (props) => {
|
|
11910
12371
|
const ids = useIdentifiers();
|
11911
12372
|
const theme = useTheme();
|
11912
12373
|
const locale = useLocale$1();
|
11913
|
-
const { userId, message, onRemoveClick, onResendClick, disableEditing, showDate, messageContainerStyle, strings, onEditClick, remoteParticipantsCount = 0, onRenderAvatar, showMessageStatus, messageStatus,
|
12374
|
+
const { userId, message, onRemoveClick, onResendClick, disableEditing, showDate, messageContainerStyle, strings, onEditClick, remoteParticipantsCount = 0, onRenderAvatar, showMessageStatus, messageStatus, inlineImageOptions,
|
12375
|
+
/* @conditional-compile-remove(mention) */
|
12376
|
+
mentionDisplayOptions, onDisplayDateTimeString,
|
11914
12377
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11915
|
-
|
12378
|
+
onRenderAttachmentDownloads,
|
11916
12379
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11917
|
-
|
11918
|
-
/* @conditional-compile-remove(mention) */
|
11919
|
-
mentionDisplayOptions, onDisplayDateTimeString } = props;
|
12380
|
+
actionsForAttachment } = props;
|
11920
12381
|
const formattedTimestamp = React.useMemo(() => {
|
11921
12382
|
const defaultTimeStamp = message.createdOn
|
11922
12383
|
? generateDefaultTimestamp(message.createdOn, showDate, strings)
|
@@ -11969,18 +12430,18 @@ const MessageBubble$1 = (props) => {
|
|
11969
12430
|
}, [message, messageStatus, strings.editedTag, strings.failToSendTag, theme]);
|
11970
12431
|
const getContent = React.useCallback(() => {
|
11971
12432
|
return getMessageBubbleContent(message, strings, userId, inlineImageOptions,
|
11972
|
-
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11973
|
-
onRenderFileDownloads,
|
11974
12433
|
/* @conditional-compile-remove(mention) */
|
11975
12434
|
mentionDisplayOptions,
|
11976
12435
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11977
|
-
|
12436
|
+
onRenderAttachmentDownloads,
|
12437
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12438
|
+
actionsForAttachment);
|
11978
12439
|
}, [
|
11979
|
-
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12440
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ actionsForAttachment,
|
11980
12441
|
inlineImageOptions,
|
11981
12442
|
/* @conditional-compile-remove(mention) */ mentionDisplayOptions,
|
11982
12443
|
message,
|
11983
|
-
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12444
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ onRenderAttachmentDownloads,
|
11984
12445
|
strings,
|
11985
12446
|
userId
|
11986
12447
|
]);
|
@@ -12118,17 +12579,18 @@ const FluentChatMyMessageComponent = (props) => {
|
|
12118
12579
|
/* @conditional-compile-remove(date-time-customization) */
|
12119
12580
|
onDisplayDateTimeString, inlineImageOptions,
|
12120
12581
|
/* @conditional-compile-remove(mention) */
|
12121
|
-
mentionOptions,
|
12582
|
+
mentionOptions, userId, defaultStatusRenderer, statusToRender,
|
12122
12583
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12123
|
-
|
12584
|
+
actionsForAttachment,
|
12124
12585
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12125
|
-
|
12586
|
+
onRenderAttachmentDownloads } = props;
|
12126
12587
|
const chatMessageRenderStyles = useChatMessageRenderStyles();
|
12127
|
-
|
12588
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12589
|
+
const onRenderAttachmentDownloadsMemo = React.useMemo(() => {
|
12128
12590
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12129
|
-
return
|
12591
|
+
return onRenderAttachmentDownloads;
|
12130
12592
|
}, [
|
12131
|
-
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12593
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ onRenderAttachmentDownloads
|
12132
12594
|
]);
|
12133
12595
|
// To rerender the defaultChatMessageRenderer if app running across days(every new day chat time stamp
|
12134
12596
|
// needs to be regenerated), the dependency on "new Date().toDateString()"" is added.
|
@@ -12137,7 +12599,7 @@ const FluentChatMyMessageComponent = (props) => {
|
|
12137
12599
|
/* @conditional-compile-remove(data-loss-prevention) */ messageProps.message.messageType === 'blocked') {
|
12138
12600
|
return (React.createElement(ChatMyMessageComponent, Object.assign({}, messageProps, {
|
12139
12601
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12140
|
-
|
12602
|
+
onRenderAttachmentDownloads: onRenderAttachmentDownloadsMemo,
|
12141
12603
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12142
12604
|
strings: messageProps.strings, message: messageProps.message, userId: userId, remoteParticipantsCount: participantCount ? participantCount - 1 : 0, shouldOverlapAvatarAndMessage: shouldOverlapAvatarAndMessage, onRenderAvatar: onRenderAvatar, showMessageStatus: showMessageStatus, messageStatus: messageProps.message.status, onActionButtonClick: onActionButtonClick,
|
12143
12605
|
/* @conditional-compile-remove(date-time-customization) */
|
@@ -12145,13 +12607,12 @@ const FluentChatMyMessageComponent = (props) => {
|
|
12145
12607
|
/* @conditional-compile-remove(mention) */
|
12146
12608
|
mentionOptions: mentionOptions,
|
12147
12609
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12148
|
-
|
12610
|
+
actionsForAttachment: actionsForAttachment })));
|
12149
12611
|
}
|
12150
12612
|
return React.createElement(React.Fragment, null);
|
12151
12613
|
}, [
|
12152
12614
|
onActionButtonClick,
|
12153
12615
|
onRenderAvatar,
|
12154
|
-
onRenderFileDownloadsMemo,
|
12155
12616
|
participantCount,
|
12156
12617
|
shouldOverlapAvatarAndMessage,
|
12157
12618
|
showMessageStatus,
|
@@ -12162,7 +12623,9 @@ const FluentChatMyMessageComponent = (props) => {
|
|
12162
12623
|
/* @conditional-compile-remove(mention) */
|
12163
12624
|
mentionOptions,
|
12164
12625
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12165
|
-
|
12626
|
+
onRenderAttachmentDownloadsMemo,
|
12627
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12628
|
+
actionsForAttachment,
|
12166
12629
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
12167
12630
|
new Date().toDateString()
|
12168
12631
|
]);
|
@@ -12228,9 +12691,9 @@ const MessageBubble = (props) => {
|
|
12228
12691
|
const locale = useLocale$1();
|
12229
12692
|
const { userId, message, showDate, messageContainerStyle, strings,
|
12230
12693
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12231
|
-
|
12694
|
+
onRenderAttachmentDownloads, inlineImageOptions, shouldOverlapAvatarAndMessage,
|
12232
12695
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12233
|
-
|
12696
|
+
actionsForAttachment,
|
12234
12697
|
/* @conditional-compile-remove(mention) */
|
12235
12698
|
mentionDisplayOptions, onDisplayDateTimeString } = props;
|
12236
12699
|
const formattedTimestamp = React.useMemo(() => {
|
@@ -12247,18 +12710,18 @@ const MessageBubble = (props) => {
|
|
12247
12710
|
}, [strings.editedTag, theme, message]);
|
12248
12711
|
const getContent = React.useCallback(() => {
|
12249
12712
|
return getMessageBubbleContent(message, strings, userId, inlineImageOptions,
|
12250
|
-
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12251
|
-
onRenderFileDownloads,
|
12252
12713
|
/* @conditional-compile-remove(mention) */
|
12253
12714
|
mentionDisplayOptions,
|
12254
12715
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12255
|
-
|
12716
|
+
onRenderAttachmentDownloads,
|
12717
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12718
|
+
actionsForAttachment);
|
12256
12719
|
}, [
|
12257
|
-
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12720
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ actionsForAttachment,
|
12258
12721
|
inlineImageOptions,
|
12259
12722
|
/* @conditional-compile-remove(mention) */ mentionDisplayOptions,
|
12260
12723
|
message,
|
12261
|
-
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12724
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ onRenderAttachmentDownloads,
|
12262
12725
|
strings,
|
12263
12726
|
userId
|
12264
12727
|
]);
|
@@ -12309,18 +12772,16 @@ const FluentChatMessageComponent = (props) => {
|
|
12309
12772
|
/* @conditional-compile-remove(date-time-customization) */
|
12310
12773
|
onDisplayDateTimeString, inlineImageOptions,
|
12311
12774
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12312
|
-
|
12775
|
+
actionsForAttachment, userId,
|
12313
12776
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12314
|
-
|
12777
|
+
onRenderAttachmentDownloads,
|
12315
12778
|
/* @conditional-compile-remove(mention) */
|
12316
12779
|
mentionOptions } = props;
|
12317
12780
|
const chatMessageRenderStyles = useChatMessageRenderStyles();
|
12318
|
-
|
12319
|
-
|
12320
|
-
return
|
12321
|
-
}, [
|
12322
|
-
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ onRenderFileDownloads
|
12323
|
-
]);
|
12781
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12782
|
+
const onRenderAttachmentDownloadsMemo = React.useMemo(() => {
|
12783
|
+
return onRenderAttachmentDownloads;
|
12784
|
+
}, [onRenderAttachmentDownloads]);
|
12324
12785
|
// To rerender the defaultChatMessageRenderer if app running across days(every new day chat time stamp
|
12325
12786
|
// needs to be regenerated), the dependency on "new Date().toDateString()"" is added.
|
12326
12787
|
const defaultChatMessageRenderer = React.useCallback((messageProps) => {
|
@@ -12328,30 +12789,27 @@ const FluentChatMessageComponent = (props) => {
|
|
12328
12789
|
/* @conditional-compile-remove(data-loss-prevention) */ messageProps.message.messageType === 'blocked') {
|
12329
12790
|
return (React.createElement(ChatMessageComponentAsMessageBubble, Object.assign({}, messageProps, {
|
12330
12791
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12331
|
-
|
12332
|
-
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12333
|
-
strings: messageProps.strings, message: messageProps.message, userId: userId, shouldOverlapAvatarAndMessage: shouldOverlapAvatarAndMessage,
|
12792
|
+
onRenderAttachmentDownloads: onRenderAttachmentDownloadsMemo, strings: messageProps.strings, message: messageProps.message, userId: userId, shouldOverlapAvatarAndMessage: shouldOverlapAvatarAndMessage,
|
12334
12793
|
/* @conditional-compile-remove(date-time-customization) */
|
12335
12794
|
onDisplayDateTimeString: onDisplayDateTimeString, inlineImageOptions: inlineImageOptions,
|
12336
12795
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12337
|
-
|
12796
|
+
actionsForAttachment: actionsForAttachment,
|
12338
12797
|
/* @conditional-compile-remove(mention) */
|
12339
12798
|
mentionDisplayOptions: mentionOptions === null || mentionOptions === void 0 ? void 0 : mentionOptions.displayOptions })));
|
12340
12799
|
}
|
12341
12800
|
return React.createElement(React.Fragment, null);
|
12342
12801
|
}, [
|
12343
|
-
|
12344
|
-
|
12802
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12803
|
+
onRenderAttachmentDownloadsMemo,
|
12345
12804
|
userId,
|
12805
|
+
shouldOverlapAvatarAndMessage,
|
12346
12806
|
/* @conditional-compile-remove(date-time-customization) */
|
12347
12807
|
onDisplayDateTimeString,
|
12348
12808
|
inlineImageOptions,
|
12349
12809
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12350
|
-
|
12810
|
+
actionsForAttachment,
|
12351
12811
|
/* @conditional-compile-remove(mention) */
|
12352
|
-
mentionOptions
|
12353
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
12354
|
-
new Date().toDateString()
|
12812
|
+
mentionOptions === null || mentionOptions === void 0 ? void 0 : mentionOptions.displayOptions
|
12355
12813
|
]);
|
12356
12814
|
const messageRenderer = React.useCallback((messageProps) => {
|
12357
12815
|
return onRenderMessage === undefined
|
@@ -12621,7 +13079,9 @@ const MessageThreadWrapper = (props) => {
|
|
12621
13079
|
/* @conditional-compile-remove(mention) */
|
12622
13080
|
mentionOptions, inlineImageOptions,
|
12623
13081
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12624
|
-
|
13082
|
+
attachmentOptions,
|
13083
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
13084
|
+
onRenderAttachmentDownloads } = props;
|
12625
13085
|
// We need this state to wait for one tick and scroll to bottom after messages have been initialized.
|
12626
13086
|
// Otherwise chatScrollDivRef.current.clientHeight is wrong if we scroll to bottom before messages are initialized.
|
12627
13087
|
const [chatMessagesInitialized, setChatMessagesInitialized] = React.useState(false);
|
@@ -12948,22 +13408,24 @@ const MessageThreadWrapper = (props) => {
|
|
12948
13408
|
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
13409
|
React.createElement(LiveAnnouncer, null,
|
12950
13410
|
React.createElement(FluentV9ThemeProvider, { v8Theme: theme },
|
12951
|
-
latestDeletedMessageId && (React.createElement(Announcer$1, { key: latestDeletedMessageId, announcementString: deletedMessageAriaLabel, ariaLive: 'assertive' })),
|
12952
13411
|
React.createElement(reactChat.Chat
|
12953
13412
|
// styles?.chatContainer used in className and style prop as style prop can't handle CSS selectors
|
12954
13413
|
, {
|
12955
13414
|
// 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)) },
|
12957
|
-
|
12958
|
-
|
12959
|
-
|
12960
|
-
|
12961
|
-
|
12962
|
-
|
12963
|
-
|
12964
|
-
|
12965
|
-
|
12966
|
-
|
13415
|
+
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)) },
|
13416
|
+
latestDeletedMessageId && (React.createElement(Announcer$1, { key: latestDeletedMessageId, announcementString: deletedMessageAriaLabel, ariaLive: 'polite' })),
|
13417
|
+
messagesToDisplay.map((message) => {
|
13418
|
+
var _a;
|
13419
|
+
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,
|
13420
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
13421
|
+
actionsForAttachment: (_a = attachmentOptions === null || attachmentOptions === void 0 ? void 0 : attachmentOptions.downloadOptions) === null || _a === void 0 ? void 0 : _a.actionsForAttachment, inlineImageOptions: inlineImageOptions,
|
13422
|
+
/* @conditional-compile-remove(date-time-customization) */
|
13423
|
+
onDisplayDateTimeString: onDisplayDateTimeString,
|
13424
|
+
/* @conditional-compile-remove(mention) */
|
13425
|
+
mentionOptions: mentionOptions,
|
13426
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
13427
|
+
onRenderAttachmentDownloads: onRenderAttachmentDownloads })));
|
13428
|
+
}))))));
|
12967
13429
|
};
|
12968
13430
|
const MemoChatMessageComponentWrapper = React.memo((obj) => {
|
12969
13431
|
return React.createElement(ChatMessageComponentWrapper, Object.assign({}, obj));
|
@@ -16779,7 +17241,7 @@ const OverflowGallery = (props) => {
|
|
16779
17241
|
*/
|
16780
17242
|
const DefaultLayout = (props) => {
|
16781
17243
|
const { remoteParticipants = [], localParticipant, dominantSpeakers, localVideoComponent, screenShareComponent, onRenderRemoteParticipant, styles, maxRemoteVideoStreams, parentWidth, parentHeight, pinnedParticipantUserIds = [], overflowGalleryPosition = 'horizontalBottom',
|
16782
|
-
/* @conditional-compile-remove(spotlight) */ spotlightedParticipantUserIds } = props;
|
17244
|
+
/* @conditional-compile-remove(spotlight) */ spotlightedParticipantUserIds = [] } = props;
|
16783
17245
|
const isNarrow = parentWidth ? isNarrowWidth(parentWidth) : false;
|
16784
17246
|
const isShort = parentHeight ? isShortHeight(parentHeight) : false;
|
16785
17247
|
// This is for tracking the number of children in the first page of overflow gallery.
|
@@ -16821,7 +17283,7 @@ const DefaultLayout = (props) => {
|
|
16821
17283
|
: (_b = p.videoStream) === null || _b === void 0 ? void 0 : _b.isAvailable);
|
16822
17284
|
});
|
16823
17285
|
if (localVideoComponent) {
|
16824
|
-
if (screenShareComponent) {
|
17286
|
+
if (screenShareComponent || /* @conditional-compile-remove(spotlight) */ spotlightedParticipantUserIds.length > 0) {
|
16825
17287
|
overflowGalleryTiles = [localVideoComponent].concat(overflowGalleryTiles);
|
16826
17288
|
}
|
16827
17289
|
else {
|
@@ -17855,7 +18317,8 @@ const LARGE_GALLERY_PARTICIPANT_CAP = 48;
|
|
17855
18317
|
* @private
|
17856
18318
|
*/
|
17857
18319
|
const LargeGalleryLayout = (props) => {
|
17858
|
-
const { remoteParticipants = [], localParticipant, dominantSpeakers, localVideoComponent, screenShareComponent, onRenderRemoteParticipant, styles, maxRemoteVideoStreams, parentWidth, parentHeight, pinnedParticipantUserIds = [], overflowGalleryPosition = 'horizontalBottom'
|
18320
|
+
const { remoteParticipants = [], localParticipant, dominantSpeakers, localVideoComponent, screenShareComponent, onRenderRemoteParticipant, styles, maxRemoteVideoStreams, parentWidth, parentHeight, pinnedParticipantUserIds = [], overflowGalleryPosition = 'horizontalBottom',
|
18321
|
+
/* @conditional-compile-remove(spotlight) */ spotlightedParticipantUserIds = [] } = props;
|
17859
18322
|
const isNarrow = parentWidth ? isNarrowWidth(parentWidth) : false;
|
17860
18323
|
const isShort = parentHeight ? isShortHeight(parentHeight) : false;
|
17861
18324
|
const maxStreamsTrampoline = () => {
|
@@ -17877,7 +18340,8 @@ const LargeGalleryLayout = (props) => {
|
|
17877
18340
|
? childrenPerPage.current - ((pinnedParticipantUserIds.length + 1) % childrenPerPage.current)
|
17878
18341
|
: childrenPerPage.current,
|
17879
18342
|
pinnedParticipantUserIds,
|
17880
|
-
/* @conditional-compile-remove(large-gallery) */ layout: 'largeGallery'
|
18343
|
+
/* @conditional-compile-remove(large-gallery) */ layout: 'largeGallery',
|
18344
|
+
/* @conditional-compile-remove(spotlight) */ spotlightedParticipantUserIds
|
17881
18345
|
});
|
17882
18346
|
let activeVideoStreams = 0;
|
17883
18347
|
let gridTiles = gridParticipants.map((p) => {
|
@@ -17901,7 +18365,7 @@ const LargeGalleryLayout = (props) => {
|
|
17901
18365
|
: (_b = p.videoStream) === null || _b === void 0 ? void 0 : _b.isAvailable);
|
17902
18366
|
});
|
17903
18367
|
if (localVideoComponent) {
|
17904
|
-
if (screenShareComponent) {
|
18368
|
+
if (screenShareComponent || /* @conditional-compile-remove(spotlight) */ spotlightedParticipantUserIds.length > 0) {
|
17905
18369
|
overflowGalleryTiles = [localVideoComponent].concat(overflowGalleryTiles);
|
17906
18370
|
}
|
17907
18371
|
else {
|
@@ -20157,8 +20621,8 @@ const DialpadButton = (props) => {
|
|
20157
20621
|
const DialpadContainer = (props) => {
|
20158
20622
|
var _a, _b;
|
20159
20623
|
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());
|
20624
|
+
const { onSendDtmfTone, onClickDialpadButton, textFieldValue, onChange, showDeleteButton = true, longPressTrigger = 'mouseAndTouch', disableDtmfPlayback, dialpadMode = 'dialer', dtmfAudioContext } = props;
|
20625
|
+
const dtmfToneAudioContext = React.useRef(dtmfAudioContext ? dtmfAudioContext : new AudioContext());
|
20162
20626
|
const [plainTextValue, setPlainTextValue] = React.useState(textFieldValue !== null && textFieldValue !== void 0 ? textFieldValue : '');
|
20163
20627
|
const plainTextValuePreviousRenderValue = React.useRef(plainTextValue);
|
20164
20628
|
React.useEffect(() => {
|
@@ -22840,8 +23304,7 @@ const extractTeamsAttachmentsMetadata = (attachments) => {
|
|
22840
23304
|
id: attachment.id,
|
22841
23305
|
name: (_a = attachment.name) !== null && _a !== void 0 ? _a : '',
|
22842
23306
|
extension: contentType !== null && contentType !== void 0 ? contentType : '',
|
22843
|
-
url: extractAttachmentUrl(attachment)
|
22844
|
-
payload: { teamsFileAttachment: 'true' }
|
23307
|
+
url: extractAttachmentUrl(attachment)
|
22845
23308
|
});
|
22846
23309
|
}
|
22847
23310
|
});
|
@@ -24767,7 +25230,7 @@ const CallCompositeIcon = (props) => (React.createElement(react.FontIcon, Object
|
|
24767
25230
|
*/
|
24768
25231
|
const CallWithChatCompositeIcon = (props) => (React.createElement(react.FontIcon, Object.assign({}, props)));
|
24769
25232
|
|
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};
|
25233
|
+
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
25234
|
|
24772
25235
|
// Copyright (c) Microsoft Corporation.
|
24773
25236
|
// Licensed under the MIT License.
|
@@ -24838,7 +25301,7 @@ const FileUploadButton = (props) => {
|
|
24838
25301
|
} },
|
24839
25302
|
React.createElement(react.IconButton, { className: iconButtonClassName, ariaLabel: uploadFileButtonStringTrampoline() },
|
24840
25303
|
React.createElement(SendBoxAttachFileIconTrampoline, null))),
|
24841
|
-
React.createElement("input", { ref: inputRef, hidden: true, multiple: multiple, accept: accept, type: "file", onClick: (e) => {
|
25304
|
+
React.createElement("input", { ref: inputRef, hidden: true, multiple: multiple !== null && multiple !== void 0 ? multiple : true, accept: accept !== null && accept !== void 0 ? accept : '*', type: "file", onClick: (e) => {
|
24842
25305
|
// To ensure that `onChange` is fired even if the same file is picked again.
|
24843
25306
|
e.currentTarget.value = '';
|
24844
25307
|
}, onChange: (e) => {
|
@@ -25444,6 +25907,28 @@ const _createAzureCommunicationChatAdapterInner = (endpoint_1, userId_1, display
|
|
25444
25907
|
const adapter = yield createAzureCommunicationChatAdapterFromClient(chatClient, chatThreadClient);
|
25445
25908
|
return adapter;
|
25446
25909
|
});
|
25910
|
+
/**
|
25911
|
+
* This inner function to create ChatAdapterPromise in case when threadID is not avaialble.
|
25912
|
+
* ThreadId is a promise to allow for lazy initialization of the adapter.
|
25913
|
+
* @internal
|
25914
|
+
*/
|
25915
|
+
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') {
|
25916
|
+
if (!_isValidIdentifier(userId)) {
|
25917
|
+
throw new Error('Provided userId is invalid. Please provide valid identifier object.');
|
25918
|
+
}
|
25919
|
+
const chatClient = _createStatefulChatClientInner({
|
25920
|
+
userId,
|
25921
|
+
displayName,
|
25922
|
+
endpoint,
|
25923
|
+
credential
|
25924
|
+
}, undefined, telemetryImplementationHint);
|
25925
|
+
return threadId.then((threadId) => __awaiter$n(void 0, void 0, void 0, function* () {
|
25926
|
+
const chatThreadClient = yield chatClient.getChatThreadClient(threadId);
|
25927
|
+
yield chatClient.startRealtimeNotifications();
|
25928
|
+
const adapter = yield createAzureCommunicationChatAdapterFromClient(chatClient, chatThreadClient);
|
25929
|
+
return adapter;
|
25930
|
+
}));
|
25931
|
+
});
|
25447
25932
|
/**
|
25448
25933
|
* A custom React hook to simplify the creation of {@link ChatAdapter}.
|
25449
25934
|
*
|
@@ -26203,14 +26688,14 @@ const ChatScreenPeoplePane = (props) => {
|
|
26203
26688
|
/**
|
26204
26689
|
* @private
|
26205
26690
|
*/
|
26206
|
-
const
|
26207
|
-
const {
|
26691
|
+
const AttachmentDownloadErrorBar = (props) => {
|
26692
|
+
const { attachmentDownloadErrorMessage, onDismissDownloadErrorMessage } = props;
|
26208
26693
|
const messageBarIconProps = { iconName: 'ProtectedDocument' };
|
26209
|
-
if (
|
26694
|
+
if (attachmentDownloadErrorMessage !== '') {
|
26210
26695
|
return (React.createElement(react.Stack, { horizontal: true, horizontalAlign: "space-between", verticalAlign: "center" },
|
26211
26696
|
React.createElement(react.MessageBar, { messageBarType: react.MessageBarType.warning, onDismiss: () => {
|
26212
26697
|
onDismissDownloadErrorMessage();
|
26213
|
-
}, messageBarIconProps: messageBarIconProps },
|
26698
|
+
}, messageBarIconProps: messageBarIconProps }, attachmentDownloadErrorMessage)));
|
26214
26699
|
}
|
26215
26700
|
else {
|
26216
26701
|
return React.createElement(React.Fragment, null);
|
@@ -26253,7 +26738,7 @@ const useSelector$2 = (selector, selectorProps) => {
|
|
26253
26738
|
// Copyright (c) Microsoft Corporation.
|
26254
26739
|
// Licensed under the MIT License.
|
26255
26740
|
/* @conditional-compile-remove(rich-text-editor) */
|
26256
|
-
const RichTextSendBoxWrapper = React.lazy(() => Promise.resolve().then(function () { return require('./RichTextSendBoxWrapper-
|
26741
|
+
const RichTextSendBoxWrapper = React.lazy(() => Promise.resolve().then(function () { return require('./RichTextSendBoxWrapper-CH6WvEGZ.js'); }).then((module) => ({ default: module.RichTextSendBoxWrapper })));
|
26257
26742
|
/**
|
26258
26743
|
* @private
|
26259
26744
|
*/
|
@@ -26372,9 +26857,11 @@ const ChatScreen = (props) => {
|
|
26372
26857
|
fileSharing === null || fileSharing === void 0 ? void 0 : fileSharing.uploadHandler(userId, fileUploads);
|
26373
26858
|
}, [adapter, fileSharing, userId]);
|
26374
26859
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
26375
|
-
const
|
26860
|
+
const onRenderAttachmentDownloads = React.useCallback((userId, message) => (React.createElement(_AttachmentDownloadCards, { attachments: message.files, message: message,
|
26861
|
+
// temp walkaround until upload is refactored
|
26862
|
+
actionsForAttachment: fileSharing === null || fileSharing === void 0 ? void 0 : fileSharing.actionsForAttachment, onActionHandlerFailed: (errorMessage) => {
|
26376
26863
|
setDownloadErrorMessage(errorMessage);
|
26377
|
-
} })), [fileSharing === null || fileSharing === void 0 ? void 0 : fileSharing.
|
26864
|
+
} })), [fileSharing === null || fileSharing === void 0 ? void 0 : fileSharing.actionsForAttachment]);
|
26378
26865
|
const onInlineImageClicked = React.useCallback((attachmentId, messageId) => {
|
26379
26866
|
var _a, _b;
|
26380
26867
|
const message = adapter.getState().thread.chatMessages[messageId];
|
@@ -26463,10 +26950,11 @@ const ChatScreen = (props) => {
|
|
26463
26950
|
}
|
26464
26951
|
}, [overlayImageItem === null || overlayImageItem === void 0 ? void 0 : overlayImageItem.attachmentId]);
|
26465
26952
|
const AttachFileButton = React.useCallback(() => {
|
26953
|
+
var _a, _b;
|
26466
26954
|
if (!(fileSharing === null || fileSharing === void 0 ? void 0 : fileSharing.uploadHandler)) {
|
26467
26955
|
return null;
|
26468
26956
|
}
|
26469
|
-
return (React.createElement(FileUploadButtonWrapper, { accept: fileSharing === null || fileSharing === void 0 ? void 0 : fileSharing.accept, multiple: fileSharing === null || fileSharing === void 0 ? void 0 : fileSharing.multiple, onChange: fileUploadButtonOnChange }));
|
26957
|
+
return (React.createElement(FileUploadButtonWrapper, { accept: (_a = fileSharing === null || fileSharing === void 0 ? void 0 : fileSharing.accept) !== null && _a !== void 0 ? _a : '*', multiple: (_b = fileSharing === null || fileSharing === void 0 ? void 0 : fileSharing.multiple) !== null && _b !== void 0 ? _b : true, onChange: fileUploadButtonOnChange }));
|
26470
26958
|
}, [fileSharing === null || fileSharing === void 0 ? void 0 : fileSharing.accept, fileSharing === null || fileSharing === void 0 ? void 0 : fileSharing.multiple, fileSharing === null || fileSharing === void 0 ? void 0 : fileSharing.uploadHandler, fileUploadButtonOnChange]);
|
26471
26959
|
return (React.createElement(react.Stack, { className: chatContainer, grow: true },
|
26472
26960
|
(options === null || options === void 0 ? void 0 : options.topic) !== false && React.createElement(ChatHeader, Object.assign({}, headerProps)),
|
@@ -26474,12 +26962,12 @@ const ChatScreen = (props) => {
|
|
26474
26962
|
React.createElement(react.Stack, { className: chatWrapper, grow: true },
|
26475
26963
|
(options === null || options === void 0 ? void 0 : options.errorBar) !== false && React.createElement(ErrorBar, Object.assign({}, errorBarProps)),
|
26476
26964
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
26477
|
-
React.createElement(
|
26965
|
+
React.createElement(AttachmentDownloadErrorBar, { onDismissDownloadErrorMessage: React.useCallback(() => {
|
26478
26966
|
setDownloadErrorMessage('');
|
26479
|
-
}, []),
|
26967
|
+
}, []), attachmentDownloadErrorMessage: downloadErrorMessage || '' }),
|
26480
26968
|
React.createElement(MessageThread, Object.assign({}, messageThreadProps, { onRenderAvatar: onRenderAvatarCallback, onRenderMessage: onRenderMessage,
|
26481
26969
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
26482
|
-
|
26970
|
+
onRenderAttachmentDownloads: onRenderAttachmentDownloads, inlineImageOptions: inlineImageOptions, numberOfChatMessagesToReload: defaultNumberOfChatMessagesToReload, styles: messageThreadStyles })),
|
26483
26971
|
React.createElement(react.Stack, { className: react.mergeStyles(sendboxContainerStyles) },
|
26484
26972
|
React.createElement("div", { className: react.mergeStyles(typingIndicatorContainerStyles) }, onRenderTypingIndicator ? (onRenderTypingIndicator(typingIndicatorProps.typingUsers)) : (React.createElement(TypingIndicator, Object.assign({}, typingIndicatorProps, { styles: typingIndicatorStyles })))),
|
26485
26973
|
React.createElement(react.Stack, { horizontal: formFactor === 'mobile' },
|
@@ -26706,6 +27194,8 @@ const ACCESS_DENIED_TEAMS_MEETING_SUB_CODE = 5854;
|
|
26706
27194
|
const REMOTE_PSTN_USER_HUNG_UP = 560000;
|
26707
27195
|
const REMOVED_FROM_CALL_SUB_CODES = [5000, 5300, REMOTE_PSTN_USER_HUNG_UP];
|
26708
27196
|
const CALL_REJECTED_CODE$1 = 603;
|
27197
|
+
/* @conditional-compile-remove(meeting-id) */
|
27198
|
+
const INVALID_MEETING_IDENTIFIER = 5751;
|
26709
27199
|
/** @private */
|
26710
27200
|
const ROOM_NOT_FOUND_SUB_CODE = 5732;
|
26711
27201
|
/** @private */
|
@@ -26797,7 +27287,7 @@ const getCallEndReason = (call) => {
|
|
26797
27287
|
* @private
|
26798
27288
|
*/
|
26799
27289
|
const getEndedCallPageProps = (locale, endedCall) => {
|
26800
|
-
var _a, _b, _c, _d, _e;
|
27290
|
+
var _a, _b, _c, _d, _e, _f;
|
26801
27291
|
let title = locale.strings.call.leftCallTitle;
|
26802
27292
|
let moreDetails = locale.strings.call.leftCallMoreDetails;
|
26803
27293
|
let disableStartCallButton = false;
|
@@ -26893,6 +27383,16 @@ const getEndedCallPageProps = (locale, endedCall) => {
|
|
26893
27383
|
}
|
26894
27384
|
break;
|
26895
27385
|
}
|
27386
|
+
/* @conditional-compile-remove(meeting-id) */
|
27387
|
+
switch ((_f = endedCall === null || endedCall === void 0 ? void 0 : endedCall.callEndReason) === null || _f === void 0 ? void 0 : _f.subCode) {
|
27388
|
+
case INVALID_MEETING_IDENTIFIER:
|
27389
|
+
if (locale.strings.call.callRejectedTitle) {
|
27390
|
+
title = locale.strings.call.callRejectedTitle;
|
27391
|
+
moreDetails = locale.strings.call.invalidMeetingIdentifier;
|
27392
|
+
disableStartCallButton = true;
|
27393
|
+
}
|
27394
|
+
break;
|
27395
|
+
}
|
26896
27396
|
return { title, moreDetails, disableStartCallButton, iconName };
|
26897
27397
|
};
|
26898
27398
|
/**
|
@@ -30505,7 +31005,6 @@ var __awaiter$f = (window && window.__awaiter) || function (thisArg, _arguments,
|
|
30505
31005
|
* @private
|
30506
31006
|
*/
|
30507
31007
|
const PeoplePaneContent = (props) => {
|
30508
|
-
var _a, _b;
|
30509
31008
|
const { inviteLink, onFetchParticipantMenuItems, setDrawerMenuItems,
|
30510
31009
|
/* @conditional-compile-remove(spotlight) */ participantListHeadingMoreButtonProps } = props;
|
30511
31010
|
const adapter = useAdapter();
|
@@ -30526,7 +31025,7 @@ const PeoplePaneContent = (props) => {
|
|
30526
31025
|
/* @conditional-compile-remove(PSTN-calls) */
|
30527
31026
|
const alternateCallerId = adapter.getState().alternateCallerId;
|
30528
31027
|
const participantListDefaultProps = usePropsFor$1(ParticipantList$k);
|
30529
|
-
const removeButtonAllowed = (
|
31028
|
+
const removeButtonAllowed = canRemoveParticipants(adapter);
|
30530
31029
|
const setDrawerMenuItemsForParticipant = React.useMemo(() => {
|
30531
31030
|
return (participant) => {
|
30532
31031
|
if (participant) {
|
@@ -30608,6 +31107,16 @@ const createDefaultContextualMenuItems = (participant, strings, onRemoveParticip
|
|
30608
31107
|
}
|
30609
31108
|
return menuItems;
|
30610
31109
|
};
|
31110
|
+
const canRemoveParticipants = (adapter) => {
|
31111
|
+
var _a;
|
31112
|
+
// TODO: We should be using the removeParticipant capability here but there is an SDK bug for Rooms where a
|
31113
|
+
// Presenter's removeParticipant capability is {isPresent: false, reason: 'CapabilityNotApplicableForTheCallType'}.
|
31114
|
+
// But a Presenter in Rooms should be able to remove participants according to the following documentation
|
31115
|
+
// https://learn.microsoft.com/en-us/azure/communication-services/concepts/rooms/room-concept#predefined-participant-roles-and-permissions
|
31116
|
+
const role = (_a = adapter.getState().call) === null || _a === void 0 ? void 0 : _a.role;
|
31117
|
+
const canRemove = role === 'Presenter' || role === 'Unknown' || role === undefined;
|
31118
|
+
return canRemove;
|
31119
|
+
};
|
30611
31120
|
|
30612
31121
|
// Copyright (c) Microsoft Corporation.
|
30613
31122
|
// Licensed under the MIT License.
|
@@ -32249,7 +32758,7 @@ const DtmfDialpadPageContent = (props) => {
|
|
32249
32758
|
React.createElement(react.Text, { style: { margin: 'auto' } }, calleeName && calleeName !== 'Unnamed participant' ? calleeName === null || calleeName === void 0 ? void 0 : calleeName.toString() : ''),
|
32250
32759
|
React.createElement(Dialpad, { onSendDtmfTone: (tone) => __awaiter$c(void 0, void 0, void 0, function* () {
|
32251
32760
|
yield adapter.sendDtmfTone(tone);
|
32252
|
-
}), longPressTrigger: props.mobileView ? 'touch' : 'mouseAndTouch', dialpadMode: 'dtmf' }))));
|
32761
|
+
}), longPressTrigger: props.mobileView ? 'touch' : 'mouseAndTouch', dialpadMode: 'dtmf', dtmfAudioContext: props.compositeAudioContext }))));
|
32253
32762
|
};
|
32254
32763
|
const DtmfDialerContentTimer = () => {
|
32255
32764
|
const [time, setTime] = React.useState(0);
|
@@ -32274,7 +32783,7 @@ const DtmfDialerContentTimer = () => {
|
|
32274
32783
|
*/
|
32275
32784
|
const DtmfDialpadPage = (props) => {
|
32276
32785
|
const adapter = useAdapter();
|
32277
|
-
return React.createElement(DtmfDialpadPageContent, { adapter: adapter, mobileView: props.mobileView });
|
32786
|
+
return React.createElement(DtmfDialpadPageContent, Object.assign({ adapter: adapter }, props, { mobileView: props.mobileView }));
|
32278
32787
|
};
|
32279
32788
|
|
32280
32789
|
// Copyright (c) Microsoft Corporation.
|
@@ -32320,7 +32829,7 @@ const buttonTextStyles = { label: { fontSize: '0.875rem' } };
|
|
32320
32829
|
*/
|
32321
32830
|
const CallPage = (props) => {
|
32322
32831
|
var _a;
|
32323
|
-
const { callInvitationURL, onFetchAvatarPersonaData, onFetchParticipantMenuItems, options, mobileView, galleryLayout = 'floatingLocalVideo', onUserSetGalleryLayoutChange, userSetOverflowGalleryPosition = 'Responsive', onSetUserSetOverflowGalleryPosition, onCloseChatPane, pinnedParticipants, setPinnedParticipants } = props;
|
32832
|
+
const { callInvitationURL, onFetchAvatarPersonaData, onFetchParticipantMenuItems, options, mobileView, galleryLayout = 'floatingLocalVideo', onUserSetGalleryLayoutChange, userSetOverflowGalleryPosition = 'Responsive', onSetUserSetOverflowGalleryPosition, onCloseChatPane, pinnedParticipants, setPinnedParticipants, compositeAudioContext } = props;
|
32324
32833
|
// To use useProps to get these states, we need to create another file wrapping Call,
|
32325
32834
|
// It seems unnecessary in this case, so we get the updated states using this approach.
|
32326
32835
|
const { callStatus } = useSelector$1(callStatusSelector);
|
@@ -32347,7 +32856,7 @@ const CallPage = (props) => {
|
|
32347
32856
|
if (dtmfDialerPresent) {
|
32348
32857
|
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
32858
|
/* @conditional-compile-remove(capabilities) */
|
32350
|
-
capabilitiesChangedNotificationBarProps: props.capabilitiesChangedNotificationBarProps, onSetDialpadPage: () => setDtmfDialerPresent(!dtmfDialerPresent), dtmfDialerPresent: dtmfDialerPresent }));
|
32859
|
+
capabilitiesChangedNotificationBarProps: props.capabilitiesChangedNotificationBarProps, onSetDialpadPage: () => setDtmfDialerPresent(!dtmfDialerPresent), dtmfDialerPresent: dtmfDialerPresent, compositeAudioContext: compositeAudioContext }));
|
32351
32860
|
}
|
32352
32861
|
else {
|
32353
32862
|
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,
|
@@ -32459,6 +32968,18 @@ const optionIconStyles = react.mergeStyles({
|
|
32459
32968
|
marginRight: '8px',
|
32460
32969
|
verticalAlign: 'text-top'
|
32461
32970
|
});
|
32971
|
+
/**
|
32972
|
+
* @private
|
32973
|
+
*/
|
32974
|
+
const deviceSelectionContainerStyles = {
|
32975
|
+
root: {
|
32976
|
+
/**
|
32977
|
+
* this is to move the device selection container above the larger border
|
32978
|
+
* container that is occluding messages
|
32979
|
+
*/
|
32980
|
+
zIndex: 1
|
32981
|
+
}
|
32982
|
+
};
|
32462
32983
|
|
32463
32984
|
// Copyright (c) Microsoft Corporation.
|
32464
32985
|
// Licensed under the MIT License.
|
@@ -32559,7 +33080,7 @@ const configurationSectionStyle = {
|
|
32559
33080
|
*/
|
32560
33081
|
const selectionContainerStyle = (theme, noSpeakerDropdownShown) => react.mergeStyles({
|
32561
33082
|
width: '100%',
|
32562
|
-
|
33083
|
+
minHeight: noSpeakerDropdownShown ? 'auto' : `${CONFIGURATION_PAGE_SECTION_HEIGHT_REM}rem`,
|
32563
33084
|
padding: '1rem',
|
32564
33085
|
borderRadius: theme.effects.roundedCorner6,
|
32565
33086
|
border: `0.0625rem solid ${theme.palette.neutralLight}`,
|
@@ -32689,7 +33210,7 @@ const cameraAndVideoEffectsContainerStyleDesktop = {
|
|
32689
33210
|
/**
|
32690
33211
|
* @private
|
32691
33212
|
*/
|
32692
|
-
const effectsButtonStyles = (theme) => {
|
33213
|
+
const effectsButtonStyles = (theme, disabled) => {
|
32693
33214
|
return {
|
32694
33215
|
root: {
|
32695
33216
|
background: 'transparent',
|
@@ -32697,26 +33218,41 @@ const effectsButtonStyles = (theme) => {
|
|
32697
33218
|
color: theme.palette.themePrimary,
|
32698
33219
|
// Top and bottom padding needs to be 5px to match the label padding
|
32699
33220
|
padding: '5px 0.25rem',
|
32700
|
-
':hover, :focus':
|
32701
|
-
|
32702
|
-
|
33221
|
+
':hover, :focus': disabled
|
33222
|
+
? {}
|
33223
|
+
: {
|
33224
|
+
color: theme.palette.themePrimary
|
33225
|
+
},
|
32703
33226
|
svg: {
|
32704
33227
|
height: '1rem',
|
32705
33228
|
width: '1rem'
|
32706
33229
|
}
|
32707
33230
|
},
|
32708
|
-
|
32709
|
-
|
32710
|
-
|
32711
|
-
|
32712
|
-
|
32713
|
-
|
32714
|
-
|
32715
|
-
|
32716
|
-
|
32717
|
-
|
32718
|
-
|
32719
|
-
|
33231
|
+
labelHovered: disabled
|
33232
|
+
? {}
|
33233
|
+
: {
|
33234
|
+
color: theme.palette.themePrimary
|
33235
|
+
},
|
33236
|
+
rootChecked: disabled
|
33237
|
+
? {}
|
33238
|
+
: {
|
33239
|
+
color: theme.palette.themePrimary
|
33240
|
+
},
|
33241
|
+
rootHovered: disabled
|
33242
|
+
? {}
|
33243
|
+
: {
|
33244
|
+
color: theme.palette.themePrimary
|
33245
|
+
},
|
33246
|
+
rootPressed: disabled
|
33247
|
+
? {}
|
33248
|
+
: {
|
33249
|
+
color: theme.palette.themePrimary
|
33250
|
+
},
|
33251
|
+
rootFocused: disabled
|
33252
|
+
? {}
|
33253
|
+
: {
|
33254
|
+
color: theme.palette.themePrimary
|
33255
|
+
}
|
32720
33256
|
};
|
32721
33257
|
};
|
32722
33258
|
/** @private */
|
@@ -32886,11 +33422,11 @@ const LocalDeviceSettings = (props) => {
|
|
32886
33422
|
}
|
32887
33423
|
return speakerDropdown;
|
32888
33424
|
};
|
32889
|
-
return (React.createElement(react.Stack, { "data-ui-id": "call-composite-device-settings", tokens: mainStackTokens },
|
33425
|
+
return (React.createElement(react.Stack, { "data-ui-id": "call-composite-device-settings", tokens: mainStackTokens, styles: deviceSelectionContainerStyles },
|
32890
33426
|
roleCanUseCamera && (React.createElement(react.Stack, null,
|
32891
33427
|
React.createElement(react.Stack, { horizontal: true, horizontalAlign: "space-between", styles: cameraAndVideoEffectsContainerStyleDesktop },
|
32892
33428
|
React.createElement(react.Label, { id: 'call-composite-local-camera-settings-label', className: react.mergeStyles(dropDownStyles(theme).label), disabled: !cameraPermissionGranted }, cameraLabel),
|
32893
|
-
onResolveVideoEffectDependency && (React.createElement(react.DefaultButton, { iconProps: { iconName: 'ConfigurationScreenVideoEffectsButton' }, styles: effectsButtonStyles(theme), onClick: props.onClickVideoEffects, "data-ui-id": 'call-config-video-effects-button' }, locale.strings.call.configurationPageVideoEffectsButtonLabel))),
|
33429
|
+
onResolveVideoEffectDependency && (React.createElement(react.DefaultButton, { iconProps: { iconName: 'ConfigurationScreenVideoEffectsButton' }, styles: effectsButtonStyles(theme, !cameraPermissionGranted), onClick: props.onClickVideoEffects, disabled: !cameraPermissionGranted, "data-ui-id": 'call-config-video-effects-button' }, locale.strings.call.configurationPageVideoEffectsButtonLabel))),
|
32894
33430
|
React.createElement(ConfigurationPageCameraDropdown, { cameraGrantedDropdown: cameraGrantedDropdown, cameraPermissionGranted: cameraPermissionGranted !== null && cameraPermissionGranted !== void 0 ? cameraPermissionGranted : false,
|
32895
33431
|
/* @conditional-compile-remove(call-readiness) */
|
32896
33432
|
dropdownProps: dropdownProps,
|
@@ -33029,18 +33565,21 @@ const localPreviewTileStyle = {
|
|
33029
33565
|
/**
|
33030
33566
|
* @private
|
33031
33567
|
*/
|
33032
|
-
const localPreviewButtonStyle = {
|
33033
|
-
|
33034
|
-
|
33035
|
-
|
33036
|
-
|
33037
|
-
|
33038
|
-
|
33039
|
-
|
33040
|
-
|
33568
|
+
const localPreviewButtonStyle = (isMobile) => {
|
33569
|
+
return {
|
33570
|
+
root: {
|
33571
|
+
minWidth: !isMobile ? _pxToRem(75) : 'unset', // we only want to enforce this for desktop views
|
33572
|
+
'@media (forced-colors: active)': {
|
33573
|
+
':focus': {
|
33574
|
+
border: '1px solid !important' // we need bang important to override fluents colours
|
33575
|
+
},
|
33576
|
+
':focus::after': {
|
33577
|
+
border: 'unset !important', // we need bang important to override fluents colours
|
33578
|
+
outline: 'unset !important'
|
33579
|
+
}
|
33041
33580
|
}
|
33042
33581
|
}
|
33043
|
-
}
|
33582
|
+
};
|
33044
33583
|
};
|
33045
33584
|
|
33046
33585
|
// Copyright (c) Microsoft Corporation.
|
@@ -33101,7 +33640,7 @@ const LocalPreview = (props) => {
|
|
33101
33640
|
React.createElement(ControlBar, { layout: "floatingBottom" },
|
33102
33641
|
React.createElement(MicrophoneButton, { "data-ui-id": "call-composite-local-device-settings-microphone-button", checked: isLocalMicrophoneEnabled, onToggleMicrophone: onToggleMic, disabled: !microphonePermissionGranted || !hasMicrophones, showLabel: true,
|
33103
33642
|
// disable tooltip as it obscures list of devices on mobile
|
33104
|
-
strings: props.mobileView ? { tooltipOnContent: '', tooltipOffContent: '', tooltipDisabledContent: '' } : {}, styles: localPreviewButtonStyle }),
|
33643
|
+
strings: props.mobileView ? { tooltipOnContent: '', tooltipOffContent: '', tooltipDisabledContent: '' } : {}, styles: localPreviewButtonStyle(props.mobileView) }),
|
33105
33644
|
React.createElement(CameraButton, Object.assign({ "data-ui-id": "call-composite-local-device-settings-camera-button" }, cameraButtonProps, { showLabel: true, disabled: !cameraPermissionGranted || !hasCameras,
|
33106
33645
|
// disable tooltip as it obscures list of devices on mobile
|
33107
33646
|
strings: props.mobileView
|
@@ -33111,7 +33650,7 @@ const LocalPreview = (props) => {
|
|
33111
33650
|
tooltipDisabledContent: '',
|
33112
33651
|
tooltipVideoLoadingContent: ''
|
33113
33652
|
}
|
33114
|
-
: {}, styles: localPreviewButtonStyle })),
|
33653
|
+
: {}, styles: localPreviewButtonStyle(props.mobileView) })),
|
33115
33654
|
props.showDevicesButton && (React.createElement(DevicesButton, Object.assign({ "data-ui-id": "call-composite-local-device-settings-options-button" }, devicesButtonProps, {
|
33116
33655
|
// disable button whilst all other buttons are disabled
|
33117
33656
|
disabled: (!microphonePermissionGranted && !cameraPermissionGranted && hasNoSpeakers) || hasNoDevices, showLabel: true,
|
@@ -34676,6 +35215,7 @@ const MainScreen = (props) => {
|
|
34676
35215
|
adapter.off('callEnded', closeSidePane);
|
34677
35216
|
};
|
34678
35217
|
}, [adapter]);
|
35218
|
+
const compositeAudioContext = React.useRef(new AudioContext());
|
34679
35219
|
/* @conditional-compile-remove(capabilities) */
|
34680
35220
|
const capabilitiesChangedInfoAndRole = useSelector$1(capabilitiesChangedInfoAndRoleSelector);
|
34681
35221
|
/* @conditional-compile-remove(capabilities) */
|
@@ -34765,7 +35305,7 @@ const MainScreen = (props) => {
|
|
34765
35305
|
case 'call':
|
34766
35306
|
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
35307
|
/* @conditional-compile-remove(capabilities) */
|
34768
|
-
capabilitiesChangedNotificationBarProps: capabilitiesChangedNotificationBarProps, pinnedParticipants: pinnedParticipants, setPinnedParticipants: setPinnedParticipants }));
|
35308
|
+
capabilitiesChangedNotificationBarProps: capabilitiesChangedNotificationBarProps, pinnedParticipants: pinnedParticipants, setPinnedParticipants: setPinnedParticipants, compositeAudioContext: compositeAudioContext.current }));
|
34769
35309
|
break;
|
34770
35310
|
/* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
|
34771
35311
|
case 'hold':
|
@@ -35261,7 +35801,9 @@ class AzureCommunicationCallAdapter {
|
|
35261
35801
|
? locatorOrTargetCalless
|
35262
35802
|
: undefined;
|
35263
35803
|
this.deviceManager = deviceManager;
|
35264
|
-
const isTeamsMeeting = this.locator
|
35804
|
+
const isTeamsMeeting = this.locator
|
35805
|
+
? 'meetingLink' in this.locator || /* @conditional-compile-remove(meeting-id) */ 'meetingId' in this.locator
|
35806
|
+
: false;
|
35265
35807
|
const isRoomsCall = this.locator ? 'roomId' in this.locator : false;
|
35266
35808
|
this.onResolveVideoBackgroundEffectsDependency = (_a = options === null || options === void 0 ? void 0 : options.videoBackgroundOptions) === null || _a === void 0 ? void 0 : _a.onResolveDependency;
|
35267
35809
|
this.context = new CallContext(callClient.getState(), isTeamsMeeting, isRoomsCall, options, this.targetCallees);
|
@@ -35492,18 +36034,34 @@ class AzureCommunicationCallAdapter {
|
|
35492
36034
|
}
|
35493
36035
|
_joinCall(audioOptions, videoOptions) {
|
35494
36036
|
const isTeamsMeeting = this.locator ? 'meetingLink' in this.locator : false;
|
36037
|
+
/* @conditional-compile-remove(meeting-id) */
|
36038
|
+
const isTeamsMeetingId = this.locator ? 'meetingId' in this.locator : false;
|
35495
36039
|
const isRoomsCall = this.locator ? 'roomId' in this.locator : false;
|
35496
36040
|
/* @conditional-compile-remove(teams-identity-support) */
|
35497
36041
|
if (_isTeamsCallAgent(this.callAgent)) {
|
35498
|
-
if (
|
35499
|
-
|
36042
|
+
if (isTeamsMeeting) {
|
36043
|
+
return this.callAgent.join(this.locator, {
|
36044
|
+
audioOptions,
|
36045
|
+
videoOptions
|
36046
|
+
});
|
36047
|
+
}
|
36048
|
+
/* @conditional-compile-remove(meeting-id) */
|
36049
|
+
if (isTeamsMeetingId) {
|
36050
|
+
return this.callAgent.join(this.locator, {
|
36051
|
+
audioOptions,
|
36052
|
+
videoOptions
|
36053
|
+
});
|
35500
36054
|
}
|
36055
|
+
throw new Error('Locator not supported by TeamsCallAgent');
|
36056
|
+
}
|
36057
|
+
if (isTeamsMeeting) {
|
35501
36058
|
return this.callAgent.join(this.locator, {
|
35502
36059
|
audioOptions,
|
35503
36060
|
videoOptions
|
35504
36061
|
});
|
35505
36062
|
}
|
35506
|
-
|
36063
|
+
/* @conditional-compile-remove(meeting-id) */
|
36064
|
+
if (isTeamsMeetingId) {
|
35507
36065
|
return this.callAgent.join(this.locator, {
|
35508
36066
|
audioOptions,
|
35509
36067
|
videoOptions
|
@@ -37200,12 +37758,11 @@ const isOnHoldTrampoline = (page) => {
|
|
37200
37758
|
/**
|
37201
37759
|
* @private
|
37202
37760
|
*/
|
37203
|
-
function callWithChatAdapterStateFromBackingStates(callAdapter
|
37761
|
+
function callWithChatAdapterStateFromBackingStates(callAdapter) {
|
37204
37762
|
const callAdapterState = callAdapter.getState();
|
37205
|
-
const chatAdapterState = chatAdapter.getState();
|
37206
37763
|
return {
|
37207
37764
|
call: callAdapterState.call,
|
37208
|
-
chat:
|
37765
|
+
chat: undefined,
|
37209
37766
|
userId: callAdapterState.userId,
|
37210
37767
|
page: callAdapterState.page,
|
37211
37768
|
displayName: callAdapterState.displayName,
|
@@ -37213,9 +37770,9 @@ function callWithChatAdapterStateFromBackingStates(callAdapter, chatAdapter) {
|
|
37213
37770
|
isLocalPreviewMicrophoneEnabled: callAdapterState.isLocalPreviewMicrophoneEnabled,
|
37214
37771
|
isTeamsCall: callAdapterState.isTeamsCall,
|
37215
37772
|
latestCallErrors: callAdapterState.latestErrors,
|
37216
|
-
latestChatErrors:
|
37773
|
+
latestChatErrors: {},
|
37217
37774
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
37218
|
-
fileUploads:
|
37775
|
+
fileUploads: {},
|
37219
37776
|
/* @conditional-compile-remove(PSTN-calls) */
|
37220
37777
|
alternateCallerId: callAdapterState.alternateCallerId,
|
37221
37778
|
/* @conditional-compile-remove(unsupported-browser) */
|
@@ -37315,44 +37872,61 @@ class CallWithChatContext {
|
|
37315
37872
|
* Created for easy use with the {@link CallWithChatComposite}.
|
37316
37873
|
*/
|
37317
37874
|
class AzureCommunicationCallWithChatAdapter {
|
37318
|
-
constructor(callAdapter,
|
37875
|
+
constructor(callAdapter, chatAdapterPromise) {
|
37319
37876
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
37320
37877
|
this.registerActiveFileUploads = (files) => {
|
37321
|
-
|
37878
|
+
var _a, _b;
|
37879
|
+
return (_b = (_a = this.chatAdapter) === null || _a === void 0 ? void 0 : _a.registerActiveFileUploads(files)) !== null && _b !== void 0 ? _b : [];
|
37322
37880
|
};
|
37323
37881
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
37324
37882
|
this.registerCompletedFileUploads = (metadata) => {
|
37325
|
-
|
37883
|
+
var _a, _b;
|
37884
|
+
return (_b = (_a = this.chatAdapter) === null || _a === void 0 ? void 0 : _a.registerCompletedFileUploads(metadata)) !== null && _b !== void 0 ? _b : [];
|
37326
37885
|
};
|
37327
37886
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
37328
37887
|
this.clearFileUploads = () => {
|
37329
|
-
this.
|
37888
|
+
this.chatAdapterPromise.then((adapter) => {
|
37889
|
+
adapter.clearFileUploads();
|
37890
|
+
});
|
37330
37891
|
};
|
37331
37892
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
37332
37893
|
this.cancelFileUpload = (id) => {
|
37333
|
-
this.
|
37894
|
+
this.chatAdapterPromise.then((adapter) => {
|
37895
|
+
adapter.cancelFileUpload(id);
|
37896
|
+
});
|
37334
37897
|
};
|
37335
37898
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
37336
37899
|
this.updateFileUploadProgress = (id, progress) => {
|
37337
|
-
this.
|
37900
|
+
this.chatAdapterPromise.then((adapter) => {
|
37901
|
+
adapter.updateFileUploadProgress(id, progress);
|
37902
|
+
});
|
37338
37903
|
};
|
37339
37904
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
37340
37905
|
this.updateFileUploadErrorMessage = (id, errorMessage) => {
|
37341
|
-
this.
|
37906
|
+
this.chatAdapterPromise.then((adapter) => {
|
37907
|
+
adapter.updateFileUploadErrorMessage(id, errorMessage);
|
37908
|
+
});
|
37342
37909
|
};
|
37343
37910
|
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
37344
37911
|
this.updateFileUploadMetadata = (id, metadata) => {
|
37345
|
-
this.
|
37912
|
+
this.chatAdapterPromise.then((adapter) => {
|
37913
|
+
adapter.updateFileUploadMetadata(id, metadata);
|
37914
|
+
});
|
37346
37915
|
};
|
37347
37916
|
this.bindPublicMethods();
|
37348
37917
|
this.callAdapter = callAdapter;
|
37349
|
-
this.
|
37350
|
-
this.context = new CallWithChatContext(callWithChatAdapterStateFromBackingStates(callAdapter, chatAdapter));
|
37918
|
+
this.context = new CallWithChatContext(callWithChatAdapterStateFromBackingStates(callAdapter));
|
37351
37919
|
const onChatStateChange = (newChatAdapterState) => {
|
37352
37920
|
this.context.updateClientStateWithChatState(newChatAdapterState);
|
37353
37921
|
};
|
37354
|
-
this.chatAdapter.onStateChange(onChatStateChange);
|
37355
37922
|
this.onChatStateChange = onChatStateChange;
|
37923
|
+
this.chatAdapterPromise = chatAdapterPromise;
|
37924
|
+
this.chatAdapterPromise.then((chatAdapter) => {
|
37925
|
+
chatAdapter.onStateChange(this.onChatStateChange);
|
37926
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
37927
|
+
this.chatAdapter = chatAdapter;
|
37928
|
+
this.context.updateClientStateWithChatState(chatAdapter.getState());
|
37929
|
+
});
|
37356
37930
|
const onCallStateChange = (newCallAdapterState) => {
|
37357
37931
|
this.context.updateClientStateWithCallState(newCallAdapterState);
|
37358
37932
|
};
|
@@ -37480,10 +38054,16 @@ class AzureCommunicationCallWithChatAdapter {
|
|
37480
38054
|
}
|
37481
38055
|
/** Dispose of the current CallWithChatAdapter. */
|
37482
38056
|
dispose() {
|
37483
|
-
this
|
37484
|
-
|
37485
|
-
|
37486
|
-
|
38057
|
+
return __awaiter$2(this, void 0, void 0, function* () {
|
38058
|
+
this.chatAdapterPromise.then((adapter) => {
|
38059
|
+
adapter.offStateChange(this.onChatStateChange);
|
38060
|
+
});
|
38061
|
+
this.callAdapter.offStateChange(this.onCallStateChange);
|
38062
|
+
yield this.chatAdapterPromise.then((adapter) => {
|
38063
|
+
adapter.dispose();
|
38064
|
+
});
|
38065
|
+
this.callAdapter.dispose();
|
38066
|
+
});
|
37487
38067
|
}
|
37488
38068
|
/** Remove a participant from the Call only. */
|
37489
38069
|
removeParticipant(userId) {
|
@@ -37621,53 +38201,71 @@ class AzureCommunicationCallWithChatAdapter {
|
|
37621
38201
|
/** Fetch initial Call and Chat data such as chat messages. */
|
37622
38202
|
fetchInitialData() {
|
37623
38203
|
return __awaiter$2(this, void 0, void 0, function* () {
|
37624
|
-
yield this.
|
38204
|
+
return yield this.chatAdapterPromise.then((adapter) => {
|
38205
|
+
return adapter.fetchInitialData();
|
38206
|
+
});
|
37625
38207
|
});
|
37626
38208
|
}
|
37627
38209
|
/** Send a chat message. */
|
37628
38210
|
sendMessage(content) {
|
37629
38211
|
return __awaiter$2(this, void 0, void 0, function* () {
|
37630
|
-
yield this.
|
38212
|
+
return yield this.chatAdapterPromise.then((adapter) => {
|
38213
|
+
return adapter.sendMessage(content);
|
38214
|
+
});
|
37631
38215
|
});
|
37632
38216
|
}
|
37633
38217
|
/** Send a chat read receipt. */
|
37634
38218
|
sendReadReceipt(chatMessageId) {
|
37635
38219
|
return __awaiter$2(this, void 0, void 0, function* () {
|
37636
|
-
yield this.
|
38220
|
+
return yield this.chatAdapterPromise.then((adapter) => {
|
38221
|
+
return adapter.sendReadReceipt(chatMessageId);
|
38222
|
+
});
|
37637
38223
|
});
|
37638
38224
|
}
|
37639
38225
|
/** Send an isTyping indicator. */
|
37640
38226
|
sendTypingIndicator() {
|
37641
38227
|
return __awaiter$2(this, void 0, void 0, function* () {
|
37642
|
-
yield this.
|
38228
|
+
return yield this.chatAdapterPromise.then((adapter) => {
|
38229
|
+
return adapter.sendTypingIndicator();
|
38230
|
+
});
|
37643
38231
|
});
|
37644
38232
|
}
|
37645
38233
|
/** Load previous Chat messages. */
|
37646
38234
|
loadPreviousChatMessages(messagesToLoad) {
|
37647
38235
|
return __awaiter$2(this, void 0, void 0, function* () {
|
37648
|
-
return yield this.
|
38236
|
+
return yield this.chatAdapterPromise.then((adapter) => {
|
38237
|
+
return adapter.loadPreviousChatMessages(messagesToLoad);
|
38238
|
+
});
|
37649
38239
|
});
|
37650
38240
|
}
|
37651
38241
|
/** Update an existing message. */
|
37652
38242
|
updateMessage(messageId, content, metadata, options) {
|
37653
38243
|
return __awaiter$2(this, void 0, void 0, function* () {
|
37654
|
-
return
|
37655
|
-
|
38244
|
+
return this.chatAdapterPromise.then((adapter) => {
|
38245
|
+
return adapter.updateMessage(messageId, content, metadata,
|
38246
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ options);
|
38247
|
+
});
|
37656
38248
|
});
|
37657
38249
|
}
|
37658
38250
|
/** Delete an existing message. */
|
37659
38251
|
deleteMessage(messageId) {
|
37660
38252
|
return __awaiter$2(this, void 0, void 0, function* () {
|
37661
|
-
return yield this.
|
38253
|
+
return yield this.chatAdapterPromise.then((adapter) => {
|
38254
|
+
return adapter.deleteMessage(messageId);
|
38255
|
+
});
|
37662
38256
|
});
|
37663
38257
|
}
|
37664
38258
|
downloadResourceToCache(resourceDetails) {
|
37665
38259
|
return __awaiter$2(this, void 0, void 0, function* () {
|
37666
|
-
this.
|
38260
|
+
this.chatAdapterPromise.then((adapter) => {
|
38261
|
+
adapter.downloadResourceToCache(resourceDetails);
|
38262
|
+
});
|
37667
38263
|
});
|
37668
38264
|
}
|
37669
38265
|
removeResourceFromCache(resourceDetails) {
|
37670
|
-
this.
|
38266
|
+
this.chatAdapterPromise.then((adapter) => {
|
38267
|
+
adapter.removeResourceFromCache(resourceDetails);
|
38268
|
+
});
|
37671
38269
|
}
|
37672
38270
|
/* @conditional-compile-remove(PSTN-calls) */
|
37673
38271
|
holdCall() {
|
@@ -37815,31 +38413,47 @@ class AzureCommunicationCallWithChatAdapter {
|
|
37815
38413
|
this.callAdapter.on('isSpokenLanguageChanged', listener);
|
37816
38414
|
break;
|
37817
38415
|
case 'messageReceived':
|
37818
|
-
this.
|
38416
|
+
this.chatAdapterPromise.then((adapter) => {
|
38417
|
+
adapter.on('messageReceived', listener);
|
38418
|
+
});
|
37819
38419
|
break;
|
37820
38420
|
case 'messageEdited':
|
37821
|
-
this.
|
38421
|
+
this.chatAdapterPromise.then((adapter) => {
|
38422
|
+
adapter.on('messageEdited', listener);
|
38423
|
+
});
|
37822
38424
|
break;
|
37823
38425
|
case 'messageDeleted':
|
37824
|
-
this.
|
38426
|
+
this.chatAdapterPromise.then((adapter) => {
|
38427
|
+
adapter.on('messageDeleted', listener);
|
38428
|
+
});
|
37825
38429
|
break;
|
37826
38430
|
case 'messageSent':
|
37827
|
-
this.
|
38431
|
+
this.chatAdapterPromise.then((adapter) => {
|
38432
|
+
adapter.on('messageSent', listener);
|
38433
|
+
});
|
37828
38434
|
break;
|
37829
38435
|
case 'messageRead':
|
37830
|
-
this.
|
38436
|
+
this.chatAdapterPromise.then((adapter) => {
|
38437
|
+
adapter.on('messageRead', listener);
|
38438
|
+
});
|
37831
38439
|
break;
|
37832
38440
|
case 'chatParticipantsAdded':
|
37833
|
-
this.
|
38441
|
+
this.chatAdapterPromise.then((adapter) => {
|
38442
|
+
adapter.on('participantsAdded', listener);
|
38443
|
+
});
|
37834
38444
|
break;
|
37835
38445
|
case 'chatParticipantsRemoved':
|
37836
|
-
this.
|
38446
|
+
this.chatAdapterPromise.then((adapter) => {
|
38447
|
+
adapter.on('participantsRemoved', listener);
|
38448
|
+
});
|
37837
38449
|
break;
|
37838
38450
|
case 'callError':
|
37839
38451
|
this.callAdapter.on('error', listener);
|
37840
38452
|
break;
|
37841
38453
|
case 'chatError':
|
37842
|
-
this.
|
38454
|
+
this.chatAdapterPromise.then((adapter) => {
|
38455
|
+
adapter.on('error', listener);
|
38456
|
+
});
|
37843
38457
|
break;
|
37844
38458
|
default:
|
37845
38459
|
throw `Unknown AzureCommunicationCallWithChatAdapter Event: ${event}`;
|
@@ -37895,37 +38509,113 @@ class AzureCommunicationCallWithChatAdapter {
|
|
37895
38509
|
this.callAdapter.off('isSpokenLanguageChanged', listener);
|
37896
38510
|
break;
|
37897
38511
|
case 'messageReceived':
|
37898
|
-
this.
|
38512
|
+
this.chatAdapterPromise.then((adapter) => {
|
38513
|
+
adapter.off('messageReceived', listener);
|
38514
|
+
});
|
37899
38515
|
break;
|
37900
38516
|
case 'messageEdited':
|
37901
|
-
this.
|
38517
|
+
this.chatAdapterPromise.then((adapter) => {
|
38518
|
+
adapter.off('messageEdited', listener);
|
38519
|
+
});
|
37902
38520
|
break;
|
37903
38521
|
case 'messageDeleted':
|
37904
|
-
this.
|
38522
|
+
this.chatAdapterPromise.then((adapter) => {
|
38523
|
+
adapter.off('messageDeleted', listener);
|
38524
|
+
});
|
37905
38525
|
break;
|
37906
38526
|
case 'messageSent':
|
37907
|
-
this.
|
38527
|
+
this.chatAdapterPromise.then((adapter) => {
|
38528
|
+
adapter.off('messageSent', listener);
|
38529
|
+
});
|
37908
38530
|
break;
|
37909
38531
|
case 'messageRead':
|
37910
|
-
this.
|
38532
|
+
this.chatAdapterPromise.then((adapter) => {
|
38533
|
+
adapter.off('messageRead', listener);
|
38534
|
+
});
|
37911
38535
|
break;
|
37912
38536
|
case 'chatParticipantsAdded':
|
37913
|
-
this.
|
38537
|
+
this.chatAdapterPromise.then((adapter) => {
|
38538
|
+
adapter.off('participantsAdded', listener);
|
38539
|
+
});
|
37914
38540
|
break;
|
37915
38541
|
case 'chatParticipantsRemoved':
|
37916
|
-
this.
|
38542
|
+
this.chatAdapterPromise.then((adapter) => {
|
38543
|
+
adapter.off('participantsRemoved', listener);
|
38544
|
+
});
|
37917
38545
|
break;
|
37918
38546
|
case 'callError':
|
37919
38547
|
this.callAdapter.off('error', listener);
|
37920
38548
|
break;
|
37921
38549
|
case 'chatError':
|
37922
|
-
this.
|
38550
|
+
this.chatAdapterPromise.then((adapter) => {
|
38551
|
+
adapter.off('error', listener);
|
38552
|
+
});
|
37923
38553
|
break;
|
37924
38554
|
default:
|
37925
38555
|
throw `Unknown AzureCommunicationCallWithChatAdapter Event: ${event}`;
|
37926
38556
|
}
|
37927
38557
|
}
|
37928
38558
|
}
|
38559
|
+
/**
|
38560
|
+
* Arguments for use in {@link createAzureCommunicationCallWithChatAdapter} to join a Group Call with an associated Chat thread.
|
38561
|
+
* @public
|
38562
|
+
*/
|
38563
|
+
class CallAndChatProvider {
|
38564
|
+
constructor(locator) {
|
38565
|
+
this.locator = locator;
|
38566
|
+
}
|
38567
|
+
getChatThread() {
|
38568
|
+
return __awaiter$2(this, void 0, void 0, function* () {
|
38569
|
+
return this.locator.chatThreadId;
|
38570
|
+
});
|
38571
|
+
}
|
38572
|
+
}
|
38573
|
+
/**
|
38574
|
+
* Arguments for use in {@link createAzureCommunicationCallWithChatAdapter} to join a Teams meeting with an associated Chat thread.
|
38575
|
+
*
|
38576
|
+
* @public
|
38577
|
+
*/
|
38578
|
+
class TeamsMeetingLinkProvider {
|
38579
|
+
constructor(locator) {
|
38580
|
+
this.locator = locator;
|
38581
|
+
}
|
38582
|
+
getChatThread() {
|
38583
|
+
return __awaiter$2(this, void 0, void 0, function* () {
|
38584
|
+
return getChatThreadFromTeamsLink(this.locator.meetingLink);
|
38585
|
+
});
|
38586
|
+
}
|
38587
|
+
}
|
38588
|
+
/** @conditional-compile-remove(meeting-id) */
|
38589
|
+
/**
|
38590
|
+
* Arguments for use in {@link createAzureCommunicationCallWithChatAdapter} to join a Teams meeting using meeting id.
|
38591
|
+
*
|
38592
|
+
* @public
|
38593
|
+
*/
|
38594
|
+
class TeamsMeetingIdProvider {
|
38595
|
+
constructor(locator, callAdapter) {
|
38596
|
+
this.locator = locator;
|
38597
|
+
this.callAdapter = callAdapter;
|
38598
|
+
}
|
38599
|
+
/**
|
38600
|
+
* Wait call to be connected to get thread ID.
|
38601
|
+
* @returns the chat thread ID for the given meeting ID.
|
38602
|
+
*/
|
38603
|
+
getChatThread() {
|
38604
|
+
return __awaiter$2(this, void 0, void 0, function* () {
|
38605
|
+
return new Promise((resolve) => {
|
38606
|
+
const stateChangeListener = (state) => {
|
38607
|
+
var _a, _b, _c;
|
38608
|
+
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)) {
|
38609
|
+
resolve((_c = state.call.info) === null || _c === void 0 ? void 0 : _c.threadId);
|
38610
|
+
}
|
38611
|
+
};
|
38612
|
+
this.callAdapter.then((adapter) => {
|
38613
|
+
adapter.onStateChange(stateChangeListener);
|
38614
|
+
});
|
38615
|
+
});
|
38616
|
+
});
|
38617
|
+
}
|
38618
|
+
}
|
37929
38619
|
/**
|
37930
38620
|
* Create a CallWithChatAdapter backed by Azure Communication services
|
37931
38621
|
* to plug into the {@link CallWithChatComposite}.
|
@@ -37934,8 +38624,8 @@ class AzureCommunicationCallWithChatAdapter {
|
|
37934
38624
|
*/
|
37935
38625
|
const createAzureCommunicationCallWithChatAdapter = (_a) => __awaiter$2(void 0, [_a], void 0, function* ({ userId, displayName, credential, endpoint, locator,
|
37936
38626
|
/* @conditional-compile-remove(PSTN-calls) */ alternateCallerId, callAdapterOptions }) {
|
37937
|
-
const callAdapterLocator =
|
37938
|
-
const
|
38627
|
+
const callAdapterLocator = isTeamsMeetingLocator(locator) ? locator : locator.callLocator;
|
38628
|
+
const callAdapter = _createAzureCommunicationCallAdapterInner({
|
37939
38629
|
userId,
|
37940
38630
|
displayName,
|
37941
38631
|
credential,
|
@@ -37944,12 +38634,9 @@ const createAzureCommunicationCallWithChatAdapter = (_a) => __awaiter$2(void 0,
|
|
37944
38634
|
options: callAdapterOptions,
|
37945
38635
|
telemetryImplementationHint: 'CallWithChat'
|
37946
38636
|
});
|
37947
|
-
const
|
37948
|
-
|
37949
|
-
|
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);
|
38637
|
+
const chatThreadAdapter = _createChatThreadAdapterInner(locator, callAdapter);
|
38638
|
+
const chatAdapter = _createLazyAzureCommunicationChatAdapterInner(endpoint, userId, displayName, credential, chatThreadAdapter.getChatThread(), 'CallWithChat');
|
38639
|
+
return new AzureCommunicationCallWithChatAdapter(yield callAdapter, chatAdapter);
|
37953
38640
|
});
|
37954
38641
|
/**
|
37955
38642
|
* A custom React hook to simplify the creation of {@link CallWithChatAdapter}.
|
@@ -38077,13 +38764,22 @@ beforeDispose) => {
|
|
38077
38764
|
* @public
|
38078
38765
|
*/
|
38079
38766
|
const createAzureCommunicationCallWithChatAdapterFromClients = (_b) => __awaiter$2(void 0, [_b], void 0, function* ({ callClient, callAgent, callLocator, chatClient, chatThreadClient, callAdapterOptions }) {
|
38080
|
-
const
|
38081
|
-
const
|
38082
|
-
|
38083
|
-
return new AzureCommunicationCallWithChatAdapter(callAdapter, chatAdapter);
|
38767
|
+
const callAdapter = yield createAzureCommunicationCallAdapterFromClient(callClient, callAgent, callLocator, callAdapterOptions);
|
38768
|
+
const chatAdapterPromise = createAzureCommunicationChatAdapterFromClient(chatClient, chatThreadClient);
|
38769
|
+
return new AzureCommunicationCallWithChatAdapter(callAdapter, chatAdapterPromise);
|
38084
38770
|
});
|
38085
|
-
const
|
38086
|
-
return 'meetingLink' in locator;
|
38771
|
+
const isTeamsMeetingLocator = (locator) => {
|
38772
|
+
return 'meetingLink' in locator || 'meetingId' in locator;
|
38773
|
+
};
|
38774
|
+
const _createChatThreadAdapterInner = (locator, adapter) => {
|
38775
|
+
if ('meetingLink' in locator) {
|
38776
|
+
return new TeamsMeetingLinkProvider(locator);
|
38777
|
+
}
|
38778
|
+
/** @conditional-compile-remove(meeting-id) */
|
38779
|
+
if ('meetingId' in locator) {
|
38780
|
+
return new TeamsMeetingIdProvider(locator, adapter);
|
38781
|
+
}
|
38782
|
+
return new CallAndChatProvider(locator);
|
38087
38783
|
};
|
38088
38784
|
|
38089
38785
|
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 +39335,4 @@ exports.useTeamsCall = useTeamsCall;
|
|
38639
39335
|
exports.useTeamsCallAdapter = useTeamsCallAdapter;
|
38640
39336
|
exports.useTeamsCallAgent = useTeamsCallAgent;
|
38641
39337
|
exports.useTheme = useTheme;
|
38642
|
-
//# sourceMappingURL=index-
|
39338
|
+
//# sourceMappingURL=index-qxnuqL7s.js.map
|