@azure/communication-react 1.14.1-alpha-202403261958 → 1.14.1-alpha-202403280012
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/communication-react.d.ts +70 -3
- package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-BRqOsupu.js → RichTextSendBoxWrapper-D3ER8Kz9.js} +9 -6
- package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-BRqOsupu.js.map → RichTextSendBoxWrapper-D3ER8Kz9.js.map} +1 -1
- package/dist/dist-cjs/communication-react/{index-Ba2HAv_Y.js → index-BI61bnOi.js} +1401 -761
- package/dist/dist-cjs/communication-react/index-BI61bnOi.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/handlers/createHandlers.js.map +1 -1
- package/dist/dist-esm/chat-component-bindings/src/messageThreadSelector.js +6 -6
- package/dist/dist-esm/chat-component-bindings/src/messageThreadSelector.js.map +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 +3 -1
- package/dist/dist-esm/react-components/src/components/AttachmentCard.js +75 -59
- package/dist/dist-esm/react-components/src/components/AttachmentCard.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/AttachmentDownloadCards.d.ts +1 -1
- package/dist/dist-esm/react-components/src/components/AttachmentDownloadCards.js +11 -10
- package/dist/dist-esm/react-components/src/components/AttachmentDownloadCards.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/AttachmentUploadCards.js +2 -12
- package/dist/dist-esm/react-components/src/components/AttachmentUploadCards.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsEditBox.js +8 -8
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsEditBox.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsRichTextEditBox.js +5 -5
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsRichTextEditBox.js.map +1 -1
- 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.js +6 -6
- 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 +10 -8
- 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/ChatMyMessageComponentAsMessageBubble.js +6 -6
- 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 +10 -8
- 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.js +14 -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/RichTextInputBoxComponent.js +7 -6
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextInputBoxComponent.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 +40 -30
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBoxErrors.js +6 -6
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBoxErrors.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/SendBox.js +33 -23
- package/dist/dist-esm/react-components/src/components/SendBox.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.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/styles/AttachmentCard.styles.d.ts +9 -0
- package/dist/dist-esm/react-components/src/components/styles/AttachmentCard.styles.js +27 -0
- package/dist/dist-esm/react-components/src/components/styles/AttachmentCard.styles.js.map +1 -0
- 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/styles/SendBox.styles.js +3 -2
- package/dist/dist-esm/react-components/src/components/styles/SendBox.styles.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/utils/ChatMessageComponentAsEditBoxUtils.js +6 -5
- package/dist/dist-esm/react-components/src/components/utils/ChatMessageComponentAsEditBoxUtils.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/utils/ChatMessageComponentUtils.js +10 -10
- 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/components/utils/SendBoxUtils.js +2 -2
- package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/utils/common.js +2 -2
- package/dist/dist-esm/react-components/src/components/utils/common.js.map +1 -1
- package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +12 -1
- package/dist/dist-esm/react-components/src/theming/FluentV9ThemeProvider.js +1 -1
- package/dist/dist-esm/react-components/src/theming/FluentV9ThemeProvider.js.map +1 -1
- package/dist/dist-esm/react-components/src/theming/icons.d.ts +4 -0
- package/dist/dist-esm/react-components/src/theming/icons.js +13 -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 +9 -0
- package/dist/dist-esm/react-components/src/types/Attachment.js.map +1 -1
- package/dist/dist-esm/react-components/src/types/ChatMessage.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/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/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/CallWithChatComposite.js +3 -3
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.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 +210 -71
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedChatAdapter.js +8 -8
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedChatAdapter.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 +6 -7
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/state/CallWithChatAdapterState.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatComposite.js +4 -4
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatComposite.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js +8 -8
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/Strings.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 +44 -22
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationFileUploadAdapter.js +6 -6
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationFileUploadAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/ChatAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/ChatAdapterProvider.js +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/ChatAdapterProvider.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/FileUploadButton.js +4 -4
- 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/hooks/useHandlers.js +3 -3
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/hooks/useHandlers.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/index.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/selectors/baseSelectors.js +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/selectors/baseSelectors.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/SendBox.js +8 -8
- package/dist/dist-esm/react-composites/src/composites/common/SendBox.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts +4 -0
- package/dist/dist-esm/react-composites/src/composites/common/icons.js +2 -2
- package/dist/dist-esm/react-composites/src/composites/common/icons.js.map +1 -1
- 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-Ba2HAv_Y.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-components/src/components/styles/IconButton.styles.d.ts +0 -5
- package/dist/dist-esm/react-components/src/components/styles/IconButton.styles.js +0 -17
- package/dist/dist-esm/react-components/src/components/styles/IconButton.styles.js.map +0 -1
@@ -14,12 +14,15 @@ var textareaCaretTs = require('textarea-caret-ts');
|
|
14
14
|
var reactComponents = require('@fluentui/react-components');
|
15
15
|
var useDebounce = require('use-debounce');
|
16
16
|
var reactFileTypeIcons = require('@fluentui/react-file-type-icons');
|
17
|
+
var react$1 = require('@griffel/react');
|
17
18
|
var roosterjsEditorPlugins = require('roosterjs-editor-plugins');
|
18
19
|
var roosterjsEditorCore = require('roosterjs-editor-core');
|
19
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');
|
20
24
|
var reactChat = require('@fluentui-contrib/react-chat');
|
21
25
|
var uuid = require('uuid');
|
22
|
-
var react$1 = require('@griffel/react');
|
23
26
|
var parse = require('html-react-parser');
|
24
27
|
var Linkify = require('react-linkify');
|
25
28
|
var DOMPurify = require('dompurify');
|
@@ -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-202403280012';
|
177
180
|
|
178
181
|
|
179
182
|
var telemetryVersion$1 = /*@__PURE__*/getDefaultExportFromCjs(telemetryVersion);
|
@@ -1841,7 +1844,9 @@ function convertSdkCallToDeclarativeCall(call) {
|
|
1841
1844
|
},
|
1842
1845
|
/* @conditional-compile-remove(hide-attendee-name) */
|
1843
1846
|
// TODO: Replace this once the SDK supports hide attendee name
|
1844
|
-
hideAttendeeNames: false
|
1847
|
+
hideAttendeeNames: false,
|
1848
|
+
/* @conditional-compile-remove(meeting-id) */
|
1849
|
+
info: _isACSCall(call) ? call.info : _isTeamsCall(call) ? call.info : undefined
|
1845
1850
|
};
|
1846
1851
|
}
|
1847
1852
|
/**
|
@@ -2024,6 +2029,8 @@ let CallContext$2 = class CallContext {
|
|
2024
2029
|
existingCall.captionsFeature.currentSpokenLanguage = call.captionsFeature.currentSpokenLanguage;
|
2025
2030
|
/* @conditional-compile-remove(close-captions) */
|
2026
2031
|
existingCall.captionsFeature.currentCaptionLanguage = call.captionsFeature.currentCaptionLanguage;
|
2032
|
+
/* @conditional-compile-remove(meeting-id) */
|
2033
|
+
existingCall.info = call.info;
|
2027
2034
|
}
|
2028
2035
|
else {
|
2029
2036
|
draft.calls[latestCallId] = call;
|
@@ -5624,7 +5631,7 @@ const typingIndicatorStringStyle = react.mergeStyles({
|
|
5624
5631
|
wordBreak: 'break-word'
|
5625
5632
|
});
|
5626
5633
|
|
5627
|
-
var participantItem$k={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed participant",participantStateRinging:"Calling...",participantStateHold:"On hold",attendeeRole:"Attendee"};var ParticipantList$l={overflowParticipantCount:"+{overflowCount} more"};var typingIndicator$k={singleUser:"{user} is typing ...",multipleUsers:"{users} are typing ...",multipleUsersAbbreviateOne:"{users} and 1 other are typing ...",multipleUsersAbbreviateMany:"{users} and {numOthers} others are typing ...",delimiter:", "};var sendBox$k={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",attachmentUploadsPendingError:"Uploading... Please wait.",removeAttachment:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed"};var richTextSendBox$k={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",attachmentUploadsPendingError:"Uploading... Please wait.",removeAttachment:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed",boldTooltip:"Bold",italicTooltip:"Italic",underlineTooltip:"Underline",bulletListTooltip:"Bulleted list",numberListTooltip:"Numbered list",increaseIndentTooltip:"Increase indent",decreaseIndentTooltip:"Decrease indent",richTextFormatButtonTooltip:"Format"};var mentionPopover$k={mentionPopoverHeader:"Suggestions"};var imageOverlay$k={downloadButtonLabel:"Download",dismissButtonAriaLabel:"Close"};var messageStatusIndicator$k={deliveredAriaLabel:"Message sent",deliveredTooltipText:"Sent",seenAriaLabel:"Message seen by others",seenTooltipText:"Seen",readByTooltipText:"Read by {messageThreadReadCount} of {remoteParticipantsCount}",sendingAriaLabel:"Message sending",sendingTooltipText:"Sending",failedToSendAriaLabel:"Message failed to send",failedToSendTooltipText:"Failed to send"};var endCallButton$k={label:"Leave",tooltipContent:"Leave call"};var cameraButton$k={onLabel:"Camera",offLabel:"Camera",tooltipDisabledContent:"Camera is disabled",tooltipOnContent:"Turn off camera",tooltipOffContent:"Turn on camera",tooltipVideoLoadingContent:"Video is loading",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",cameraButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Turn off camera and camera options",offSplitButtonAriaLabel:"Turn on camera and camera options",cameraActionTurnedOnAnnouncement:"Your camera has been turned on",cameraActionTurnedOffAnnouncement:"Your camera has been turned off",onSplitButtonPrimaryActionCamera:"Turn off camera",offSplitButtonPrimaryActionCamera:"Turn on camera",cameraPrimaryActionSplitButtonTitle:"Use camera",videoEffectsMenuItemTitle:"Effects"};var microphoneButton$k={onLabel:"Mic",offLabel:"Mic",tooltipDisabledContent:"Microphone is disabled",tooltipOnContent:"Mute microphone",tooltipOffContent:"Unmute microphone",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker",microphoneButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Mute microphone and audio options",offSplitButtonAriaLabel:"Unmute microphone and audio options",microphoneActionTurnedOnAnnouncement:"Your microphone has been turned on",microphoneActionTurnedOffAnnouncement:"Your microphone has been turned off",offSplitButtonMicrophonePrimaryAction:"Unmute microphone",onSplitButtonMicrophonePrimaryAction:"Mute microphone",microphonePrimaryActionSplitButtonTitle:"Use microphone"};var devicesButton$k={label:"Devices",tooltipContent:"Manage devices",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",audioDeviceMenuTitle:"Audio Device",audioDeviceMenuTooltip:"Choose audio device",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker"};var participantsButton$k={label:"People",tooltipContent:"Show participants",menuHeader:"In this call",participantsListButtonLabel:"{numParticipants} people",muteAllButtonLabel:"Mute all",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied"};var screenShareButton$k={onLabel:"Stop presenting",offLabel:"Present",tooltipDisabledContent:"Presenting is disabled",tooltipOnContent:"Presenting your screen",tooltipOffContent:"Present your screen"};var raiseHandButton$k={offLabel:"Raise",onLabel:"Lower",tooltipDisabledContent:"Raise Hand action is disabled",tooltipOnContent:"Lower Hand",tooltipOffContent:"Raise Hand"};var reactionButton$k={label:"React",ariaLabel:"React Button, Send a reaction",tooltipDisabledContent:"Reaction action is disabled",tooltipContent:"Send a reaction",likeReactionTooltipContent:"Like",heartReactionTooltipContent:"Love",laughReactionTooltipContent:"Laugh",applauseReactionTooltipContent:"Applause",surprisedReactionTooltipContent:"Surprised"};var messageThread$k={yesterday:"Yesterday",sunday:"Sunday",monday:"Monday",tuesday:"Tuesday",wednesday:"Wednesday",thursday:"Thursday",friday:"Friday",saturday:"Saturday",participantJoined:"joined the chat.",participantLeft:"left the chat.",editMessage:"Edit",removeMessage:"Delete",resendMessage:"Try sending again",failToSendTag:"Failed to send",editedTag:"Edited",liveAuthorIntro:"{author} says",messageContentAriaText:"{author} said {message}",messageContentMineAriaText:"You said {message}",editBoxTextLimit:"Your message is over the limit of {limitNumber} characters",editBoxPlaceholderText:"Edit your message",newMessagesIndicator:"New messages",noDisplayNameSub:"No name",editBoxCancelButton:"Cancel",editBoxSubmitButton:"Done",messageReadCount:"Read by {messageReadByCount} of {remoteParticipantsCount}",actionMenuMoreOptions:"More Options",downloadAttachment:"Download file",blockedWarningText:"This message was deleted due to organizational policy.",blockedWarningLinkText:"Details",attachmentCardGroupMessage:"The message has {attachmentCount} attachment",messageDeletedAnnouncementAriaLabel:"The message is deleted"};var errorBar$k={unableToReachChatService:"You are offline",accessDenied:"Unable to access chat services - please check the user credentials provided",userNotInChatThread:"You are no longer in this chat thread",sendMessageNotInChatThread:"Failed to send message because you are no longer in this chat thread",sendMessageGeneric:"Failed to send message",callingNetworkFailure:"Troubling connecting call - you seem to be offline",startVideoGeneric:"Failed to start video",stopVideoGeneric:"Failed to stop video",muteGeneric:"Failed to mute microphone",unmuteGeneric:"Failed to unmute microphone",speakingWhileMuted:"Your microphone is muted",startScreenShareGeneric:"There was an issue starting screen share.",stopScreenShareGeneric:"Failed to stop screen sharing",callNetworkQualityLow:"Network quality is low.",callNoSpeakerFound:"No speakers or headphones found. Connect an audio device to hear the call.",callNoMicrophoneFound:"No microphones found. Connect an audio input device.",callMicrophoneAccessDenied:"Unable to access microphone. Click the lock in the address bar to grant permission to this webpage.",callMicrophoneAccessDeniedSafari:"Unable to access microphone. Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",callMicrophoneMutedBySystem:"You are muted by your system.",callMicrophoneUnmutedBySystem:"Your microphone recovered and you were unmuted by your system.",callMacOsMicrophoneAccessDenied:"Unable to access microphone. Grant microphone permission in your macOS privacy settings.",callLocalVideoFreeze:"Network bandwidth is poor. Your video may appear paused for others on the call.",callCameraAccessDenied:"Unable to access camera. Click the lock in the address bar to grant permission to this webpage.",callCameraAccessDeniedSafari:"Unable to access camera. Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",callCameraAlreadyInUse:"Unable to access camera. It may already be in use by another application.",callVideoStoppedBySystem:"Your video has been stopped by your system.",callVideoRecoveredBySystem:"Your video has resumed.",callMacOsCameraAccessDenied:"MacOS is blocking access to your camera. Update your privacy settings to allow this browser to access your camera.",callMacOsScreenShareAccessDenied:"MacOS is blocking screen sharing. Update your privacy settings to allow this browser to record your screen.",dismissButtonAriaLabel:"Close",failedToJoinCallGeneric:"Failed to join call.",failedToJoinCallInvalidMeetingLink:"Unable to join Meeting. Invalid Link.",cameraFrozenForRemoteParticipants:"Users in the call are having issues seeing your video. Please check your devices and network.",unableToStartVideoEffect:"Unable to apply video effect.",startSpotlightWhileMaxParticipantsAreSpotlighted:"Cannot start spotlight on participant(s) because the maximum number of participants are already spotlighted."};var videoGallery$k={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Switch camera",localVideoMovementLabel:"Movable Local Video Tile",localVideoSelectedDescription:"{cameraName} selected",displayNamePlaceholder:"Unnamed participant",fitRemoteParticipantToFrame:"Fit to frame",fillRemoteParticipantFrame:"Fill frame",pinParticipantForMe:"Pin for me",pinParticipantForMeLimitReached:"Pin (limit reached)",unpinParticipantForMe:"Unpin",pinParticipantMenuItemAriaLabel:"Pin {participantName}",unpinParticipantMenuItemAriaLabel:"Unpin {participantName}",pinnedParticipantAnnouncementAriaLabel:"Pinned {participantName}",unpinnedParticipantAnnouncementAriaLabel:"Unpinned {participantName}",startSpotlightVideoTileMenuLabel:"Spotlight for everyone",addSpotlightVideoTileMenuLabel:"Add spotlight",spotlightLimitReachedMenuTitle:"Spotlight limit reached",stopSpotlightVideoTileMenuLabel:"Stop spotlighting",stopSpotlightOnSelfVideoTileMenuLabel:"Exit spotlight",attendeeRole:"Attendee"};var dialpad$k={placeholderText:"Enter phone number",deleteButtonAriaLabel:"Delete"};var holdButton$k={onLabel:"Resume",offLabel:"Hold",tooltipOnContent:"Resume call",tooltipOffContent:"Hold call"};var videoTile$k={participantStateRinging:"Calling...",participantStateHold:"On hold"};var CameraAndMicrophoneSitePermissionsRequest$k={primaryText:"Allow {appName} to use your camera and microphone",secondaryText:"This is so participants can see and hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera and microphone",ariaLabel:"Allow camera and microphone access"};var CameraSitePermissionsRequest$k={primaryText:"Allow {appName} to use your camera",secondaryText:"This is so participants can see you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera",ariaLabel:"Allow camera access"};var MicrophoneSitePermissionsRequest$k={primaryText:"Allow {appName} to use your microphone",secondaryText:"This is so participants can hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without microphone",ariaLabel:"Allow microphone access"};var CameraAndMicrophoneSitePermissionsCheck$k={primaryText:"Checking for camera and microphone access",secondaryText:"Allow access if prompted. This is so participants can see and hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera and microphone",ariaLabel:"Checking for camera and microphone access. Allow access if prompted."};var CameraSitePermissionsCheck$k={primaryText:"Checking for camera access",secondaryText:"Allow access if prompted. This is so participants can see you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera",ariaLabel:"Checking for camera access. Allow access if prompted."};var MicrophoneSitePermissionsCheck$k={primaryText:"Checking for microphone access",secondaryText:"Allow access if prompted. This is so participants can hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without microphone",ariaLabel:"Checking for microphone access. Allow access if prompted."};var CameraAndMicrophoneSitePermissionsDenied$k={primaryText:"Unable to access camera and microphone",secondaryText:"Click the lock icon in the address bar to grant microphone permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without camera and microphone",linkText:"Need help? Get troubleshooting help"};var CameraAndMicrophoneSitePermissionsDeniedSafari$k={primaryText:"Unable to access camera and microphone",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without camera and microphone",linkText:"Need help? Get troubleshooting help"};var CameraSitePermissionsDenied$k={primaryText:"Unable to access camera",secondaryText:"Click the lock icon in the address bar to grant camera permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without camera",linkText:"Need help? Get troubleshooting help"};var MicrophoneSitePermissionsDenied$k={primaryText:"Unable to access microphone",secondaryText:"Click the lock icon in the address bar to grant microphone permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without microphone",linkText:"Need help? Get troubleshooting help"};var CameraSitePermissionsDeniedSafari$k={primaryText:"Unable to access camera",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without camera",linkText:"Need help? Get troubleshooting help"};var MicrophoneSitePermissionsDeniedSafari$k={primaryText:"Unable to access microphone",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without microphone",linkText:"Need help? Get troubleshooting help"};var UnsupportedBrowser$l={primaryText:"Browser not supported",secondaryText:"Please join this call using a compatible browser.",moreHelpLinkText:"See compatibility requirements"};var UnsupportedBrowserVersion$l={primaryText:"Browser update needed",secondaryText:"To ensure the best call possible, please update your browser and then try joining the call again.",moreHelpLinkText:"See compatibility requirements",continueAnywayButtonText:"Start call without updating"};var UnsupportedOperatingSystem$l={primaryText:"Operating system not supported",secondaryText:"Please join this call using a device with a compatible operating system.",moreHelpLinkText:"See compatibility requirements"};var BrowserPermissionDenied$k={primaryText:"Can't use your camera or microphone",secondaryText:"Your browser might not have access to your camera or microphone. To fix this, open System Preferences.",primaryButtonText:"Try again",linkText:"Need help? Get troubleshooting help"};var BrowserPermissionDeniedIOS$k={primaryText:"Allow microphone access to continue",secondaryText:"So other participants can hear you.",primaryButtonText:"Try again",imageAltText:"Microphone and camera device permission location for iOS",linkText:"Need help? Get troubleshooting help",step1Text:"Go to the Settings app",step2Text:"Scroll down to settings for this browser",step3Text:"Turn on Microphone (Camera optional)",step4Text:"Try joining the call again",step1DigitText:"1",step2DigitText:"2",step3DigitText:"3",step4DigitText:"4"};var verticalGallery$k={leftNavButtonAriaLabel:"previous page",rightNavButtonAriaLabel:"next page"};var en_US$1 = {participantItem:participantItem$k,ParticipantList:ParticipantList$l,typingIndicator:typingIndicator$k,sendBox:sendBox$k,richTextSendBox:richTextSendBox$k,mentionPopover:mentionPopover$k,imageOverlay:imageOverlay$k,messageStatusIndicator:messageStatusIndicator$k,endCallButton:endCallButton$k,cameraButton:cameraButton$k,microphoneButton:microphoneButton$k,devicesButton:devicesButton$k,participantsButton:participantsButton$k,screenShareButton:screenShareButton$k,raiseHandButton:raiseHandButton$k,reactionButton:reactionButton$k,messageThread:messageThread$k,errorBar:errorBar$k,videoGallery:videoGallery$k,dialpad:dialpad$k,holdButton:holdButton$k,videoTile:videoTile$k,CameraAndMicrophoneSitePermissionsRequest:CameraAndMicrophoneSitePermissionsRequest$k,CameraSitePermissionsRequest:CameraSitePermissionsRequest$k,MicrophoneSitePermissionsRequest:MicrophoneSitePermissionsRequest$k,CameraAndMicrophoneSitePermissionsCheck:CameraAndMicrophoneSitePermissionsCheck$k,CameraSitePermissionsCheck:CameraSitePermissionsCheck$k,MicrophoneSitePermissionsCheck:MicrophoneSitePermissionsCheck$k,CameraAndMicrophoneSitePermissionsDenied:CameraAndMicrophoneSitePermissionsDenied$k,CameraAndMicrophoneSitePermissionsDeniedSafari:CameraAndMicrophoneSitePermissionsDeniedSafari$k,CameraSitePermissionsDenied:CameraSitePermissionsDenied$k,MicrophoneSitePermissionsDenied:MicrophoneSitePermissionsDenied$k,CameraSitePermissionsDeniedSafari:CameraSitePermissionsDeniedSafari$k,MicrophoneSitePermissionsDeniedSafari:MicrophoneSitePermissionsDeniedSafari$k,UnsupportedBrowser:UnsupportedBrowser$l,UnsupportedBrowserVersion:UnsupportedBrowserVersion$l,UnsupportedOperatingSystem:UnsupportedOperatingSystem$l,BrowserPermissionDenied:BrowserPermissionDenied$k,BrowserPermissionDeniedIOS:BrowserPermissionDeniedIOS$k,verticalGallery:verticalGallery$k};
|
5634
|
+
var participantItem$k={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed participant",participantStateRinging:"Calling...",participantStateHold:"On hold",attendeeRole:"Attendee"};var ParticipantList$l={overflowParticipantCount:"+{overflowCount} more"};var typingIndicator$k={singleUser:"{user} is typing ...",multipleUsers:"{users} are typing ...",multipleUsersAbbreviateOne:"{users} and 1 other are typing ...",multipleUsersAbbreviateMany:"{users} and {numOthers} others are typing ...",delimiter:", "};var sendBox$k={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",attachmentUploadsPendingError:"Uploading... Please wait.",removeAttachment:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed"};var richTextSendBox$k={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",attachmentUploadsPendingError:"Uploading... Please wait.",removeAttachment:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed",boldTooltip:"Bold",italicTooltip:"Italic",underlineTooltip:"Underline",bulletListTooltip:"Bulleted list",numberListTooltip:"Numbered list",increaseIndentTooltip:"Increase indent",decreaseIndentTooltip:"Decrease indent",insertTableTooltip:"Insert table",richTextFormatButtonTooltip:"Format",insertRowOrColumnMenu:"Insert",insertTableMenuTitle:"Insert {column} x {row} table",insertRowAboveMenu:"Insert above",insertRowBelowMenu:"Insert below",insertColumnLeftMenu:"Insert left",insertColumnRightMenu:"Insert right",deleteRowOrColumnMenu:"Delete",deleteColumnMenu:"Delete column",deleteRowMenu:"Delete row",deleteTableMenu:"Delete table"};var mentionPopover$k={mentionPopoverHeader:"Suggestions"};var imageOverlay$k={downloadButtonLabel:"Download",dismissButtonAriaLabel:"Close"};var messageStatusIndicator$k={deliveredAriaLabel:"Message sent",deliveredTooltipText:"Sent",seenAriaLabel:"Message seen by others",seenTooltipText:"Seen",readByTooltipText:"Read by {messageThreadReadCount} of {remoteParticipantsCount}",sendingAriaLabel:"Message sending",sendingTooltipText:"Sending",failedToSendAriaLabel:"Message failed to send",failedToSendTooltipText:"Failed to send"};var endCallButton$k={label:"Leave",tooltipContent:"Leave call"};var cameraButton$k={onLabel:"Camera",offLabel:"Camera",tooltipDisabledContent:"Camera is disabled",tooltipOnContent:"Turn off camera",tooltipOffContent:"Turn on camera",tooltipVideoLoadingContent:"Video is loading",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",cameraButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Turn off camera and camera options",offSplitButtonAriaLabel:"Turn on camera and camera options",cameraActionTurnedOnAnnouncement:"Your camera has been turned on",cameraActionTurnedOffAnnouncement:"Your camera has been turned off",onSplitButtonPrimaryActionCamera:"Turn off camera",offSplitButtonPrimaryActionCamera:"Turn on camera",cameraPrimaryActionSplitButtonTitle:"Use camera",videoEffectsMenuItemTitle:"Effects"};var microphoneButton$k={onLabel:"Mic",offLabel:"Mic",tooltipDisabledContent:"Microphone is disabled",tooltipOnContent:"Mute microphone",tooltipOffContent:"Unmute microphone",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker",microphoneButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Mute microphone and audio options",offSplitButtonAriaLabel:"Unmute microphone and audio options",microphoneActionTurnedOnAnnouncement:"Your microphone has been turned on",microphoneActionTurnedOffAnnouncement:"Your microphone has been turned off",offSplitButtonMicrophonePrimaryAction:"Unmute microphone",onSplitButtonMicrophonePrimaryAction:"Mute microphone",microphonePrimaryActionSplitButtonTitle:"Use microphone"};var devicesButton$k={label:"Devices",tooltipContent:"Manage devices",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",audioDeviceMenuTitle:"Audio Device",audioDeviceMenuTooltip:"Choose audio device",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker"};var participantsButton$k={label:"People",tooltipContent:"Show participants",menuHeader:"In this call",participantsListButtonLabel:"{numParticipants} people",muteAllButtonLabel:"Mute all",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied"};var screenShareButton$k={onLabel:"Stop presenting",offLabel:"Present",tooltipDisabledContent:"Presenting is disabled",tooltipOnContent:"Presenting your screen",tooltipOffContent:"Present your screen"};var raiseHandButton$k={offLabel:"Raise",onLabel:"Lower",tooltipDisabledContent:"Raise Hand action is disabled",tooltipOnContent:"Lower Hand",tooltipOffContent:"Raise Hand"};var reactionButton$k={label:"React",ariaLabel:"React Button, Send a reaction",tooltipDisabledContent:"Reaction action is disabled",tooltipContent:"Send a reaction",likeReactionTooltipContent:"Like",heartReactionTooltipContent:"Love",laughReactionTooltipContent:"Laugh",applauseReactionTooltipContent:"Applause",surprisedReactionTooltipContent:"Surprised"};var messageThread$k={yesterday:"Yesterday",sunday:"Sunday",monday:"Monday",tuesday:"Tuesday",wednesday:"Wednesday",thursday:"Thursday",friday:"Friday",saturday:"Saturday",participantJoined:"joined the chat.",participantLeft:"left the chat.",editMessage:"Edit",removeMessage:"Delete",resendMessage:"Try sending again",failToSendTag:"Failed to send",editedTag:"Edited",liveAuthorIntro:"{author} says",messageContentAriaText:"{author} said {message}",messageContentMineAriaText:"You said {message}",editBoxTextLimit:"Your message is over the limit of {limitNumber} characters",editBoxPlaceholderText:"Edit your message",newMessagesIndicator:"New messages",noDisplayNameSub:"No name",editBoxCancelButton:"Cancel",editBoxSubmitButton:"Done",messageReadCount:"Read by {messageReadByCount} of {remoteParticipantsCount}",actionMenuMoreOptions:"More Options",downloadAttachment:"Download file",blockedWarningText:"This message was deleted due to organizational policy.",blockedWarningLinkText:"Details",attachmentCardGroupMessage:"The message has {attachmentCount} attachment",messageDeletedAnnouncementAriaLabel:"The message is deleted"};var errorBar$k={unableToReachChatService:"You are offline",accessDenied:"Unable to access chat services - please check the user credentials provided",userNotInChatThread:"You are no longer in this chat thread",sendMessageNotInChatThread:"Failed to send message because you are no longer in this chat thread",sendMessageGeneric:"Failed to send message",callingNetworkFailure:"Troubling connecting call - you seem to be offline",startVideoGeneric:"Failed to start video",stopVideoGeneric:"Failed to stop video",muteGeneric:"Failed to mute microphone",unmuteGeneric:"Failed to unmute microphone",speakingWhileMuted:"Your microphone is muted",startScreenShareGeneric:"There was an issue starting screen share.",stopScreenShareGeneric:"Failed to stop screen sharing",callNetworkQualityLow:"Network quality is low.",callNoSpeakerFound:"No speakers or headphones found. Connect an audio device to hear the call.",callNoMicrophoneFound:"No microphones found. Connect an audio input device.",callMicrophoneAccessDenied:"Unable to access microphone. Click the lock in the address bar to grant permission to this webpage.",callMicrophoneAccessDeniedSafari:"Unable to access microphone. Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",callMicrophoneMutedBySystem:"You are muted by your system.",callMicrophoneUnmutedBySystem:"Your microphone recovered and you were unmuted by your system.",callMacOsMicrophoneAccessDenied:"Unable to access microphone. Grant microphone permission in your macOS privacy settings.",callLocalVideoFreeze:"Network bandwidth is poor. Your video may appear paused for others on the call.",callCameraAccessDenied:"Unable to access camera. Click the lock in the address bar to grant permission to this webpage.",callCameraAccessDeniedSafari:"Unable to access camera. Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",callCameraAlreadyInUse:"Unable to access camera. It may already be in use by another application.",callVideoStoppedBySystem:"Your video has been stopped by your system.",callVideoRecoveredBySystem:"Your video has resumed.",callMacOsCameraAccessDenied:"MacOS is blocking access to your camera. Update your privacy settings to allow this browser to access your camera.",callMacOsScreenShareAccessDenied:"MacOS is blocking screen sharing. Update your privacy settings to allow this browser to record your screen.",dismissButtonAriaLabel:"Close",failedToJoinCallGeneric:"Failed to join call.",failedToJoinCallInvalidMeetingLink:"Unable to join Meeting. Invalid Link.",cameraFrozenForRemoteParticipants:"Users in the call are having issues seeing your video. Please check your devices and network.",unableToStartVideoEffect:"Unable to apply video effect.",startSpotlightWhileMaxParticipantsAreSpotlighted:"Cannot start spotlight on participant(s) because the maximum number of participants are already spotlighted."};var videoGallery$k={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Switch camera",localVideoMovementLabel:"Movable Local Video Tile",localVideoSelectedDescription:"{cameraName} selected",displayNamePlaceholder:"Unnamed participant",fitRemoteParticipantToFrame:"Fit to frame",fillRemoteParticipantFrame:"Fill frame",pinParticipantForMe:"Pin for me",pinParticipantForMeLimitReached:"Pin (limit reached)",unpinParticipantForMe:"Unpin",pinParticipantMenuItemAriaLabel:"Pin {participantName}",unpinParticipantMenuItemAriaLabel:"Unpin {participantName}",pinnedParticipantAnnouncementAriaLabel:"Pinned {participantName}",unpinnedParticipantAnnouncementAriaLabel:"Unpinned {participantName}",startSpotlightVideoTileMenuLabel:"Spotlight for everyone",addSpotlightVideoTileMenuLabel:"Add spotlight",spotlightLimitReachedMenuTitle:"Spotlight limit reached",stopSpotlightVideoTileMenuLabel:"Stop spotlighting",stopSpotlightOnSelfVideoTileMenuLabel:"Exit spotlight",attendeeRole:"Attendee"};var dialpad$k={placeholderText:"Enter phone number",deleteButtonAriaLabel:"Delete"};var holdButton$k={onLabel:"Resume",offLabel:"Hold",tooltipOnContent:"Resume call",tooltipOffContent:"Hold call"};var videoTile$k={participantStateRinging:"Calling...",participantStateHold:"On hold"};var CameraAndMicrophoneSitePermissionsRequest$k={primaryText:"Allow {appName} to use your camera and microphone",secondaryText:"This is so participants can see and hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera and microphone",ariaLabel:"Allow camera and microphone access"};var CameraSitePermissionsRequest$k={primaryText:"Allow {appName} to use your camera",secondaryText:"This is so participants can see you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera",ariaLabel:"Allow camera access"};var MicrophoneSitePermissionsRequest$k={primaryText:"Allow {appName} to use your microphone",secondaryText:"This is so participants can hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without microphone",ariaLabel:"Allow microphone access"};var CameraAndMicrophoneSitePermissionsCheck$k={primaryText:"Checking for camera and microphone access",secondaryText:"Allow access if prompted. This is so participants can see and hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera and microphone",ariaLabel:"Checking for camera and microphone access. Allow access if prompted."};var CameraSitePermissionsCheck$k={primaryText:"Checking for camera access",secondaryText:"Allow access if prompted. This is so participants can see you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera",ariaLabel:"Checking for camera access. Allow access if prompted."};var MicrophoneSitePermissionsCheck$k={primaryText:"Checking for microphone access",secondaryText:"Allow access if prompted. This is so participants can hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without microphone",ariaLabel:"Checking for microphone access. Allow access if prompted."};var CameraAndMicrophoneSitePermissionsDenied$k={primaryText:"Unable to access camera and microphone",secondaryText:"Click the lock icon in the address bar to grant microphone permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without camera and microphone",linkText:"Need help? Get troubleshooting help"};var CameraAndMicrophoneSitePermissionsDeniedSafari$k={primaryText:"Unable to access camera and microphone",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without camera and microphone",linkText:"Need help? Get troubleshooting help"};var CameraSitePermissionsDenied$k={primaryText:"Unable to access camera",secondaryText:"Click the lock icon in the address bar to grant camera permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without camera",linkText:"Need help? Get troubleshooting help"};var MicrophoneSitePermissionsDenied$k={primaryText:"Unable to access microphone",secondaryText:"Click the lock icon in the address bar to grant microphone permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without microphone",linkText:"Need help? Get troubleshooting help"};var CameraSitePermissionsDeniedSafari$k={primaryText:"Unable to access camera",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without camera",linkText:"Need help? Get troubleshooting help"};var MicrophoneSitePermissionsDeniedSafari$k={primaryText:"Unable to access microphone",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without microphone",linkText:"Need help? Get troubleshooting help"};var UnsupportedBrowser$l={primaryText:"Browser not supported",secondaryText:"Please join this call using a compatible browser.",moreHelpLinkText:"See compatibility requirements"};var UnsupportedBrowserVersion$l={primaryText:"Browser update needed",secondaryText:"To ensure the best call possible, please update your browser and then try joining the call again.",moreHelpLinkText:"See compatibility requirements",continueAnywayButtonText:"Start call without updating"};var UnsupportedOperatingSystem$l={primaryText:"Operating system not supported",secondaryText:"Please join this call using a device with a compatible operating system.",moreHelpLinkText:"See compatibility requirements"};var BrowserPermissionDenied$k={primaryText:"Can't use your camera or microphone",secondaryText:"Your browser might not have access to your camera or microphone. To fix this, open System Preferences.",primaryButtonText:"Try again",linkText:"Need help? Get troubleshooting help"};var BrowserPermissionDeniedIOS$k={primaryText:"Allow microphone access to continue",secondaryText:"So other participants can hear you.",primaryButtonText:"Try again",imageAltText:"Microphone and camera device permission location for iOS",linkText:"Need help? Get troubleshooting help",step1Text:"Go to the Settings app",step2Text:"Scroll down to settings for this browser",step3Text:"Turn on Microphone (Camera optional)",step4Text:"Try joining the call again",step1DigitText:"1",step2DigitText:"2",step3DigitText:"3",step4DigitText:"4"};var verticalGallery$k={leftNavButtonAriaLabel:"previous page",rightNavButtonAriaLabel:"next page"};var en_US$1 = {participantItem:participantItem$k,ParticipantList:ParticipantList$l,typingIndicator:typingIndicator$k,sendBox:sendBox$k,richTextSendBox:richTextSendBox$k,mentionPopover:mentionPopover$k,imageOverlay:imageOverlay$k,messageStatusIndicator:messageStatusIndicator$k,endCallButton:endCallButton$k,cameraButton:cameraButton$k,microphoneButton:microphoneButton$k,devicesButton:devicesButton$k,participantsButton:participantsButton$k,screenShareButton:screenShareButton$k,raiseHandButton:raiseHandButton$k,reactionButton:reactionButton$k,messageThread:messageThread$k,errorBar:errorBar$k,videoGallery:videoGallery$k,dialpad:dialpad$k,holdButton:holdButton$k,videoTile:videoTile$k,CameraAndMicrophoneSitePermissionsRequest:CameraAndMicrophoneSitePermissionsRequest$k,CameraSitePermissionsRequest:CameraSitePermissionsRequest$k,MicrophoneSitePermissionsRequest:MicrophoneSitePermissionsRequest$k,CameraAndMicrophoneSitePermissionsCheck:CameraAndMicrophoneSitePermissionsCheck$k,CameraSitePermissionsCheck:CameraSitePermissionsCheck$k,MicrophoneSitePermissionsCheck:MicrophoneSitePermissionsCheck$k,CameraAndMicrophoneSitePermissionsDenied:CameraAndMicrophoneSitePermissionsDenied$k,CameraAndMicrophoneSitePermissionsDeniedSafari:CameraAndMicrophoneSitePermissionsDeniedSafari$k,CameraSitePermissionsDenied:CameraSitePermissionsDenied$k,MicrophoneSitePermissionsDenied:MicrophoneSitePermissionsDenied$k,CameraSitePermissionsDeniedSafari:CameraSitePermissionsDeniedSafari$k,MicrophoneSitePermissionsDeniedSafari:MicrophoneSitePermissionsDeniedSafari$k,UnsupportedBrowser:UnsupportedBrowser$l,UnsupportedBrowserVersion:UnsupportedBrowserVersion$l,UnsupportedOperatingSystem:UnsupportedOperatingSystem$l,BrowserPermissionDenied:BrowserPermissionDenied$k,BrowserPermissionDeniedIOS:BrowserPermissionDeniedIOS$k,verticalGallery:verticalGallery$k};
|
5628
5635
|
|
5629
5636
|
// Copyright (c) Microsoft Corporation.
|
5630
5637
|
// Licensed under the MIT License.
|
@@ -6354,8 +6361,9 @@ const sendButtonStyle = react.mergeStyles({
|
|
6354
6361
|
*/
|
6355
6362
|
const sendIconStyle = (props) => {
|
6356
6363
|
const { theme, hasText, disabled = false,
|
6357
|
-
/* @conditional-compile-remove(
|
6358
|
-
const hasNoContent = !hasText &&
|
6364
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ hasFile, hasErrorMessage, customSendIconStyle, defaultTextColor = theme.palette.neutralTertiary } = props;
|
6365
|
+
const hasNoContent = !hasText &&
|
6366
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ !hasFile;
|
6359
6367
|
return react.mergeStyles(editorTextBoxButtonStyle, {
|
6360
6368
|
color: disabled || hasErrorMessage || hasNoContent ? defaultTextColor : theme.palette.themePrimary
|
6361
6369
|
}, customSendIconStyle);
|
@@ -6699,9 +6707,9 @@ const DEFAULT_COMPONENT_ICONS = {
|
|
6699
6707
|
LowerHandContextualMenuItem: React.createElement(reactIcons.HandRightOff20Regular, null),
|
6700
6708
|
/* @conditional-compile-remove(reaction) */
|
6701
6709
|
ReactionButtonIcon: React.createElement(reactIcons.Emoji20Regular, null),
|
6702
|
-
/* @conditional-compile-remove(
|
6710
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
6703
6711
|
CancelFileUpload: React.createElement(reactIcons.Dismiss16Regular, null),
|
6704
|
-
/* @conditional-compile-remove(
|
6712
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
6705
6713
|
DownloadFile: React.createElement(reactIcons.ArrowDownload16Regular, null),
|
6706
6714
|
/* @conditional-compile-remove(data-loss-prevention) */
|
6707
6715
|
DataLossPreventionProhibited: React.createElement(DataLossPreventionProhibited16Regular, null),
|
@@ -6819,7 +6827,15 @@ const DEFAULT_COMPONENT_ICONS = {
|
|
6819
6827
|
/* @conditional-compile-remove(rich-text-editor) */
|
6820
6828
|
RichTextEditorButtonIcon: React.createElement(reactIcons.TextEditStyle20Regular, null),
|
6821
6829
|
/* @conditional-compile-remove(rich-text-editor) */
|
6822
|
-
RichTextEditorButtonIconFilled: React.createElement(reactIcons.TextEditStyle20Filled, null)
|
6830
|
+
RichTextEditorButtonIconFilled: React.createElement(reactIcons.TextEditStyle20Filled, null),
|
6831
|
+
/* @conditional-compile-remove(rich-text-editor) */
|
6832
|
+
RichTextInsertTableRegularIcon: React.createElement(reactIcons.Table20Regular, null),
|
6833
|
+
/* @conditional-compile-remove(rich-text-editor) */
|
6834
|
+
RichTextInsertTableFilledIcon: React.createElement(reactIcons.Table20Filled, null),
|
6835
|
+
/* @conditional-compile-remove(rich-text-editor) */
|
6836
|
+
RichTextTableInsertMenuIcon: React.createElement(reactIcons.TableAdd20Regular, null),
|
6837
|
+
/* @conditional-compile-remove(rich-text-editor) */
|
6838
|
+
RichTextTableDeleteMenuIcon: React.createElement(reactIcons.TableDismiss20Regular, null)
|
6823
6839
|
};
|
6824
6840
|
|
6825
6841
|
// Copyright (c) Microsoft Corporation.
|
@@ -8749,26 +8765,83 @@ const SendBoxErrors = (props) => {
|
|
8749
8765
|
|
8750
8766
|
// Copyright (c) Microsoft Corporation.
|
8751
8767
|
// Licensed under the MIT License.
|
8752
|
-
/* @conditional-compile-remove(
|
8768
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
8753
8769
|
/**
|
8754
8770
|
* Conditionally modify locale strings passed to the attachment card
|
8755
8771
|
* @returns file upload card strings
|
8756
8772
|
*/
|
8757
8773
|
const useLocaleAttachmentCardStringsTrampoline = () => {
|
8758
|
-
/* @conditional-compile-remove(
|
8774
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
8759
8775
|
return useLocale$1().strings.sendBox;
|
8760
8776
|
};
|
8761
8777
|
|
8778
|
+
// Copyright (c) Microsoft Corporation.
|
8779
|
+
// Licensed under the MIT License.
|
8780
|
+
/**
|
8781
|
+
* @private
|
8782
|
+
*/
|
8783
|
+
const useAttachmentCardStyles = reactComponents.makeStyles({
|
8784
|
+
root: {
|
8785
|
+
width: '12rem',
|
8786
|
+
minWidth: '75%'
|
8787
|
+
}
|
8788
|
+
});
|
8789
|
+
/**
|
8790
|
+
* @private
|
8791
|
+
*/
|
8792
|
+
const fileNameContainerClassName = react.mergeStyles({
|
8793
|
+
marginTop: _pxToRem(5),
|
8794
|
+
width: '5.75rem',
|
8795
|
+
overflow: 'hidden',
|
8796
|
+
textOverflow: 'ellipsis',
|
8797
|
+
span: {
|
8798
|
+
whiteSpace: 'nowrap'
|
8799
|
+
}
|
8800
|
+
});
|
8801
|
+
|
8762
8802
|
// Copyright (c) Microsoft Corporation.
|
8763
8803
|
// Licensed under the MIT License.
|
8764
8804
|
/**
|
8765
8805
|
* @internal
|
8766
|
-
* A component for displaying
|
8806
|
+
* A component for displaying an attachment card with attachment icon and progress bar.
|
8807
|
+
*
|
8808
|
+
* `_AttachmentCard` internally uses the `Card` component from `@fluentui/react-components`. You can checkout the details about these components [here](https://react.fluentui.dev/?path=/docs/components-card).
|
8767
8809
|
*/
|
8768
8810
|
const _AttachmentCard = (props) => {
|
8769
8811
|
var _a, _b, _c, _d;
|
8770
|
-
const { attachmentName, attachmentExtension, progress, actionIcon } = props;
|
8771
|
-
const
|
8812
|
+
const { attachmentName, attachmentExtension, progress, actionIcon, actionHandler } = props;
|
8813
|
+
const attachmentCardStyles = useAttachmentCardStyles();
|
8814
|
+
// default/placeholder before actual code implemented
|
8815
|
+
const menuActions = React.useMemo(() => {
|
8816
|
+
return [
|
8817
|
+
{
|
8818
|
+
name: actionIcon && (actionIcon === null || actionIcon === void 0 ? void 0 : actionIcon.props.ariaLabel),
|
8819
|
+
icon: actionIcon !== null && actionIcon !== void 0 ? actionIcon : React.createElement(React.Fragment, null),
|
8820
|
+
onClick: (attachment) => {
|
8821
|
+
if (attachment) {
|
8822
|
+
actionHandler === null || actionHandler === void 0 ? void 0 : actionHandler();
|
8823
|
+
}
|
8824
|
+
}
|
8825
|
+
}
|
8826
|
+
];
|
8827
|
+
}, [actionIcon, actionHandler]);
|
8828
|
+
// placeholder before refactoring the props
|
8829
|
+
const attachment = React.useMemo(() => {
|
8830
|
+
return {
|
8831
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
8832
|
+
id: 'attachmentId',
|
8833
|
+
extension: attachmentExtension,
|
8834
|
+
name: attachmentName,
|
8835
|
+
url: 'https://localhost' // placeholder not used
|
8836
|
+
};
|
8837
|
+
}, [attachmentExtension, attachmentName]);
|
8838
|
+
// placeholder before refactoring the props
|
8839
|
+
const onDownloadErrorMessage = React.useCallback((errorMessage) => {
|
8840
|
+
console.log(errorMessage);
|
8841
|
+
}, []);
|
8842
|
+
const isUploadComplete = React.useMemo(() => {
|
8843
|
+
return progress !== undefined && progress > 0 && progress < 1;
|
8844
|
+
}, [progress]);
|
8772
8845
|
const [announcerString, setAnnouncerString] = React.useState(undefined);
|
8773
8846
|
const localeStrings = useLocaleAttachmentCardStringsTrampoline();
|
8774
8847
|
const uploadStartedString = (_b = (_a = props.strings) === null || _a === void 0 ? void 0 : _a.uploading) !== null && _b !== void 0 ? _b : localeStrings.uploading;
|
@@ -8785,61 +8858,42 @@ const _AttachmentCard = (props) => {
|
|
8785
8858
|
setAnnouncerString(undefined);
|
8786
8859
|
}
|
8787
8860
|
}, [progress, showProgressIndicator, attachmentName, uploadStartedString, uploadCompletedString]);
|
8788
|
-
const progressBarThicknessPx = 4;
|
8789
|
-
const containerClassName = react.mergeStyles({
|
8790
|
-
width: '12rem',
|
8791
|
-
background: theme.palette.neutralLighter,
|
8792
|
-
borderRadius: theme.effects.roundedCorner4,
|
8793
|
-
border: `${_pxToRem(1)} solid ${theme.palette.neutralQuaternary}`,
|
8794
|
-
cursor: 'pointer'
|
8795
|
-
});
|
8796
|
-
const attachmentInfoWrapperClassName = react.mergeStyles({
|
8797
|
-
padding: _pxToRem(12),
|
8798
|
-
// To make space for the progress indicator.
|
8799
|
-
paddingBottom: showProgressIndicator ? _pxToRem(12 - progressBarThicknessPx * 2) : _pxToRem(12)
|
8800
|
-
});
|
8801
|
-
const attachmentNameContainerClassName = react.mergeStyles({
|
8802
|
-
paddingLeft: _pxToRem(4),
|
8803
|
-
minWidth: '75%',
|
8804
|
-
maxWidth: '75%'
|
8805
|
-
});
|
8806
|
-
const attachmentNameTextClassName = react.mergeStyles({
|
8807
|
-
overflow: 'hidden',
|
8808
|
-
textOverflow: 'ellipsis',
|
8809
|
-
lineHeight: 'normal',
|
8810
|
-
whiteSpace: 'nowrap',
|
8811
|
-
paddingRight: _pxToRem(4)
|
8812
|
-
});
|
8813
|
-
const actionIconClassName = react.mergeStyles({
|
8814
|
-
cursor: 'pointer'
|
8815
|
-
});
|
8816
|
-
const progressIndicatorStyles = {
|
8817
|
-
itemProgress: {
|
8818
|
-
padding: `${_pxToRem(progressBarThicknessPx - 1)} 0`, // item progress height won't apply without an explicit padding
|
8819
|
-
// To make the progress indicator border curve along the bottom of attachment card.
|
8820
|
-
borderRadius: `0 0 ${theme.effects.roundedCorner4} ${theme.effects.roundedCorner4}`
|
8821
|
-
},
|
8822
|
-
progressBar: {
|
8823
|
-
height: _pxToRem(progressBarThicknessPx)
|
8824
|
-
}
|
8825
|
-
};
|
8826
8861
|
return (React.createElement("div", { "data-is-focusable": true },
|
8827
8862
|
React.createElement(Announcer$1, { announcementString: announcerString, ariaLive: 'polite' }),
|
8828
|
-
React.createElement(
|
8829
|
-
|
8830
|
-
|
8831
|
-
|
8832
|
-
|
8833
|
-
|
8834
|
-
React.createElement(
|
8835
|
-
|
8836
|
-
|
8837
|
-
|
8838
|
-
|
8839
|
-
|
8840
|
-
|
8841
|
-
|
8842
|
-
|
8863
|
+
React.createElement(reactComponents.Card, { className: attachmentCardStyles.root, size: "small", role: "listitem" },
|
8864
|
+
React.createElement(reactComponents.CardHeader, { image: React.createElement(react.Icon, { "data-ui-id": 'filetype-icon', iconName: reactFileTypeIcons.getFileTypeIconProps({
|
8865
|
+
extension: attachmentExtension,
|
8866
|
+
size: 24,
|
8867
|
+
imageFileType: 'svg'
|
8868
|
+
}).iconName }), header: React.createElement("div", { className: fileNameContainerClassName },
|
8869
|
+
React.createElement(reactComponents.Text, { title: attachmentName }, attachmentName)), action: getMenuItems(menuActions, attachment, onDownloadErrorMessage) })),
|
8870
|
+
isUploadComplete ? (React.createElement(reactComponents.CardFooter, null,
|
8871
|
+
React.createElement(reactComponents.ProgressBar, { thickness: "medium", value: progress, shape: "rounded" }))) : (React.createElement(React.Fragment, null, " "))));
|
8872
|
+
};
|
8873
|
+
const getMenuItems = (menuActions, attachment, handleOnClickError) => {
|
8874
|
+
if (menuActions.length === 0) {
|
8875
|
+
return React.createElement(React.Fragment, null);
|
8876
|
+
}
|
8877
|
+
return menuActions.length === 1 ? (React.createElement(reactComponents.ToolbarButton, { "aria-label": menuActions[0].name, icon: menuActions[0].icon, onClick: () => {
|
8878
|
+
try {
|
8879
|
+
menuActions[0].onClick(attachment);
|
8880
|
+
}
|
8881
|
+
catch (e) {
|
8882
|
+
handleOnClickError === null || handleOnClickError === void 0 ? void 0 : handleOnClickError(e.message);
|
8883
|
+
}
|
8884
|
+
} })) : (React.createElement(reactComponents.Toolbar, null,
|
8885
|
+
React.createElement(reactComponents.Menu, null,
|
8886
|
+
React.createElement(reactComponents.MenuTrigger, null,
|
8887
|
+
React.createElement(reactComponents.ToolbarButton, { "aria-label": "More", icon: React.createElement(reactIcons.MoreHorizontal24Filled, null) })),
|
8888
|
+
React.createElement(reactComponents.MenuPopover, null,
|
8889
|
+
React.createElement(reactComponents.MenuList, null, menuActions.map((menuItem, index) => (React.createElement(reactComponents.MenuItem, { key: index, icon: menuItem.icon, onClick: () => {
|
8890
|
+
try {
|
8891
|
+
menuItem.onClick(attachment);
|
8892
|
+
}
|
8893
|
+
catch (e) {
|
8894
|
+
handleOnClickError === null || handleOnClickError === void 0 ? void 0 : handleOnClickError(e.message);
|
8895
|
+
}
|
8896
|
+
} }, menuItem.name))))))));
|
8843
8897
|
};
|
8844
8898
|
|
8845
8899
|
// Copyright (c) Microsoft Corporation.
|
@@ -8876,42 +8930,19 @@ const _AttachmentCardGroup = (props) => {
|
|
8876
8930
|
|
8877
8931
|
// Copyright (c) Microsoft Corporation.
|
8878
8932
|
// Licensed under the MIT License.
|
8879
|
-
|
8880
|
-
* @private
|
8881
|
-
*/
|
8882
|
-
const iconButtonClassName = react.mergeStyles({
|
8883
|
-
color: 'unset',
|
8884
|
-
width: '1rem',
|
8885
|
-
height: '1rem',
|
8886
|
-
background: 'transparent',
|
8887
|
-
':hover': {
|
8888
|
-
color: 'unset',
|
8889
|
-
background: 'transparent'
|
8890
|
-
}
|
8891
|
-
});
|
8892
|
-
|
8893
|
-
// Copyright (c) Microsoft Corporation.
|
8894
|
-
// Licensed under the MIT License.
|
8895
|
-
const actionIconStyle$1 = { height: '1rem' };
|
8933
|
+
const actionIconStyle = { height: '1rem' };
|
8896
8934
|
/**
|
8897
8935
|
* @internal
|
8898
8936
|
*/
|
8899
8937
|
const _AttachmentUploadCards = (props) => {
|
8900
|
-
var _a;
|
8901
8938
|
const attachments = props.activeFileUploads;
|
8902
|
-
const localeStrings = useLocaleAttachmentCardStringsTrampoline();
|
8903
|
-
const removeAttachmentButtonString = React.useMemo(() => () => {
|
8904
|
-
var _a, _b;
|
8905
|
-
return (_b = (_a = props.strings) === null || _a === void 0 ? void 0 : _a.removeAttachment) !== null && _b !== void 0 ? _b : localeStrings.removeAttachment;
|
8906
|
-
}, [(_a = props.strings) === null || _a === void 0 ? void 0 : _a.removeAttachment, localeStrings.removeAttachment]);
|
8907
8939
|
if (!attachments || attachments.length === 0) {
|
8908
8940
|
return React.createElement(React.Fragment, null);
|
8909
8941
|
}
|
8910
8942
|
return (React.createElement(_AttachmentCardGroup, null, attachments &&
|
8911
8943
|
attachments
|
8912
8944
|
.filter((attachment) => !attachment.error)
|
8913
|
-
.map((attachment) => (React.createElement(_AttachmentCard, { attachmentName: attachment.filename, progress: attachment.progress, key: attachment.id, attachmentExtension: extension(attachment.filename), actionIcon: React.createElement(react.
|
8914
|
-
React.createElement(react.Icon, { iconName: "CancelFileUpload", style: actionIconStyle$1 })), actionHandler: () => {
|
8945
|
+
.map((attachment) => (React.createElement(_AttachmentCard, { attachmentName: attachment.filename, progress: attachment.progress, key: attachment.id, attachmentExtension: extension(attachment.filename), actionIcon: React.createElement(react.Icon, { iconName: "CancelFileUpload", className: react.mergeStyles(actionIconStyle) }), actionHandler: () => {
|
8915
8946
|
props.onCancelFileUpload && props.onCancelFileUpload(attachment.id);
|
8916
8947
|
}, strings: props.strings })))));
|
8917
8948
|
};
|
@@ -8923,7 +8954,7 @@ const _AttachmentUploadCards = (props) => {
|
|
8923
8954
|
*/
|
8924
8955
|
const MAXIMUM_LENGTH_OF_MESSAGE = 8000;
|
8925
8956
|
const EMPTY_MESSAGE_REGEX = /^\s*$/;
|
8926
|
-
/* @conditional-compile-remove(
|
8957
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
8927
8958
|
/**
|
8928
8959
|
* @private
|
8929
8960
|
*/
|
@@ -8933,7 +8964,7 @@ const hasIncompleteFileUploads = (activeFileUploads) => {
|
|
8933
8964
|
.filter((attachmentUpload) => !attachmentUpload.error)
|
8934
8965
|
.every((attachmentUpload) => attachmentUpload.uploadComplete));
|
8935
8966
|
};
|
8936
|
-
/* @conditional-compile-remove(
|
8967
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
8937
8968
|
/**
|
8938
8969
|
* @private
|
8939
8970
|
*/
|
@@ -8958,6 +8989,363 @@ const sanitizeText = (message) => {
|
|
8958
8989
|
}
|
8959
8990
|
};
|
8960
8991
|
|
8992
|
+
// Copyright (c) Microsoft Corporation.
|
8993
|
+
// Licensed under the MIT License.
|
8994
|
+
// These color records are required for createV9Theme
|
8995
|
+
// For more info, check https://react.fluentui.dev/iframe.html?viewMode=docs&id=concepts-migration-from-v8-components-theme-migration--page#compatible-themes
|
8996
|
+
/**
|
8997
|
+
* @private
|
8998
|
+
*/
|
8999
|
+
const grey = {
|
9000
|
+
'0': '#000000',
|
9001
|
+
'2': '#050505',
|
9002
|
+
'4': '#0a0a0a',
|
9003
|
+
'6': '#0f0f0f',
|
9004
|
+
'8': '#141414',
|
9005
|
+
'10': '#1a1a1a',
|
9006
|
+
'12': '#1f1f1f',
|
9007
|
+
'14': '#242424',
|
9008
|
+
'16': '#292929',
|
9009
|
+
'18': '#2e2e2e',
|
9010
|
+
'20': '#333333',
|
9011
|
+
'22': '#383838',
|
9012
|
+
'24': '#3d3d3d',
|
9013
|
+
'26': '#424242',
|
9014
|
+
'28': '#474747',
|
9015
|
+
'30': '#4d4d4d',
|
9016
|
+
'32': '#525252',
|
9017
|
+
'34': '#575757',
|
9018
|
+
'36': '#5c5c5c',
|
9019
|
+
'38': '#616161',
|
9020
|
+
'40': '#666666',
|
9021
|
+
'42': '#6b6b6b',
|
9022
|
+
'44': '#707070',
|
9023
|
+
'46': '#757575',
|
9024
|
+
'48': '#7a7a7a',
|
9025
|
+
'50': '#808080',
|
9026
|
+
'52': '#858585',
|
9027
|
+
'54': '#8a8a8a',
|
9028
|
+
'56': '#8f8f8f',
|
9029
|
+
'58': '#949494',
|
9030
|
+
'60': '#999999',
|
9031
|
+
'62': '#9e9e9e',
|
9032
|
+
'64': '#a3a3a3',
|
9033
|
+
'66': '#a8a8a8',
|
9034
|
+
'68': '#adadad',
|
9035
|
+
'70': '#b3b3b3',
|
9036
|
+
'72': '#b8b8b8',
|
9037
|
+
'74': '#bdbdbd',
|
9038
|
+
'76': '#c2c2c2',
|
9039
|
+
'78': '#c7c7c7',
|
9040
|
+
'80': '#cccccc',
|
9041
|
+
'82': '#d1d1d1',
|
9042
|
+
'84': '#d6d6d6',
|
9043
|
+
'86': '#dbdbdb',
|
9044
|
+
'88': '#e0e0e0',
|
9045
|
+
'90': '#e6e6e6',
|
9046
|
+
'92': '#ebebeb',
|
9047
|
+
'94': '#f0f0f0',
|
9048
|
+
'96': '#f5f5f5',
|
9049
|
+
'98': '#fafafa',
|
9050
|
+
'100': '#ffffff'
|
9051
|
+
};
|
9052
|
+
/**
|
9053
|
+
* @private
|
9054
|
+
*/
|
9055
|
+
const whiteAlpha = {
|
9056
|
+
'5': 'rgba(255, 255, 255, 0.05)',
|
9057
|
+
'10': 'rgba(255, 255, 255, 0.1)',
|
9058
|
+
'20': 'rgba(255, 255, 255, 0.2)',
|
9059
|
+
'30': 'rgba(255, 255, 255, 0.3)',
|
9060
|
+
'40': 'rgba(255, 255, 255, 0.4)',
|
9061
|
+
'50': 'rgba(255, 255, 255, 0.5)',
|
9062
|
+
'60': 'rgba(255, 255, 255, 0.6)',
|
9063
|
+
'70': 'rgba(255, 255, 255, 0.7)',
|
9064
|
+
'80': 'rgba(255, 255, 255, 0.8)',
|
9065
|
+
'90': 'rgba(255, 255, 255, 0.9)'
|
9066
|
+
};
|
9067
|
+
/**
|
9068
|
+
* @private
|
9069
|
+
*/
|
9070
|
+
const blackAlpha = {
|
9071
|
+
'5': 'rgba(0, 0, 0, 0.05)',
|
9072
|
+
'10': 'rgba(0, 0, 0, 0.1)',
|
9073
|
+
'20': 'rgba(0, 0, 0, 0.2)',
|
9074
|
+
'30': 'rgba(0, 0, 0, 0.3)',
|
9075
|
+
'40': 'rgba(0, 0, 0, 0.4)',
|
9076
|
+
'50': 'rgba(0, 0, 0, 0.5)',
|
9077
|
+
'60': 'rgba(0, 0, 0, 0.6)',
|
9078
|
+
'70': 'rgba(0, 0, 0, 0.7)',
|
9079
|
+
'80': 'rgba(0, 0, 0, 0.8)',
|
9080
|
+
'90': 'rgba(0, 0, 0, 0.9)'
|
9081
|
+
};
|
9082
|
+
/**
|
9083
|
+
* @private
|
9084
|
+
*/
|
9085
|
+
const grey10Alpha = {
|
9086
|
+
'5': 'rgba(26, 26, 26, 0.05)',
|
9087
|
+
'10': 'rgba(26, 26, 26, 0.1)',
|
9088
|
+
'20': 'rgba(26, 26, 26, 0.2)',
|
9089
|
+
'30': 'rgba(26, 26, 26, 0.3)',
|
9090
|
+
'40': 'rgba(26, 26, 26, 0.4)',
|
9091
|
+
'50': 'rgba(26, 26, 26, 0.5)',
|
9092
|
+
'60': 'rgba(26, 26, 26, 0.6)',
|
9093
|
+
'70': 'rgba(26, 26, 26, 0.7)',
|
9094
|
+
'80': 'rgba(26, 26, 26, 0.8)',
|
9095
|
+
'90': 'rgba(26, 26, 26, 0.9)'
|
9096
|
+
};
|
9097
|
+
/**
|
9098
|
+
* @private
|
9099
|
+
*/
|
9100
|
+
const grey12Alpha = {
|
9101
|
+
'5': 'rgba(31, 31, 31, 0.05)',
|
9102
|
+
'10': 'rgba(31, 31, 31, 0.1)',
|
9103
|
+
'20': 'rgba(31, 31, 31, 0.2)',
|
9104
|
+
'30': 'rgba(31, 31, 31, 0.3)',
|
9105
|
+
'40': 'rgba(31, 31, 31, 0.4)',
|
9106
|
+
'50': 'rgba(31, 31, 31, 0.5)',
|
9107
|
+
'60': 'rgba(31, 31, 31, 0.6)',
|
9108
|
+
'70': 'rgba(31, 31, 31, 0.7)',
|
9109
|
+
'80': 'rgba(31, 31, 31, 0.8)',
|
9110
|
+
'90': 'rgba(31, 31, 31, 0.9)'
|
9111
|
+
};
|
9112
|
+
|
9113
|
+
// Copyright (c) Microsoft Corporation.
|
9114
|
+
// Licensed under the MIT License.
|
9115
|
+
// These mappings are required for createV9Theme
|
9116
|
+
// For more info, check https://react.fluentui.dev/iframe.html?viewMode=docs&id=concepts-migration-from-v8-components-theme-migration--page#compatible-themes
|
9117
|
+
/**
|
9118
|
+
* Creates v9 color tokens from a v8 palette.
|
9119
|
+
*/
|
9120
|
+
const mapAliasColors = (palette, inverted) => {
|
9121
|
+
return {
|
9122
|
+
colorNeutralForeground1: palette.neutralPrimary,
|
9123
|
+
colorNeutralForeground1Hover: palette.neutralPrimary,
|
9124
|
+
colorNeutralForeground1Pressed: palette.neutralPrimary,
|
9125
|
+
colorNeutralForeground1Selected: palette.neutralPrimary,
|
9126
|
+
colorNeutralForeground2: palette.neutralSecondary,
|
9127
|
+
colorNeutralForeground2Hover: palette.neutralPrimary,
|
9128
|
+
colorNeutralForeground2Pressed: palette.neutralPrimary,
|
9129
|
+
colorNeutralForeground2Selected: palette.neutralPrimary,
|
9130
|
+
colorNeutralForeground2BrandHover: palette.themePrimary,
|
9131
|
+
colorNeutralForeground2BrandPressed: palette.themeDarkAlt,
|
9132
|
+
colorNeutralForeground2BrandSelected: palette.themePrimary,
|
9133
|
+
colorNeutralForeground3: palette.neutralTertiary,
|
9134
|
+
colorNeutralForeground3Hover: palette.neutralSecondary,
|
9135
|
+
colorNeutralForeground3Pressed: palette.neutralSecondary,
|
9136
|
+
colorNeutralForeground3Selected: palette.neutralSecondary,
|
9137
|
+
colorNeutralForeground3BrandHover: palette.themePrimary,
|
9138
|
+
colorNeutralForeground3BrandPressed: palette.themeDarkAlt,
|
9139
|
+
colorNeutralForeground3BrandSelected: palette.themePrimary,
|
9140
|
+
colorNeutralForeground4: palette.neutralQuaternary,
|
9141
|
+
colorNeutralForegroundDisabled: palette.neutralTertiaryAlt,
|
9142
|
+
colorNeutralForegroundInvertedDisabled: whiteAlpha[40],
|
9143
|
+
colorBrandForegroundLink: palette.themeDarkAlt,
|
9144
|
+
colorBrandForegroundLinkHover: palette.themeDark,
|
9145
|
+
colorBrandForegroundLinkPressed: palette.themeDarker,
|
9146
|
+
colorBrandForegroundLinkSelected: palette.themeDarkAlt,
|
9147
|
+
colorNeutralForeground2Link: palette.neutralSecondary,
|
9148
|
+
colorNeutralForeground2LinkHover: palette.neutralPrimary,
|
9149
|
+
colorNeutralForeground2LinkPressed: palette.neutralPrimary,
|
9150
|
+
colorNeutralForeground2LinkSelected: palette.neutralPrimary,
|
9151
|
+
colorCompoundBrandForeground1: palette.themePrimary,
|
9152
|
+
colorCompoundBrandForeground1Hover: palette.themeDarkAlt,
|
9153
|
+
colorCompoundBrandForeground1Pressed: palette.themeDark,
|
9154
|
+
colorBrandForeground1: palette.themePrimary,
|
9155
|
+
colorBrandForeground2: palette.themeDarkAlt,
|
9156
|
+
colorBrandForeground2Hover: palette.themeDarkAlt,
|
9157
|
+
colorBrandForeground2Pressed: palette.themeDarkAlt,
|
9158
|
+
colorNeutralForeground1Static: palette.neutralPrimary,
|
9159
|
+
colorNeutralForegroundInverted: palette.white,
|
9160
|
+
colorNeutralForegroundInvertedHover: palette.white,
|
9161
|
+
colorNeutralForegroundInvertedPressed: palette.white,
|
9162
|
+
colorNeutralForegroundInvertedSelected: palette.white,
|
9163
|
+
colorNeutralForegroundOnBrand: palette.white,
|
9164
|
+
colorNeutralForegroundStaticInverted: palette.white,
|
9165
|
+
colorNeutralForegroundInvertedLink: palette.white,
|
9166
|
+
colorNeutralForegroundInvertedLinkHover: palette.white,
|
9167
|
+
colorNeutralForegroundInvertedLinkPressed: palette.white,
|
9168
|
+
colorNeutralForegroundInvertedLinkSelected: palette.white,
|
9169
|
+
colorNeutralForegroundInverted2: palette.white,
|
9170
|
+
colorBrandForegroundInverted: palette.themeSecondary,
|
9171
|
+
colorBrandForegroundInvertedHover: palette.themeTertiary,
|
9172
|
+
colorBrandForegroundInvertedPressed: palette.themeSecondary,
|
9173
|
+
colorBrandForegroundOnLight: palette.themePrimary,
|
9174
|
+
colorBrandForegroundOnLightHover: palette.themeDarkAlt,
|
9175
|
+
colorBrandForegroundOnLightPressed: palette.themeDark,
|
9176
|
+
colorBrandForegroundOnLightSelected: palette.themeDark,
|
9177
|
+
colorNeutralBackground1: palette.white,
|
9178
|
+
colorNeutralBackground1Hover: palette.neutralLighter,
|
9179
|
+
colorNeutralBackground1Pressed: palette.neutralQuaternaryAlt,
|
9180
|
+
colorNeutralBackground1Selected: palette.neutralLight,
|
9181
|
+
colorNeutralBackground2: palette.neutralLighterAlt,
|
9182
|
+
colorNeutralBackground2Hover: palette.neutralLighter,
|
9183
|
+
colorNeutralBackground2Pressed: palette.neutralQuaternaryAlt,
|
9184
|
+
colorNeutralBackground2Selected: palette.neutralLight,
|
9185
|
+
colorNeutralBackground3: palette.neutralLighter,
|
9186
|
+
colorNeutralBackground3Hover: palette.neutralLight,
|
9187
|
+
colorNeutralBackground3Pressed: palette.neutralQuaternary,
|
9188
|
+
colorNeutralBackground3Selected: palette.neutralQuaternaryAlt,
|
9189
|
+
colorNeutralBackground4: palette.neutralLighter,
|
9190
|
+
colorNeutralBackground4Hover: palette.neutralLighterAlt,
|
9191
|
+
colorNeutralBackground4Pressed: palette.neutralLighter,
|
9192
|
+
colorNeutralBackground4Selected: palette.white,
|
9193
|
+
colorNeutralBackground5: palette.neutralLight,
|
9194
|
+
colorNeutralBackground5Hover: palette.neutralLighter,
|
9195
|
+
colorNeutralBackground5Pressed: palette.neutralLighter,
|
9196
|
+
colorNeutralBackground5Selected: palette.neutralLighterAlt,
|
9197
|
+
colorNeutralBackground6: palette.neutralLight,
|
9198
|
+
colorNeutralBackgroundStatic: grey[20],
|
9199
|
+
colorNeutralBackgroundInverted: palette.neutralSecondary,
|
9200
|
+
colorNeutralBackgroundAlpha: inverted ? grey10Alpha[50] : whiteAlpha[50],
|
9201
|
+
colorNeutralBackgroundAlpha2: inverted ? grey12Alpha[70] : whiteAlpha[80],
|
9202
|
+
colorSubtleBackground: 'transparent',
|
9203
|
+
colorSubtleBackgroundHover: palette.neutralLighter,
|
9204
|
+
colorSubtleBackgroundPressed: palette.neutralQuaternaryAlt,
|
9205
|
+
colorSubtleBackgroundSelected: palette.neutralLight,
|
9206
|
+
colorSubtleBackgroundLightAlphaHover: inverted ? whiteAlpha[10] : whiteAlpha[80],
|
9207
|
+
colorSubtleBackgroundLightAlphaPressed: inverted ? whiteAlpha[5] : whiteAlpha[50],
|
9208
|
+
colorSubtleBackgroundLightAlphaSelected: 'transparent',
|
9209
|
+
colorSubtleBackgroundInverted: 'transparent',
|
9210
|
+
colorSubtleBackgroundInvertedHover: blackAlpha[10],
|
9211
|
+
colorSubtleBackgroundInvertedPressed: blackAlpha[30],
|
9212
|
+
colorSubtleBackgroundInvertedSelected: blackAlpha[20],
|
9213
|
+
colorTransparentBackground: 'transparent',
|
9214
|
+
colorTransparentBackgroundHover: 'transparent',
|
9215
|
+
colorTransparentBackgroundPressed: 'transparent',
|
9216
|
+
colorTransparentBackgroundSelected: 'transparent',
|
9217
|
+
colorNeutralBackgroundDisabled: palette.neutralLighter,
|
9218
|
+
colorNeutralBackgroundInvertedDisabled: whiteAlpha[10],
|
9219
|
+
colorNeutralStencil1: palette.neutralLight,
|
9220
|
+
colorNeutralStencil2: palette.neutralLighterAlt,
|
9221
|
+
colorNeutralStencil1Alpha: inverted ? whiteAlpha[10] : blackAlpha[10],
|
9222
|
+
colorNeutralStencil2Alpha: inverted ? whiteAlpha[5] : blackAlpha[5],
|
9223
|
+
colorBackgroundOverlay: blackAlpha[40],
|
9224
|
+
colorScrollbarOverlay: blackAlpha[50],
|
9225
|
+
colorBrandBackground: palette.themePrimary,
|
9226
|
+
colorBrandBackgroundHover: palette.themeDarkAlt,
|
9227
|
+
colorBrandBackgroundPressed: palette.themeDarker,
|
9228
|
+
colorBrandBackgroundSelected: palette.themeDark,
|
9229
|
+
colorCompoundBrandBackground: palette.themePrimary,
|
9230
|
+
colorCompoundBrandBackgroundHover: palette.themeDarkAlt,
|
9231
|
+
colorCompoundBrandBackgroundPressed: palette.themeDark,
|
9232
|
+
colorBrandBackgroundStatic: palette.themePrimary,
|
9233
|
+
colorBrandBackground2: palette.themeLighterAlt,
|
9234
|
+
colorBrandBackground2Hover: palette.themeLighterAlt,
|
9235
|
+
colorBrandBackground2Pressed: palette.themeLighterAlt,
|
9236
|
+
colorBrandBackground3Static: palette.themeDark,
|
9237
|
+
colorBrandBackground4Static: palette.themeDarker,
|
9238
|
+
colorBrandBackgroundInverted: palette.white,
|
9239
|
+
colorBrandBackgroundInvertedHover: palette.themeLighterAlt,
|
9240
|
+
colorBrandBackgroundInvertedPressed: palette.themeLight,
|
9241
|
+
colorBrandBackgroundInvertedSelected: palette.themeLighter,
|
9242
|
+
colorNeutralCardBackground: inverted ? grey[20] : grey[98],
|
9243
|
+
colorNeutralCardBackgroundHover: inverted ? grey[24] : palette.white,
|
9244
|
+
colorNeutralCardBackgroundPressed: inverted ? grey[18] : grey[96],
|
9245
|
+
colorNeutralCardBackgroundSelected: inverted ? grey[22] : grey[92],
|
9246
|
+
colorNeutralCardBackgroundDisabled: inverted ? grey[8] : grey[94],
|
9247
|
+
colorNeutralStrokeAccessible: palette.neutralSecondary,
|
9248
|
+
colorNeutralStrokeAccessibleHover: palette.neutralSecondary,
|
9249
|
+
colorNeutralStrokeAccessiblePressed: palette.neutralSecondary,
|
9250
|
+
colorNeutralStrokeAccessibleSelected: palette.themePrimary,
|
9251
|
+
colorNeutralStroke1: palette.neutralQuaternary,
|
9252
|
+
colorNeutralStroke1Hover: palette.neutralTertiaryAlt,
|
9253
|
+
colorNeutralStroke1Pressed: palette.neutralTertiaryAlt,
|
9254
|
+
colorNeutralStroke1Selected: palette.neutralTertiaryAlt,
|
9255
|
+
colorNeutralStroke2: palette.neutralQuaternaryAlt,
|
9256
|
+
colorNeutralStroke3: palette.neutralLighter,
|
9257
|
+
colorNeutralStrokeSubtle: palette.neutralQuaternaryAlt,
|
9258
|
+
colorNeutralStrokeOnBrand: palette.white,
|
9259
|
+
colorNeutralStrokeOnBrand2: palette.white,
|
9260
|
+
colorNeutralStrokeOnBrand2Hover: palette.white,
|
9261
|
+
colorNeutralStrokeOnBrand2Pressed: palette.white,
|
9262
|
+
colorNeutralStrokeOnBrand2Selected: palette.white,
|
9263
|
+
colorBrandStroke1: palette.themePrimary,
|
9264
|
+
colorBrandStroke2: palette.themeLight,
|
9265
|
+
colorBrandStroke2Hover: palette.themeLight,
|
9266
|
+
colorBrandStroke2Pressed: palette.themeLight,
|
9267
|
+
colorBrandStroke2Contrast: palette.themeLight,
|
9268
|
+
colorCompoundBrandStroke: palette.themePrimary,
|
9269
|
+
colorCompoundBrandStrokeHover: palette.themeDarkAlt,
|
9270
|
+
colorCompoundBrandStrokePressed: palette.themeDark,
|
9271
|
+
colorNeutralStrokeDisabled: palette.neutralQuaternaryAlt,
|
9272
|
+
colorNeutralStrokeInvertedDisabled: whiteAlpha[40],
|
9273
|
+
colorTransparentStroke: 'transparent',
|
9274
|
+
colorTransparentStrokeInteractive: 'transparent',
|
9275
|
+
colorTransparentStrokeDisabled: 'transparent',
|
9276
|
+
colorNeutralStrokeAlpha: inverted ? whiteAlpha[10] : blackAlpha[5],
|
9277
|
+
colorNeutralStrokeAlpha2: whiteAlpha[20],
|
9278
|
+
colorStrokeFocus1: palette.white,
|
9279
|
+
colorStrokeFocus2: palette.black,
|
9280
|
+
colorNeutralShadowAmbient: 'rgba(0,0,0,0.12)',
|
9281
|
+
colorNeutralShadowKey: 'rgba(0,0,0,0.14)',
|
9282
|
+
colorNeutralShadowAmbientLighter: 'rgba(0,0,0,0.06)',
|
9283
|
+
colorNeutralShadowKeyLighter: 'rgba(0,0,0,0.07)',
|
9284
|
+
colorNeutralShadowAmbientDarker: 'rgba(0,0,0,0.20)',
|
9285
|
+
colorNeutralShadowKeyDarker: 'rgba(0,0,0,0.24)',
|
9286
|
+
colorBrandShadowAmbient: 'rgba(0,0,0,0.30)',
|
9287
|
+
colorBrandShadowKey: 'rgba(0,0,0,0.25)'
|
9288
|
+
};
|
9289
|
+
};
|
9290
|
+
/**
|
9291
|
+
* Creates v9 shadow tokens from v8 effects.
|
9292
|
+
*/
|
9293
|
+
const mapShadowTokens = (effects) => {
|
9294
|
+
return {
|
9295
|
+
shadow4: effects.elevation4,
|
9296
|
+
shadow8: effects.elevation8,
|
9297
|
+
shadow16: effects.elevation16,
|
9298
|
+
shadow64: effects.elevation64
|
9299
|
+
};
|
9300
|
+
};
|
9301
|
+
/**
|
9302
|
+
* Creates v9 border radius tokens from v8 effects
|
9303
|
+
*/
|
9304
|
+
const mapBorderRadiusTokens = (effects) => {
|
9305
|
+
return {
|
9306
|
+
borderRadiusSmall: effects.roundedCorner2,
|
9307
|
+
borderRadiusMedium: effects.roundedCorner4,
|
9308
|
+
borderRadiusLarge: effects.roundedCorner6
|
9309
|
+
};
|
9310
|
+
};
|
9311
|
+
/**
|
9312
|
+
* Creates a v9 theme from a v8 theme and base v9 theme.
|
9313
|
+
* FluentUI webLightTheme is used in case if no baseThemeV9 is provided.
|
9314
|
+
*
|
9315
|
+
* @private
|
9316
|
+
*/
|
9317
|
+
const createV9Theme = (themeV8, baseThemeV9) => {
|
9318
|
+
const baseTheme = baseThemeV9 !== null && baseThemeV9 !== void 0 ? baseThemeV9 : reactComponents.webLightTheme;
|
9319
|
+
return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, baseTheme), mapAliasColors(themeV8.palette, themeV8.isInverted)), mapShadowTokens(themeV8.effects)), mapBorderRadiusTokens(themeV8.effects)), { colorBrandBackground2: themeV8.palette.themeLight, colorBrandBackground2Hover: themeV8.palette.themeLight, colorBrandBackground2Pressed: themeV8.palette.themeLight, colorStatusWarningBackground3: '#D83B01', errorText: themeV8.semanticColors.errorText, colorNeutralStroke1Selected: themeV8.palette.neutralQuaternary, colorNeutralForeground2: themeV8.palette.neutralSecondary, colorBrandForegroundLink: themeV8.palette.themePrimary, colorBrandForegroundLinkHover: themeV8.palette.themeDarker, colorNeutralBackground1Selected: themeV8.palette.neutralQuaternaryAlt,
|
9320
|
+
// Fix for an issue with black borders for iOS that are added with 'after' selector
|
9321
|
+
colorStrokeFocus2: 'transparent' });
|
9322
|
+
};
|
9323
|
+
|
9324
|
+
// Copyright (c) Microsoft Corporation.
|
9325
|
+
// Licensed under the MIT License.
|
9326
|
+
/**
|
9327
|
+
* @private
|
9328
|
+
*/
|
9329
|
+
const useFluentV9Wrapper = reactComponents.makeStyles({
|
9330
|
+
body: Object.assign(Object.assign(Object.assign(Object.assign({ height: '100%' }, reactComponents.shorthands.margin(0)), reactComponents.shorthands.overflow('hidden')), reactComponents.shorthands.padding(0)), { width: '100%' })
|
9331
|
+
});
|
9332
|
+
/**
|
9333
|
+
* @private
|
9334
|
+
*/
|
9335
|
+
const FluentV9ThemeProvider = (props) => {
|
9336
|
+
const { v8Theme, children } = props;
|
9337
|
+
const v9Theme = createV9Theme(v8Theme);
|
9338
|
+
const dir = v8Theme.rtl ? 'rtl' : 'ltr';
|
9339
|
+
return (
|
9340
|
+
// TextDirectionProvider is needed to fix issue with direction value update in FluentProvider
|
9341
|
+
React.createElement(react$1.TextDirectionProvider, { dir: dir },
|
9342
|
+
React.createElement(FluentProviderWithStylesOverrides, { theme: v9Theme, dir: dir }, children)));
|
9343
|
+
};
|
9344
|
+
const FluentProviderWithStylesOverrides = (props) => {
|
9345
|
+
const classes = useFluentV9Wrapper();
|
9346
|
+
return React.createElement(reactComponents.FluentProvider, Object.assign({}, props, { className: classes.body, applyStylesToPortals: false }));
|
9347
|
+
};
|
9348
|
+
|
8961
9349
|
// Copyright (c) Microsoft Corporation.
|
8962
9350
|
// Licensed under the MIT License.
|
8963
9351
|
/**
|
@@ -8972,7 +9360,7 @@ const SendBox$1 = (props) => {
|
|
8972
9360
|
const { disabled, systemMessage, supportNewline, onSendMessage, onTyping, onRenderIcon, onRenderSystemMessage, styles, autoFocus,
|
8973
9361
|
/* @conditional-compile-remove(mention) */
|
8974
9362
|
mentionLookupOptions,
|
8975
|
-
/* @conditional-compile-remove(
|
9363
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
8976
9364
|
activeFileUploads } = props;
|
8977
9365
|
const theme = useTheme();
|
8978
9366
|
const localeStrings = useLocale$1().strings.sendBox;
|
@@ -8981,7 +9369,7 @@ const SendBox$1 = (props) => {
|
|
8981
9369
|
const [textValue, setTextValue] = React.useState('');
|
8982
9370
|
const [textValueOverflow, setTextValueOverflow] = React.useState(false);
|
8983
9371
|
const sendTextFieldRef = React.useRef(null);
|
8984
|
-
/* @conditional-compile-remove(
|
9372
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
8985
9373
|
const [attachmentUploadsPendingError, setAttachmentUploadsPendingError] = React.useState(undefined);
|
8986
9374
|
const sendMessageOnClick = () => {
|
8987
9375
|
var _a;
|
@@ -8990,9 +9378,9 @@ const SendBox$1 = (props) => {
|
|
8990
9378
|
return;
|
8991
9379
|
}
|
8992
9380
|
// Don't send message until all files have been uploaded successfully
|
8993
|
-
/* @conditional-compile-remove(
|
9381
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
8994
9382
|
setAttachmentUploadsPendingError(undefined);
|
8995
|
-
/* @conditional-compile-remove(
|
9383
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
8996
9384
|
if (hasIncompleteFileUploads(activeFileUploads)) {
|
8997
9385
|
setAttachmentUploadsPendingError({ message: strings.attachmentUploadsPendingError, timestamp: Date.now() });
|
8998
9386
|
return;
|
@@ -9001,7 +9389,7 @@ const SendBox$1 = (props) => {
|
|
9001
9389
|
// we don't want to send empty messages including spaces, newlines, tabs
|
9002
9390
|
// Message can be empty if there is a valid attachment upload
|
9003
9391
|
if (sanitizeText(message).length > 0 ||
|
9004
|
-
/* @conditional-compile-remove(
|
9392
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ hasCompletedFileUploads(activeFileUploads)) {
|
9005
9393
|
onSendMessage && onSendMessage(message);
|
9006
9394
|
setTextValue('');
|
9007
9395
|
}
|
@@ -9021,25 +9409,25 @@ const SendBox$1 = (props) => {
|
|
9021
9409
|
const mergedSendIconStyle = React.useMemo(() => sendIconStyle({
|
9022
9410
|
theme,
|
9023
9411
|
hasText: !!textValue,
|
9024
|
-
/* @conditional-compile-remove(
|
9412
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ hasFile: hasCompletedFileUploads(activeFileUploads),
|
9025
9413
|
hasErrorMessage: !!errorMessage,
|
9026
9414
|
customSendIconStyle: styles === null || styles === void 0 ? void 0 : styles.sendMessageIcon
|
9027
9415
|
}), [
|
9028
9416
|
theme,
|
9029
9417
|
textValue,
|
9030
|
-
/* @conditional-compile-remove(
|
9418
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ activeFileUploads,
|
9031
9419
|
errorMessage,
|
9032
9420
|
styles === null || styles === void 0 ? void 0 : styles.sendMessageIcon
|
9033
9421
|
]);
|
9034
9422
|
const onRenderSendIcon = React.useCallback((isHover) => onRenderIcon ? (onRenderIcon(isHover)) : (React.createElement(react.Icon, { iconName: isHover && textValue ? 'SendBoxSendHovered' : 'SendBoxSend', className: mergedSendIconStyle })), [mergedSendIconStyle, onRenderIcon, textValue]);
|
9035
9423
|
// Ensure that errors are cleared when there are no files in sendBox
|
9036
|
-
/* @conditional-compile-remove(
|
9424
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
9037
9425
|
React.useEffect(() => {
|
9038
9426
|
if (!(activeFileUploads === null || activeFileUploads === void 0 ? void 0 : activeFileUploads.filter((upload) => !upload.error).length)) {
|
9039
9427
|
setAttachmentUploadsPendingError(undefined);
|
9040
9428
|
}
|
9041
9429
|
}, [activeFileUploads]);
|
9042
|
-
/* @conditional-compile-remove(
|
9430
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
9043
9431
|
const sendBoxErrorsProps = React.useMemo(() => {
|
9044
9432
|
var _a;
|
9045
9433
|
return {
|
@@ -9047,22 +9435,30 @@ const SendBox$1 = (props) => {
|
|
9047
9435
|
attachmentUploadError: (_a = activeFileUploads === null || activeFileUploads === void 0 ? void 0 : activeFileUploads.filter((attachmentUpload) => attachmentUpload.error).pop()) === null || _a === void 0 ? void 0 : _a.error
|
9048
9436
|
};
|
9049
9437
|
}, [activeFileUploads, attachmentUploadsPendingError]);
|
9050
|
-
/* @conditional-compile-remove(
|
9438
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
9051
9439
|
const onRenderFileUploads = React.useCallback(() => {
|
9052
9440
|
var _a, _b, _c, _d, _e, _f;
|
9053
9441
|
if (!(activeFileUploads === null || activeFileUploads === void 0 ? void 0 : activeFileUploads.filter((upload) => !upload.error).length)) {
|
9054
9442
|
return null;
|
9055
9443
|
}
|
9056
9444
|
return props.onRenderFileUploads ? (props.onRenderFileUploads()) : (React.createElement(react.Stack, { className: attachmentUploadCardsStyles },
|
9057
|
-
React.createElement(
|
9058
|
-
|
9059
|
-
|
9060
|
-
|
9061
|
-
|
9062
|
-
|
9445
|
+
React.createElement(FluentV9ThemeProvider, { v8Theme: theme },
|
9446
|
+
React.createElement(_AttachmentUploadCards, { activeFileUploads: activeFileUploads, onCancelFileUpload: props.onCancelFileUpload, strings: {
|
9447
|
+
removeAttachment: (_b = (_a = props.strings) === null || _a === void 0 ? void 0 : _a.removeAttachment) !== null && _b !== void 0 ? _b : localeStrings.removeAttachment,
|
9448
|
+
uploading: (_d = (_c = props.strings) === null || _c === void 0 ? void 0 : _c.uploading) !== null && _d !== void 0 ? _d : localeStrings.uploading,
|
9449
|
+
uploadCompleted: (_f = (_e = props.strings) === null || _e === void 0 ? void 0 : _e.uploadCompleted) !== null && _f !== void 0 ? _f : localeStrings.uploadCompleted
|
9450
|
+
} }))));
|
9451
|
+
}, [
|
9452
|
+
activeFileUploads,
|
9453
|
+
props,
|
9454
|
+
theme,
|
9455
|
+
localeStrings.removeAttachment,
|
9456
|
+
localeStrings.uploading,
|
9457
|
+
localeStrings.uploadCompleted
|
9458
|
+
]);
|
9063
9459
|
return (React.createElement(react.Stack, { className: react.mergeStyles(sendBoxWrapperStyles, { overflow: 'visible' } // This is needed for the mention popup to be visible
|
9064
|
-
) },
|
9065
|
-
React.createElement(SendBoxErrors, Object.assign({}, sendBoxErrorsProps)),
|
9460
|
+
) },
|
9461
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ React.createElement(SendBoxErrors, Object.assign({}, sendBoxErrorsProps)),
|
9066
9462
|
React.createElement(react.Stack, { className: borderAndBoxShadowStyle({
|
9067
9463
|
theme,
|
9068
9464
|
hasErrorMessage: !!errorMessage,
|
@@ -9084,7 +9480,7 @@ const SendBox$1 = (props) => {
|
|
9084
9480
|
}
|
9085
9481
|
e.stopPropagation();
|
9086
9482
|
}, id: 'sendIconWrapper', className: mergedSendButtonStyle, ariaLabel: localeStrings.sendButtonAriaLabel, tooltipContent: localeStrings.sendButtonAriaLabel })),
|
9087
|
-
/* @conditional-compile-remove(
|
9483
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
9088
9484
|
onRenderFileUploads())));
|
9089
9485
|
};
|
9090
9486
|
|
@@ -9344,7 +9740,26 @@ const richTextEditorWrapperStyle = (theme, addTopOffset) => {
|
|
9344
9740
|
paddingInlineEnd: `0.75rem`,
|
9345
9741
|
lineHeight: '1.25rem',
|
9346
9742
|
maxWidth: '100%',
|
9347
|
-
color: theme.palette.neutralPrimary
|
9743
|
+
color: theme.palette.neutralPrimary,
|
9744
|
+
'& table': {
|
9745
|
+
background: 'transparent',
|
9746
|
+
borderCollapse: 'collapse',
|
9747
|
+
width: '100%',
|
9748
|
+
borderSpacing: '0',
|
9749
|
+
// don't shrink/expand cells during the input to the table
|
9750
|
+
tableLayout: 'fixed',
|
9751
|
+
'& tr': {
|
9752
|
+
background: 'transparent',
|
9753
|
+
border: `1px solid ${theme.palette.neutralLight}`,
|
9754
|
+
'& td': {
|
9755
|
+
background: 'transparent',
|
9756
|
+
border: `1px solid ${theme.palette.neutralLight}`,
|
9757
|
+
wordBreak: 'normal',
|
9758
|
+
padding: '0.125rem 0.25rem',
|
9759
|
+
verticalAlign: 'top'
|
9760
|
+
}
|
9761
|
+
}
|
9762
|
+
}
|
9348
9763
|
});
|
9349
9764
|
};
|
9350
9765
|
/**
|
@@ -9395,6 +9810,15 @@ const ribbonOverflowButtonRootStyles = (theme) => {
|
|
9395
9810
|
color: theme.palette.neutralPrimary
|
9396
9811
|
}
|
9397
9812
|
}
|
9813
|
+
},
|
9814
|
+
'.ribbon-table-button-regular-icon': {
|
9815
|
+
display: 'inline-block',
|
9816
|
+
margin: '-0.25rem 0.25rem 0 0.25rem',
|
9817
|
+
width: '1.25rem',
|
9818
|
+
height: '1.25rem'
|
9819
|
+
},
|
9820
|
+
'.ribbon-table-button-filled-icon': {
|
9821
|
+
display: 'none'
|
9398
9822
|
}
|
9399
9823
|
}
|
9400
9824
|
};
|
@@ -9430,13 +9854,67 @@ const ribbonButtonStyle = (theme) => {
|
|
9430
9854
|
rootExpandedHovered: ribbonButtonRootStyles(theme)
|
9431
9855
|
};
|
9432
9856
|
};
|
9857
|
+
const rootRibbonTableButtonStyle = (theme) => {
|
9858
|
+
// merge IStyles props
|
9859
|
+
return Object.assign({ minWidth: 'auto' }, ribbonTableButtonRootStyles(theme, false));
|
9860
|
+
};
|
9861
|
+
/**
|
9862
|
+
* @private
|
9863
|
+
*/
|
9864
|
+
const ribbonTableButtonStyle = (theme) => {
|
9865
|
+
return {
|
9866
|
+
icon: { height: 'auto' },
|
9867
|
+
menuIcon: { height: 'auto' },
|
9868
|
+
root: rootRibbonTableButtonStyle(theme),
|
9869
|
+
rootChecked: ribbonTableButtonRootStyles(theme, true),
|
9870
|
+
rootHovered: ribbonTableButtonRootStyles(theme, true),
|
9871
|
+
rootCheckedHovered: ribbonTableButtonRootStyles(theme, true),
|
9872
|
+
rootCheckedPressed: ribbonTableButtonRootStyles(theme, true),
|
9873
|
+
rootPressed: ribbonTableButtonRootStyles(theme, true),
|
9874
|
+
rootExpanded: ribbonTableButtonRootStyles(theme, true),
|
9875
|
+
rootExpandedHovered: ribbonTableButtonRootStyles(theme, true)
|
9876
|
+
};
|
9877
|
+
};
|
9878
|
+
const ribbonTableButtonRootStyles = (theme, isSelected) => {
|
9879
|
+
return {
|
9880
|
+
backgroundColor: 'transparent',
|
9881
|
+
selectors: {
|
9882
|
+
'.ribbon-table-button-regular-icon': {
|
9883
|
+
width: '1.25rem',
|
9884
|
+
height: '1.25rem',
|
9885
|
+
marginTop: '-0.25rem',
|
9886
|
+
color: theme.palette.neutralPrimary,
|
9887
|
+
display: isSelected ? 'none' : 'inline-block'
|
9888
|
+
},
|
9889
|
+
'.ribbon-table-button-filled-icon': {
|
9890
|
+
width: '1.25rem',
|
9891
|
+
height: '1.25rem',
|
9892
|
+
marginTop: '-0.25rem',
|
9893
|
+
color: theme.palette.themePrimary,
|
9894
|
+
display: isSelected ? 'inline-block' : 'none'
|
9895
|
+
}
|
9896
|
+
}
|
9897
|
+
};
|
9898
|
+
};
|
9433
9899
|
/**
|
9434
9900
|
* @private
|
9435
9901
|
*/
|
9436
9902
|
const ribbonDividerStyle = (theme) => {
|
9437
9903
|
return {
|
9438
9904
|
icon: { color: theme.palette.neutralQuaternaryAlt, margin: '0 -0.5rem', height: 'auto' },
|
9439
|
-
root: { margin: '0', padding: '0', minWidth: 'auto' }
|
9905
|
+
root: { margin: '0', padding: '0', minWidth: 'auto' },
|
9906
|
+
rootHovered: {
|
9907
|
+
backgroundColor: 'transparent',
|
9908
|
+
selectors: {
|
9909
|
+
// Icon's color doesn't work here because of the specificity
|
9910
|
+
'.ms-Button-icon': {
|
9911
|
+
color: theme.palette.neutralQuaternaryAlt
|
9912
|
+
},
|
9913
|
+
'.ms-Button-menuIcon': {
|
9914
|
+
color: theme.palette.neutralQuaternaryAlt
|
9915
|
+
}
|
9916
|
+
}
|
9917
|
+
}
|
9440
9918
|
};
|
9441
9919
|
};
|
9442
9920
|
/**
|
@@ -9463,18 +9941,241 @@ const sendBoxRichTextEditorStyle = (isExpanded) => {
|
|
9463
9941
|
maxHeight: '5rem'
|
9464
9942
|
};
|
9465
9943
|
};
|
9944
|
+
/**
|
9945
|
+
* @private
|
9946
|
+
*/
|
9947
|
+
const insertTableMenuCellButtonStyles = (theme) => {
|
9948
|
+
return {
|
9949
|
+
width: '1rem',
|
9950
|
+
height: '1rem',
|
9951
|
+
border: `solid 0.0625rem ${theme.palette.neutralTertiaryAlt}`,
|
9952
|
+
display: 'inline-block',
|
9953
|
+
cursor: 'pointer',
|
9954
|
+
background: 'transparent'
|
9955
|
+
};
|
9956
|
+
};
|
9957
|
+
/**
|
9958
|
+
* @private
|
9959
|
+
*/
|
9960
|
+
const insertTableMenuCellButtonSelectedStyles = (theme) => {
|
9961
|
+
return {
|
9962
|
+
background: theme.palette.themePrimary
|
9963
|
+
};
|
9964
|
+
};
|
9965
|
+
/**
|
9966
|
+
* @private
|
9967
|
+
*/
|
9968
|
+
const insertTableMenuTablePane = react.mergeStyles({
|
9969
|
+
padding: '0.5rem 0.625rem 0.75rem 0.625rem',
|
9970
|
+
boxSizing: 'content-box',
|
9971
|
+
minWidth: 'auto'
|
9972
|
+
});
|
9973
|
+
/**
|
9974
|
+
* @private
|
9975
|
+
*/
|
9976
|
+
const insertTableMenuFocusZone = (theme) => {
|
9977
|
+
return react.mergeStyles({
|
9978
|
+
lineHeight: '12px',
|
9979
|
+
width: '5rem',
|
9980
|
+
border: `solid 0.0625rem ${theme.palette.neutralTertiaryAlt}`
|
9981
|
+
});
|
9982
|
+
};
|
9983
|
+
/**
|
9984
|
+
* @private
|
9985
|
+
*/
|
9986
|
+
const insertTableMenuTitleStyles = react.mergeStyles({
|
9987
|
+
width: '100%',
|
9988
|
+
height: '1rem',
|
9989
|
+
fontSize: '0.75rem',
|
9990
|
+
marginBottom: '0.5rem'
|
9991
|
+
});
|
9992
|
+
|
9993
|
+
// Copyright (c) Microsoft Corporation.
|
9994
|
+
// Licensed under the MIT License.
|
9995
|
+
// This file uses RoosterJS React package implementation with updates to change table's size and remove styles
|
9996
|
+
/**
|
9997
|
+
* Insert table into editor at current selection
|
9998
|
+
* @param editor The editor instance
|
9999
|
+
* @param columns Number of columns in table
|
10000
|
+
* @param rows Number of rows in table
|
10001
|
+
*/
|
10002
|
+
const insertTable = (editor, columns, rows) => {
|
10003
|
+
const document = editor.getDocument();
|
10004
|
+
const table = document.createElement('table');
|
10005
|
+
for (let i = 0; i < rows; i++) {
|
10006
|
+
const tr = document.createElement('tr');
|
10007
|
+
table.appendChild(tr);
|
10008
|
+
for (let j = 0; j < columns; j++) {
|
10009
|
+
const td = document.createElement('td');
|
10010
|
+
tr.appendChild(td);
|
10011
|
+
td.appendChild(document.createElement('br'));
|
10012
|
+
}
|
10013
|
+
}
|
10014
|
+
editor.focus();
|
10015
|
+
editor.addUndoSnapshot(() => {
|
10016
|
+
const vTable = new roosterjsEditorDom.VTable(table);
|
10017
|
+
vTable.writeBack();
|
10018
|
+
editor.insertNode(table);
|
10019
|
+
editor.runAsync((editor) => editor.select(new roosterjsEditorDom.Position(table, roosterjsEditorTypesCompatible.CompatiblePositionType.Begin).normalize()));
|
10020
|
+
}, roosterjsEditorTypesCompatible.CompatibleChangeSource.Format, undefined /* canUndoByBackspace */, {
|
10021
|
+
formatApiName: 'insertTable'
|
10022
|
+
});
|
10023
|
+
};
|
9466
10024
|
|
9467
10025
|
// Copyright (c) Microsoft Corporation.
|
9468
10026
|
// Licensed under the MIT License.
|
9469
|
-
|
10027
|
+
/**
|
10028
|
+
* @private
|
10029
|
+
*
|
10030
|
+
* String to be replaces by actual values of row and column.
|
10031
|
+
*/
|
10032
|
+
const ColumnRowReplaceString = '{column} x {row}';
|
10033
|
+
/**
|
10034
|
+
* @private
|
10035
|
+
*
|
10036
|
+
* Function to create key pair for the selected table size.
|
10037
|
+
*/
|
10038
|
+
function createKey(row, column) {
|
10039
|
+
return `${row},${column}`;
|
10040
|
+
}
|
10041
|
+
/**
|
10042
|
+
* @private
|
10043
|
+
*
|
10044
|
+
* Function to parse key to the selected table size valules.
|
10045
|
+
*/
|
10046
|
+
function parseKey(key) {
|
10047
|
+
const [row, column] = key.split(',');
|
10048
|
+
return {
|
10049
|
+
row: parseInt(row),
|
10050
|
+
column: parseInt(column)
|
10051
|
+
};
|
10052
|
+
}
|
10053
|
+
|
10054
|
+
// Copyright (c) Microsoft Corporation.
|
10055
|
+
// Licensed under the MIT License.
|
10056
|
+
// This file uses RoosterJS React package implementation with updates to UI components and styles.
|
10057
|
+
const RowColumnInitialValue = 0;
|
10058
|
+
/**
|
10059
|
+
* @private
|
10060
|
+
* Component for the insert table pane
|
10061
|
+
*/
|
10062
|
+
const RichTextInsertTablePane = (props) => {
|
10063
|
+
const { item, onClick, theme, maxColumnsNumber, maxRowsNumber } = props;
|
10064
|
+
const [column, setColumn] = React.useState(RowColumnInitialValue);
|
10065
|
+
const [row, setRow] = React.useState(RowColumnInitialValue);
|
10066
|
+
const updateSize = React.useCallback((target) => {
|
10067
|
+
if (target !== undefined && target.dataset.column !== undefined && target.dataset.row !== undefined) {
|
10068
|
+
const column = parseInt(target.dataset.column);
|
10069
|
+
const row = parseInt(target.dataset.row);
|
10070
|
+
if (column >= RowColumnInitialValue &&
|
10071
|
+
column < maxColumnsNumber &&
|
10072
|
+
row >= RowColumnInitialValue &&
|
10073
|
+
row < maxRowsNumber) {
|
10074
|
+
setColumn(column);
|
10075
|
+
setRow(row);
|
10076
|
+
}
|
10077
|
+
}
|
10078
|
+
}, [maxColumnsNumber, maxRowsNumber]);
|
10079
|
+
const onMouseEnter = React.useCallback((e) => {
|
10080
|
+
updateSize(e.target);
|
10081
|
+
}, [updateSize]);
|
10082
|
+
const onClickButton = React.useCallback((e) => {
|
10083
|
+
onClick(e, Object.assign(Object.assign({}, item), { key: createKey(formatRowColumnText(row), formatRowColumnText(column)) }));
|
10084
|
+
}, [row, column, onClick, item]);
|
10085
|
+
const items = React.useMemo(() => {
|
10086
|
+
var _a;
|
10087
|
+
const items = [];
|
10088
|
+
for (let i = 0; i < maxRowsNumber; i++) {
|
10089
|
+
for (let j = 0; j < maxColumnsNumber; j++) {
|
10090
|
+
const key = `cell_${i}_${j}`;
|
10091
|
+
const isSelected = j <= column && i <= row;
|
10092
|
+
items.push(React.createElement("button", { className: react.mergeStyles(insertTableMenuCellButtonStyles(theme), isSelected ? insertTableMenuCellButtonSelectedStyles(theme) : undefined), onClick: onClickButton, key: key, id: key, "data-column": j, "data-row": i, "data-is-focusable": true, onMouseEnter: onMouseEnter, "aria-label": formatText((_a = item.text) !== null && _a !== void 0 ? _a : '', i, j) }));
|
10093
|
+
}
|
10094
|
+
}
|
10095
|
+
return items;
|
10096
|
+
}, [maxRowsNumber, maxColumnsNumber, column, row, theme, onClickButton, onMouseEnter, item.text]);
|
10097
|
+
const text = React.useMemo(() => {
|
10098
|
+
var _a;
|
10099
|
+
return formatText((_a = item.text) !== null && _a !== void 0 ? _a : '', formatRowColumnText(row), formatRowColumnText(column));
|
10100
|
+
}, [column, item.text, row]);
|
10101
|
+
return (React.createElement("div", null,
|
10102
|
+
React.createElement("div", { className: insertTableMenuTitleStyles }, text),
|
10103
|
+
React.createElement(react.FocusZone, { defaultTabbableElement: `cell_${RowColumnInitialValue}_${RowColumnInitialValue}`, direction: react.FocusZoneDirection.bidirectional, onActiveElementChanged: updateSize, className: insertTableMenuFocusZone(theme) }, items)));
|
10104
|
+
};
|
10105
|
+
const formatText = (text, row, column) => {
|
10106
|
+
return text.replace(`${ColumnRowReplaceString}`, `${column.toString()} x ${row.toString()}`);
|
10107
|
+
};
|
10108
|
+
const formatRowColumnText = (value) => {
|
10109
|
+
return value + 1;
|
10110
|
+
};
|
10111
|
+
|
10112
|
+
// Copyright (c) Microsoft Corporation.
|
10113
|
+
// Licensed under the MIT License.
|
10114
|
+
// This file uses RoosterJS React package implementation with updates to UI components and styles.
|
10115
|
+
/**
|
10116
|
+
* "Insert table" button for the RoosterJS ribbon
|
10117
|
+
*/
|
10118
|
+
const insertTableButton = (theme, maxRowsNumber, maxColumnsNumber) => {
|
9470
10119
|
return {
|
9471
|
-
key: '
|
10120
|
+
key: 'buttonNameInsertTable',
|
10121
|
+
unlocalizedText: 'Insert table',
|
10122
|
+
// Icon will be set in onRenderIcon callback
|
10123
|
+
iconName: '',
|
10124
|
+
onClick: (editor, key) => {
|
10125
|
+
const { row, column } = parseKey(key);
|
10126
|
+
insertTable(editor, column, row);
|
10127
|
+
},
|
10128
|
+
dropDownMenu: {
|
10129
|
+
items: {
|
10130
|
+
// the key of the item is also used as a key for localization
|
10131
|
+
insertTablePane: `Insert ${ColumnRowReplaceString} table`
|
10132
|
+
},
|
10133
|
+
itemRender: (item, onClick) => {
|
10134
|
+
return (React.createElement(RichTextInsertTablePane, { item: item, onClick: onClick, theme: theme, maxColumnsNumber: maxColumnsNumber, maxRowsNumber: maxRowsNumber }));
|
10135
|
+
},
|
10136
|
+
commandBarSubMenuProperties: {
|
10137
|
+
className: insertTableMenuTablePane
|
10138
|
+
}
|
10139
|
+
},
|
10140
|
+
commandBarProperties: {
|
10141
|
+
// hide the chevron icon
|
10142
|
+
menuIconProps: {
|
10143
|
+
hidden: true
|
10144
|
+
},
|
10145
|
+
onRenderIcon: (item) => {
|
10146
|
+
console.log('onRenderIcon', item);
|
10147
|
+
return React.createElement(TableIcon, null);
|
10148
|
+
},
|
10149
|
+
buttonStyles: ribbonTableButtonStyle(theme),
|
10150
|
+
canCheck: false
|
10151
|
+
}
|
10152
|
+
};
|
10153
|
+
};
|
10154
|
+
const TableIcon = () => {
|
10155
|
+
return (
|
10156
|
+
// update the visibility of the Table Icon with css classes that are triggered by command bar's state
|
10157
|
+
React.createElement(react.Stack, null,
|
10158
|
+
React.createElement(react.Icon, { iconName: "RichTextInsertTableFilledIcon", className: 'ribbon-table-button-filled-icon' }),
|
10159
|
+
React.createElement(react.Icon, { iconName: "RichTextInsertTableRegularIcon", className: 'ribbon-table-button-regular-icon' })));
|
10160
|
+
};
|
10161
|
+
|
10162
|
+
// Copyright (c) Microsoft Corporation.
|
10163
|
+
// Licensed under the MIT License.
|
10164
|
+
const MaxRowsNumber = 5;
|
10165
|
+
const MaxColumnsNumber = 5;
|
10166
|
+
const dividerRibbonButton = (theme, key) => {
|
10167
|
+
return {
|
10168
|
+
key: key,
|
9472
10169
|
iconName: 'RichTextDividerIcon',
|
9473
10170
|
unlocalizedText: '',
|
9474
10171
|
onClick: () => { },
|
9475
10172
|
isDisabled: () => true,
|
9476
10173
|
commandBarProperties: {
|
9477
|
-
|
10174
|
+
// show the item correctly for the overflow menu
|
10175
|
+
itemType: react.ContextualMenuItemType.Divider,
|
10176
|
+
buttonStyles: ribbonDividerStyle(theme),
|
10177
|
+
// this is still needed to remove checkmark icon space even though it is a divider
|
10178
|
+
canCheck: false
|
9478
10179
|
}
|
9479
10180
|
};
|
9480
10181
|
};
|
@@ -9521,11 +10222,13 @@ const ribbonButtons = (theme) => {
|
|
9521
10222
|
boldButton(theme),
|
9522
10223
|
italicButton(theme),
|
9523
10224
|
underlineButton(theme),
|
9524
|
-
dividerRibbonButton(theme),
|
10225
|
+
dividerRibbonButton(theme, 'RichTextRibbonTextFormatDivider'),
|
9525
10226
|
bulletListButton(theme),
|
9526
10227
|
numberListButton(theme),
|
9527
10228
|
indentIncreaseButton(theme),
|
9528
|
-
indentDecreaseButton(theme)
|
10229
|
+
indentDecreaseButton(theme),
|
10230
|
+
dividerRibbonButton(theme, 'RichTextRibbonTableDivider'),
|
10231
|
+
insertTableButton(theme, MaxRowsNumber, MaxColumnsNumber)
|
9529
10232
|
].forEach((item) => {
|
9530
10233
|
if (item !== undefined) {
|
9531
10234
|
buttons.push(item);
|
@@ -9533,8 +10236,13 @@ const ribbonButtons = (theme) => {
|
|
9533
10236
|
});
|
9534
10237
|
return buttons;
|
9535
10238
|
};
|
10239
|
+
|
10240
|
+
// Copyright (c) Microsoft Corporation.
|
10241
|
+
// Licensed under the MIT License.
|
9536
10242
|
/**
|
9537
10243
|
* @private
|
10244
|
+
*
|
10245
|
+
* Strings for the ribbon buttons where key should match `key` prop if any or the name of the item.
|
9538
10246
|
*/
|
9539
10247
|
const ribbonButtonsStrings = (strings) => {
|
9540
10248
|
return {
|
@@ -9544,10 +10252,83 @@ const ribbonButtonsStrings = (strings) => {
|
|
9544
10252
|
buttonNameBulletedList: strings.bulletListTooltip,
|
9545
10253
|
buttonNameNumberedList: strings.numberListTooltip,
|
9546
10254
|
buttonNameIncreaseIndent: strings.increaseIndentTooltip,
|
9547
|
-
buttonNameDecreaseIndent: strings.decreaseIndentTooltip
|
10255
|
+
buttonNameDecreaseIndent: strings.decreaseIndentTooltip,
|
10256
|
+
buttonNameInsertTable: strings.insertTableTooltip,
|
10257
|
+
insertTablePane: strings.insertTableMenuTitle
|
10258
|
+
};
|
10259
|
+
};
|
10260
|
+
/**
|
10261
|
+
* @private
|
10262
|
+
*
|
10263
|
+
* Strings for the table context menu where key should match `key` prop if any or the name of the item.
|
10264
|
+
*/
|
10265
|
+
const tableContextMenuStrings = (strings) => {
|
10266
|
+
return {
|
10267
|
+
menuNameTableInsert: strings.insertRowOrColumnMenu,
|
10268
|
+
menuNameTableInsertAbove: strings.insertRowAboveMenu,
|
10269
|
+
menuNameTableInsertBelow: strings.insertRowBelowMenu,
|
10270
|
+
menuNameTableInsertLeft: strings.insertColumnLeftMenu,
|
10271
|
+
menuNameTableInsertRight: strings.insertColumnRightMenu,
|
10272
|
+
menuNameTableDelete: strings.deleteRowOrColumnMenu,
|
10273
|
+
menuNameTableDeleteColumn: strings.deleteColumnMenu,
|
10274
|
+
menuNameTableDeleteRow: strings.deleteRowMenu,
|
10275
|
+
menuNameTableDeleteTable: strings.deleteTableMenu
|
9548
10276
|
};
|
9549
10277
|
};
|
9550
10278
|
|
10279
|
+
// Copyright (c) Microsoft Corporation.
|
10280
|
+
// Licensed under the MIT License.
|
10281
|
+
const onClick = (key, editor) => {
|
10282
|
+
editor.focus();
|
10283
|
+
const operation = TableEditOperationMap[key];
|
10284
|
+
if (typeof operation === 'number') {
|
10285
|
+
roosterjsEditorApi.editTable(editor, operation);
|
10286
|
+
}
|
10287
|
+
};
|
10288
|
+
const TableEditOperationMap = {
|
10289
|
+
menuNameTableInsertAbove: roosterjsEditorTypesCompatible.CompatibleTableOperation.InsertAbove,
|
10290
|
+
menuNameTableInsertBelow: roosterjsEditorTypesCompatible.CompatibleTableOperation.InsertBelow,
|
10291
|
+
menuNameTableInsertLeft: roosterjsEditorTypesCompatible.CompatibleTableOperation.InsertLeft,
|
10292
|
+
menuNameTableInsertRight: roosterjsEditorTypesCompatible.CompatibleTableOperation.InsertRight,
|
10293
|
+
menuNameTableDeleteTable: roosterjsEditorTypesCompatible.CompatibleTableOperation.DeleteTable,
|
10294
|
+
menuNameTableDeleteColumn: roosterjsEditorTypesCompatible.CompatibleTableOperation.DeleteColumn,
|
10295
|
+
menuNameTableDeleteRow: roosterjsEditorTypesCompatible.CompatibleTableOperation.DeleteRow
|
10296
|
+
};
|
10297
|
+
const tableEditInsertMenuItem = {
|
10298
|
+
key: 'menuNameTableInsert',
|
10299
|
+
unlocalizedText: 'Insert123',
|
10300
|
+
subItems: {
|
10301
|
+
menuNameTableInsertAbove: 'Insert above121312 ',
|
10302
|
+
menuNameTableInsertBelow: 'Insert below',
|
10303
|
+
menuNameTableInsertLeft: 'Insert left123 ',
|
10304
|
+
menuNameTableInsertRight: 'Insert right'
|
10305
|
+
},
|
10306
|
+
onClick
|
10307
|
+
};
|
10308
|
+
const tableEditDeleteMenuItem = {
|
10309
|
+
key: 'menuNameTableDelete',
|
10310
|
+
unlocalizedText: 'Delete',
|
10311
|
+
subItems: {
|
10312
|
+
menuNameTableDeleteColumn: 'Delete column',
|
10313
|
+
menuNameTableDeleteRow: 'Delete row',
|
10314
|
+
menuNameTableDeleteTable: 'Delete table'
|
10315
|
+
},
|
10316
|
+
onClick
|
10317
|
+
};
|
10318
|
+
const tableActions = [tableEditInsertMenuItem, tableEditDeleteMenuItem];
|
10319
|
+
/**
|
10320
|
+
* Create a new instance of ContextMenuProvider to support table editing functionalities in context menu
|
10321
|
+
* @returns A new ContextMenuProvider
|
10322
|
+
*/
|
10323
|
+
const createTableEditMenuProvider = (strings) => {
|
10324
|
+
return roosterjsReact.createContextMenuProvider('tableEdit', tableActions, tableContextMenuStrings(strings !== null && strings !== void 0 ? strings : {}), (editor, node) => !!getEditingTable(editor, node));
|
10325
|
+
};
|
10326
|
+
const getEditingTable = (editor, node) => {
|
10327
|
+
const td = editor.getElementAtCursor('TD,TH', node);
|
10328
|
+
const table = td && editor.getElementAtCursor('table', td);
|
10329
|
+
return (table === null || table === void 0 ? void 0 : table.isContentEditable) ? { table, td } : null;
|
10330
|
+
};
|
10331
|
+
|
9551
10332
|
// Copyright (c) Microsoft Corporation.
|
9552
10333
|
// Licensed under the MIT License.
|
9553
10334
|
/**
|
@@ -9578,13 +10359,12 @@ const RichTextEditor = React.forwardRef((props, ref) => {
|
|
9578
10359
|
}, []);
|
9579
10360
|
const editorCreator = React.useCallback((div, options) => {
|
9580
10361
|
editor.current = new roosterjsEditorCore.Editor(div, options);
|
9581
|
-
// Remove default values for background color and color
|
9582
|
-
// setBackgroundColor and setTextColor can't be used here as they cause the editor to be focused
|
9583
|
-
// color will be set in richTextEditorWrapperStyle instead of inline styles
|
9584
|
-
div.style.backgroundColor = '';
|
9585
|
-
div.style.color = '';
|
9586
10362
|
return editor.current;
|
9587
|
-
},
|
10363
|
+
},
|
10364
|
+
// trigger force editor reset when strings are changed to update context menu strings
|
10365
|
+
// see RosterJS documentation for 'editorCreator' for more details
|
10366
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
10367
|
+
[strings]);
|
9588
10368
|
const placeholderPlugin = React.useMemo(() => {
|
9589
10369
|
return new roosterjsEditorPlugins.Watermark('');
|
9590
10370
|
}, []);
|
@@ -9594,12 +10374,15 @@ const RichTextEditor = React.forwardRef((props, ref) => {
|
|
9594
10374
|
}
|
9595
10375
|
}, [placeholderPlugin, placeholderText]);
|
9596
10376
|
const plugins = React.useMemo(() => {
|
10377
|
+
// contextPlugin and tableEditMenuProvider allow to show insert/delete menu for the table
|
10378
|
+
const contextPlugin = roosterjsReact.createContextMenuPlugin();
|
10379
|
+
const tableEditMenuProvider = createTableEditMenuProvider(strings);
|
9597
10380
|
const contentEdit = new roosterjsEditorPlugins.ContentEdit();
|
9598
10381
|
const updateContentPlugin = roosterjsReact.createUpdateContentPlugin(roosterjsReact.UpdateMode.OnContentChangedEvent | roosterjsReact.UpdateMode.OnUserInput, (content) => {
|
9599
10382
|
onChange && onChange(content);
|
9600
10383
|
});
|
9601
|
-
return [contentEdit, placeholderPlugin, updateContentPlugin, ribbonPlugin];
|
9602
|
-
}, [onChange, placeholderPlugin, ribbonPlugin]);
|
10384
|
+
return [contentEdit, placeholderPlugin, updateContentPlugin, ribbonPlugin, contextPlugin, tableEditMenuProvider];
|
10385
|
+
}, [onChange, placeholderPlugin, ribbonPlugin, strings]);
|
9603
10386
|
const ribbon = React.useMemo(() => {
|
9604
10387
|
const buttons = ribbonButtons(theme);
|
9605
10388
|
return (React.createElement(roosterjsReact.Ribbon, { styles: ribbonStyle, buttons: buttons, plugin: ribbonPlugin, overflowButtonProps: {
|
@@ -9611,10 +10394,18 @@ const RichTextEditor = React.forwardRef((props, ref) => {
|
|
9611
10394
|
}
|
9612
10395
|
}, strings: ribbonButtonsStrings(strings), "data-testid": 'rich-text-editor-ribbon' }));
|
9613
10396
|
}, [strings, ribbonPlugin, theme]);
|
10397
|
+
const defaultFormat = React.useMemo(() => {
|
10398
|
+
// without setting any styles, text input is not handled properly for tables (when insert or paste one in the editor)
|
10399
|
+
// because of https://github.com/microsoft/roosterjs/blob/14dbb947e3ae94580109cbd05e48ceb05327c4dc/packages/roosterjs-editor-core/lib/corePlugins/TypeInContainerPlugin.ts#L75
|
10400
|
+
// this issue is fixed for content model package
|
10401
|
+
return {
|
10402
|
+
backgroundColor: 'transparent'
|
10403
|
+
};
|
10404
|
+
}, []);
|
9614
10405
|
return (React.createElement("div", { "data-testid": 'rich-text-editor-wrapper' },
|
9615
10406
|
showRichTextEditorFormatting && ribbon,
|
9616
10407
|
React.createElement("div", { className: richTextEditorWrapperStyle(theme, !showRichTextEditorFormatting) },
|
9617
|
-
React.createElement(roosterjsReact.Rooster, { initialContent: initialContent, inDarkMode: isDarkThemed(theme), plugins: plugins, className: richTextEditorStyle(props.styles), editorCreator: editorCreator,
|
10408
|
+
React.createElement(roosterjsReact.Rooster, { defaultFormat: defaultFormat, initialContent: initialContent, inDarkMode: isDarkThemed(theme), plugins: plugins, className: richTextEditorStyle(props.styles), editorCreator: editorCreator,
|
9618
10409
|
// TODO: confirm the color during inline images implementation
|
9619
10410
|
imageSelectionBorderColor: 'blue',
|
9620
10411
|
// doNotAdjustEditorColor is used to fix the default background color for Rooster component
|
@@ -9662,9 +10453,9 @@ const richTextBorderBoxStyle = (props) => {
|
|
9662
10453
|
*/
|
9663
10454
|
const RichTextInputBoxComponent = (props) => {
|
9664
10455
|
const { placeholderText, initialContent, onChange, onEnterKeyDown, editorComponentRef, disabled, strings, actionComponents,
|
9665
|
-
/* @conditional-compile-remove(
|
10456
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
9666
10457
|
onRenderFileUploads,
|
9667
|
-
/* @conditional-compile-remove(
|
10458
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
9668
10459
|
hasFiles, richTextEditorStyleProps, isHorizontalLayoutDisabled = false } = props;
|
9669
10460
|
const theme = useTheme();
|
9670
10461
|
const [showRichTextEditorFormatting, setShowRichTextEditorFormatting] = React.useState(false);
|
@@ -9703,11 +10494,11 @@ const RichTextInputBoxComponent = (props) => {
|
|
9703
10494
|
const useHorizontalLayout = React.useMemo(() => {
|
9704
10495
|
return (!isHorizontalLayoutDisabled &&
|
9705
10496
|
!showRichTextEditorFormatting &&
|
9706
|
-
/* @conditional-compile-remove(
|
10497
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ !hasFiles);
|
9707
10498
|
}, [
|
9708
10499
|
isHorizontalLayoutDisabled,
|
9709
10500
|
showRichTextEditorFormatting,
|
9710
|
-
/* @conditional-compile-remove(
|
10501
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ hasFiles
|
9711
10502
|
]);
|
9712
10503
|
return (React.createElement("div", { className: richTextBorderBoxStyle({
|
9713
10504
|
theme: theme,
|
@@ -9716,8 +10507,9 @@ const RichTextInputBoxComponent = (props) => {
|
|
9716
10507
|
React.createElement(react.Stack, { grow: true, horizontal: useHorizontalLayout, horizontalAlign: useHorizontalLayout ? 'end' : 'space-between', className: inputBoxContentStackStyle, wrap: useHorizontalLayout },
|
9717
10508
|
React.createElement(react.Stack, { grow: true, className: inputBoxRichTextStackStyle },
|
9718
10509
|
React.createElement(react.Stack.Item, { className: inputBoxRichTextStackItemStyle },
|
9719
|
-
React.createElement(RichTextEditor, { initialContent: initialContent, placeholderText: placeholderText, onChange: onChange, onKeyDown: onKeyDown, ref: editorComponentRef, strings: strings, showRichTextEditorFormatting: showRichTextEditorFormatting, styles: richTextEditorStyle })),
|
9720
|
-
|
10510
|
+
React.createElement(RichTextEditor, { initialContent: initialContent, placeholderText: placeholderText, onChange: onChange, onKeyDown: onKeyDown, ref: editorComponentRef, strings: strings, showRichTextEditorFormatting: showRichTextEditorFormatting, styles: richTextEditorStyle })),
|
10511
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ onRenderFileUploads &&
|
10512
|
+
onRenderFileUploads()),
|
9721
10513
|
actionButtons)));
|
9722
10514
|
};
|
9723
10515
|
|
@@ -9728,9 +10520,9 @@ const RichTextInputBoxComponent = (props) => {
|
|
9728
10520
|
*/
|
9729
10521
|
const RichTextSendBoxErrors = (props) => {
|
9730
10522
|
const {
|
9731
|
-
/* @conditional-compile-remove(
|
10523
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
9732
10524
|
attachmentUploadError,
|
9733
|
-
/* @conditional-compile-remove(
|
10525
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
9734
10526
|
attachmentUploadsPendingError, systemMessage, textTooLongMessage } = props;
|
9735
10527
|
const [sendBoxError, setSendBoxError] = React.useState(undefined);
|
9736
10528
|
React.useEffect(() => {
|
@@ -9755,11 +10547,11 @@ const RichTextSendBoxErrors = (props) => {
|
|
9755
10547
|
if (prev) {
|
9756
10548
|
errors.push(prev);
|
9757
10549
|
}
|
9758
|
-
/* @conditional-compile-remove(
|
10550
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
9759
10551
|
if (attachmentUploadsPendingError) {
|
9760
10552
|
errors.push(attachmentUploadsPendingError);
|
9761
10553
|
}
|
9762
|
-
/* @conditional-compile-remove(
|
10554
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
9763
10555
|
if (attachmentUploadError) {
|
9764
10556
|
errors.push(attachmentUploadError);
|
9765
10557
|
}
|
@@ -9771,8 +10563,8 @@ const RichTextSendBoxErrors = (props) => {
|
|
9771
10563
|
return sortedErrors[0];
|
9772
10564
|
});
|
9773
10565
|
}, [
|
9774
|
-
/* @conditional-compile-remove(
|
9775
|
-
/* @conditional-compile-remove(
|
10566
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ attachmentUploadError,
|
10567
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ attachmentUploadsPendingError
|
9776
10568
|
]);
|
9777
10569
|
const onDismiss = React.useCallback(() => {
|
9778
10570
|
if (systemMessage && !isMessageEmpty$1(systemMessage)) {
|
@@ -9796,9 +10588,9 @@ const isMessageEmpty$1 = (message) => {
|
|
9796
10588
|
*/
|
9797
10589
|
const RichTextSendBox = (props) => {
|
9798
10590
|
const { disabled = false, systemMessage, onSendMessage,
|
9799
|
-
/* @conditional-compile-remove(
|
10591
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
9800
10592
|
activeFileUploads,
|
9801
|
-
/* @conditional-compile-remove(
|
10593
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
9802
10594
|
onCancelFileUpload } = props;
|
9803
10595
|
const theme = useTheme();
|
9804
10596
|
const locale = useLocale$1();
|
@@ -9811,7 +10603,7 @@ const RichTextSendBox = (props) => {
|
|
9811
10603
|
}, [localeStrings, props.strings]);
|
9812
10604
|
const [contentValue, setContentValue] = React.useState('');
|
9813
10605
|
const [contentValueOverflow, setContentValueOverflow] = React.useState(false);
|
9814
|
-
/* @conditional-compile-remove(
|
10606
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
9815
10607
|
const [attachmentUploadsPendingError, setFileUploadsPendingError] = React.useState(undefined);
|
9816
10608
|
const editorComponentRef = React.useRef(null);
|
9817
10609
|
const contentTooLongMessage = React.useMemo(() => (contentValueOverflow ? strings.textTooLong : undefined), [contentValueOverflow, strings.textTooLong]);
|
@@ -9828,9 +10620,9 @@ const RichTextSendBox = (props) => {
|
|
9828
10620
|
return;
|
9829
10621
|
}
|
9830
10622
|
// Don't send message until all files have been uploaded successfully
|
9831
|
-
/* @conditional-compile-remove(
|
10623
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
9832
10624
|
setFileUploadsPendingError(undefined);
|
9833
|
-
/* @conditional-compile-remove(
|
10625
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
9834
10626
|
if (hasIncompleteFileUploads(activeFileUploads)) {
|
9835
10627
|
setFileUploadsPendingError({ message: strings.attachmentUploadsPendingError, timestamp: Date.now() });
|
9836
10628
|
return;
|
@@ -9839,7 +10631,7 @@ const RichTextSendBox = (props) => {
|
|
9839
10631
|
// we don't want to send empty messages including spaces, newlines, tabs
|
9840
10632
|
// Message can be empty if there is a valid file upload
|
9841
10633
|
if (sanitizeText(message).length > 0 ||
|
9842
|
-
/* @conditional-compile-remove(
|
10634
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ hasCompletedFileUploads(activeFileUploads)) {
|
9843
10635
|
onSendMessage(message);
|
9844
10636
|
setContentValue('');
|
9845
10637
|
(_a = editorComponentRef.current) === null || _a === void 0 ? void 0 : _a.setEmptyContent();
|
@@ -9850,29 +10642,29 @@ const RichTextSendBox = (props) => {
|
|
9850
10642
|
contentValueOverflow,
|
9851
10643
|
disabled,
|
9852
10644
|
onSendMessage,
|
9853
|
-
/* @conditional-compile-remove(
|
9854
|
-
/* @conditional-compile-remove(
|
10645
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ activeFileUploads,
|
10646
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ strings.attachmentUploadsPendingError
|
9855
10647
|
]);
|
9856
10648
|
const hasErrorMessage = React.useMemo(() => {
|
9857
10649
|
var _a;
|
9858
10650
|
return (!!systemMessage ||
|
9859
10651
|
!!contentTooLongMessage ||
|
9860
|
-
/* @conditional-compile-remove(
|
10652
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
9861
10653
|
!!attachmentUploadsPendingError ||
|
9862
|
-
/* @conditional-compile-remove(
|
10654
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
9863
10655
|
!!((_a = activeFileUploads === null || activeFileUploads === void 0 ? void 0 : activeFileUploads.filter((attachmentUpload) => attachmentUpload.error).pop()) === null || _a === void 0 ? void 0 : _a.error));
|
9864
10656
|
}, [
|
9865
|
-
/* @conditional-compile-remove(
|
10657
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
9866
10658
|
activeFileUploads,
|
9867
10659
|
contentTooLongMessage,
|
9868
|
-
/* @conditional-compile-remove(
|
10660
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
9869
10661
|
attachmentUploadsPendingError,
|
9870
10662
|
systemMessage
|
9871
10663
|
]);
|
9872
10664
|
const onRenderSendIcon = React.useCallback((isHover) => (React.createElement(react.Icon, { iconName: isHover && contentValue ? 'SendBoxSendHovered' : 'SendBoxSend', className: sendIconStyle({
|
9873
10665
|
theme,
|
9874
10666
|
hasText: !!contentValue,
|
9875
|
-
/* @conditional-compile-remove(
|
10667
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
9876
10668
|
hasFile: false,
|
9877
10669
|
hasErrorMessage: hasErrorMessage,
|
9878
10670
|
defaultTextColor: theme.palette.neutralSecondary,
|
@@ -9881,46 +10673,54 @@ const RichTextSendBox = (props) => {
|
|
9881
10673
|
const sendBoxErrorsProps = React.useMemo(() => {
|
9882
10674
|
var _a;
|
9883
10675
|
return {
|
9884
|
-
/* @conditional-compile-remove(
|
10676
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
9885
10677
|
attachmentUploadsPendingError: attachmentUploadsPendingError,
|
9886
|
-
/* @conditional-compile-remove(
|
10678
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
9887
10679
|
attachmentUploadError: (_a = activeFileUploads === null || activeFileUploads === void 0 ? void 0 : activeFileUploads.filter((attachmentUpload) => attachmentUpload.error).pop()) === null || _a === void 0 ? void 0 : _a.error,
|
9888
10680
|
systemMessage: systemMessage,
|
9889
10681
|
textTooLongMessage: contentTooLongMessage
|
9890
10682
|
};
|
9891
10683
|
}, [
|
9892
|
-
/* @conditional-compile-remove(
|
10684
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
9893
10685
|
activeFileUploads,
|
9894
10686
|
contentTooLongMessage,
|
9895
|
-
/* @conditional-compile-remove(
|
10687
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
9896
10688
|
attachmentUploadsPendingError,
|
9897
10689
|
systemMessage
|
9898
10690
|
]);
|
9899
|
-
/* @conditional-compile-remove(
|
10691
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
9900
10692
|
const onRenderFileUploads = React.useCallback(() => {
|
9901
10693
|
return (React.createElement(react.Stack, { className: attachmentUploadCardsStyles },
|
9902
|
-
React.createElement(
|
9903
|
-
|
9904
|
-
|
9905
|
-
|
9906
|
-
|
9907
|
-
|
10694
|
+
React.createElement(FluentV9ThemeProvider, { v8Theme: theme },
|
10695
|
+
React.createElement(_AttachmentUploadCards, { activeFileUploads: activeFileUploads, onCancelFileUpload: onCancelFileUpload, strings: {
|
10696
|
+
removeAttachment: strings.removeAttachment,
|
10697
|
+
uploading: strings.uploading,
|
10698
|
+
uploadCompleted: strings.uploadCompleted
|
10699
|
+
} }))));
|
10700
|
+
}, [
|
10701
|
+
activeFileUploads,
|
10702
|
+
onCancelFileUpload,
|
10703
|
+
strings.removeAttachment,
|
10704
|
+
strings.uploadCompleted,
|
10705
|
+
strings.uploading,
|
10706
|
+
theme
|
10707
|
+
]);
|
9908
10708
|
const sendButton = React.useMemo(() => {
|
9909
10709
|
return (React.createElement(InputBoxButton, { onRenderIcon: onRenderSendIcon, onClick: (e) => {
|
9910
10710
|
sendMessageOnClick();
|
9911
10711
|
e.stopPropagation(); // Prevents the click from bubbling up and triggering a focus event on the chat.
|
9912
10712
|
}, className: richTextActionButtonsStyle, ariaLabel: localeStrings.sendButtonAriaLabel, tooltipContent: localeStrings.sendButtonAriaLabel }));
|
9913
10713
|
}, [localeStrings.sendButtonAriaLabel, onRenderSendIcon, sendMessageOnClick]);
|
9914
|
-
/* @conditional-compile-remove(
|
10714
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
9915
10715
|
const hasFileUploads = React.useMemo(() => {
|
9916
10716
|
return hasCompletedFileUploads(activeFileUploads) || hasIncompleteFileUploads(activeFileUploads);
|
9917
10717
|
}, [activeFileUploads]);
|
9918
10718
|
return (React.createElement(react.Stack, null,
|
9919
10719
|
React.createElement(RichTextSendBoxErrors, Object.assign({}, sendBoxErrorsProps)),
|
9920
10720
|
React.createElement(RichTextInputBoxComponent, { placeholderText: strings.placeholderText, onChange: setContent, onEnterKeyDown: sendMessageOnClick, editorComponentRef: editorComponentRef, strings: strings, disabled: disabled, actionComponents: sendButton, richTextEditorStyleProps: sendBoxRichTextEditorStyle,
|
9921
|
-
/* @conditional-compile-remove(
|
10721
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
9922
10722
|
onRenderFileUploads: onRenderFileUploads,
|
9923
|
-
/* @conditional-compile-remove(
|
10723
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
9924
10724
|
hasFiles: hasFileUploads })));
|
9925
10725
|
};
|
9926
10726
|
|
@@ -10410,23 +11210,24 @@ const onRenderSubmitIcon = (className) => {
|
|
10410
11210
|
return React.createElement(react.Icon, { iconName: 'EditBoxSubmit', className: className });
|
10411
11211
|
};
|
10412
11212
|
function isMessageEmpty(messageText,
|
10413
|
-
/* @conditional-compile-remove(
|
11213
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
10414
11214
|
attachmentMetadata) {
|
10415
|
-
/* @conditional-compile-remove(
|
11215
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
10416
11216
|
return messageText.trim().length === 0 && (attachmentMetadata === null || attachmentMetadata === void 0 ? void 0 : attachmentMetadata.length) === 0;
|
10417
11217
|
}
|
10418
11218
|
/**
|
10419
11219
|
* @private
|
10420
11220
|
*/
|
10421
11221
|
function getMessageState(messageText,
|
10422
|
-
/* @conditional-compile-remove(
|
10423
|
-
return isMessageEmpty(messageText,
|
11222
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ attachmentMetadata) {
|
11223
|
+
return isMessageEmpty(messageText,
|
11224
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ attachmentMetadata)
|
10424
11225
|
? 'too short'
|
10425
11226
|
: isMessageTooLong(messageText.length)
|
10426
11227
|
? 'too long'
|
10427
11228
|
: 'OK';
|
10428
11229
|
}
|
10429
|
-
/* @conditional-compile-remove(
|
11230
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
10430
11231
|
/**
|
10431
11232
|
* @private
|
10432
11233
|
* @TODO: Remove when file-sharing feature becomes stable.
|
@@ -10489,7 +11290,7 @@ const LiveMessage = (props) => (React.createElement(AnnouncerContext.Consumer, n
|
|
10489
11290
|
const MessageStatusIcon = (props) => {
|
10490
11291
|
const { shouldAnnounce, iconName, iconClassName, ariaLabel } = props;
|
10491
11292
|
return (React.createElement(React.Fragment, null,
|
10492
|
-
ariaLabel && React.createElement(LiveMessage, { message: ariaLabel, ariaLive: "polite" }),
|
11293
|
+
ariaLabel && shouldAnnounce && React.createElement(LiveMessage, { message: ariaLabel, ariaLive: "polite" }),
|
10493
11294
|
React.createElement("div", {
|
10494
11295
|
// make icon accessible
|
10495
11296
|
tabIndex: 0 },
|
@@ -10677,363 +11478,6 @@ var getParticipantsWhoHaveReadMessage = (message, readReceiptsBySenderId) => {
|
|
10677
11478
|
.map(([id, readReceipt]) => ({ id, displayName: readReceipt.displayName })));
|
10678
11479
|
};
|
10679
11480
|
|
10680
|
-
// Copyright (c) Microsoft Corporation.
|
10681
|
-
// Licensed under the MIT License.
|
10682
|
-
// These color records are required for createV9Theme
|
10683
|
-
// For more info, check https://react.fluentui.dev/iframe.html?viewMode=docs&id=concepts-migration-from-v8-components-theme-migration--page#compatible-themes
|
10684
|
-
/**
|
10685
|
-
* @private
|
10686
|
-
*/
|
10687
|
-
const grey = {
|
10688
|
-
'0': '#000000',
|
10689
|
-
'2': '#050505',
|
10690
|
-
'4': '#0a0a0a',
|
10691
|
-
'6': '#0f0f0f',
|
10692
|
-
'8': '#141414',
|
10693
|
-
'10': '#1a1a1a',
|
10694
|
-
'12': '#1f1f1f',
|
10695
|
-
'14': '#242424',
|
10696
|
-
'16': '#292929',
|
10697
|
-
'18': '#2e2e2e',
|
10698
|
-
'20': '#333333',
|
10699
|
-
'22': '#383838',
|
10700
|
-
'24': '#3d3d3d',
|
10701
|
-
'26': '#424242',
|
10702
|
-
'28': '#474747',
|
10703
|
-
'30': '#4d4d4d',
|
10704
|
-
'32': '#525252',
|
10705
|
-
'34': '#575757',
|
10706
|
-
'36': '#5c5c5c',
|
10707
|
-
'38': '#616161',
|
10708
|
-
'40': '#666666',
|
10709
|
-
'42': '#6b6b6b',
|
10710
|
-
'44': '#707070',
|
10711
|
-
'46': '#757575',
|
10712
|
-
'48': '#7a7a7a',
|
10713
|
-
'50': '#808080',
|
10714
|
-
'52': '#858585',
|
10715
|
-
'54': '#8a8a8a',
|
10716
|
-
'56': '#8f8f8f',
|
10717
|
-
'58': '#949494',
|
10718
|
-
'60': '#999999',
|
10719
|
-
'62': '#9e9e9e',
|
10720
|
-
'64': '#a3a3a3',
|
10721
|
-
'66': '#a8a8a8',
|
10722
|
-
'68': '#adadad',
|
10723
|
-
'70': '#b3b3b3',
|
10724
|
-
'72': '#b8b8b8',
|
10725
|
-
'74': '#bdbdbd',
|
10726
|
-
'76': '#c2c2c2',
|
10727
|
-
'78': '#c7c7c7',
|
10728
|
-
'80': '#cccccc',
|
10729
|
-
'82': '#d1d1d1',
|
10730
|
-
'84': '#d6d6d6',
|
10731
|
-
'86': '#dbdbdb',
|
10732
|
-
'88': '#e0e0e0',
|
10733
|
-
'90': '#e6e6e6',
|
10734
|
-
'92': '#ebebeb',
|
10735
|
-
'94': '#f0f0f0',
|
10736
|
-
'96': '#f5f5f5',
|
10737
|
-
'98': '#fafafa',
|
10738
|
-
'100': '#ffffff'
|
10739
|
-
};
|
10740
|
-
/**
|
10741
|
-
* @private
|
10742
|
-
*/
|
10743
|
-
const whiteAlpha = {
|
10744
|
-
'5': 'rgba(255, 255, 255, 0.05)',
|
10745
|
-
'10': 'rgba(255, 255, 255, 0.1)',
|
10746
|
-
'20': 'rgba(255, 255, 255, 0.2)',
|
10747
|
-
'30': 'rgba(255, 255, 255, 0.3)',
|
10748
|
-
'40': 'rgba(255, 255, 255, 0.4)',
|
10749
|
-
'50': 'rgba(255, 255, 255, 0.5)',
|
10750
|
-
'60': 'rgba(255, 255, 255, 0.6)',
|
10751
|
-
'70': 'rgba(255, 255, 255, 0.7)',
|
10752
|
-
'80': 'rgba(255, 255, 255, 0.8)',
|
10753
|
-
'90': 'rgba(255, 255, 255, 0.9)'
|
10754
|
-
};
|
10755
|
-
/**
|
10756
|
-
* @private
|
10757
|
-
*/
|
10758
|
-
const blackAlpha = {
|
10759
|
-
'5': 'rgba(0, 0, 0, 0.05)',
|
10760
|
-
'10': 'rgba(0, 0, 0, 0.1)',
|
10761
|
-
'20': 'rgba(0, 0, 0, 0.2)',
|
10762
|
-
'30': 'rgba(0, 0, 0, 0.3)',
|
10763
|
-
'40': 'rgba(0, 0, 0, 0.4)',
|
10764
|
-
'50': 'rgba(0, 0, 0, 0.5)',
|
10765
|
-
'60': 'rgba(0, 0, 0, 0.6)',
|
10766
|
-
'70': 'rgba(0, 0, 0, 0.7)',
|
10767
|
-
'80': 'rgba(0, 0, 0, 0.8)',
|
10768
|
-
'90': 'rgba(0, 0, 0, 0.9)'
|
10769
|
-
};
|
10770
|
-
/**
|
10771
|
-
* @private
|
10772
|
-
*/
|
10773
|
-
const grey10Alpha = {
|
10774
|
-
'5': 'rgba(26, 26, 26, 0.05)',
|
10775
|
-
'10': 'rgba(26, 26, 26, 0.1)',
|
10776
|
-
'20': 'rgba(26, 26, 26, 0.2)',
|
10777
|
-
'30': 'rgba(26, 26, 26, 0.3)',
|
10778
|
-
'40': 'rgba(26, 26, 26, 0.4)',
|
10779
|
-
'50': 'rgba(26, 26, 26, 0.5)',
|
10780
|
-
'60': 'rgba(26, 26, 26, 0.6)',
|
10781
|
-
'70': 'rgba(26, 26, 26, 0.7)',
|
10782
|
-
'80': 'rgba(26, 26, 26, 0.8)',
|
10783
|
-
'90': 'rgba(26, 26, 26, 0.9)'
|
10784
|
-
};
|
10785
|
-
/**
|
10786
|
-
* @private
|
10787
|
-
*/
|
10788
|
-
const grey12Alpha = {
|
10789
|
-
'5': 'rgba(31, 31, 31, 0.05)',
|
10790
|
-
'10': 'rgba(31, 31, 31, 0.1)',
|
10791
|
-
'20': 'rgba(31, 31, 31, 0.2)',
|
10792
|
-
'30': 'rgba(31, 31, 31, 0.3)',
|
10793
|
-
'40': 'rgba(31, 31, 31, 0.4)',
|
10794
|
-
'50': 'rgba(31, 31, 31, 0.5)',
|
10795
|
-
'60': 'rgba(31, 31, 31, 0.6)',
|
10796
|
-
'70': 'rgba(31, 31, 31, 0.7)',
|
10797
|
-
'80': 'rgba(31, 31, 31, 0.8)',
|
10798
|
-
'90': 'rgba(31, 31, 31, 0.9)'
|
10799
|
-
};
|
10800
|
-
|
10801
|
-
// Copyright (c) Microsoft Corporation.
|
10802
|
-
// Licensed under the MIT License.
|
10803
|
-
// These mappings are required for createV9Theme
|
10804
|
-
// For more info, check https://react.fluentui.dev/iframe.html?viewMode=docs&id=concepts-migration-from-v8-components-theme-migration--page#compatible-themes
|
10805
|
-
/**
|
10806
|
-
* Creates v9 color tokens from a v8 palette.
|
10807
|
-
*/
|
10808
|
-
const mapAliasColors = (palette, inverted) => {
|
10809
|
-
return {
|
10810
|
-
colorNeutralForeground1: palette.neutralPrimary,
|
10811
|
-
colorNeutralForeground1Hover: palette.neutralPrimary,
|
10812
|
-
colorNeutralForeground1Pressed: palette.neutralPrimary,
|
10813
|
-
colorNeutralForeground1Selected: palette.neutralPrimary,
|
10814
|
-
colorNeutralForeground2: palette.neutralSecondary,
|
10815
|
-
colorNeutralForeground2Hover: palette.neutralPrimary,
|
10816
|
-
colorNeutralForeground2Pressed: palette.neutralPrimary,
|
10817
|
-
colorNeutralForeground2Selected: palette.neutralPrimary,
|
10818
|
-
colorNeutralForeground2BrandHover: palette.themePrimary,
|
10819
|
-
colorNeutralForeground2BrandPressed: palette.themeDarkAlt,
|
10820
|
-
colorNeutralForeground2BrandSelected: palette.themePrimary,
|
10821
|
-
colorNeutralForeground3: palette.neutralTertiary,
|
10822
|
-
colorNeutralForeground3Hover: palette.neutralSecondary,
|
10823
|
-
colorNeutralForeground3Pressed: palette.neutralSecondary,
|
10824
|
-
colorNeutralForeground3Selected: palette.neutralSecondary,
|
10825
|
-
colorNeutralForeground3BrandHover: palette.themePrimary,
|
10826
|
-
colorNeutralForeground3BrandPressed: palette.themeDarkAlt,
|
10827
|
-
colorNeutralForeground3BrandSelected: palette.themePrimary,
|
10828
|
-
colorNeutralForeground4: palette.neutralQuaternary,
|
10829
|
-
colorNeutralForegroundDisabled: palette.neutralTertiaryAlt,
|
10830
|
-
colorNeutralForegroundInvertedDisabled: whiteAlpha[40],
|
10831
|
-
colorBrandForegroundLink: palette.themeDarkAlt,
|
10832
|
-
colorBrandForegroundLinkHover: palette.themeDark,
|
10833
|
-
colorBrandForegroundLinkPressed: palette.themeDarker,
|
10834
|
-
colorBrandForegroundLinkSelected: palette.themeDarkAlt,
|
10835
|
-
colorNeutralForeground2Link: palette.neutralSecondary,
|
10836
|
-
colorNeutralForeground2LinkHover: palette.neutralPrimary,
|
10837
|
-
colorNeutralForeground2LinkPressed: palette.neutralPrimary,
|
10838
|
-
colorNeutralForeground2LinkSelected: palette.neutralPrimary,
|
10839
|
-
colorCompoundBrandForeground1: palette.themePrimary,
|
10840
|
-
colorCompoundBrandForeground1Hover: palette.themeDarkAlt,
|
10841
|
-
colorCompoundBrandForeground1Pressed: palette.themeDark,
|
10842
|
-
colorBrandForeground1: palette.themePrimary,
|
10843
|
-
colorBrandForeground2: palette.themeDarkAlt,
|
10844
|
-
colorBrandForeground2Hover: palette.themeDarkAlt,
|
10845
|
-
colorBrandForeground2Pressed: palette.themeDarkAlt,
|
10846
|
-
colorNeutralForeground1Static: palette.neutralPrimary,
|
10847
|
-
colorNeutralForegroundInverted: palette.white,
|
10848
|
-
colorNeutralForegroundInvertedHover: palette.white,
|
10849
|
-
colorNeutralForegroundInvertedPressed: palette.white,
|
10850
|
-
colorNeutralForegroundInvertedSelected: palette.white,
|
10851
|
-
colorNeutralForegroundOnBrand: palette.white,
|
10852
|
-
colorNeutralForegroundStaticInverted: palette.white,
|
10853
|
-
colorNeutralForegroundInvertedLink: palette.white,
|
10854
|
-
colorNeutralForegroundInvertedLinkHover: palette.white,
|
10855
|
-
colorNeutralForegroundInvertedLinkPressed: palette.white,
|
10856
|
-
colorNeutralForegroundInvertedLinkSelected: palette.white,
|
10857
|
-
colorNeutralForegroundInverted2: palette.white,
|
10858
|
-
colorBrandForegroundInverted: palette.themeSecondary,
|
10859
|
-
colorBrandForegroundInvertedHover: palette.themeTertiary,
|
10860
|
-
colorBrandForegroundInvertedPressed: palette.themeSecondary,
|
10861
|
-
colorBrandForegroundOnLight: palette.themePrimary,
|
10862
|
-
colorBrandForegroundOnLightHover: palette.themeDarkAlt,
|
10863
|
-
colorBrandForegroundOnLightPressed: palette.themeDark,
|
10864
|
-
colorBrandForegroundOnLightSelected: palette.themeDark,
|
10865
|
-
colorNeutralBackground1: palette.white,
|
10866
|
-
colorNeutralBackground1Hover: palette.neutralLighter,
|
10867
|
-
colorNeutralBackground1Pressed: palette.neutralQuaternaryAlt,
|
10868
|
-
colorNeutralBackground1Selected: palette.neutralLight,
|
10869
|
-
colorNeutralBackground2: palette.neutralLighterAlt,
|
10870
|
-
colorNeutralBackground2Hover: palette.neutralLighter,
|
10871
|
-
colorNeutralBackground2Pressed: palette.neutralQuaternaryAlt,
|
10872
|
-
colorNeutralBackground2Selected: palette.neutralLight,
|
10873
|
-
colorNeutralBackground3: palette.neutralLighter,
|
10874
|
-
colorNeutralBackground3Hover: palette.neutralLight,
|
10875
|
-
colorNeutralBackground3Pressed: palette.neutralQuaternary,
|
10876
|
-
colorNeutralBackground3Selected: palette.neutralQuaternaryAlt,
|
10877
|
-
colorNeutralBackground4: palette.neutralLighter,
|
10878
|
-
colorNeutralBackground4Hover: palette.neutralLighterAlt,
|
10879
|
-
colorNeutralBackground4Pressed: palette.neutralLighter,
|
10880
|
-
colorNeutralBackground4Selected: palette.white,
|
10881
|
-
colorNeutralBackground5: palette.neutralLight,
|
10882
|
-
colorNeutralBackground5Hover: palette.neutralLighter,
|
10883
|
-
colorNeutralBackground5Pressed: palette.neutralLighter,
|
10884
|
-
colorNeutralBackground5Selected: palette.neutralLighterAlt,
|
10885
|
-
colorNeutralBackground6: palette.neutralLight,
|
10886
|
-
colorNeutralBackgroundStatic: grey[20],
|
10887
|
-
colorNeutralBackgroundInverted: palette.neutralSecondary,
|
10888
|
-
colorNeutralBackgroundAlpha: inverted ? grey10Alpha[50] : whiteAlpha[50],
|
10889
|
-
colorNeutralBackgroundAlpha2: inverted ? grey12Alpha[70] : whiteAlpha[80],
|
10890
|
-
colorSubtleBackground: 'transparent',
|
10891
|
-
colorSubtleBackgroundHover: palette.neutralLighter,
|
10892
|
-
colorSubtleBackgroundPressed: palette.neutralQuaternaryAlt,
|
10893
|
-
colorSubtleBackgroundSelected: palette.neutralLight,
|
10894
|
-
colorSubtleBackgroundLightAlphaHover: inverted ? whiteAlpha[10] : whiteAlpha[80],
|
10895
|
-
colorSubtleBackgroundLightAlphaPressed: inverted ? whiteAlpha[5] : whiteAlpha[50],
|
10896
|
-
colorSubtleBackgroundLightAlphaSelected: 'transparent',
|
10897
|
-
colorSubtleBackgroundInverted: 'transparent',
|
10898
|
-
colorSubtleBackgroundInvertedHover: blackAlpha[10],
|
10899
|
-
colorSubtleBackgroundInvertedPressed: blackAlpha[30],
|
10900
|
-
colorSubtleBackgroundInvertedSelected: blackAlpha[20],
|
10901
|
-
colorTransparentBackground: 'transparent',
|
10902
|
-
colorTransparentBackgroundHover: 'transparent',
|
10903
|
-
colorTransparentBackgroundPressed: 'transparent',
|
10904
|
-
colorTransparentBackgroundSelected: 'transparent',
|
10905
|
-
colorNeutralBackgroundDisabled: palette.neutralLighter,
|
10906
|
-
colorNeutralBackgroundInvertedDisabled: whiteAlpha[10],
|
10907
|
-
colorNeutralStencil1: palette.neutralLight,
|
10908
|
-
colorNeutralStencil2: palette.neutralLighterAlt,
|
10909
|
-
colorNeutralStencil1Alpha: inverted ? whiteAlpha[10] : blackAlpha[10],
|
10910
|
-
colorNeutralStencil2Alpha: inverted ? whiteAlpha[5] : blackAlpha[5],
|
10911
|
-
colorBackgroundOverlay: blackAlpha[40],
|
10912
|
-
colorScrollbarOverlay: blackAlpha[50],
|
10913
|
-
colorBrandBackground: palette.themePrimary,
|
10914
|
-
colorBrandBackgroundHover: palette.themeDarkAlt,
|
10915
|
-
colorBrandBackgroundPressed: palette.themeDarker,
|
10916
|
-
colorBrandBackgroundSelected: palette.themeDark,
|
10917
|
-
colorCompoundBrandBackground: palette.themePrimary,
|
10918
|
-
colorCompoundBrandBackgroundHover: palette.themeDarkAlt,
|
10919
|
-
colorCompoundBrandBackgroundPressed: palette.themeDark,
|
10920
|
-
colorBrandBackgroundStatic: palette.themePrimary,
|
10921
|
-
colorBrandBackground2: palette.themeLighterAlt,
|
10922
|
-
colorBrandBackground2Hover: palette.themeLighterAlt,
|
10923
|
-
colorBrandBackground2Pressed: palette.themeLighterAlt,
|
10924
|
-
colorBrandBackground3Static: palette.themeDark,
|
10925
|
-
colorBrandBackground4Static: palette.themeDarker,
|
10926
|
-
colorBrandBackgroundInverted: palette.white,
|
10927
|
-
colorBrandBackgroundInvertedHover: palette.themeLighterAlt,
|
10928
|
-
colorBrandBackgroundInvertedPressed: palette.themeLight,
|
10929
|
-
colorBrandBackgroundInvertedSelected: palette.themeLighter,
|
10930
|
-
colorNeutralCardBackground: inverted ? grey[20] : grey[98],
|
10931
|
-
colorNeutralCardBackgroundHover: inverted ? grey[24] : palette.white,
|
10932
|
-
colorNeutralCardBackgroundPressed: inverted ? grey[18] : grey[96],
|
10933
|
-
colorNeutralCardBackgroundSelected: inverted ? grey[22] : grey[92],
|
10934
|
-
colorNeutralCardBackgroundDisabled: inverted ? grey[8] : grey[94],
|
10935
|
-
colorNeutralStrokeAccessible: palette.neutralSecondary,
|
10936
|
-
colorNeutralStrokeAccessibleHover: palette.neutralSecondary,
|
10937
|
-
colorNeutralStrokeAccessiblePressed: palette.neutralSecondary,
|
10938
|
-
colorNeutralStrokeAccessibleSelected: palette.themePrimary,
|
10939
|
-
colorNeutralStroke1: palette.neutralQuaternary,
|
10940
|
-
colorNeutralStroke1Hover: palette.neutralTertiaryAlt,
|
10941
|
-
colorNeutralStroke1Pressed: palette.neutralTertiaryAlt,
|
10942
|
-
colorNeutralStroke1Selected: palette.neutralTertiaryAlt,
|
10943
|
-
colorNeutralStroke2: palette.neutralQuaternaryAlt,
|
10944
|
-
colorNeutralStroke3: palette.neutralLighter,
|
10945
|
-
colorNeutralStrokeSubtle: palette.neutralQuaternaryAlt,
|
10946
|
-
colorNeutralStrokeOnBrand: palette.white,
|
10947
|
-
colorNeutralStrokeOnBrand2: palette.white,
|
10948
|
-
colorNeutralStrokeOnBrand2Hover: palette.white,
|
10949
|
-
colorNeutralStrokeOnBrand2Pressed: palette.white,
|
10950
|
-
colorNeutralStrokeOnBrand2Selected: palette.white,
|
10951
|
-
colorBrandStroke1: palette.themePrimary,
|
10952
|
-
colorBrandStroke2: palette.themeLight,
|
10953
|
-
colorBrandStroke2Hover: palette.themeLight,
|
10954
|
-
colorBrandStroke2Pressed: palette.themeLight,
|
10955
|
-
colorBrandStroke2Contrast: palette.themeLight,
|
10956
|
-
colorCompoundBrandStroke: palette.themePrimary,
|
10957
|
-
colorCompoundBrandStrokeHover: palette.themeDarkAlt,
|
10958
|
-
colorCompoundBrandStrokePressed: palette.themeDark,
|
10959
|
-
colorNeutralStrokeDisabled: palette.neutralQuaternaryAlt,
|
10960
|
-
colorNeutralStrokeInvertedDisabled: whiteAlpha[40],
|
10961
|
-
colorTransparentStroke: 'transparent',
|
10962
|
-
colorTransparentStrokeInteractive: 'transparent',
|
10963
|
-
colorTransparentStrokeDisabled: 'transparent',
|
10964
|
-
colorNeutralStrokeAlpha: inverted ? whiteAlpha[10] : blackAlpha[5],
|
10965
|
-
colorNeutralStrokeAlpha2: whiteAlpha[20],
|
10966
|
-
colorStrokeFocus1: palette.white,
|
10967
|
-
colorStrokeFocus2: palette.black,
|
10968
|
-
colorNeutralShadowAmbient: 'rgba(0,0,0,0.12)',
|
10969
|
-
colorNeutralShadowKey: 'rgba(0,0,0,0.14)',
|
10970
|
-
colorNeutralShadowAmbientLighter: 'rgba(0,0,0,0.06)',
|
10971
|
-
colorNeutralShadowKeyLighter: 'rgba(0,0,0,0.07)',
|
10972
|
-
colorNeutralShadowAmbientDarker: 'rgba(0,0,0,0.20)',
|
10973
|
-
colorNeutralShadowKeyDarker: 'rgba(0,0,0,0.24)',
|
10974
|
-
colorBrandShadowAmbient: 'rgba(0,0,0,0.30)',
|
10975
|
-
colorBrandShadowKey: 'rgba(0,0,0,0.25)'
|
10976
|
-
};
|
10977
|
-
};
|
10978
|
-
/**
|
10979
|
-
* Creates v9 shadow tokens from v8 effects.
|
10980
|
-
*/
|
10981
|
-
const mapShadowTokens = (effects) => {
|
10982
|
-
return {
|
10983
|
-
shadow4: effects.elevation4,
|
10984
|
-
shadow8: effects.elevation8,
|
10985
|
-
shadow16: effects.elevation16,
|
10986
|
-
shadow64: effects.elevation64
|
10987
|
-
};
|
10988
|
-
};
|
10989
|
-
/**
|
10990
|
-
* Creates v9 border radius tokens from v8 effects
|
10991
|
-
*/
|
10992
|
-
const mapBorderRadiusTokens = (effects) => {
|
10993
|
-
return {
|
10994
|
-
borderRadiusSmall: effects.roundedCorner2,
|
10995
|
-
borderRadiusMedium: effects.roundedCorner4,
|
10996
|
-
borderRadiusLarge: effects.roundedCorner6
|
10997
|
-
};
|
10998
|
-
};
|
10999
|
-
/**
|
11000
|
-
* Creates a v9 theme from a v8 theme and base v9 theme.
|
11001
|
-
* FluentUI webLightTheme is used in case if no baseThemeV9 is provided.
|
11002
|
-
*
|
11003
|
-
* @private
|
11004
|
-
*/
|
11005
|
-
const createV9Theme = (themeV8, baseThemeV9) => {
|
11006
|
-
const baseTheme = baseThemeV9 !== null && baseThemeV9 !== void 0 ? baseThemeV9 : reactComponents.webLightTheme;
|
11007
|
-
return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, baseTheme), mapAliasColors(themeV8.palette, themeV8.isInverted)), mapShadowTokens(themeV8.effects)), mapBorderRadiusTokens(themeV8.effects)), { colorBrandBackground2: themeV8.palette.themeLight, colorBrandBackground2Hover: themeV8.palette.themeLight, colorBrandBackground2Pressed: themeV8.palette.themeLight, colorStatusWarningBackground3: '#D83B01', errorText: themeV8.semanticColors.errorText, colorNeutralStroke1Selected: themeV8.palette.neutralQuaternary, colorNeutralForeground2: themeV8.palette.neutralSecondary, colorBrandForegroundLink: themeV8.palette.themePrimary, colorBrandForegroundLinkHover: themeV8.palette.themeDarker, colorNeutralBackground1Selected: themeV8.palette.neutralQuaternaryAlt,
|
11008
|
-
// Fix for an issue with black borders for iOS that are added with 'after' selector
|
11009
|
-
colorStrokeFocus2: 'transparent' });
|
11010
|
-
};
|
11011
|
-
|
11012
|
-
// Copyright (c) Microsoft Corporation.
|
11013
|
-
// Licensed under the MIT License.
|
11014
|
-
/**
|
11015
|
-
* @private
|
11016
|
-
*/
|
11017
|
-
const useFluentV9Wrapper = reactComponents.makeStyles({
|
11018
|
-
body: Object.assign(Object.assign(Object.assign(Object.assign({ height: '100%' }, reactComponents.shorthands.margin(0)), reactComponents.shorthands.overflow('hidden')), reactComponents.shorthands.padding(0)), { width: '100%' })
|
11019
|
-
});
|
11020
|
-
/**
|
11021
|
-
* @private
|
11022
|
-
*/
|
11023
|
-
const FluentV9ThemeProvider = (props) => {
|
11024
|
-
const { v8Theme, children } = props;
|
11025
|
-
const v9Theme = createV9Theme(v8Theme);
|
11026
|
-
const dir = v8Theme.rtl ? 'rtl' : 'ltr';
|
11027
|
-
return (
|
11028
|
-
// TextDirectionProvider is needed to fix issue with direction value update in FluentProvider
|
11029
|
-
React.createElement(react$1.TextDirectionProvider, { dir: dir },
|
11030
|
-
React.createElement(FluentProviderWithStylesOverrides, { theme: v9Theme, dir: dir }, children)));
|
11031
|
-
};
|
11032
|
-
const FluentProviderWithStylesOverrides = (props) => {
|
11033
|
-
const classes = useFluentV9Wrapper();
|
11034
|
-
return React.createElement(reactComponents.FluentProvider, Object.assign({}, props, { className: classes.body }));
|
11035
|
-
};
|
11036
|
-
|
11037
11481
|
// Copyright (c) Microsoft Corporation.
|
11038
11482
|
// Licensed under the MIT License.
|
11039
11483
|
/// Adapted from: https://github.com/AlmeroSteyn/react-aria-live/blob/master/src/modules/MessageBlock.js
|
@@ -11218,12 +11662,12 @@ const ChatMessageComponentAsEditBox = (props) => {
|
|
11218
11662
|
/* @conditional-compile-remove(mention) */
|
11219
11663
|
const { mentionLookupOptions } = props;
|
11220
11664
|
const [textValue, setTextValue] = React.useState(message.content || '');
|
11221
|
-
/* @conditional-compile-remove(
|
11665
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11222
11666
|
const [attachmentMetadata, setAttachedFilesMetadata] = React.useState(getMessageAttachedFilesMetadata(message));
|
11223
11667
|
const editTextFieldRef = React.useRef(null);
|
11224
11668
|
const theme = useTheme();
|
11225
11669
|
const messageState = getMessageState(textValue,
|
11226
|
-
/* @conditional-compile-remove(
|
11670
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ attachmentMetadata !== null && attachmentMetadata !== void 0 ? attachmentMetadata : []);
|
11227
11671
|
const submitEnabled = messageState === 'OK';
|
11228
11672
|
const editContainerStyles = useChatMessageEditContainerStyles();
|
11229
11673
|
const chatMyMessageStyles = useChatMyMessageStyles();
|
@@ -11250,7 +11694,7 @@ const ChatMessageComponentAsEditBox = (props) => {
|
|
11250
11694
|
const editBoxStyles = React.useMemo(() => {
|
11251
11695
|
return react.concatStyleSets(editBoxStyleSet, { textField: { borderColor: theme.palette.themePrimary } });
|
11252
11696
|
}, [theme.palette.themePrimary]);
|
11253
|
-
/* @conditional-compile-remove(
|
11697
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11254
11698
|
const onRenderFileUploads = React.useCallback(() => {
|
11255
11699
|
return (!!attachmentMetadata &&
|
11256
11700
|
attachmentMetadata.length > 0 && (React.createElement("div", { style: { margin: '0.25rem' } },
|
@@ -11271,7 +11715,7 @@ const ChatMessageComponentAsEditBox = (props) => {
|
|
11271
11715
|
}, onEnterKeyDown: () => {
|
11272
11716
|
submitEnabled &&
|
11273
11717
|
onSubmit(textValue, message.metadata,
|
11274
|
-
/* @conditional-compile-remove(
|
11718
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ {
|
11275
11719
|
attachmentMetadata
|
11276
11720
|
});
|
11277
11721
|
}, supportNewline: false, maxLength: MAXIMUM_LENGTH_OF_MESSAGE, errorMessage: textTooLongMessage, styles: editBoxStyles,
|
@@ -11288,12 +11732,12 @@ const ChatMessageComponentAsEditBox = (props) => {
|
|
11288
11732
|
React.createElement(InputBoxButton, { className: editingButtonStyle, ariaLabel: strings.editBoxSubmitButton, tooltipContent: strings.editBoxSubmitButton, onRenderIcon: onRenderThemedSubmitIcon, onClick: (e) => {
|
11289
11733
|
submitEnabled &&
|
11290
11734
|
onSubmit(textValue, message.metadata,
|
11291
|
-
/* @conditional-compile-remove(
|
11735
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ {
|
11292
11736
|
attachmentMetadata
|
11293
11737
|
});
|
11294
11738
|
e.stopPropagation();
|
11295
|
-
}, id: 'submitIconWrapper' }))),
|
11296
|
-
onRenderFileUploads()));
|
11739
|
+
}, id: 'submitIconWrapper' }))),
|
11740
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ onRenderFileUploads()));
|
11297
11741
|
};
|
11298
11742
|
const attached = message.attached === true ? 'center' : message.attached === 'bottom' ? 'bottom' : 'top';
|
11299
11743
|
return (React.createElement(reactChat.ChatMyMessage, { attached: attached, root: {
|
@@ -11649,7 +12093,6 @@ var __awaiter$C = (window && window.__awaiter) || function (thisArg, _arguments,
|
|
11649
12093
|
const attachmentDownloadCardsStyle = {
|
11650
12094
|
marginTop: '0.25rem'
|
11651
12095
|
};
|
11652
|
-
const actionIconStyle = { height: '1rem' };
|
11653
12096
|
/**
|
11654
12097
|
* @internal
|
11655
12098
|
*/
|
@@ -11664,13 +12107,13 @@ const _AttachmentDownloadCards = (props) => {
|
|
11664
12107
|
}, [(_a = props.strings) === null || _a === void 0 ? void 0 : _a.downloadAttachment, localeStrings.downloadAttachment]);
|
11665
12108
|
const isShowDownloadIcon = React.useCallback((attachment) => {
|
11666
12109
|
var _a;
|
11667
|
-
/* @conditional-compile-remove(
|
12110
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11668
12111
|
return ((_a = attachment.payload) === null || _a === void 0 ? void 0 : _a.teamsFileAttachment) !== 'true';
|
11669
12112
|
}, []);
|
11670
12113
|
const attachmentCardGroupDescription = React.useMemo(() => () => {
|
11671
12114
|
var _a, _b, _c;
|
11672
12115
|
const fileGroupLocaleString = (_b = (_a = props.strings) === null || _a === void 0 ? void 0 : _a.attachmentCardGroupMessage) !== null && _b !== void 0 ? _b : localeStrings.attachmentCardGroupMessage;
|
11673
|
-
/* @conditional-compile-remove(
|
12116
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11674
12117
|
return _formatString(fileGroupLocaleString, {
|
11675
12118
|
attachmentCount: `${(_c = fileMetadata === null || fileMetadata === void 0 ? void 0 : fileMetadata.length) !== null && _c !== void 0 ? _c : 0}`
|
11676
12119
|
});
|
@@ -11702,18 +12145,17 @@ const _AttachmentDownloadCards = (props) => {
|
|
11702
12145
|
return (React.createElement("div", { style: attachmentDownloadCardsStyle, "data-ui-id": "file-download-card-group" },
|
11703
12146
|
React.createElement(_AttachmentCardGroup, { ariaLabel: attachmentCardGroupDescription() }, fileMetadata &&
|
11704
12147
|
fileMetadata.map((attachment) => (React.createElement(react.TooltipHost, { content: downloadAttachmentButtonString(), key: attachment.name },
|
11705
|
-
React.createElement(_AttachmentCard, { attachmentName: attachment.name, key: attachment.name, attachmentExtension: attachment.extension, actionIcon: showSpinner ? (React.createElement(react.Spinner, { size: react.SpinnerSize.medium, "aria-live": 'polite', role: 'status' })) : isShowDownloadIcon(attachment) ? (React.createElement(
|
11706
|
-
React.createElement(DownloadIconTrampoline, null))) : undefined, actionHandler: () => fileDownloadHandler(userId, attachment) })))))));
|
12148
|
+
React.createElement(_AttachmentCard, { attachmentName: attachment.name, key: attachment.name, attachmentExtension: attachment.extension, actionIcon: showSpinner ? (React.createElement(react.Spinner, { size: react.SpinnerSize.medium, "aria-live": 'polite', role: 'status' })) : isShowDownloadIcon(attachment) ? (React.createElement(DownloadIconTrampoline, null)) : (React.createElement(reactIcons.Open20Regular, null)), actionHandler: () => fileDownloadHandler(userId, attachment) })))))));
|
11707
12149
|
};
|
11708
12150
|
/**
|
11709
12151
|
* @private
|
11710
12152
|
*/
|
11711
12153
|
const DownloadIconTrampoline = () => {
|
11712
|
-
// @conditional-compile-remove(
|
11713
|
-
return React.createElement(
|
12154
|
+
// @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload)
|
12155
|
+
return React.createElement(reactIcons.ArrowDownload20Regular, { "data-ui-id": 'file-download-card-download-icon' });
|
11714
12156
|
};
|
11715
12157
|
const useLocaleStringsTrampoline = () => {
|
11716
|
-
/* @conditional-compile-remove(
|
12158
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11717
12159
|
return useLocale$1().strings.messageThread;
|
11718
12160
|
};
|
11719
12161
|
|
@@ -11810,11 +12252,11 @@ const getFluentUIAttachedValue = (messageAttachedStatus) => {
|
|
11810
12252
|
* Get the message bubble content for the message.
|
11811
12253
|
*/
|
11812
12254
|
function getMessageBubbleContent(message, strings, userId, inlineImageOptions,
|
11813
|
-
/* @conditional-compile-remove(
|
12255
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11814
12256
|
onRenderFileDownloads,
|
11815
12257
|
/* @conditional-compile-remove(mention) */
|
11816
12258
|
mentionDisplayOptions,
|
11817
|
-
/* @conditional-compile-remove(
|
12259
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11818
12260
|
fileDownloadHandler) {
|
11819
12261
|
/* @conditional-compile-remove(data-loss-prevention) */
|
11820
12262
|
if (message.messageType === 'blocked') {
|
@@ -11825,25 +12267,25 @@ fileDownloadHandler) {
|
|
11825
12267
|
React.createElement(ChatMessageContent, { message: message, strings: strings,
|
11826
12268
|
/* @conditional-compile-remove(mention) */
|
11827
12269
|
mentionDisplayOptions: mentionDisplayOptions, inlineImageOptions: inlineImageOptions }),
|
11828
|
-
/* @conditional-compile-remove(
|
12270
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ onRenderFileDownloads
|
11829
12271
|
? onRenderFileDownloads(userId, message)
|
11830
12272
|
: defaultOnRenderFileDownloads(userId, message, strings,
|
11831
|
-
/* @conditional-compile-remove(
|
12273
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ fileDownloadHandler)));
|
11832
12274
|
}
|
11833
12275
|
/**
|
11834
12276
|
* Default component for rendering file downloads.
|
11835
12277
|
*/
|
11836
|
-
/* @conditional-compile-remove(
|
12278
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11837
12279
|
const defaultOnRenderFileDownloads = (userId, message, strings,
|
11838
|
-
/* @conditional-compile-remove(
|
12280
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11839
12281
|
fileDownloadHandler) => {
|
11840
|
-
/* @conditional-compile-remove(
|
12282
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11841
12283
|
return (React.createElement(_AttachmentDownloadCards, { userId: userId,
|
11842
|
-
/* @conditional-compile-remove(
|
12284
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11843
12285
|
fileMetadata: message.files || [],
|
11844
|
-
/* @conditional-compile-remove(
|
12286
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11845
12287
|
downloadHandler: fileDownloadHandler,
|
11846
|
-
/* @conditional-compile-remove(
|
12288
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11847
12289
|
strings: {
|
11848
12290
|
downloadAttachment: strings.downloadAttachment,
|
11849
12291
|
attachmentCardGroupMessage: strings.attachmentCardGroupMessage
|
@@ -11887,9 +12329,9 @@ const MessageBubble$1 = (props) => {
|
|
11887
12329
|
const theme = useTheme();
|
11888
12330
|
const locale = useLocale$1();
|
11889
12331
|
const { userId, message, onRemoveClick, onResendClick, disableEditing, showDate, messageContainerStyle, strings, onEditClick, remoteParticipantsCount = 0, onRenderAvatar, showMessageStatus, messageStatus,
|
11890
|
-
/* @conditional-compile-remove(
|
12332
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11891
12333
|
fileDownloadHandler, inlineImageOptions,
|
11892
|
-
/* @conditional-compile-remove(
|
12334
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11893
12335
|
onRenderFileDownloads,
|
11894
12336
|
/* @conditional-compile-remove(mention) */
|
11895
12337
|
mentionDisplayOptions, onDisplayDateTimeString } = props;
|
@@ -11945,18 +12387,18 @@ const MessageBubble$1 = (props) => {
|
|
11945
12387
|
}, [message, messageStatus, strings.editedTag, strings.failToSendTag, theme]);
|
11946
12388
|
const getContent = React.useCallback(() => {
|
11947
12389
|
return getMessageBubbleContent(message, strings, userId, inlineImageOptions,
|
11948
|
-
/* @conditional-compile-remove(
|
12390
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11949
12391
|
onRenderFileDownloads,
|
11950
12392
|
/* @conditional-compile-remove(mention) */
|
11951
12393
|
mentionDisplayOptions,
|
11952
|
-
/* @conditional-compile-remove(
|
12394
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
11953
12395
|
fileDownloadHandler);
|
11954
12396
|
}, [
|
11955
|
-
/* @conditional-compile-remove(
|
12397
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ fileDownloadHandler,
|
11956
12398
|
inlineImageOptions,
|
11957
12399
|
/* @conditional-compile-remove(mention) */ mentionDisplayOptions,
|
11958
12400
|
message,
|
11959
|
-
/* @conditional-compile-remove(
|
12401
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ onRenderFileDownloads,
|
11960
12402
|
strings,
|
11961
12403
|
userId
|
11962
12404
|
]);
|
@@ -12095,30 +12537,32 @@ const FluentChatMyMessageComponent = (props) => {
|
|
12095
12537
|
onDisplayDateTimeString, inlineImageOptions,
|
12096
12538
|
/* @conditional-compile-remove(mention) */
|
12097
12539
|
mentionOptions,
|
12098
|
-
/* @conditional-compile-remove(
|
12540
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12099
12541
|
fileDownloadHandler, userId,
|
12100
|
-
/* @conditional-compile-remove(
|
12542
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12101
12543
|
onRenderFileDownloads, defaultStatusRenderer, statusToRender } = props;
|
12102
12544
|
const chatMessageRenderStyles = useChatMessageRenderStyles();
|
12103
12545
|
const onRenderFileDownloadsMemo = React.useMemo(() => {
|
12104
|
-
/* @conditional-compile-remove(
|
12546
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12105
12547
|
return onRenderFileDownloads;
|
12106
|
-
}, [
|
12548
|
+
}, [
|
12549
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ onRenderFileDownloads
|
12550
|
+
]);
|
12107
12551
|
// To rerender the defaultChatMessageRenderer if app running across days(every new day chat time stamp
|
12108
12552
|
// needs to be regenerated), the dependency on "new Date().toDateString()"" is added.
|
12109
12553
|
const defaultChatMessageRenderer = React.useCallback((messageProps) => {
|
12110
12554
|
if (messageProps.message.messageType === 'chat' ||
|
12111
12555
|
/* @conditional-compile-remove(data-loss-prevention) */ messageProps.message.messageType === 'blocked') {
|
12112
12556
|
return (React.createElement(ChatMyMessageComponent, Object.assign({}, messageProps, {
|
12113
|
-
/* @conditional-compile-remove(
|
12557
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12114
12558
|
onRenderFileDownloads: onRenderFileDownloadsMemo,
|
12115
|
-
/* @conditional-compile-remove(
|
12559
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12116
12560
|
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,
|
12117
12561
|
/* @conditional-compile-remove(date-time-customization) */
|
12118
12562
|
onDisplayDateTimeString: onDisplayDateTimeString, inlineImageOptions: inlineImageOptions,
|
12119
12563
|
/* @conditional-compile-remove(mention) */
|
12120
12564
|
mentionOptions: mentionOptions,
|
12121
|
-
/* @conditional-compile-remove(
|
12565
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12122
12566
|
fileDownloadHandler: fileDownloadHandler })));
|
12123
12567
|
}
|
12124
12568
|
return React.createElement(React.Fragment, null);
|
@@ -12135,7 +12579,7 @@ const FluentChatMyMessageComponent = (props) => {
|
|
12135
12579
|
inlineImageOptions,
|
12136
12580
|
/* @conditional-compile-remove(mention) */
|
12137
12581
|
mentionOptions,
|
12138
|
-
/* @conditional-compile-remove(
|
12582
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12139
12583
|
fileDownloadHandler,
|
12140
12584
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
12141
12585
|
new Date().toDateString()
|
@@ -12201,9 +12645,9 @@ const MessageBubble = (props) => {
|
|
12201
12645
|
const theme = useTheme();
|
12202
12646
|
const locale = useLocale$1();
|
12203
12647
|
const { userId, message, showDate, messageContainerStyle, strings,
|
12204
|
-
/* @conditional-compile-remove(
|
12648
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12205
12649
|
fileDownloadHandler, inlineImageOptions, shouldOverlapAvatarAndMessage,
|
12206
|
-
/* @conditional-compile-remove(
|
12650
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12207
12651
|
onRenderFileDownloads,
|
12208
12652
|
/* @conditional-compile-remove(mention) */
|
12209
12653
|
mentionDisplayOptions, onDisplayDateTimeString } = props;
|
@@ -12221,18 +12665,18 @@ const MessageBubble = (props) => {
|
|
12221
12665
|
}, [strings.editedTag, theme, message]);
|
12222
12666
|
const getContent = React.useCallback(() => {
|
12223
12667
|
return getMessageBubbleContent(message, strings, userId, inlineImageOptions,
|
12224
|
-
/* @conditional-compile-remove(
|
12668
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12225
12669
|
onRenderFileDownloads,
|
12226
12670
|
/* @conditional-compile-remove(mention) */
|
12227
12671
|
mentionDisplayOptions,
|
12228
|
-
/* @conditional-compile-remove(
|
12672
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12229
12673
|
fileDownloadHandler);
|
12230
12674
|
}, [
|
12231
|
-
/* @conditional-compile-remove(
|
12675
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ fileDownloadHandler,
|
12232
12676
|
inlineImageOptions,
|
12233
12677
|
/* @conditional-compile-remove(mention) */ mentionDisplayOptions,
|
12234
12678
|
message,
|
12235
|
-
/* @conditional-compile-remove(
|
12679
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ onRenderFileDownloads,
|
12236
12680
|
strings,
|
12237
12681
|
userId
|
12238
12682
|
]);
|
@@ -12282,30 +12726,32 @@ const FluentChatMessageComponent = (props) => {
|
|
12282
12726
|
const { message, styles, shouldOverlapAvatarAndMessage, onRenderMessage, onRenderAvatar,
|
12283
12727
|
/* @conditional-compile-remove(date-time-customization) */
|
12284
12728
|
onDisplayDateTimeString, inlineImageOptions,
|
12285
|
-
/* @conditional-compile-remove(
|
12729
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12286
12730
|
fileDownloadHandler, userId,
|
12287
|
-
/* @conditional-compile-remove(
|
12731
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12288
12732
|
onRenderFileDownloads,
|
12289
12733
|
/* @conditional-compile-remove(mention) */
|
12290
12734
|
mentionOptions } = props;
|
12291
12735
|
const chatMessageRenderStyles = useChatMessageRenderStyles();
|
12292
12736
|
const onRenderFileDownloadsMemo = React.useMemo(() => {
|
12293
|
-
/* @conditional-compile-remove(
|
12737
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12294
12738
|
return onRenderFileDownloads;
|
12295
|
-
}, [
|
12739
|
+
}, [
|
12740
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ onRenderFileDownloads
|
12741
|
+
]);
|
12296
12742
|
// To rerender the defaultChatMessageRenderer if app running across days(every new day chat time stamp
|
12297
12743
|
// needs to be regenerated), the dependency on "new Date().toDateString()"" is added.
|
12298
12744
|
const defaultChatMessageRenderer = React.useCallback((messageProps) => {
|
12299
12745
|
if (messageProps.message.messageType === 'chat' ||
|
12300
12746
|
/* @conditional-compile-remove(data-loss-prevention) */ messageProps.message.messageType === 'blocked') {
|
12301
12747
|
return (React.createElement(ChatMessageComponentAsMessageBubble, Object.assign({}, messageProps, {
|
12302
|
-
/* @conditional-compile-remove(
|
12748
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12303
12749
|
onRenderFileDownloads: onRenderFileDownloadsMemo,
|
12304
|
-
/* @conditional-compile-remove(
|
12750
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12305
12751
|
strings: messageProps.strings, message: messageProps.message, userId: userId, shouldOverlapAvatarAndMessage: shouldOverlapAvatarAndMessage,
|
12306
12752
|
/* @conditional-compile-remove(date-time-customization) */
|
12307
12753
|
onDisplayDateTimeString: onDisplayDateTimeString, inlineImageOptions: inlineImageOptions,
|
12308
|
-
/* @conditional-compile-remove(
|
12754
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12309
12755
|
fileDownloadHandler: fileDownloadHandler,
|
12310
12756
|
/* @conditional-compile-remove(mention) */
|
12311
12757
|
mentionDisplayOptions: mentionOptions === null || mentionOptions === void 0 ? void 0 : mentionOptions.displayOptions })));
|
@@ -12318,7 +12764,7 @@ const FluentChatMessageComponent = (props) => {
|
|
12318
12764
|
/* @conditional-compile-remove(date-time-customization) */
|
12319
12765
|
onDisplayDateTimeString,
|
12320
12766
|
inlineImageOptions,
|
12321
|
-
/* @conditional-compile-remove(
|
12767
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12322
12768
|
fileDownloadHandler,
|
12323
12769
|
/* @conditional-compile-remove(mention) */
|
12324
12770
|
mentionOptions,
|
@@ -12592,7 +13038,7 @@ const MessageThreadWrapper = (props) => {
|
|
12592
13038
|
onDisplayDateTimeString,
|
12593
13039
|
/* @conditional-compile-remove(mention) */
|
12594
13040
|
mentionOptions, inlineImageOptions,
|
12595
|
-
/* @conditional-compile-remove(
|
13041
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
12596
13042
|
onRenderFileDownloads } = props;
|
12597
13043
|
// We need this state to wait for one tick and scroll to bottom after messages have been initialized.
|
12598
13044
|
// Otherwise chatScrollDivRef.current.clientHeight is wrong if we scroll to bottom before messages are initialized.
|
@@ -12920,22 +13366,23 @@ const MessageThreadWrapper = (props) => {
|
|
12920
13366
|
existsNewChatMessage && !disableJumpToNewMessageButton && (React.createElement("div", { className: react.mergeStyles(newMessageButtonContainerStyle, styles === null || styles === void 0 ? void 0 : styles.newMessageButtonContainer) }, onRenderJumpToNewMessageButton ? (onRenderJumpToNewMessageButton({ text: strings.newMessagesIndicator, onClick: scrollToBottom })) : (React.createElement(DefaultJumpToNewMessageButton, { text: strings.newMessagesIndicator, onClick: scrollToBottom })))),
|
12921
13367
|
React.createElement(LiveAnnouncer, null,
|
12922
13368
|
React.createElement(FluentV9ThemeProvider, { v8Theme: theme },
|
12923
|
-
latestDeletedMessageId && (React.createElement(Announcer$1, { key: latestDeletedMessageId, announcementString: deletedMessageAriaLabel, ariaLive: 'assertive' })),
|
12924
13369
|
React.createElement(reactChat.Chat
|
12925
13370
|
// styles?.chatContainer used in className and style prop as style prop can't handle CSS selectors
|
12926
13371
|
, {
|
12927
13372
|
// styles?.chatContainer used in className and style prop as style prop can't handle CSS selectors
|
12928
|
-
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)) },
|
12929
|
-
|
12930
|
-
|
12931
|
-
|
12932
|
-
|
12933
|
-
|
12934
|
-
|
12935
|
-
|
12936
|
-
|
12937
|
-
|
12938
|
-
|
13373
|
+
className: reactComponents.mergeClasses(classes.root, react.mergeStyles(styles === null || styles === void 0 ? void 0 : styles.chatContainer)), ref: chatScrollDivRef, style: Object.assign({}, createStyleFromV8Style(styles === null || styles === void 0 ? void 0 : styles.chatContainer)) },
|
13374
|
+
latestDeletedMessageId && (React.createElement(Announcer$1, { key: latestDeletedMessageId, announcementString: deletedMessageAriaLabel, ariaLive: 'polite' })),
|
13375
|
+
messagesToDisplay.map((message) => {
|
13376
|
+
return (React.createElement(MemoChatMessageComponentWrapper, Object.assign({}, message, { userId: userId, key: message.key, styles: styles, shouldOverlapAvatarAndMessage: isNarrow, strings: strings, onRenderAvatar: onRenderAvatar, onRenderMessage: onRenderMessage, onRenderMessageStatus: onRenderMessageStatus, defaultStatusRenderer: defaultStatusRenderer, onActionButtonClick: onActionButtonClickMemo, readCount: readCountForHoveredIndicator, participantCount: participantCount,
|
13377
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
13378
|
+
fileDownloadHandler: props.fileDownloadHandler, inlineImageOptions: inlineImageOptions,
|
13379
|
+
/* @conditional-compile-remove(date-time-customization) */
|
13380
|
+
onDisplayDateTimeString: onDisplayDateTimeString,
|
13381
|
+
/* @conditional-compile-remove(mention) */
|
13382
|
+
mentionOptions: mentionOptions,
|
13383
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
13384
|
+
onRenderFileDownloads: onRenderFileDownloads })));
|
13385
|
+
}))))));
|
12939
13386
|
};
|
12940
13387
|
const MemoChatMessageComponentWrapper = React.memo((obj) => {
|
12941
13388
|
return React.createElement(ChatMessageComponentWrapper, Object.assign({}, obj));
|
@@ -16751,7 +17198,7 @@ const OverflowGallery = (props) => {
|
|
16751
17198
|
*/
|
16752
17199
|
const DefaultLayout = (props) => {
|
16753
17200
|
const { remoteParticipants = [], localParticipant, dominantSpeakers, localVideoComponent, screenShareComponent, onRenderRemoteParticipant, styles, maxRemoteVideoStreams, parentWidth, parentHeight, pinnedParticipantUserIds = [], overflowGalleryPosition = 'horizontalBottom',
|
16754
|
-
/* @conditional-compile-remove(spotlight) */ spotlightedParticipantUserIds } = props;
|
17201
|
+
/* @conditional-compile-remove(spotlight) */ spotlightedParticipantUserIds = [] } = props;
|
16755
17202
|
const isNarrow = parentWidth ? isNarrowWidth(parentWidth) : false;
|
16756
17203
|
const isShort = parentHeight ? isShortHeight(parentHeight) : false;
|
16757
17204
|
// This is for tracking the number of children in the first page of overflow gallery.
|
@@ -16793,7 +17240,7 @@ const DefaultLayout = (props) => {
|
|
16793
17240
|
: (_b = p.videoStream) === null || _b === void 0 ? void 0 : _b.isAvailable);
|
16794
17241
|
});
|
16795
17242
|
if (localVideoComponent) {
|
16796
|
-
if (screenShareComponent) {
|
17243
|
+
if (screenShareComponent || /* @conditional-compile-remove(spotlight) */ spotlightedParticipantUserIds.length > 0) {
|
16797
17244
|
overflowGalleryTiles = [localVideoComponent].concat(overflowGalleryTiles);
|
16798
17245
|
}
|
16799
17246
|
else {
|
@@ -17827,7 +18274,8 @@ const LARGE_GALLERY_PARTICIPANT_CAP = 48;
|
|
17827
18274
|
* @private
|
17828
18275
|
*/
|
17829
18276
|
const LargeGalleryLayout = (props) => {
|
17830
|
-
const { remoteParticipants = [], localParticipant, dominantSpeakers, localVideoComponent, screenShareComponent, onRenderRemoteParticipant, styles, maxRemoteVideoStreams, parentWidth, parentHeight, pinnedParticipantUserIds = [], overflowGalleryPosition = 'horizontalBottom'
|
18277
|
+
const { remoteParticipants = [], localParticipant, dominantSpeakers, localVideoComponent, screenShareComponent, onRenderRemoteParticipant, styles, maxRemoteVideoStreams, parentWidth, parentHeight, pinnedParticipantUserIds = [], overflowGalleryPosition = 'horizontalBottom',
|
18278
|
+
/* @conditional-compile-remove(spotlight) */ spotlightedParticipantUserIds = [] } = props;
|
17831
18279
|
const isNarrow = parentWidth ? isNarrowWidth(parentWidth) : false;
|
17832
18280
|
const isShort = parentHeight ? isShortHeight(parentHeight) : false;
|
17833
18281
|
const maxStreamsTrampoline = () => {
|
@@ -17849,7 +18297,8 @@ const LargeGalleryLayout = (props) => {
|
|
17849
18297
|
? childrenPerPage.current - ((pinnedParticipantUserIds.length + 1) % childrenPerPage.current)
|
17850
18298
|
: childrenPerPage.current,
|
17851
18299
|
pinnedParticipantUserIds,
|
17852
|
-
/* @conditional-compile-remove(large-gallery) */ layout: 'largeGallery'
|
18300
|
+
/* @conditional-compile-remove(large-gallery) */ layout: 'largeGallery',
|
18301
|
+
/* @conditional-compile-remove(spotlight) */ spotlightedParticipantUserIds
|
17853
18302
|
});
|
17854
18303
|
let activeVideoStreams = 0;
|
17855
18304
|
let gridTiles = gridParticipants.map((p) => {
|
@@ -17873,7 +18322,7 @@ const LargeGalleryLayout = (props) => {
|
|
17873
18322
|
: (_b = p.videoStream) === null || _b === void 0 ? void 0 : _b.isAvailable);
|
17874
18323
|
});
|
17875
18324
|
if (localVideoComponent) {
|
17876
|
-
if (screenShareComponent) {
|
18325
|
+
if (screenShareComponent || /* @conditional-compile-remove(spotlight) */ spotlightedParticipantUserIds.length > 0) {
|
17877
18326
|
overflowGalleryTiles = [localVideoComponent].concat(overflowGalleryTiles);
|
17878
18327
|
}
|
17879
18328
|
else {
|
@@ -20129,8 +20578,8 @@ const DialpadButton = (props) => {
|
|
20129
20578
|
const DialpadContainer = (props) => {
|
20130
20579
|
var _a, _b;
|
20131
20580
|
const theme = react.useTheme();
|
20132
|
-
const { onSendDtmfTone, onClickDialpadButton, textFieldValue, onChange, showDeleteButton = true, longPressTrigger = 'mouseAndTouch', disableDtmfPlayback, dialpadMode = 'dialer' } = props;
|
20133
|
-
const dtmfToneAudioContext = React.useRef(new AudioContext());
|
20581
|
+
const { onSendDtmfTone, onClickDialpadButton, textFieldValue, onChange, showDeleteButton = true, longPressTrigger = 'mouseAndTouch', disableDtmfPlayback, dialpadMode = 'dialer', dtmfAudioContext } = props;
|
20582
|
+
const dtmfToneAudioContext = React.useRef(dtmfAudioContext ? dtmfAudioContext : new AudioContext());
|
20134
20583
|
const [plainTextValue, setPlainTextValue] = React.useState(textFieldValue !== null && textFieldValue !== void 0 ? textFieldValue : '');
|
20135
20584
|
const plainTextValuePreviousRenderValue = React.useRef(plainTextValue);
|
20136
20585
|
React.useEffect(() => {
|
@@ -22786,7 +23235,7 @@ const memoizedAllConvertChatMessage = memoizeFnAll((_key, chatMessage, userId, i
|
|
22786
23235
|
return convertToUiSystemMessage(chatMessage);
|
22787
23236
|
}
|
22788
23237
|
});
|
22789
|
-
/* @conditional-compile-remove(
|
23238
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
22790
23239
|
const extractAttachedFilesMetadata = (metadata) => {
|
22791
23240
|
const fileMetadata = metadata.fileSharingMetadata;
|
22792
23241
|
if (!fileMetadata) {
|
@@ -22800,7 +23249,7 @@ const extractAttachedFilesMetadata = (metadata) => {
|
|
22800
23249
|
return [];
|
22801
23250
|
}
|
22802
23251
|
};
|
22803
|
-
/* @conditional-compile-remove(
|
23252
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
22804
23253
|
const extractTeamsAttachmentsMetadata = (attachments) => {
|
22805
23254
|
const files = [];
|
22806
23255
|
attachments.forEach((attachment) => {
|
@@ -22837,7 +23286,7 @@ const convertToUiBlockedMessage = (message, userId, isSeen, isLargeGroup) => {
|
|
22837
23286
|
link: DEFAULT_DATA_LOSS_PREVENTION_POLICY_URL
|
22838
23287
|
};
|
22839
23288
|
};
|
22840
|
-
/* @conditional-compile-remove(
|
23289
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
22841
23290
|
const extractAttachmentUrl = (attachment) => {
|
22842
23291
|
return attachment.previewUrl ? attachment.previewUrl : attachment.url || '';
|
22843
23292
|
};
|
@@ -22910,7 +23359,7 @@ const extractAttachmentContentTypeFromName = (name) => {
|
|
22910
23359
|
const contentType = name.substring(indexOfLastDot + 1);
|
22911
23360
|
return contentType;
|
22912
23361
|
};
|
22913
|
-
/* @conditional-compile-remove(
|
23362
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
22914
23363
|
const extractAttachmentsMetadata = (message) => {
|
22915
23364
|
var _a, _b;
|
22916
23365
|
let files = [];
|
@@ -22925,7 +23374,7 @@ const extractAttachmentsMetadata = (message) => {
|
|
22925
23374
|
};
|
22926
23375
|
const convertToUiChatMessage = (message, userId, isSeen, isLargeGroup) => {
|
22927
23376
|
const messageSenderId = message.sender !== undefined ? toFlatCommunicationIdentifier(message.sender) : userId;
|
22928
|
-
/* @conditional-compile-remove(
|
23377
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
22929
23378
|
const { files } = extractAttachmentsMetadata(message);
|
22930
23379
|
return {
|
22931
23380
|
messageType: 'chat',
|
@@ -22941,7 +23390,7 @@ const convertToUiChatMessage = (message, userId, isSeen, isLargeGroup) => {
|
|
22941
23390
|
deletedOn: message.deletedOn,
|
22942
23391
|
mine: messageSenderId === userId,
|
22943
23392
|
metadata: message.metadata,
|
22944
|
-
/* @conditional-compile-remove(
|
23393
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
22945
23394
|
files
|
22946
23395
|
};
|
22947
23396
|
};
|
@@ -24683,7 +25132,7 @@ const COMPOSITE_ONLY_ICONS = {
|
|
24683
25132
|
NoticePageRoomNotValid: React.createElement(reactIcons.Info20Filled, null),
|
24684
25133
|
NoticePageCallRejected: React.createElement(reactIcons.Info20Filled, null),
|
24685
25134
|
NoticePageCallTimeout: React.createElement(reactIcons.Info20Filled, null),
|
24686
|
-
/* @conditional-compile-remove(
|
25135
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
24687
25136
|
SendBoxAttachFile: React.createElement(reactIcons.Attach20Regular, null),
|
24688
25137
|
/* @conditional-compile-remove(PSTN-calls) */
|
24689
25138
|
PeoplePaneAddPerson: React.createElement(reactIcons.PersonAdd20Regular, null),
|
@@ -24739,7 +25188,7 @@ const CallCompositeIcon = (props) => (React.createElement(react.FontIcon, Object
|
|
24739
25188
|
*/
|
24740
25189
|
const CallWithChatCompositeIcon = (props) => (React.createElement(react.FontIcon, Object.assign({}, props)));
|
24741
25190
|
|
24742
|
-
var call$k={cameraLabel:"Camera",noCamerasLabel:"No cameras found",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",chatButtonLabel:"Chat",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",defaultPlaceHolder:"Select an option",dismissSidePaneButtonLabel:"Close",videoEffectsPaneTitle:"Effects",videoEffectsPaneBackgroundSelectionTitle:"Background",configurationPageVideoEffectsButtonLabel:"Effects",unableToStartVideoEffect:"Unable to apply video effect.",blurBackgroundEffectButtonLabel:"Blur",blurBackgroundTooltip:"Blur Background",removeBackgroundEffectButtonLabel:"None",removeBackgroundTooltip:"Remove Background",cameraOffBackgroundEffectWarningText:"Your camera is off. Turn on camera to see video effect.",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leavingCallTitle:"Leaving...",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby.",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",notInvitedToRoomDetails:"You are not able to join this room because you do not have an invite.",notInvitedToRoomTitle:"Not invited to room",peopleButtonLabel:"People",selectedPeopleButtonLabel:"People Button Selected",peoplePaneTitle:"People",peoplePaneMoreButtonAriaLabel:"More",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call {numberOfPeople}",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",removeMenuLabel:"Remove",startSpotlightMenuLabel:"Spotlight for everyone",addSpotlightMenuLabel:"Add spotlight",stopSpotlightMenuLabel:"Stop spotlighting",stopSpotlightOnSelfMenuLabel:"Exit spotlight",spotlightLimitReachedMenuTitle:"Spotlight limit reached",stopAllSpotlightMenuLabel:"Stop all spotlights",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",roomNotFoundDetails:"The room ID provided could not be found.",roomNotFoundTitle:"Room not found",roomNotValidDetails:"This room is not valid at this current time.",roomNotValidTitle:"Room not valid",inviteToRoomRemovedDetails:"Your invite to join this room was removed.",inviteToRoomRemovedTitle:"Invite to room removed",soundLabel:"Sound",noMicrophonesLabel:"No microphones found",noSpeakersLabel:"No speakers found",startCallButtonLabel:"Start call",openDialpadButtonLabel:"Dial phone number",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",moreButtonCallingLabel:"More",resumeCallButtonLabel:"Resume",resumingCallButtonLabel:"Resuming...",resumeCallButtonAriaLabel:"Resume call",resumingCallButtonAriaLabel:"Resume call",holdScreenLabel:"You're on hold",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number",outboundCallingNoticeString:"Calling...",participantJoinedNoticeString:"{displayName} joined",twoParticipantJoinedNoticeString:"{displayName1} and {displayName2} have joined",threeParticipantJoinedNoticeString:"{displayName1}, {displayName2} and {displayName3} have joined",participantLeftNoticeString:"{displayName} left",twoParticipantLeftNoticeString:"{displayName1} and {displayName2} have left",threeParticipantLeftNoticeString:"{displayName1}, {displayName2} and {displayName3} have left",unnamedParticipantString:"unnamed participant",manyUnnamedParticipantsJoined:"unnamed participant and {numOfParticipants} other participants joined",manyUnnamedParticipantsLeft:"unnamed participant and {numOfParticipants} other participants left",manyParticipantsJoined:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants joined",manyParticipantsLeft:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants left",liveCaptionsLabel:"Live captions",captionsSettingsLabel:"Caption settings",startCaptionsButtonOnLabel:"Turn on captions",startCaptionsButtonOffLabel:"Turn off captions",startCaptionsButtonTooltipOnContent:"Turn off captions",startCaptionsButtonTooltipOffContent:"Turn on captions",captionsSettingsModalTitle:"Captions Settings",captionsSettingsSpokenLanguageDropdownLabel:"Spoken language",captionsSettingsCaptionLanguageDropdownLabel:"Captions language",captionsSettingsSpokenLanguageDropdownInfoText:"Language that everyone on this call is speaking.",captionsSettingsCaptionLanguageDropdownInfoText:"Captions will appear in this langugage.",captionsSettingsConfirmButtonLabel:"Confirm",captionsSettingsCancelButtonLabel:"Cancel",captionsSettingsModalAriaLabel:"Captions Setting Modal",captionsSettingsCloseModalButtonAriaLabel:"Close Captions Setting",captionsBannerMoreButtonCallingLabel:"More",captionsBannerMoreButtonTooltip:"More options",dismissModalAriaLabel:"Local and remote picture and picture, press enter to return to call",callRejectedTitle:"The call could not be completed",callRejectedMoreDetails:"The person you are trying to reach is unavailable. Please try again later.",callTimeoutTitle:"The call could not be completed",callTimeoutDetails:"The person you are trying to reach is unavailable. Please try again later.",callTimeoutBotTitle:"The call could not be completed",callTimeoutBotDetails:"The service that you are trying to reach is unavailable. Please try again later.",dtmfDialerButtonLabel:"Dialpad",dtmfDialerButtonTooltipOn:"Show dialpad",dtmfDialerButtonTooltipOff:"Hide dialpad",dtmfDialerMoreButtonLabelOn:"Show dialpad",dtmfDialerMoreButtonLabelOff:"Hide dialpad",spokenLanguageStrings:{"ar-ae":"Arabic - U.A.E.","ar-sa":"Arabic - Saudi Arabia","da-dk":"Danish","de-de":"German - Germany","en-au":"English - Australia","en-ca":"English - Canada","en-gb":"English - United Kingdom","en-in":"English - India","en-nz":"English - New Zealand","en-us":"English - United States","es-es":"Spanish - Spain (Modern Sort)","es-mx":"Spanish - Mexico","fi-fi":"Finnish","fr-ca":"French - Canada","fr-fr":"French - France","hi-in":"Hindi","it-it":"Italian - Italy","ja-jp":"Japanese","ko-kr":"Korean","nb-no":"Norwegian (Bokmål)","nl-be":"Dutch - Belgium","nl-nl":"Dutch - Netherlands","pl-pl":"Polish","pt-br":"Portuguese - Brazil","ru-ru":"Russian","sv-se":"Swedish","zh-cn":"Chinese - People's Republic of China","zh-hk":"Chinese - Hong Kong SAR","cs-cz":"Czech","pt-pt":"Portuguese - Portugal","tr-tr":"Turkish","vi-vn":"Vietnamese","th-th":"Thai","he-il":"Hebrew","cy-gb":"Welsh","uk-ua":"Ukrainian","el-gr":"Greek","hu-hu":"Hungarian","ro-ro":"Romanian","sk-sk":"Slovak","zh-tw":"Chinese - Taiwan"},captionLanguageStrings:{ar:"Arabic",da:"Danish",de:"German",en:"English",es:"Spanish",fi:"Finnish","fr-ca":"French - Canada",fr:"French - France",hi:"Hindi",it:"Italian",ja:"Japanese",ko:"Korean",nb:"Norwegian (Bokmål)",nl:"Dutch",pl:"Polish",pt:"Portuguese - Brazil",ru:"Russian",sv:"Swedish","zh-Hans":"Chinese (Simplified)","zh-Hant":"Chinese (Traditional)",cs:"Czech","pt-pt":"Portuguese - Portugal",tr:"Turkish",vi:"Vietnamese",th:"Thai",he:"Hebrew",cy:"Welsh",uk:"Ukrainian",el:"Greek",hu:"Hungarian",ro:"Romanian",sk:"Slovak"},captionsBannerSpinnerText:"Starting captions...",transferPageTransferorText:"Transferring...",transferPageTransferTargetText:"Connecting...",transferPageUnknownTransferorDisplayName:"Unknown",transferPageUnknownTransferTargetDisplayName:"Unknown",transferPageNoticeString:"You are being transferred",participantCouldNotBeReachedTitle:"Target participant is currently not available",participantCouldNotBeReachedMoreDetails:"Please contact participant when they are available",permissionToReachTargetParticipantNotAllowedTitle:"Permission to reach target participant is not allowed",permissionToReachTargetParticipantNotAllowedMoreDetails:"Please check that the target participant is in the same tenant",unableToResolveTenantTitle:"Unable to resolve tenant id for the target participant",unableToResolveTenantMoreDetails:"Please check the participant id is entered correctly",participantIdIsMalformedTitle:"Participant id is not in the correct format",participantIdIsMalformedMoreDetails:"Please check that the participant id is in the correct format",moreButtonGalleryControlLabel:"View",moreButtonGalleryPositionToggleLabel:"Move gallery to top",moreButtonGallerySpeakerLayoutLabel:"Speaker",moreButtonGalleryFloatingLocalLayoutLabel:"Dynamic",moreButtonGalleryDefaultLayoutLabel:"Gallery view",moreButtonGalleryFocusedContentLayoutLabel:"Focus on content",moreButtonLargeGalleryDefaultLayoutLabel:"Large Gallery",capabilityChangedNotification:{turnVideoOn:{lostDueToMeetingOption:"Your camera has been disabled. You can no longer share video.",grantedDueToMeetingOption:"Your camera has been enabled. Turn it on if you'd like to share video."},unmuteMic:{lostDueToMeetingOption:"Your mic has been disabled. You can no longer unmute.",grantedDueToMeetingOption:"Your mic has been enabled. Unmute if you'd like to speak."},shareScreen:{lostDueToRoleChangeToAttendee:"Your role has been changed. Some actions, like sharing content, won't be available to you.",grantedDueToRoleChangeToPresenter:"You're a presenter. You can share content and facilitate the meeting."}},surveyTitle:"Help us improve",starSurveyHelperText:"How was the quality of the call?",starSurveyOneStarText:"The quality was bad.",starSurveyTwoStarText:"The quality was poor.",starSurveyThreeStarText:"The quality was good.",starSurveyFourStarText:"The quality was great.",starSurveyFiveStarText:"The quality was excellent.",surveyConfirmButtonLabel:"Send Feedback",starRatingAriaLabel:"Select {0} of {1} stars",surveySkipButtonLabel:"Skip",tagsSurveyQuestion:"What could have been better?",tagsSurveyTextFieldDefaultText:"Other, please specify",tagsSurveyHelperText:"Check any issues you experienced",surveyTextboxDefaultText:"Other, please specify",endOfSurveyText:"Thank you for your feedback!",surveyIssues:{overallRating:{callCannotJoin:"I could not join call",callCannotInvite:"I could not invite others into the call",hadToRejoin:"I had to rejoin the call",callEndedUnexpectedly:"Call ended for me unexpectedly",otherIssues:"I was having other issues with the call"},audioRating:{noLocalAudio:"The other side could not hear any sound",noRemoteAudio:"I could not hear any sound",echo:"I heard echos on the call",audioNoise:"I heard noise on the call",lowVolume:"Volume was low",audioStoppedUnexpectedly:"Audio stopped unexpectedly",distortedSpeech:"Audio was distorted",audioInterruption:"Audio was interrupted",otherIssues:"I was having other audio issues in this call"},videoRating:{noVideoReceived:"I could not see any video",noVideoSent:"Others could not see me",lowQuality:"Video quality was low",freezes:"Video frozen",stoppedUnexpectedly:"Video stopped unexpectedly",darkVideoReceived:"I can only see dark screens when others turn on their camera",audioVideoOutOfSync:"Audio and Video was out of sync",otherIssues:"I was having other video issues in this call"},screenshareRating:{noContentLocal:"Other people could not see my screenshare",noContentRemote:"I could not see other people's screenshare",cannotPresent:"I could not present my screen",lowQuality:"Screen share quality was low",freezes:"Screen share frozen",stoppedUnexpectedly:"Screen share stopped unexpectedly",largeDelay:"Screen share has a large delay",otherIssues:"I was having other screen share issues in this call"}},SurveyIssuesHeadingStrings:{overallRating:"Overall",audioRating:"Audio",videoRating:"Video",screenshareRating:"Presenting"},spotlightPrompt:{startSpotlightHeading:"Spotlight for everyone?",startSpotlightText:"You'll highlight this video for everyone in the meeting.",startSpotlightOnSelfText:"You'll highlight your video for everyone in the meeting.",startSpotlightConfirmButtonLabel:"Spotlight for everyone",startSpotlightCancelButtonLabel:"Cancel",stopSpotlightHeading:"Stop spotlighting this video?",stopSpotlightOnSelfHeading:"Exit spotlight?",stopAllSpotlightHeading:"Stop spotlighting all videos?",stopSpotlightText:"This video will no longer be highlighted for everyone in the meeting.",stopSpotlightOnSelfText:"Your video will no longer be highlighted for everyone in the meeting.",stopAllSpotlightText:"The videos will no longer be highlighted for everyone in the meeting.",stopSpotlightConfirmButtonLabel:"Stop spotlighting",stopSpotlightOnSelfConfirmButtonLabel:"Exit spotlight",stopSpotlightCancelButtonLabel:"Cancel"},exitSpotlightButtonLabel:"Exit spotlight",exitSpotlightButtonTooltip:"Exit spotlight"};var chat$k={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$k={chatButtonLabel:"Chat",chatButtonNewMessageNotificationLabel:"New Message",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipClose:"Hide chat",chatButtonTooltipOpen:"Show chat",chatPaneTitle:"Chat",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",dismissSidePaneButtonLabel:"Close",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",moreDrawerCaptionsMenuTitle:"Live captions",moreDrawerSpokenLanguageMenuTitle:"Spoken language",moreDrawerCaptionLanguageMenuTitle:"Caption language",moreDrawerGalleryOptionsMenuTitle:"Gallery options",peopleButtonLabel:"People",selectedPeopleButtonLabel:"People Button Selected",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",peoplePaneTitle:"People",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",openDialpadButtonLabel:"Dial phone number",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number"};var en_US = {call:call$k,chat:chat$k,callWithChat:callWithChat$k};
|
25191
|
+
var call$k={cameraLabel:"Camera",noCamerasLabel:"No cameras found",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",chatButtonLabel:"Chat",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",defaultPlaceHolder:"Select an option",dismissSidePaneButtonLabel:"Close",videoEffectsPaneTitle:"Effects",videoEffectsPaneBackgroundSelectionTitle:"Background",configurationPageVideoEffectsButtonLabel:"Effects",unableToStartVideoEffect:"Unable to apply video effect.",blurBackgroundEffectButtonLabel:"Blur",blurBackgroundTooltip:"Blur Background",removeBackgroundEffectButtonLabel:"None",removeBackgroundTooltip:"Remove Background",cameraOffBackgroundEffectWarningText:"Your camera is off. Turn on camera to see video effect.",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leavingCallTitle:"Leaving...",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby.",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",notInvitedToRoomDetails:"You are not able to join this room because you do not have an invite.",notInvitedToRoomTitle:"Not invited to room",peopleButtonLabel:"People",selectedPeopleButtonLabel:"People Button Selected",peoplePaneTitle:"People",peoplePaneMoreButtonAriaLabel:"More",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call {numberOfPeople}",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",removeMenuLabel:"Remove",startSpotlightMenuLabel:"Spotlight for everyone",addSpotlightMenuLabel:"Add spotlight",stopSpotlightMenuLabel:"Stop spotlighting",stopSpotlightOnSelfMenuLabel:"Exit spotlight",spotlightLimitReachedMenuTitle:"Spotlight limit reached",stopAllSpotlightMenuLabel:"Stop all spotlights",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",roomNotFoundDetails:"The room ID provided could not be found.",roomNotFoundTitle:"Room not found",roomNotValidDetails:"This room is not valid at this current time.",roomNotValidTitle:"Room not valid",inviteToRoomRemovedDetails:"Your invite to join this room was removed.",inviteToRoomRemovedTitle:"Invite to room removed",soundLabel:"Sound",noMicrophonesLabel:"No microphones found",noSpeakersLabel:"No speakers found",startCallButtonLabel:"Start call",openDialpadButtonLabel:"Dial phone number",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",moreButtonCallingLabel:"More",resumeCallButtonLabel:"Resume",resumingCallButtonLabel:"Resuming...",resumeCallButtonAriaLabel:"Resume call",resumingCallButtonAriaLabel:"Resume call",holdScreenLabel:"You're on hold",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number",outboundCallingNoticeString:"Calling...",participantJoinedNoticeString:"{displayName} joined",twoParticipantJoinedNoticeString:"{displayName1} and {displayName2} have joined",threeParticipantJoinedNoticeString:"{displayName1}, {displayName2} and {displayName3} have joined",participantLeftNoticeString:"{displayName} left",twoParticipantLeftNoticeString:"{displayName1} and {displayName2} have left",threeParticipantLeftNoticeString:"{displayName1}, {displayName2} and {displayName3} have left",unnamedParticipantString:"unnamed participant",manyUnnamedParticipantsJoined:"unnamed participant and {numOfParticipants} other participants joined",manyUnnamedParticipantsLeft:"unnamed participant and {numOfParticipants} other participants left",manyParticipantsJoined:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants joined",manyParticipantsLeft:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants left",liveCaptionsLabel:"Live captions",captionsSettingsLabel:"Caption settings",startCaptionsButtonOnLabel:"Turn on captions",startCaptionsButtonOffLabel:"Turn off captions",startCaptionsButtonTooltipOnContent:"Turn off captions",startCaptionsButtonTooltipOffContent:"Turn on captions",captionsSettingsModalTitle:"Captions Settings",captionsSettingsSpokenLanguageDropdownLabel:"Spoken language",captionsSettingsCaptionLanguageDropdownLabel:"Captions language",captionsSettingsSpokenLanguageDropdownInfoText:"Language that everyone on this call is speaking.",captionsSettingsCaptionLanguageDropdownInfoText:"Captions will appear in this langugage.",captionsSettingsConfirmButtonLabel:"Confirm",captionsSettingsCancelButtonLabel:"Cancel",captionsSettingsModalAriaLabel:"Captions Setting Modal",captionsSettingsCloseModalButtonAriaLabel:"Close Captions Setting",captionsBannerMoreButtonCallingLabel:"More",captionsBannerMoreButtonTooltip:"More options",dismissModalAriaLabel:"Local and remote picture and picture, press enter to return to call",callRejectedTitle:"The call could not be completed",callRejectedMoreDetails:"The person you are trying to reach is unavailable. Please try again later.",callTimeoutTitle:"The call could not be completed",callTimeoutDetails:"The person you are trying to reach is unavailable. Please try again later.",callTimeoutBotTitle:"The call could not be completed",callTimeoutBotDetails:"The service that you are trying to reach is unavailable. Please try again later.",dtmfDialerButtonLabel:"Dialpad",dtmfDialerButtonTooltipOn:"Show dialpad",dtmfDialerButtonTooltipOff:"Hide dialpad",dtmfDialerMoreButtonLabelOn:"Show dialpad",dtmfDialerMoreButtonLabelOff:"Hide dialpad",spokenLanguageStrings:{"ar-ae":"Arabic - U.A.E.","ar-sa":"Arabic - Saudi Arabia","da-dk":"Danish","de-de":"German - Germany","en-au":"English - Australia","en-ca":"English - Canada","en-gb":"English - United Kingdom","en-in":"English - India","en-nz":"English - New Zealand","en-us":"English - United States","es-es":"Spanish - Spain (Modern Sort)","es-mx":"Spanish - Mexico","fi-fi":"Finnish","fr-ca":"French - Canada","fr-fr":"French - France","hi-in":"Hindi","it-it":"Italian - Italy","ja-jp":"Japanese","ko-kr":"Korean","nb-no":"Norwegian (Bokmål)","nl-be":"Dutch - Belgium","nl-nl":"Dutch - Netherlands","pl-pl":"Polish","pt-br":"Portuguese - Brazil","ru-ru":"Russian","sv-se":"Swedish","zh-cn":"Chinese - People's Republic of China","zh-hk":"Chinese - Hong Kong SAR","cs-cz":"Czech","pt-pt":"Portuguese - Portugal","tr-tr":"Turkish","vi-vn":"Vietnamese","th-th":"Thai","he-il":"Hebrew","cy-gb":"Welsh","uk-ua":"Ukrainian","el-gr":"Greek","hu-hu":"Hungarian","ro-ro":"Romanian","sk-sk":"Slovak","zh-tw":"Chinese - Taiwan"},captionLanguageStrings:{ar:"Arabic",da:"Danish",de:"German",en:"English",es:"Spanish",fi:"Finnish","fr-ca":"French - Canada",fr:"French - France",hi:"Hindi",it:"Italian",ja:"Japanese",ko:"Korean",nb:"Norwegian (Bokmål)",nl:"Dutch",pl:"Polish",pt:"Portuguese - Brazil",ru:"Russian",sv:"Swedish","zh-Hans":"Chinese (Simplified)","zh-Hant":"Chinese (Traditional)",cs:"Czech","pt-pt":"Portuguese - Portugal",tr:"Turkish",vi:"Vietnamese",th:"Thai",he:"Hebrew",cy:"Welsh",uk:"Ukrainian",el:"Greek",hu:"Hungarian",ro:"Romanian",sk:"Slovak"},captionsBannerSpinnerText:"Starting captions...",transferPageTransferorText:"Transferring...",transferPageTransferTargetText:"Connecting...",transferPageUnknownTransferorDisplayName:"Unknown",transferPageUnknownTransferTargetDisplayName:"Unknown",transferPageNoticeString:"You are being transferred",participantCouldNotBeReachedTitle:"Target participant is currently not available",participantCouldNotBeReachedMoreDetails:"Please contact participant when they are available",permissionToReachTargetParticipantNotAllowedTitle:"Permission to reach target participant is not allowed",permissionToReachTargetParticipantNotAllowedMoreDetails:"Please check that the target participant is in the same tenant",unableToResolveTenantTitle:"Unable to resolve tenant id for the target participant",unableToResolveTenantMoreDetails:"Please check the participant id is entered correctly",participantIdIsMalformedTitle:"Participant id is not in the correct format",participantIdIsMalformedMoreDetails:"Please check that the participant id is in the correct format",moreButtonGalleryControlLabel:"View",moreButtonGalleryPositionToggleLabel:"Move gallery to top",moreButtonGallerySpeakerLayoutLabel:"Speaker",moreButtonGalleryFloatingLocalLayoutLabel:"Dynamic",moreButtonGalleryDefaultLayoutLabel:"Gallery view",moreButtonGalleryFocusedContentLayoutLabel:"Focus on content",moreButtonLargeGalleryDefaultLayoutLabel:"Large Gallery",capabilityChangedNotification:{turnVideoOn:{lostDueToMeetingOption:"Your camera has been disabled. You can no longer share video.",grantedDueToMeetingOption:"Your camera has been enabled. Turn it on if you'd like to share video."},unmuteMic:{lostDueToMeetingOption:"Your mic has been disabled. You can no longer unmute.",grantedDueToMeetingOption:"Your mic has been enabled. Unmute if you'd like to speak."},shareScreen:{lostDueToRoleChangeToAttendee:"Your role has been changed. Some actions, like sharing content, won't be available to you.",grantedDueToRoleChangeToPresenter:"You're a presenter. You can share content and facilitate the meeting."}},surveyTitle:"Help us improve",starSurveyHelperText:"How was the quality of the call?",starSurveyOneStarText:"The quality was bad.",starSurveyTwoStarText:"The quality was poor.",starSurveyThreeStarText:"The quality was good.",starSurveyFourStarText:"The quality was great.",starSurveyFiveStarText:"The quality was excellent.",surveyConfirmButtonLabel:"Send Feedback",starRatingAriaLabel:"Select {0} of {1} stars",surveySkipButtonLabel:"Skip",tagsSurveyQuestion:"What could have been better?",tagsSurveyTextFieldDefaultText:"Other, please specify",tagsSurveyHelperText:"Check any issues you experienced",surveyTextboxDefaultText:"Other, please specify",endOfSurveyText:"Thank you for your feedback!",surveyIssues:{overallRating:{callCannotJoin:"I could not join call",callCannotInvite:"I could not invite others into the call",hadToRejoin:"I had to rejoin the call",callEndedUnexpectedly:"Call ended for me unexpectedly",otherIssues:"I was having other issues with the call"},audioRating:{noLocalAudio:"The other side could not hear any sound",noRemoteAudio:"I could not hear any sound",echo:"I heard echos on the call",audioNoise:"I heard noise on the call",lowVolume:"Volume was low",audioStoppedUnexpectedly:"Audio stopped unexpectedly",distortedSpeech:"Audio was distorted",audioInterruption:"Audio was interrupted",otherIssues:"I was having other audio issues in this call"},videoRating:{noVideoReceived:"I could not see any video",noVideoSent:"Others could not see me",lowQuality:"Video quality was low",freezes:"Video frozen",stoppedUnexpectedly:"Video stopped unexpectedly",darkVideoReceived:"I can only see dark screens when others turn on their camera",audioVideoOutOfSync:"Audio and Video was out of sync",otherIssues:"I was having other video issues in this call"},screenshareRating:{noContentLocal:"Other people could not see my screenshare",noContentRemote:"I could not see other people's screenshare",cannotPresent:"I could not present my screen",lowQuality:"Screen share quality was low",freezes:"Screen share frozen",stoppedUnexpectedly:"Screen share stopped unexpectedly",largeDelay:"Screen share has a large delay",otherIssues:"I was having other screen share issues in this call"}},SurveyIssuesHeadingStrings:{overallRating:"Overall",audioRating:"Audio",videoRating:"Video",screenshareRating:"Presenting"},spotlightPrompt:{startSpotlightHeading:"Spotlight for everyone?",startSpotlightText:"You'll highlight this video for everyone in the meeting.",startSpotlightOnSelfText:"You'll highlight your video for everyone in the meeting.",startSpotlightConfirmButtonLabel:"Spotlight for everyone",startSpotlightCancelButtonLabel:"Cancel",stopSpotlightHeading:"Stop spotlighting this video?",stopSpotlightOnSelfHeading:"Exit spotlight?",stopAllSpotlightHeading:"Stop spotlighting all videos?",stopSpotlightText:"This video will no longer be highlighted for everyone in the meeting.",stopSpotlightOnSelfText:"Your video will no longer be highlighted for everyone in the meeting.",stopAllSpotlightText:"The videos will no longer be highlighted for everyone in the meeting.",stopSpotlightConfirmButtonLabel:"Stop spotlighting",stopSpotlightOnSelfConfirmButtonLabel:"Exit spotlight",stopSpotlightCancelButtonLabel:"Cancel"},exitSpotlightButtonLabel:"Exit spotlight",exitSpotlightButtonTooltip:"Exit spotlight",invalidMeetingIdentifier:"Invalid meeting ID or passcode"};var chat$k={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$k={chatButtonLabel:"Chat",chatButtonNewMessageNotificationLabel:"New Message",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipClose:"Hide chat",chatButtonTooltipOpen:"Show chat",chatPaneTitle:"Chat",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",dismissSidePaneButtonLabel:"Close",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",moreDrawerCaptionsMenuTitle:"Live captions",moreDrawerSpokenLanguageMenuTitle:"Spoken language",moreDrawerCaptionLanguageMenuTitle:"Caption language",moreDrawerGalleryOptionsMenuTitle:"Gallery options",peopleButtonLabel:"People",selectedPeopleButtonLabel:"People Button Selected",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",peoplePaneTitle:"People",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",openDialpadButtonLabel:"Dial phone number",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number"};var en_US = {call:call$k,chat:chat$k,callWithChat:callWithChat$k};
|
24743
25192
|
|
24744
25193
|
// Copyright (c) Microsoft Corporation.
|
24745
25194
|
// Licensed under the MIT License.
|
@@ -24818,7 +25267,7 @@ const FileUploadButton = (props) => {
|
|
24818
25267
|
} })));
|
24819
25268
|
};
|
24820
25269
|
const SendBoxAttachFileIconTrampoline = () => {
|
24821
|
-
// @conditional-compile-remove(
|
25270
|
+
// @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload)
|
24822
25271
|
return React.createElement(ChatCompositeIcon, { iconName: "SendBoxAttachFile" });
|
24823
25272
|
};
|
24824
25273
|
/**
|
@@ -24831,19 +25280,19 @@ const FileUploadButtonWrapper = (
|
|
24831
25280
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
24832
25281
|
props) => {
|
24833
25282
|
return (React.createElement(React.Fragment, null,
|
24834
|
-
/* @conditional-compile-remove(
|
25283
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
24835
25284
|
React.createElement(FileUploadButton, Object.assign({}, props))));
|
24836
25285
|
};
|
24837
25286
|
const uploadFileButtonStringTrampoline = () => {
|
24838
|
-
//@conditional-compile-remove(
|
25287
|
+
//@conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload)
|
24839
25288
|
//eslint-disable-next-line react-hooks/rules-of-hooks
|
24840
25289
|
return useLocale().strings.chat.uploadFile;
|
24841
25290
|
};
|
24842
25291
|
|
24843
25292
|
// Copyright (c) Microsoft Corporation.
|
24844
25293
|
// Licensed under the MIT License.
|
24845
|
-
/* @conditional-compile-remove(
|
24846
|
-
/* @conditional-compile-remove(
|
25294
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
25295
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
24847
25296
|
/**
|
24848
25297
|
* @internal
|
24849
25298
|
*/
|
@@ -24883,7 +25332,7 @@ class FileUploadContext {
|
|
24883
25332
|
}));
|
24884
25333
|
}
|
24885
25334
|
}
|
24886
|
-
/* @conditional-compile-remove(
|
25335
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
24887
25336
|
/**
|
24888
25337
|
* @internal
|
24889
25338
|
*/
|
@@ -24961,7 +25410,7 @@ class AzureCommunicationFileUploadAdapter {
|
|
24961
25410
|
fileUpload === null || fileUpload === void 0 ? void 0 : fileUpload.off('uploadFail', this.updateFileUploadErrorMessage.bind(this));
|
24962
25411
|
}
|
24963
25412
|
}
|
24964
|
-
/* @conditional-compile-remove(
|
25413
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
24965
25414
|
/**
|
24966
25415
|
* @param fileUploadUiState {@link FileUploadsUiState}
|
24967
25416
|
* @private
|
@@ -24981,7 +25430,7 @@ const convertFileUploadsUiStateToMessageMetadata = (fileUploads) => {
|
|
24981
25430
|
}
|
24982
25431
|
return undefined;
|
24983
25432
|
};
|
24984
|
-
/* @conditional-compile-remove(
|
25433
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
24985
25434
|
/**
|
24986
25435
|
* @private
|
24987
25436
|
*/
|
@@ -25061,7 +25510,7 @@ class ChatContext {
|
|
25061
25510
|
thread,
|
25062
25511
|
latestErrors: clientState.latestErrors
|
25063
25512
|
};
|
25064
|
-
/* @conditional-compile-remove(
|
25513
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
25065
25514
|
updatedState = Object.assign(Object.assign({}, updatedState), { fileUploads: this.state.fileUploads });
|
25066
25515
|
this.setState(updatedState);
|
25067
25516
|
}
|
@@ -25076,7 +25525,7 @@ class AzureCommunicationChatAdapter {
|
|
25076
25525
|
this.chatClient = chatClient;
|
25077
25526
|
this.chatThreadClient = chatThreadClient;
|
25078
25527
|
this.context = new ChatContext(chatClient.getState(), chatThreadClient.threadId);
|
25079
|
-
/* @conditional-compile-remove(
|
25528
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
25080
25529
|
this.fileUploadAdapter = new AzureCommunicationFileUploadAdapter(this.context);
|
25081
25530
|
const onStateChange = (clientState) => {
|
25082
25531
|
// unsubscribe when the instance gets disposed
|
@@ -25106,19 +25555,19 @@ class AzureCommunicationChatAdapter {
|
|
25106
25555
|
this.loadPreviousChatMessages = this.loadPreviousChatMessages.bind(this);
|
25107
25556
|
this.on = this.on.bind(this);
|
25108
25557
|
this.off = this.off.bind(this);
|
25109
|
-
/* @conditional-compile-remove(
|
25558
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
25110
25559
|
this.registerActiveFileUploads = this.registerActiveFileUploads.bind(this);
|
25111
|
-
/* @conditional-compile-remove(
|
25560
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
25112
25561
|
this.registerCompletedFileUploads = this.registerCompletedFileUploads.bind(this);
|
25113
|
-
/* @conditional-compile-remove(
|
25562
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
25114
25563
|
this.clearFileUploads = this.clearFileUploads.bind(this);
|
25115
|
-
/* @conditional-compile-remove(
|
25564
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
25116
25565
|
this.cancelFileUpload = this.cancelFileUpload.bind(this);
|
25117
|
-
/* @conditional-compile-remove(
|
25566
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
25118
25567
|
this.updateFileUploadProgress = this.updateFileUploadProgress.bind(this);
|
25119
|
-
/* @conditional-compile-remove(
|
25568
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
25120
25569
|
this.updateFileUploadErrorMessage = this.updateFileUploadErrorMessage.bind(this);
|
25121
|
-
/* @conditional-compile-remove(
|
25570
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
25122
25571
|
this.updateFileUploadMetadata = this.updateFileUploadMetadata.bind(this);
|
25123
25572
|
this.downloadResourceToCache = this.downloadResourceToCache.bind(this);
|
25124
25573
|
this.removeResourceFromCache = this.removeResourceFromCache.bind(this);
|
@@ -25168,9 +25617,9 @@ class AzureCommunicationChatAdapter {
|
|
25168
25617
|
sendMessage(content_1) {
|
25169
25618
|
return __awaiter$n(this, arguments, void 0, function* (content, options = {}) {
|
25170
25619
|
yield this.asyncTeeErrorToEventEmitter(() => __awaiter$n(this, void 0, void 0, function* () {
|
25171
|
-
/* @conditional-compile-remove(
|
25620
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
25172
25621
|
options.metadata = Object.assign(Object.assign({}, options.metadata), convertFileUploadsUiStateToMessageMetadata(this.context.getState().fileUploads));
|
25173
|
-
/* @conditional-compile-remove(
|
25622
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
25174
25623
|
/**
|
25175
25624
|
* All the current uploads need to be clear from the state before a message has been sent.
|
25176
25625
|
* This ensures the following behavior:
|
@@ -25221,9 +25670,9 @@ class AzureCommunicationChatAdapter {
|
|
25221
25670
|
updateMessage(messageId, content, metadata, options) {
|
25222
25671
|
return __awaiter$n(this, void 0, void 0, function* () {
|
25223
25672
|
return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$n(this, void 0, void 0, function* () {
|
25224
|
-
/* @conditional-compile-remove(
|
25673
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
25225
25674
|
const updatedOptions = { attachmentMetadata: options === null || options === void 0 ? void 0 : options.attachmentMetadata, metadata: metadata };
|
25226
|
-
/* @conditional-compile-remove(
|
25675
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
25227
25676
|
return yield this.handlers.onUpdateMessage(messageId, content, updatedOptions);
|
25228
25677
|
}));
|
25229
25678
|
});
|
@@ -25235,31 +25684,31 @@ class AzureCommunicationChatAdapter {
|
|
25235
25684
|
}));
|
25236
25685
|
});
|
25237
25686
|
}
|
25238
|
-
/* @conditional-compile-remove(
|
25687
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
25239
25688
|
registerActiveFileUploads(files) {
|
25240
25689
|
return this.fileUploadAdapter.registerActiveFileUploads(files);
|
25241
25690
|
}
|
25242
|
-
/* @conditional-compile-remove(
|
25691
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
25243
25692
|
registerCompletedFileUploads(metadata) {
|
25244
25693
|
return this.fileUploadAdapter.registerCompletedFileUploads(metadata);
|
25245
25694
|
}
|
25246
|
-
/* @conditional-compile-remove(
|
25695
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
25247
25696
|
clearFileUploads() {
|
25248
25697
|
this.fileUploadAdapter.clearFileUploads();
|
25249
25698
|
}
|
25250
|
-
/* @conditional-compile-remove(
|
25699
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
25251
25700
|
cancelFileUpload(id) {
|
25252
25701
|
this.fileUploadAdapter.cancelFileUpload(id);
|
25253
25702
|
}
|
25254
|
-
/* @conditional-compile-remove(
|
25703
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
25255
25704
|
updateFileUploadProgress(id, progress) {
|
25256
25705
|
this.fileUploadAdapter.updateFileUploadProgress(id, progress);
|
25257
25706
|
}
|
25258
|
-
/* @conditional-compile-remove(
|
25707
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
25259
25708
|
updateFileUploadErrorMessage(id, errorMessage) {
|
25260
25709
|
this.fileUploadAdapter.updateFileUploadErrorMessage(id, errorMessage);
|
25261
25710
|
}
|
25262
|
-
/* @conditional-compile-remove(
|
25711
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
25263
25712
|
updateFileUploadMetadata(id, metadata) {
|
25264
25713
|
this.fileUploadAdapter.updateFileUploadMetadata(id, metadata);
|
25265
25714
|
}
|
@@ -25416,6 +25865,28 @@ const _createAzureCommunicationChatAdapterInner = (endpoint_1, userId_1, display
|
|
25416
25865
|
const adapter = yield createAzureCommunicationChatAdapterFromClient(chatClient, chatThreadClient);
|
25417
25866
|
return adapter;
|
25418
25867
|
});
|
25868
|
+
/**
|
25869
|
+
* This inner function to create ChatAdapterPromise in case when threadID is not avaialble.
|
25870
|
+
* ThreadId is a promise to allow for lazy initialization of the adapter.
|
25871
|
+
* @internal
|
25872
|
+
*/
|
25873
|
+
const _createLazyAzureCommunicationChatAdapterInner = (endpoint_2, userId_2, displayName_2, credential_2, threadId_2, ...args_2) => __awaiter$n(void 0, [endpoint_2, userId_2, displayName_2, credential_2, threadId_2, ...args_2], void 0, function* (endpoint, userId, displayName, credential, threadId, telemetryImplementationHint = 'Chat') {
|
25874
|
+
if (!_isValidIdentifier(userId)) {
|
25875
|
+
throw new Error('Provided userId is invalid. Please provide valid identifier object.');
|
25876
|
+
}
|
25877
|
+
const chatClient = _createStatefulChatClientInner({
|
25878
|
+
userId,
|
25879
|
+
displayName,
|
25880
|
+
endpoint,
|
25881
|
+
credential
|
25882
|
+
}, undefined, telemetryImplementationHint);
|
25883
|
+
return threadId.then((threadId) => __awaiter$n(void 0, void 0, void 0, function* () {
|
25884
|
+
const chatThreadClient = yield chatClient.getChatThreadClient(threadId);
|
25885
|
+
yield chatClient.startRealtimeNotifications();
|
25886
|
+
const adapter = yield createAzureCommunicationChatAdapterFromClient(chatClient, chatThreadClient);
|
25887
|
+
return adapter;
|
25888
|
+
}));
|
25889
|
+
});
|
25419
25890
|
/**
|
25420
25891
|
* A custom React hook to simplify the creation of {@link ChatAdapter}.
|
25421
25892
|
*
|
@@ -25922,13 +26393,13 @@ const createCompositeHandlers$1 = memoizeOne((adapter) => ({
|
|
25922
26393
|
onRemoveParticipant: adapter.removeParticipant,
|
25923
26394
|
updateThreadTopicName: adapter.setTopic,
|
25924
26395
|
onUpdateMessage: (messageId, content,
|
25925
|
-
/* @conditional-compile-remove(
|
26396
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
25926
26397
|
options) => {
|
25927
26398
|
const metadata = options === null || options === void 0 ? void 0 : options.metadata;
|
25928
|
-
/* @conditional-compile-remove(
|
26399
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
25929
26400
|
const updatedOptions = (options === null || options === void 0 ? void 0 : options.attachmentMetadata) ? Object.assign({}, options.attachmentMetadata) : {};
|
25930
26401
|
return adapter.updateMessage(messageId, content, metadata,
|
25931
|
-
/* @conditional-compile-remove(
|
26402
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ updatedOptions);
|
25932
26403
|
},
|
25933
26404
|
onDeleteMessage: adapter.deleteMessage
|
25934
26405
|
}));
|
@@ -26198,7 +26669,7 @@ const FileDownloadErrorBar = (props) => {
|
|
26198
26669
|
* @private
|
26199
26670
|
*/
|
26200
26671
|
const getFileUploads = (state) => {
|
26201
|
-
/* @conditional-compile-remove(
|
26672
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
26202
26673
|
return state === null || state === void 0 ? void 0 : state.fileUploads;
|
26203
26674
|
};
|
26204
26675
|
|
@@ -26225,30 +26696,30 @@ const useSelector$2 = (selector, selectorProps) => {
|
|
26225
26696
|
// Copyright (c) Microsoft Corporation.
|
26226
26697
|
// Licensed under the MIT License.
|
26227
26698
|
/* @conditional-compile-remove(rich-text-editor) */
|
26228
|
-
const RichTextSendBoxWrapper = React.lazy(() => Promise.resolve().then(function () { return require('./RichTextSendBoxWrapper-
|
26699
|
+
const RichTextSendBoxWrapper = React.lazy(() => Promise.resolve().then(function () { return require('./RichTextSendBoxWrapper-D3ER8Kz9.js'); }).then((module) => ({ default: module.RichTextSendBoxWrapper })));
|
26229
26700
|
/**
|
26230
26701
|
* @private
|
26231
26702
|
*/
|
26232
26703
|
const SendBox = (props) => {
|
26233
26704
|
const { options, styles,
|
26234
|
-
/* @conditional-compile-remove(
|
26705
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
26235
26706
|
adapter } = props;
|
26236
26707
|
const sendBoxProps = usePropsFor$2(SendBox$1);
|
26237
|
-
/* @conditional-compile-remove(
|
26708
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
26238
26709
|
const activeFileUploads = useSelector$2(fileUploadsSelector).files;
|
26239
26710
|
const sendBoxStyles = React.useMemo(() => {
|
26240
26711
|
return Object.assign({}, styles);
|
26241
26712
|
}, [styles]);
|
26242
26713
|
const simpleSendBox = React.useMemo(() => (React.createElement(SendBox$1, Object.assign({}, sendBoxProps, { autoFocus: options === null || options === void 0 ? void 0 : options.autoFocus, styles: sendBoxStyles,
|
26243
|
-
/* @conditional-compile-remove(
|
26714
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
26244
26715
|
activeFileUploads: activeFileUploads,
|
26245
|
-
/* @conditional-compile-remove(
|
26716
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
26246
26717
|
onCancelFileUpload: adapter.cancelFileUpload }))), [
|
26247
26718
|
sendBoxProps,
|
26248
26719
|
options,
|
26249
26720
|
sendBoxStyles,
|
26250
|
-
/* @conditional-compile-remove(
|
26251
|
-
/* @conditional-compile-remove(
|
26721
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ activeFileUploads,
|
26722
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ adapter
|
26252
26723
|
]);
|
26253
26724
|
// /* @conditional-compile-remove(rich-text-editor) */
|
26254
26725
|
if ((options === null || options === void 0 ? void 0 : options.richTextEditor) === true) {
|
@@ -26275,7 +26746,7 @@ var __awaiter$l = (window && window.__awaiter) || function (thisArg, _arguments,
|
|
26275
26746
|
const ChatScreen = (props) => {
|
26276
26747
|
const { onFetchAvatarPersonaData, onRenderMessage, onRenderTypingIndicator, options, styles, fileSharing, formFactor } = props;
|
26277
26748
|
const defaultNumberOfChatMessagesToReload = 5;
|
26278
|
-
/* @conditional-compile-remove(
|
26749
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
26279
26750
|
const [downloadErrorMessage, setDownloadErrorMessage] = React.useState('');
|
26280
26751
|
const [overlayImageItem, setOverlayImageItem] = React.useState();
|
26281
26752
|
const [isImageOverlayOpen, setIsImageOverlayOpen] = React.useState(false);
|
@@ -26338,12 +26809,12 @@ const ChatScreen = (props) => {
|
|
26338
26809
|
if (!files) {
|
26339
26810
|
return;
|
26340
26811
|
}
|
26341
|
-
/* @conditional-compile-remove(
|
26812
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
26342
26813
|
const fileUploads = adapter.registerActiveFileUploads(Array.from(files));
|
26343
|
-
/* @conditional-compile-remove(
|
26814
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
26344
26815
|
fileSharing === null || fileSharing === void 0 ? void 0 : fileSharing.uploadHandler(userId, fileUploads);
|
26345
26816
|
}, [adapter, fileSharing, userId]);
|
26346
|
-
/* @conditional-compile-remove(
|
26817
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
26347
26818
|
const onRenderFileDownloads = React.useCallback((userId, message) => (React.createElement(_AttachmentDownloadCards, { userId: userId, fileMetadata: message.files || [], downloadHandler: fileSharing === null || fileSharing === void 0 ? void 0 : fileSharing.downloadHandler, onDownloadErrorMessage: (errorMessage) => {
|
26348
26819
|
setDownloadErrorMessage(errorMessage);
|
26349
26820
|
} })), [fileSharing === null || fileSharing === void 0 ? void 0 : fileSharing.downloadHandler]);
|
@@ -26445,12 +26916,12 @@ const ChatScreen = (props) => {
|
|
26445
26916
|
React.createElement(react.Stack, { className: chatArea, tokens: participantListContainerPadding, horizontal: true, grow: true },
|
26446
26917
|
React.createElement(react.Stack, { className: chatWrapper, grow: true },
|
26447
26918
|
(options === null || options === void 0 ? void 0 : options.errorBar) !== false && React.createElement(ErrorBar, Object.assign({}, errorBarProps)),
|
26448
|
-
/* @conditional-compile-remove(
|
26919
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
26449
26920
|
React.createElement(FileDownloadErrorBar, { onDismissDownloadErrorMessage: React.useCallback(() => {
|
26450
26921
|
setDownloadErrorMessage('');
|
26451
26922
|
}, []), fileDownloadErrorMessage: downloadErrorMessage || '' }),
|
26452
26923
|
React.createElement(MessageThread, Object.assign({}, messageThreadProps, { onRenderAvatar: onRenderAvatarCallback, onRenderMessage: onRenderMessage,
|
26453
|
-
/* @conditional-compile-remove(
|
26924
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
26454
26925
|
onRenderFileDownloads: onRenderFileDownloads, inlineImageOptions: inlineImageOptions, numberOfChatMessagesToReload: defaultNumberOfChatMessagesToReload, styles: messageThreadStyles })),
|
26455
26926
|
React.createElement(react.Stack, { className: react.mergeStyles(sendboxContainerStyles) },
|
26456
26927
|
React.createElement("div", { className: react.mergeStyles(typingIndicatorContainerStyles) }, onRenderTypingIndicator ? (onRenderTypingIndicator(typingIndicatorProps.typingUsers)) : (React.createElement(TypingIndicator, Object.assign({}, typingIndicatorProps, { styles: typingIndicatorStyles })))),
|
@@ -26459,7 +26930,7 @@ const ChatScreen = (props) => {
|
|
26459
26930
|
React.createElement(AttachFileButton, null))),
|
26460
26931
|
React.createElement(react.Stack, { grow: true },
|
26461
26932
|
React.createElement(SendBox, { options: options, styles: styles === null || styles === void 0 ? void 0 : styles.sendBox,
|
26462
|
-
/* @conditional-compile-remove(
|
26933
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
26463
26934
|
adapter: adapter })),
|
26464
26935
|
formFactor !== 'mobile' && React.createElement(AttachFileButton, null)))),
|
26465
26936
|
/* @conditional-compile-remove(chat-composite-participant-pane) */
|
@@ -26486,17 +26957,17 @@ const ChatScreen = (props) => {
|
|
26486
26957
|
*/
|
26487
26958
|
const ChatComposite = (props) => {
|
26488
26959
|
const { adapter, options, onFetchAvatarPersonaData, onRenderTypingIndicator, onRenderMessage, onFetchParticipantMenuItems } = props;
|
26489
|
-
/* @conditional-compile-remove(
|
26960
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
26490
26961
|
const formFactor = props['formFactor'] || 'desktop';
|
26491
26962
|
return (React.createElement("div", { className: chatScreenContainerStyle },
|
26492
26963
|
React.createElement(BaseProvider, Object.assign({}, props),
|
26493
26964
|
React.createElement(ChatAdapterProvider, { adapter: adapter },
|
26494
26965
|
React.createElement(ChatScreen
|
26495
|
-
/* @conditional-compile-remove(
|
26966
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
26496
26967
|
, {
|
26497
|
-
/* @conditional-compile-remove(
|
26968
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
26498
26969
|
formFactor: formFactor, options: options, onFetchAvatarPersonaData: onFetchAvatarPersonaData, onRenderTypingIndicator: onRenderTypingIndicator, onRenderMessage: onRenderMessage, onFetchParticipantMenuItems: onFetchParticipantMenuItems,
|
26499
|
-
/* @conditional-compile-remove(
|
26970
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
26500
26971
|
fileSharing: options === null || options === void 0 ? void 0 : options.fileSharing })))));
|
26501
26972
|
};
|
26502
26973
|
|
@@ -26678,6 +27149,8 @@ const ACCESS_DENIED_TEAMS_MEETING_SUB_CODE = 5854;
|
|
26678
27149
|
const REMOTE_PSTN_USER_HUNG_UP = 560000;
|
26679
27150
|
const REMOVED_FROM_CALL_SUB_CODES = [5000, 5300, REMOTE_PSTN_USER_HUNG_UP];
|
26680
27151
|
const CALL_REJECTED_CODE$1 = 603;
|
27152
|
+
/* @conditional-compile-remove(meeting-id) */
|
27153
|
+
const INVALID_MEETING_IDENTIFIER = 5751;
|
26681
27154
|
/** @private */
|
26682
27155
|
const ROOM_NOT_FOUND_SUB_CODE = 5732;
|
26683
27156
|
/** @private */
|
@@ -26769,7 +27242,7 @@ const getCallEndReason = (call) => {
|
|
26769
27242
|
* @private
|
26770
27243
|
*/
|
26771
27244
|
const getEndedCallPageProps = (locale, endedCall) => {
|
26772
|
-
var _a, _b, _c, _d, _e;
|
27245
|
+
var _a, _b, _c, _d, _e, _f;
|
26773
27246
|
let title = locale.strings.call.leftCallTitle;
|
26774
27247
|
let moreDetails = locale.strings.call.leftCallMoreDetails;
|
26775
27248
|
let disableStartCallButton = false;
|
@@ -26865,6 +27338,16 @@ const getEndedCallPageProps = (locale, endedCall) => {
|
|
26865
27338
|
}
|
26866
27339
|
break;
|
26867
27340
|
}
|
27341
|
+
/* @conditional-compile-remove(meeting-id) */
|
27342
|
+
switch ((_f = endedCall === null || endedCall === void 0 ? void 0 : endedCall.callEndReason) === null || _f === void 0 ? void 0 : _f.subCode) {
|
27343
|
+
case INVALID_MEETING_IDENTIFIER:
|
27344
|
+
if (locale.strings.call.callRejectedTitle) {
|
27345
|
+
title = locale.strings.call.callRejectedTitle;
|
27346
|
+
moreDetails = locale.strings.call.invalidMeetingIdentifier;
|
27347
|
+
disableStartCallButton = true;
|
27348
|
+
}
|
27349
|
+
break;
|
27350
|
+
}
|
26868
27351
|
return { title, moreDetails, disableStartCallButton, iconName };
|
26869
27352
|
};
|
26870
27353
|
/**
|
@@ -32221,7 +32704,7 @@ const DtmfDialpadPageContent = (props) => {
|
|
32221
32704
|
React.createElement(react.Text, { style: { margin: 'auto' } }, calleeName && calleeName !== 'Unnamed participant' ? calleeName === null || calleeName === void 0 ? void 0 : calleeName.toString() : ''),
|
32222
32705
|
React.createElement(Dialpad, { onSendDtmfTone: (tone) => __awaiter$c(void 0, void 0, void 0, function* () {
|
32223
32706
|
yield adapter.sendDtmfTone(tone);
|
32224
|
-
}), longPressTrigger: props.mobileView ? 'touch' : 'mouseAndTouch', dialpadMode: 'dtmf' }))));
|
32707
|
+
}), longPressTrigger: props.mobileView ? 'touch' : 'mouseAndTouch', dialpadMode: 'dtmf', dtmfAudioContext: props.compositeAudioContext }))));
|
32225
32708
|
};
|
32226
32709
|
const DtmfDialerContentTimer = () => {
|
32227
32710
|
const [time, setTime] = React.useState(0);
|
@@ -32246,7 +32729,7 @@ const DtmfDialerContentTimer = () => {
|
|
32246
32729
|
*/
|
32247
32730
|
const DtmfDialpadPage = (props) => {
|
32248
32731
|
const adapter = useAdapter();
|
32249
|
-
return React.createElement(DtmfDialpadPageContent, { adapter: adapter, mobileView: props.mobileView });
|
32732
|
+
return React.createElement(DtmfDialpadPageContent, Object.assign({ adapter: adapter }, props, { mobileView: props.mobileView }));
|
32250
32733
|
};
|
32251
32734
|
|
32252
32735
|
// Copyright (c) Microsoft Corporation.
|
@@ -32292,7 +32775,7 @@ const buttonTextStyles = { label: { fontSize: '0.875rem' } };
|
|
32292
32775
|
*/
|
32293
32776
|
const CallPage = (props) => {
|
32294
32777
|
var _a;
|
32295
|
-
const { callInvitationURL, onFetchAvatarPersonaData, onFetchParticipantMenuItems, options, mobileView, galleryLayout = 'floatingLocalVideo', onUserSetGalleryLayoutChange, userSetOverflowGalleryPosition = 'Responsive', onSetUserSetOverflowGalleryPosition, onCloseChatPane, pinnedParticipants, setPinnedParticipants } = props;
|
32778
|
+
const { callInvitationURL, onFetchAvatarPersonaData, onFetchParticipantMenuItems, options, mobileView, galleryLayout = 'floatingLocalVideo', onUserSetGalleryLayoutChange, userSetOverflowGalleryPosition = 'Responsive', onSetUserSetOverflowGalleryPosition, onCloseChatPane, pinnedParticipants, setPinnedParticipants, compositeAudioContext } = props;
|
32296
32779
|
// To use useProps to get these states, we need to create another file wrapping Call,
|
32297
32780
|
// It seems unnecessary in this case, so we get the updated states using this approach.
|
32298
32781
|
const { callStatus } = useSelector$1(callStatusSelector);
|
@@ -32319,7 +32802,7 @@ const CallPage = (props) => {
|
|
32319
32802
|
if (dtmfDialerPresent) {
|
32320
32803
|
return (React.createElement(DtmfDialpadPage, { mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, options: props.options, updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, latestErrors: props.latestErrors, onDismissError: props.onDismissError,
|
32321
32804
|
/* @conditional-compile-remove(capabilities) */
|
32322
|
-
capabilitiesChangedNotificationBarProps: props.capabilitiesChangedNotificationBarProps, onSetDialpadPage: () => setDtmfDialerPresent(!dtmfDialerPresent), dtmfDialerPresent: dtmfDialerPresent }));
|
32805
|
+
capabilitiesChangedNotificationBarProps: props.capabilitiesChangedNotificationBarProps, onSetDialpadPage: () => setDtmfDialerPresent(!dtmfDialerPresent), dtmfDialerPresent: dtmfDialerPresent, compositeAudioContext: compositeAudioContext }));
|
32323
32806
|
}
|
32324
32807
|
else {
|
32325
32808
|
return (React.createElement(MediaGallery, Object.assign({ isMobile: mobileView }, mediaGalleryProps, mediaGalleryHandlers, { onFetchAvatarPersonaData: onFetchAvatarPersonaData, remoteVideoTileMenuOptions: options === null || options === void 0 ? void 0 : options.remoteVideoTileMenuOptions, drawerMenuHostId: drawerMenuHostId, localVideoTileOptions: options === null || options === void 0 ? void 0 : options.localVideoTile, userSetOverflowGalleryPosition: userSetOverflowGalleryPosition, userSetGalleryLayout: galleryLayout, pinnedParticipants: pinnedParticipants, setPinnedParticipants: setPinnedParticipants,
|
@@ -34648,6 +35131,7 @@ const MainScreen = (props) => {
|
|
34648
35131
|
adapter.off('callEnded', closeSidePane);
|
34649
35132
|
};
|
34650
35133
|
}, [adapter]);
|
35134
|
+
const compositeAudioContext = React.useRef(new AudioContext());
|
34651
35135
|
/* @conditional-compile-remove(capabilities) */
|
34652
35136
|
const capabilitiesChangedInfoAndRole = useSelector$1(capabilitiesChangedInfoAndRoleSelector);
|
34653
35137
|
/* @conditional-compile-remove(capabilities) */
|
@@ -34737,7 +35221,7 @@ const MainScreen = (props) => {
|
|
34737
35221
|
case 'call':
|
34738
35222
|
pageElement = (React.createElement(CallPage, { callInvitationURL: callInvitationUrl, onFetchAvatarPersonaData: onFetchAvatarPersonaData, onFetchParticipantMenuItems: onFetchParticipantMenuItems, mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, options: props.options, updateSidePaneRenderer: setSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, onCloseChatPane: props.onCloseChatPane, latestErrors: latestErrors, onDismissError: onDismissError, galleryLayout: userSetGalleryLayout, onUserSetGalleryLayoutChange: setUserSetGalleryLayout, onSetUserSetOverflowGalleryPosition: setUserSetOverflowGalleryPosition, userSetOverflowGalleryPosition: userSetOverflowGalleryPosition,
|
34739
35223
|
/* @conditional-compile-remove(capabilities) */
|
34740
|
-
capabilitiesChangedNotificationBarProps: capabilitiesChangedNotificationBarProps, pinnedParticipants: pinnedParticipants, setPinnedParticipants: setPinnedParticipants }));
|
35224
|
+
capabilitiesChangedNotificationBarProps: capabilitiesChangedNotificationBarProps, pinnedParticipants: pinnedParticipants, setPinnedParticipants: setPinnedParticipants, compositeAudioContext: compositeAudioContext.current }));
|
34741
35225
|
break;
|
34742
35226
|
/* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
|
34743
35227
|
case 'hold':
|
@@ -35233,7 +35717,9 @@ class AzureCommunicationCallAdapter {
|
|
35233
35717
|
? locatorOrTargetCalless
|
35234
35718
|
: undefined;
|
35235
35719
|
this.deviceManager = deviceManager;
|
35236
|
-
const isTeamsMeeting = this.locator
|
35720
|
+
const isTeamsMeeting = this.locator
|
35721
|
+
? 'meetingLink' in this.locator || /* @conditional-compile-remove(meeting-id) */ 'meetingId' in this.locator
|
35722
|
+
: false;
|
35237
35723
|
const isRoomsCall = this.locator ? 'roomId' in this.locator : false;
|
35238
35724
|
this.onResolveVideoBackgroundEffectsDependency = (_a = options === null || options === void 0 ? void 0 : options.videoBackgroundOptions) === null || _a === void 0 ? void 0 : _a.onResolveDependency;
|
35239
35725
|
this.context = new CallContext(callClient.getState(), isTeamsMeeting, isRoomsCall, options, this.targetCallees);
|
@@ -35464,18 +35950,34 @@ class AzureCommunicationCallAdapter {
|
|
35464
35950
|
}
|
35465
35951
|
_joinCall(audioOptions, videoOptions) {
|
35466
35952
|
const isTeamsMeeting = this.locator ? 'meetingLink' in this.locator : false;
|
35953
|
+
/* @conditional-compile-remove(meeting-id) */
|
35954
|
+
const isTeamsMeetingId = this.locator ? 'meetingId' in this.locator : false;
|
35467
35955
|
const isRoomsCall = this.locator ? 'roomId' in this.locator : false;
|
35468
35956
|
/* @conditional-compile-remove(teams-identity-support) */
|
35469
35957
|
if (_isTeamsCallAgent(this.callAgent)) {
|
35470
|
-
if (
|
35471
|
-
|
35958
|
+
if (isTeamsMeeting) {
|
35959
|
+
return this.callAgent.join(this.locator, {
|
35960
|
+
audioOptions,
|
35961
|
+
videoOptions
|
35962
|
+
});
|
35963
|
+
}
|
35964
|
+
/* @conditional-compile-remove(meeting-id) */
|
35965
|
+
if (isTeamsMeetingId) {
|
35966
|
+
return this.callAgent.join(this.locator, {
|
35967
|
+
audioOptions,
|
35968
|
+
videoOptions
|
35969
|
+
});
|
35472
35970
|
}
|
35971
|
+
throw new Error('Locator not supported by TeamsCallAgent');
|
35972
|
+
}
|
35973
|
+
if (isTeamsMeeting) {
|
35473
35974
|
return this.callAgent.join(this.locator, {
|
35474
35975
|
audioOptions,
|
35475
35976
|
videoOptions
|
35476
35977
|
});
|
35477
35978
|
}
|
35478
|
-
|
35979
|
+
/* @conditional-compile-remove(meeting-id) */
|
35980
|
+
if (isTeamsMeetingId) {
|
35479
35981
|
return this.callAgent.join(this.locator, {
|
35480
35982
|
audioOptions,
|
35481
35983
|
videoOptions
|
@@ -36718,31 +37220,31 @@ class CallWithChatBackedChatAdapter {
|
|
36718
37220
|
this.setTopic = (topicName) => __awaiter$3(this, void 0, void 0, function* () {
|
36719
37221
|
throw new Error(`Chat Topics are not supported in CallWithChatComposite.`);
|
36720
37222
|
});
|
36721
|
-
/* @conditional-compile-remove(
|
37223
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
36722
37224
|
this.registerActiveFileUploads = (files) => {
|
36723
37225
|
return this.callWithChatAdapter.registerActiveFileUploads(files);
|
36724
37226
|
};
|
36725
|
-
/* @conditional-compile-remove(
|
37227
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
36726
37228
|
this.registerCompletedFileUploads = (metadata) => {
|
36727
37229
|
return this.callWithChatAdapter.registerCompletedFileUploads(metadata);
|
36728
37230
|
};
|
36729
|
-
/* @conditional-compile-remove(
|
37231
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
36730
37232
|
this.clearFileUploads = () => {
|
36731
37233
|
this.callWithChatAdapter.clearFileUploads();
|
36732
37234
|
};
|
36733
|
-
/* @conditional-compile-remove(
|
37235
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
36734
37236
|
this.cancelFileUpload = (id) => {
|
36735
37237
|
this.callWithChatAdapter.cancelFileUpload(id);
|
36736
37238
|
};
|
36737
|
-
/* @conditional-compile-remove(
|
37239
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
36738
37240
|
this.updateFileUploadProgress = (id, progress) => {
|
36739
37241
|
this.callWithChatAdapter.updateFileUploadProgress(id, progress);
|
36740
37242
|
};
|
36741
|
-
/* @conditional-compile-remove(
|
37243
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
36742
37244
|
this.updateFileUploadErrorMessage = (id, errorMessage) => {
|
36743
37245
|
this.callWithChatAdapter.updateFileUploadErrorMessage(id, errorMessage);
|
36744
37246
|
};
|
36745
|
-
/* @conditional-compile-remove(
|
37247
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
36746
37248
|
this.updateFileUploadMetadata = (id, metadata) => {
|
36747
37249
|
this.callWithChatAdapter.updateFileUploadMetadata(id, metadata);
|
36748
37250
|
};
|
@@ -36766,7 +37268,7 @@ function chatAdapterStateFromCallWithChatAdapterState(callWithChatAdapterState)
|
|
36766
37268
|
displayName: callWithChatAdapterState.displayName || '',
|
36767
37269
|
thread: callWithChatAdapterState.chat,
|
36768
37270
|
latestErrors: callWithChatAdapterState.latestChatErrors,
|
36769
|
-
/* @conditional-compile-remove(
|
37271
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
36770
37272
|
fileUploads: callWithChatAdapterState.fileUploads
|
36771
37273
|
};
|
36772
37274
|
}
|
@@ -37079,11 +37581,11 @@ const CallWithChatScreen = (props) => {
|
|
37079
37581
|
topic: false,
|
37080
37582
|
/* @conditional-compile-remove(chat-composite-participant-pane) */
|
37081
37583
|
participantPane: false,
|
37082
|
-
/* @conditional-compile-remove(
|
37584
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
37083
37585
|
fileSharing: props.fileSharing
|
37084
37586
|
}, onFetchAvatarPersonaData: props.onFetchAvatarPersonaData })), [
|
37085
37587
|
chatAdapter,
|
37086
|
-
/* @conditional-compile-remove(
|
37588
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ props.fileSharing,
|
37087
37589
|
props.onFetchAvatarPersonaData,
|
37088
37590
|
theme
|
37089
37591
|
]);
|
@@ -37133,7 +37635,7 @@ const CallWithChatComposite = (props) => {
|
|
37133
37635
|
React.createElement(CallWithChatScreen, Object.assign({}, props, {
|
37134
37636
|
/* @conditional-compile-remove(call-readiness) */
|
37135
37637
|
deviceChecks: options === null || options === void 0 ? void 0 : options.deviceChecks, callWithChatAdapter: adapter, formFactor: formFactor, callControls: options === null || options === void 0 ? void 0 : options.callControls, joinInvitationURL: joinInvitationURL, fluentTheme: fluentTheme, remoteVideoTileMenuOptions: options === null || options === void 0 ? void 0 : options.remoteVideoTileMenuOptions,
|
37136
|
-
/* @conditional-compile-remove(
|
37638
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
37137
37639
|
fileSharing: options === null || options === void 0 ? void 0 : options.fileSharing, localVideoTile: options === null || options === void 0 ? void 0 : options.localVideoTile, galleryOptions: options === null || options === void 0 ? void 0 : options.galleryOptions,
|
37138
37640
|
/* @conditional-compile-remove(custom-branding) */
|
37139
37641
|
logo: (_a = options === null || options === void 0 ? void 0 : options.branding) === null || _a === void 0 ? void 0 : _a.logo,
|
@@ -37172,12 +37674,11 @@ const isOnHoldTrampoline = (page) => {
|
|
37172
37674
|
/**
|
37173
37675
|
* @private
|
37174
37676
|
*/
|
37175
|
-
function callWithChatAdapterStateFromBackingStates(callAdapter
|
37677
|
+
function callWithChatAdapterStateFromBackingStates(callAdapter) {
|
37176
37678
|
const callAdapterState = callAdapter.getState();
|
37177
|
-
const chatAdapterState = chatAdapter.getState();
|
37178
37679
|
return {
|
37179
37680
|
call: callAdapterState.call,
|
37180
|
-
chat:
|
37681
|
+
chat: undefined,
|
37181
37682
|
userId: callAdapterState.userId,
|
37182
37683
|
page: callAdapterState.page,
|
37183
37684
|
displayName: callAdapterState.displayName,
|
@@ -37185,9 +37686,9 @@ function callWithChatAdapterStateFromBackingStates(callAdapter, chatAdapter) {
|
|
37185
37686
|
isLocalPreviewMicrophoneEnabled: callAdapterState.isLocalPreviewMicrophoneEnabled,
|
37186
37687
|
isTeamsCall: callAdapterState.isTeamsCall,
|
37187
37688
|
latestCallErrors: callAdapterState.latestErrors,
|
37188
|
-
latestChatErrors:
|
37189
|
-
/* @conditional-compile-remove(
|
37190
|
-
fileUploads:
|
37689
|
+
latestChatErrors: {},
|
37690
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
37691
|
+
fileUploads: {},
|
37191
37692
|
/* @conditional-compile-remove(PSTN-calls) */
|
37192
37693
|
alternateCallerId: callAdapterState.alternateCallerId,
|
37193
37694
|
/* @conditional-compile-remove(unsupported-browser) */
|
@@ -37207,7 +37708,7 @@ function callWithChatAdapterStateFromBackingStates(callAdapter, chatAdapter) {
|
|
37207
37708
|
*/
|
37208
37709
|
function mergeChatAdapterStateIntoCallWithChatAdapterState(existingCallWithChatAdapterState, chatAdapterState) {
|
37209
37710
|
return Object.assign(Object.assign({}, existingCallWithChatAdapterState), { chat: chatAdapterState.thread, latestChatErrors: chatAdapterState.latestErrors,
|
37210
|
-
/* @conditional-compile-remove(
|
37711
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
37211
37712
|
fileUploads: chatAdapterState.fileUploads });
|
37212
37713
|
}
|
37213
37714
|
/**
|
@@ -37287,44 +37788,61 @@ class CallWithChatContext {
|
|
37287
37788
|
* Created for easy use with the {@link CallWithChatComposite}.
|
37288
37789
|
*/
|
37289
37790
|
class AzureCommunicationCallWithChatAdapter {
|
37290
|
-
constructor(callAdapter,
|
37291
|
-
/* @conditional-compile-remove(
|
37791
|
+
constructor(callAdapter, chatAdapterPromise) {
|
37792
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
37292
37793
|
this.registerActiveFileUploads = (files) => {
|
37293
|
-
|
37794
|
+
var _a, _b;
|
37795
|
+
return (_b = (_a = this.chatAdapter) === null || _a === void 0 ? void 0 : _a.registerActiveFileUploads(files)) !== null && _b !== void 0 ? _b : [];
|
37294
37796
|
};
|
37295
|
-
/* @conditional-compile-remove(
|
37797
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
37296
37798
|
this.registerCompletedFileUploads = (metadata) => {
|
37297
|
-
|
37799
|
+
var _a, _b;
|
37800
|
+
return (_b = (_a = this.chatAdapter) === null || _a === void 0 ? void 0 : _a.registerCompletedFileUploads(metadata)) !== null && _b !== void 0 ? _b : [];
|
37298
37801
|
};
|
37299
|
-
/* @conditional-compile-remove(
|
37802
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
37300
37803
|
this.clearFileUploads = () => {
|
37301
|
-
this.
|
37804
|
+
this.chatAdapterPromise.then((adapter) => {
|
37805
|
+
adapter.clearFileUploads();
|
37806
|
+
});
|
37302
37807
|
};
|
37303
|
-
/* @conditional-compile-remove(
|
37808
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
37304
37809
|
this.cancelFileUpload = (id) => {
|
37305
|
-
this.
|
37810
|
+
this.chatAdapterPromise.then((adapter) => {
|
37811
|
+
adapter.cancelFileUpload(id);
|
37812
|
+
});
|
37306
37813
|
};
|
37307
|
-
/* @conditional-compile-remove(
|
37814
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
37308
37815
|
this.updateFileUploadProgress = (id, progress) => {
|
37309
|
-
this.
|
37816
|
+
this.chatAdapterPromise.then((adapter) => {
|
37817
|
+
adapter.updateFileUploadProgress(id, progress);
|
37818
|
+
});
|
37310
37819
|
};
|
37311
|
-
/* @conditional-compile-remove(
|
37820
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
37312
37821
|
this.updateFileUploadErrorMessage = (id, errorMessage) => {
|
37313
|
-
this.
|
37822
|
+
this.chatAdapterPromise.then((adapter) => {
|
37823
|
+
adapter.updateFileUploadErrorMessage(id, errorMessage);
|
37824
|
+
});
|
37314
37825
|
};
|
37315
|
-
/* @conditional-compile-remove(
|
37826
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
37316
37827
|
this.updateFileUploadMetadata = (id, metadata) => {
|
37317
|
-
this.
|
37828
|
+
this.chatAdapterPromise.then((adapter) => {
|
37829
|
+
adapter.updateFileUploadMetadata(id, metadata);
|
37830
|
+
});
|
37318
37831
|
};
|
37319
37832
|
this.bindPublicMethods();
|
37320
37833
|
this.callAdapter = callAdapter;
|
37321
|
-
this.
|
37322
|
-
this.context = new CallWithChatContext(callWithChatAdapterStateFromBackingStates(callAdapter, chatAdapter));
|
37834
|
+
this.context = new CallWithChatContext(callWithChatAdapterStateFromBackingStates(callAdapter));
|
37323
37835
|
const onChatStateChange = (newChatAdapterState) => {
|
37324
37836
|
this.context.updateClientStateWithChatState(newChatAdapterState);
|
37325
37837
|
};
|
37326
|
-
this.chatAdapter.onStateChange(onChatStateChange);
|
37327
37838
|
this.onChatStateChange = onChatStateChange;
|
37839
|
+
this.chatAdapterPromise = chatAdapterPromise;
|
37840
|
+
this.chatAdapterPromise.then((chatAdapter) => {
|
37841
|
+
chatAdapter.onStateChange(this.onChatStateChange);
|
37842
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
37843
|
+
this.chatAdapter = chatAdapter;
|
37844
|
+
this.context.updateClientStateWithChatState(chatAdapter.getState());
|
37845
|
+
});
|
37328
37846
|
const onCallStateChange = (newCallAdapterState) => {
|
37329
37847
|
this.context.updateClientStateWithCallState(newCallAdapterState);
|
37330
37848
|
};
|
@@ -37369,19 +37887,19 @@ class AzureCommunicationCallWithChatAdapter {
|
|
37369
37887
|
this.deleteMessage.bind(this);
|
37370
37888
|
this.on.bind(this);
|
37371
37889
|
this.off.bind(this);
|
37372
|
-
/* @conditional-compile-remove(
|
37890
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
37373
37891
|
this.registerActiveFileUploads = this.registerActiveFileUploads.bind(this);
|
37374
|
-
/* @conditional-compile-remove(
|
37892
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
37375
37893
|
this.registerCompletedFileUploads = this.registerCompletedFileUploads.bind(this);
|
37376
|
-
/* @conditional-compile-remove(
|
37894
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
37377
37895
|
this.clearFileUploads = this.clearFileUploads.bind(this);
|
37378
|
-
/* @conditional-compile-remove(
|
37896
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
37379
37897
|
this.cancelFileUpload = this.cancelFileUpload.bind(this);
|
37380
|
-
/* @conditional-compile-remove(
|
37898
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
37381
37899
|
this.updateFileUploadProgress = this.updateFileUploadProgress.bind(this);
|
37382
|
-
/* @conditional-compile-remove(
|
37900
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
37383
37901
|
this.updateFileUploadErrorMessage = this.updateFileUploadErrorMessage.bind(this);
|
37384
|
-
/* @conditional-compile-remove(
|
37902
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
|
37385
37903
|
this.updateFileUploadMetadata = this.updateFileUploadMetadata.bind(this);
|
37386
37904
|
this.downloadResourceToCache = this.downloadResourceToCache.bind(this);
|
37387
37905
|
this.removeResourceFromCache = this.removeResourceFromCache.bind(this);
|
@@ -37452,10 +37970,16 @@ class AzureCommunicationCallWithChatAdapter {
|
|
37452
37970
|
}
|
37453
37971
|
/** Dispose of the current CallWithChatAdapter. */
|
37454
37972
|
dispose() {
|
37455
|
-
this
|
37456
|
-
|
37457
|
-
|
37458
|
-
|
37973
|
+
return __awaiter$2(this, void 0, void 0, function* () {
|
37974
|
+
this.chatAdapterPromise.then((adapter) => {
|
37975
|
+
adapter.offStateChange(this.onChatStateChange);
|
37976
|
+
});
|
37977
|
+
this.callAdapter.offStateChange(this.onCallStateChange);
|
37978
|
+
yield this.chatAdapterPromise.then((adapter) => {
|
37979
|
+
adapter.dispose();
|
37980
|
+
});
|
37981
|
+
this.callAdapter.dispose();
|
37982
|
+
});
|
37459
37983
|
}
|
37460
37984
|
/** Remove a participant from the Call only. */
|
37461
37985
|
removeParticipant(userId) {
|
@@ -37593,53 +38117,71 @@ class AzureCommunicationCallWithChatAdapter {
|
|
37593
38117
|
/** Fetch initial Call and Chat data such as chat messages. */
|
37594
38118
|
fetchInitialData() {
|
37595
38119
|
return __awaiter$2(this, void 0, void 0, function* () {
|
37596
|
-
yield this.
|
38120
|
+
return yield this.chatAdapterPromise.then((adapter) => {
|
38121
|
+
return adapter.fetchInitialData();
|
38122
|
+
});
|
37597
38123
|
});
|
37598
38124
|
}
|
37599
38125
|
/** Send a chat message. */
|
37600
38126
|
sendMessage(content) {
|
37601
38127
|
return __awaiter$2(this, void 0, void 0, function* () {
|
37602
|
-
yield this.
|
38128
|
+
return yield this.chatAdapterPromise.then((adapter) => {
|
38129
|
+
return adapter.sendMessage(content);
|
38130
|
+
});
|
37603
38131
|
});
|
37604
38132
|
}
|
37605
38133
|
/** Send a chat read receipt. */
|
37606
38134
|
sendReadReceipt(chatMessageId) {
|
37607
38135
|
return __awaiter$2(this, void 0, void 0, function* () {
|
37608
|
-
yield this.
|
38136
|
+
return yield this.chatAdapterPromise.then((adapter) => {
|
38137
|
+
return adapter.sendReadReceipt(chatMessageId);
|
38138
|
+
});
|
37609
38139
|
});
|
37610
38140
|
}
|
37611
38141
|
/** Send an isTyping indicator. */
|
37612
38142
|
sendTypingIndicator() {
|
37613
38143
|
return __awaiter$2(this, void 0, void 0, function* () {
|
37614
|
-
yield this.
|
38144
|
+
return yield this.chatAdapterPromise.then((adapter) => {
|
38145
|
+
return adapter.sendTypingIndicator();
|
38146
|
+
});
|
37615
38147
|
});
|
37616
38148
|
}
|
37617
38149
|
/** Load previous Chat messages. */
|
37618
38150
|
loadPreviousChatMessages(messagesToLoad) {
|
37619
38151
|
return __awaiter$2(this, void 0, void 0, function* () {
|
37620
|
-
return yield this.
|
38152
|
+
return yield this.chatAdapterPromise.then((adapter) => {
|
38153
|
+
return adapter.loadPreviousChatMessages(messagesToLoad);
|
38154
|
+
});
|
37621
38155
|
});
|
37622
38156
|
}
|
37623
38157
|
/** Update an existing message. */
|
37624
38158
|
updateMessage(messageId, content, metadata, options) {
|
37625
38159
|
return __awaiter$2(this, void 0, void 0, function* () {
|
37626
|
-
return
|
37627
|
-
|
38160
|
+
return this.chatAdapterPromise.then((adapter) => {
|
38161
|
+
return adapter.updateMessage(messageId, content, metadata,
|
38162
|
+
/* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ options);
|
38163
|
+
});
|
37628
38164
|
});
|
37629
38165
|
}
|
37630
38166
|
/** Delete an existing message. */
|
37631
38167
|
deleteMessage(messageId) {
|
37632
38168
|
return __awaiter$2(this, void 0, void 0, function* () {
|
37633
|
-
return yield this.
|
38169
|
+
return yield this.chatAdapterPromise.then((adapter) => {
|
38170
|
+
return adapter.deleteMessage(messageId);
|
38171
|
+
});
|
37634
38172
|
});
|
37635
38173
|
}
|
37636
38174
|
downloadResourceToCache(resourceDetails) {
|
37637
38175
|
return __awaiter$2(this, void 0, void 0, function* () {
|
37638
|
-
this.
|
38176
|
+
this.chatAdapterPromise.then((adapter) => {
|
38177
|
+
adapter.downloadResourceToCache(resourceDetails);
|
38178
|
+
});
|
37639
38179
|
});
|
37640
38180
|
}
|
37641
38181
|
removeResourceFromCache(resourceDetails) {
|
37642
|
-
this.
|
38182
|
+
this.chatAdapterPromise.then((adapter) => {
|
38183
|
+
adapter.removeResourceFromCache(resourceDetails);
|
38184
|
+
});
|
37643
38185
|
}
|
37644
38186
|
/* @conditional-compile-remove(PSTN-calls) */
|
37645
38187
|
holdCall() {
|
@@ -37787,31 +38329,47 @@ class AzureCommunicationCallWithChatAdapter {
|
|
37787
38329
|
this.callAdapter.on('isSpokenLanguageChanged', listener);
|
37788
38330
|
break;
|
37789
38331
|
case 'messageReceived':
|
37790
|
-
this.
|
38332
|
+
this.chatAdapterPromise.then((adapter) => {
|
38333
|
+
adapter.on('messageReceived', listener);
|
38334
|
+
});
|
37791
38335
|
break;
|
37792
38336
|
case 'messageEdited':
|
37793
|
-
this.
|
38337
|
+
this.chatAdapterPromise.then((adapter) => {
|
38338
|
+
adapter.on('messageEdited', listener);
|
38339
|
+
});
|
37794
38340
|
break;
|
37795
38341
|
case 'messageDeleted':
|
37796
|
-
this.
|
38342
|
+
this.chatAdapterPromise.then((adapter) => {
|
38343
|
+
adapter.on('messageDeleted', listener);
|
38344
|
+
});
|
37797
38345
|
break;
|
37798
38346
|
case 'messageSent':
|
37799
|
-
this.
|
38347
|
+
this.chatAdapterPromise.then((adapter) => {
|
38348
|
+
adapter.on('messageSent', listener);
|
38349
|
+
});
|
37800
38350
|
break;
|
37801
38351
|
case 'messageRead':
|
37802
|
-
this.
|
38352
|
+
this.chatAdapterPromise.then((adapter) => {
|
38353
|
+
adapter.on('messageRead', listener);
|
38354
|
+
});
|
37803
38355
|
break;
|
37804
38356
|
case 'chatParticipantsAdded':
|
37805
|
-
this.
|
38357
|
+
this.chatAdapterPromise.then((adapter) => {
|
38358
|
+
adapter.on('participantsAdded', listener);
|
38359
|
+
});
|
37806
38360
|
break;
|
37807
38361
|
case 'chatParticipantsRemoved':
|
37808
|
-
this.
|
38362
|
+
this.chatAdapterPromise.then((adapter) => {
|
38363
|
+
adapter.on('participantsRemoved', listener);
|
38364
|
+
});
|
37809
38365
|
break;
|
37810
38366
|
case 'callError':
|
37811
38367
|
this.callAdapter.on('error', listener);
|
37812
38368
|
break;
|
37813
38369
|
case 'chatError':
|
37814
|
-
this.
|
38370
|
+
this.chatAdapterPromise.then((adapter) => {
|
38371
|
+
adapter.on('error', listener);
|
38372
|
+
});
|
37815
38373
|
break;
|
37816
38374
|
default:
|
37817
38375
|
throw `Unknown AzureCommunicationCallWithChatAdapter Event: ${event}`;
|
@@ -37867,37 +38425,113 @@ class AzureCommunicationCallWithChatAdapter {
|
|
37867
38425
|
this.callAdapter.off('isSpokenLanguageChanged', listener);
|
37868
38426
|
break;
|
37869
38427
|
case 'messageReceived':
|
37870
|
-
this.
|
38428
|
+
this.chatAdapterPromise.then((adapter) => {
|
38429
|
+
adapter.off('messageReceived', listener);
|
38430
|
+
});
|
37871
38431
|
break;
|
37872
38432
|
case 'messageEdited':
|
37873
|
-
this.
|
38433
|
+
this.chatAdapterPromise.then((adapter) => {
|
38434
|
+
adapter.off('messageEdited', listener);
|
38435
|
+
});
|
37874
38436
|
break;
|
37875
38437
|
case 'messageDeleted':
|
37876
|
-
this.
|
38438
|
+
this.chatAdapterPromise.then((adapter) => {
|
38439
|
+
adapter.off('messageDeleted', listener);
|
38440
|
+
});
|
37877
38441
|
break;
|
37878
38442
|
case 'messageSent':
|
37879
|
-
this.
|
38443
|
+
this.chatAdapterPromise.then((adapter) => {
|
38444
|
+
adapter.off('messageSent', listener);
|
38445
|
+
});
|
37880
38446
|
break;
|
37881
38447
|
case 'messageRead':
|
37882
|
-
this.
|
38448
|
+
this.chatAdapterPromise.then((adapter) => {
|
38449
|
+
adapter.off('messageRead', listener);
|
38450
|
+
});
|
37883
38451
|
break;
|
37884
38452
|
case 'chatParticipantsAdded':
|
37885
|
-
this.
|
38453
|
+
this.chatAdapterPromise.then((adapter) => {
|
38454
|
+
adapter.off('participantsAdded', listener);
|
38455
|
+
});
|
37886
38456
|
break;
|
37887
38457
|
case 'chatParticipantsRemoved':
|
37888
|
-
this.
|
38458
|
+
this.chatAdapterPromise.then((adapter) => {
|
38459
|
+
adapter.off('participantsRemoved', listener);
|
38460
|
+
});
|
37889
38461
|
break;
|
37890
38462
|
case 'callError':
|
37891
38463
|
this.callAdapter.off('error', listener);
|
37892
38464
|
break;
|
37893
38465
|
case 'chatError':
|
37894
|
-
this.
|
38466
|
+
this.chatAdapterPromise.then((adapter) => {
|
38467
|
+
adapter.off('error', listener);
|
38468
|
+
});
|
37895
38469
|
break;
|
37896
38470
|
default:
|
37897
38471
|
throw `Unknown AzureCommunicationCallWithChatAdapter Event: ${event}`;
|
37898
38472
|
}
|
37899
38473
|
}
|
37900
38474
|
}
|
38475
|
+
/**
|
38476
|
+
* Arguments for use in {@link createAzureCommunicationCallWithChatAdapter} to join a Group Call with an associated Chat thread.
|
38477
|
+
* @public
|
38478
|
+
*/
|
38479
|
+
class CallAndChatProvider {
|
38480
|
+
constructor(locator) {
|
38481
|
+
this.locator = locator;
|
38482
|
+
}
|
38483
|
+
getChatThread() {
|
38484
|
+
return __awaiter$2(this, void 0, void 0, function* () {
|
38485
|
+
return this.locator.chatThreadId;
|
38486
|
+
});
|
38487
|
+
}
|
38488
|
+
}
|
38489
|
+
/**
|
38490
|
+
* Arguments for use in {@link createAzureCommunicationCallWithChatAdapter} to join a Teams meeting with an associated Chat thread.
|
38491
|
+
*
|
38492
|
+
* @public
|
38493
|
+
*/
|
38494
|
+
class TeamsMeetingLinkProvider {
|
38495
|
+
constructor(locator) {
|
38496
|
+
this.locator = locator;
|
38497
|
+
}
|
38498
|
+
getChatThread() {
|
38499
|
+
return __awaiter$2(this, void 0, void 0, function* () {
|
38500
|
+
return getChatThreadFromTeamsLink(this.locator.meetingLink);
|
38501
|
+
});
|
38502
|
+
}
|
38503
|
+
}
|
38504
|
+
/** @conditional-compile-remove(meeting-id) */
|
38505
|
+
/**
|
38506
|
+
* Arguments for use in {@link createAzureCommunicationCallWithChatAdapter} to join a Teams meeting using meeting id.
|
38507
|
+
*
|
38508
|
+
* @public
|
38509
|
+
*/
|
38510
|
+
class TeamsMeetingIdProvider {
|
38511
|
+
constructor(locator, callAdapter) {
|
38512
|
+
this.locator = locator;
|
38513
|
+
this.callAdapter = callAdapter;
|
38514
|
+
}
|
38515
|
+
/**
|
38516
|
+
* Wait call to be connected to get thread ID.
|
38517
|
+
* @returns the chat thread ID for the given meeting ID.
|
38518
|
+
*/
|
38519
|
+
getChatThread() {
|
38520
|
+
return __awaiter$2(this, void 0, void 0, function* () {
|
38521
|
+
return new Promise((resolve) => {
|
38522
|
+
const stateChangeListener = (state) => {
|
38523
|
+
var _a, _b, _c;
|
38524
|
+
if (((_a = state.call) === null || _a === void 0 ? void 0 : _a.state) === 'Connected' && ((_b = state.call.info) === null || _b === void 0 ? void 0 : _b.threadId)) {
|
38525
|
+
resolve((_c = state.call.info) === null || _c === void 0 ? void 0 : _c.threadId);
|
38526
|
+
}
|
38527
|
+
};
|
38528
|
+
this.callAdapter.then((adapter) => {
|
38529
|
+
adapter.onStateChange(stateChangeListener);
|
38530
|
+
});
|
38531
|
+
});
|
38532
|
+
});
|
38533
|
+
}
|
38534
|
+
}
|
37901
38535
|
/**
|
37902
38536
|
* Create a CallWithChatAdapter backed by Azure Communication services
|
37903
38537
|
* to plug into the {@link CallWithChatComposite}.
|
@@ -37906,8 +38540,8 @@ class AzureCommunicationCallWithChatAdapter {
|
|
37906
38540
|
*/
|
37907
38541
|
const createAzureCommunicationCallWithChatAdapter = (_a) => __awaiter$2(void 0, [_a], void 0, function* ({ userId, displayName, credential, endpoint, locator,
|
37908
38542
|
/* @conditional-compile-remove(PSTN-calls) */ alternateCallerId, callAdapterOptions }) {
|
37909
|
-
const callAdapterLocator =
|
37910
|
-
const
|
38543
|
+
const callAdapterLocator = isTeamsMeetingLocator(locator) ? locator : locator.callLocator;
|
38544
|
+
const callAdapter = _createAzureCommunicationCallAdapterInner({
|
37911
38545
|
userId,
|
37912
38546
|
displayName,
|
37913
38547
|
credential,
|
@@ -37916,12 +38550,9 @@ const createAzureCommunicationCallWithChatAdapter = (_a) => __awaiter$2(void 0,
|
|
37916
38550
|
options: callAdapterOptions,
|
37917
38551
|
telemetryImplementationHint: 'CallWithChat'
|
37918
38552
|
});
|
37919
|
-
const
|
37920
|
-
|
37921
|
-
|
37922
|
-
const createChatAdapterPromise = _createAzureCommunicationChatAdapterInner(endpoint, userId, displayName, credential, threadId, 'CallWithChat');
|
37923
|
-
const [callAdapter, chatAdapter] = yield Promise.all([createCallAdapterPromise, createChatAdapterPromise]);
|
37924
|
-
return new AzureCommunicationCallWithChatAdapter(callAdapter, chatAdapter);
|
38553
|
+
const chatThreadAdapter = _createChatThreadAdapterInner(locator, callAdapter);
|
38554
|
+
const chatAdapter = _createLazyAzureCommunicationChatAdapterInner(endpoint, userId, displayName, credential, chatThreadAdapter.getChatThread(), 'CallWithChat');
|
38555
|
+
return new AzureCommunicationCallWithChatAdapter(yield callAdapter, chatAdapter);
|
37925
38556
|
});
|
37926
38557
|
/**
|
37927
38558
|
* A custom React hook to simplify the creation of {@link CallWithChatAdapter}.
|
@@ -38049,13 +38680,22 @@ beforeDispose) => {
|
|
38049
38680
|
* @public
|
38050
38681
|
*/
|
38051
38682
|
const createAzureCommunicationCallWithChatAdapterFromClients = (_b) => __awaiter$2(void 0, [_b], void 0, function* ({ callClient, callAgent, callLocator, chatClient, chatThreadClient, callAdapterOptions }) {
|
38052
|
-
const
|
38053
|
-
const
|
38054
|
-
|
38055
|
-
return new AzureCommunicationCallWithChatAdapter(callAdapter, chatAdapter);
|
38683
|
+
const callAdapter = yield createAzureCommunicationCallAdapterFromClient(callClient, callAgent, callLocator, callAdapterOptions);
|
38684
|
+
const chatAdapterPromise = createAzureCommunicationChatAdapterFromClient(chatClient, chatThreadClient);
|
38685
|
+
return new AzureCommunicationCallWithChatAdapter(callAdapter, chatAdapterPromise);
|
38056
38686
|
});
|
38057
|
-
const
|
38058
|
-
return 'meetingLink' in locator;
|
38687
|
+
const isTeamsMeetingLocator = (locator) => {
|
38688
|
+
return 'meetingLink' in locator || 'meetingId' in locator;
|
38689
|
+
};
|
38690
|
+
const _createChatThreadAdapterInner = (locator, adapter) => {
|
38691
|
+
if ('meetingLink' in locator) {
|
38692
|
+
return new TeamsMeetingLinkProvider(locator);
|
38693
|
+
}
|
38694
|
+
/** @conditional-compile-remove(meeting-id) */
|
38695
|
+
if ('meetingId' in locator) {
|
38696
|
+
return new TeamsMeetingIdProvider(locator, adapter);
|
38697
|
+
}
|
38698
|
+
return new CallAndChatProvider(locator);
|
38059
38699
|
};
|
38060
38700
|
|
38061
38701
|
var call$j={cameraLabel:"Camera",noCamerasLabel:"No cameras found",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",chatButtonLabel:"Chat",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",defaultPlaceHolder:"Select an option",dismissSidePaneButtonLabel:"Close",videoEffectsPaneTitle:"Effects",videoEffectsPaneBackgroundSelectionTitle:"Background",configurationPageVideoEffectsButtonLabel:"Effects",unableToStartVideoEffect:"Unable to apply video effect.",blurBackgroundEffectButtonLabel:"Blur",blurBackgroundTooltip:"Blur Background",removeBackgroundEffectButtonLabel:"None",removeBackgroundTooltip:"Remove Background",cameraOffBackgroundEffectWarningText:"Your camera is off. Turn on camera to see video effect.",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leavingCallTitle:"Leaving...",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby.",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",notInvitedToRoomDetails:"You are not able to join this room because you do not have an invite.",notInvitedToRoomTitle:"Not invited to room",peopleButtonLabel:"People",selectedPeopleButtonLabel:"People Button Selected",peoplePaneTitle:"People",peoplePaneMoreButtonAriaLabel:"More",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call {numberOfPeople}",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",removeMenuLabel:"Remove",startSpotlightMenuLabel:"Spotlight for everyone",addSpotlightMenuLabel:"Add spotlight",stopSpotlightMenuLabel:"Stop spotlighting",stopSpotlightOnSelfMenuLabel:"Exit spotlight",spotlightLimitReachedMenuTitle:"Spotlight limit reached",stopAllSpotlightMenuLabel:"Stop all spotlights",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",roomNotFoundDetails:"The room ID provided could not be found.",roomNotFoundTitle:"Room not found",roomNotValidDetails:"This room is not valid at this current time.",roomNotValidTitle:"Room not valid",inviteToRoomRemovedDetails:"Your invite to join this room was removed.",inviteToRoomRemovedTitle:"Invite to room removed",soundLabel:"Sound",noMicrophonesLabel:"No microphones found",noSpeakersLabel:"No speakers found",startCallButtonLabel:"Start call",openDialpadButtonLabel:"Dial phone number",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",moreButtonCallingLabel:"More",resumeCallButtonLabel:"Resume",resumingCallButtonLabel:"Resuming...",resumeCallButtonAriaLabel:"Resume call",resumingCallButtonAriaLabel:"Resume call",holdScreenLabel:"You're on hold",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number",outboundCallingNoticeString:"Calling...",participantJoinedNoticeString:"{displayName} joined",twoParticipantJoinedNoticeString:"{displayName1} and {displayName2} have joined",threeParticipantJoinedNoticeString:"{displayName1}, {displayName2} and {displayName3} have joined",participantLeftNoticeString:"{displayName} left",twoParticipantLeftNoticeString:"{displayName1} and {displayName2} have left",threeParticipantLeftNoticeString:"{displayName1}, {displayName2} and {displayName3} have left",unnamedParticipantString:"unnamed participant",manyUnnamedParticipantsJoined:"unnamed participant and {numOfParticipants} other participants joined",manyUnnamedParticipantsLeft:"unnamed participant and {numOfParticipants} other participants left",manyParticipantsJoined:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants joined",manyParticipantsLeft:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants left",liveCaptionsLabel:"Live captions",captionsSettingsLabel:"Caption settings",startCaptionsButtonOnLabel:"Turn on captions",startCaptionsButtonOffLabel:"Turn off captions",startCaptionsButtonTooltipOnContent:"Turn off captions",startCaptionsButtonTooltipOffContent:"Turn on captions",captionsSettingsModalTitle:"Captions Settings",captionsSettingsSpokenLanguageDropdownLabel:"Spoken language",captionsSettingsCaptionLanguageDropdownLabel:"Captions language",captionsSettingsSpokenLanguageDropdownInfoText:"Language that everyone on this call is speaking.",captionsSettingsCaptionLanguageDropdownInfoText:"Captions will appear in this langugage.",captionsSettingsConfirmButtonLabel:"Confirm",captionsSettingsCancelButtonLabel:"Cancel",captionsSettingsModalAriaLabel:"Captions Setting Modal",captionsSettingsCloseModalButtonAriaLabel:"Close Captions Setting",captionsBannerMoreButtonCallingLabel:"More",captionsBannerMoreButtonTooltip:"More options",dismissModalAriaLabel:"Local and remote picture and picture, press enter to return to call",callRejectedTitle:"The call could not be completed",callRejectedMoreDetails:"The person you are trying to reach is unavailable. Please try again later.",callTimeoutTitle:"The call could not be completed",callTimeoutDetails:"The person you are trying to reach is unavailable. Please try again later.",callTimeoutBotTitle:"The call could not be completed",callTimeoutBotDetails:"The service that you are trying to reach is unavailable. Please try again later.",dtmfDialerButtonLabel:"Dialpad",dtmfDialerButtonTooltipOn:"Show dialpad",dtmfDialerButtonTooltipOff:"Hide dialpad",dtmfDialerMoreButtonLabelOn:"Show dialpad",dtmfDialerMoreButtonLabelOff:"Hide dialpad",spokenLanguageStrings:{"ar-ae":"Arabic - U.A.E.","ar-sa":"Arabic - Saudi Arabia","da-dk":"Danish","de-de":"German - Germany","en-au":"English - Australia","en-ca":"English - Canada","en-gb":"English - United Kingdom","en-in":"English - India","en-nz":"English - New Zealand","en-us":"English - United States","es-es":"Spanish - Spain (Modern Sort)","es-mx":"Spanish - Mexico","fi-fi":"Finnish","fr-ca":"French - Canada","fr-fr":"French - France","hi-in":"Hindi","it-it":"Italian - Italy","ja-jp":"Japanese","ko-kr":"Korean","nb-no":"Norwegian (Bokmål)","nl-be":"Dutch - Belgium","nl-nl":"Dutch - Netherlands","pl-pl":"Polish","pt-br":"Portuguese - Brazil","ru-ru":"Russian","sv-se":"Swedish","zh-cn":"Chinese - People's Republic of China","zh-hk":"Chinese - Hong Kong SAR","cs-cz":"Czech","pt-pt":"Portuguese - Portugal","tr-tr":"Turkish","vi-vn":"Vietnamese","th-th":"Thai","he-il":"Hebrew","cy-gb":"Welsh","uk-ua":"Ukrainian","el-gr":"Greek","hu-hu":"Hungarian","ro-ro":"Romanian","sk-sk":"Slovak","zh-tw":"Chinese - Taiwan"},captionLanguageStrings:{ar:"Arabic",da:"Danish",de:"German",en:"English",es:"Spanish",fi:"Finnish","fr-ca":"French - Canada",fr:"French - France",hi:"Hindi",it:"Italian",ja:"Japanese",ko:"Korean",nb:"Norwegian (Bokmål)",nl:"Dutch",pl:"Polish",pt:"Portuguese - Brazil",ru:"Russian",sv:"Swedish","zh-Hans":"Chinese (Simplified)","zh-Hant":"Chinese (Traditional)",cs:"Czech","pt-pt":"Portuguese - Portugal",tr:"Turkish",vi:"Vietnamese",th:"Thai",he:"Hebrew",cy:"Welsh",uk:"Ukrainian",el:"Greek",hu:"Hungarian",ro:"Romanian",sk:"Slovak"},captionsBannerSpinnerText:"Starting captions...",transferPageTransferorText:"Transferring...",transferPageTransferTargetText:"Connecting...",transferPageUnknownTransferorDisplayName:"Unknown",transferPageUnknownTransferTargetDisplayName:"Unknown",transferPageNoticeString:"You are being transferred",participantCouldNotBeReachedTitle:"Target participant is currently not available",participantCouldNotBeReachedMoreDetails:"Please contact participant when they are available",permissionToReachTargetParticipantNotAllowedTitle:"Permission to reach target participant is not allowed",permissionToReachTargetParticipantNotAllowedMoreDetails:"Please check that the target participant is in the same tenant",unableToResolveTenantTitle:"Unable to resolve tenant id for the target participant",unableToResolveTenantMoreDetails:"Please check the participant id is entered correctly",participantIdIsMalformedTitle:"Participant id is not in the correct format",participantIdIsMalformedMoreDetails:"Please check that the participant id is in the correct format",moreButtonGalleryControlLabel:"View",moreButtonGalleryPositionToggleLabel:"Move gallery to top",moreButtonGallerySpeakerLayoutLabel:"Speaker",moreButtonGalleryFloatingLocalLayoutLabel:"Dynamic",moreButtonGalleryDefaultLayoutLabel:"Gallery view",moreButtonGalleryFocusedContentLayoutLabel:"Focus on content",moreButtonLargeGalleryDefaultLayoutLabel:"Large Gallery",capabilityChangedNotification:{turnVideoOn:{lostDueToMeetingOption:"Your camera has been disabled. You can no longer share video.",grantedDueToMeetingOption:"Your camera has been enabled. Turn it on if you'd like to share video."},unmuteMic:{lostDueToMeetingOption:"Your mic has been disabled. You can no longer unmute.",grantedDueToMeetingOption:"Your mic has been enabled. Unmute if you'd like to speak."},shareScreen:{lostDueToRoleChangeToAttendee:"Your role has been changed. Some actions, like sharing content, won't be available to you.",grantedDueToRoleChangeToPresenter:"You're a presenter. You can share content and facilitate the meeting."}},surveyTitle:"Help us improve",starSurveyHelperText:"How was the quality of the call?",starSurveyOneStarText:"The quality was bad.",starSurveyTwoStarText:"The quality was poor.",starSurveyThreeStarText:"The quality was good.",starSurveyFourStarText:"The quality was great.",starSurveyFiveStarText:"The quality was excellent.",surveyConfirmButtonLabel:"Send Feedback",starRatingAriaLabel:"Select {0} of {1} stars",surveySkipButtonLabel:"Skip",tagsSurveyQuestion:"What could have been better?",tagsSurveyTextFieldDefaultText:"Other, please specify",tagsSurveyHelperText:"Check any issues you experienced",surveyTextboxDefaultText:"Other, please specify",endOfSurveyText:"Thank you for your feedback!",surveyIssues:{overallRating:{callCannotJoin:"I could not join call",callCannotInvite:"I could not invite others into the call",hadToRejoin:"I had to rejoin the call",callEndedUnexpectedly:"Call ended for me unexpectedly",otherIssues:"I was having other issues with the call"},audioRating:{noLocalAudio:"The other side could not hear any sound",noRemoteAudio:"I could not hear any sound",echo:"I heard echos on the call",audioNoise:"I heard noise on the call",lowVolume:"Volume was low",audioStoppedUnexpectedly:"Audio stopped unexpectedly",distortedSpeech:"Audio was distorted",audioInterruption:"Audio was interrupted",otherIssues:"I was having other audio issues in this call"},videoRating:{noVideoReceived:"I could not see any video",noVideoSent:"Others could not see me",lowQuality:"Video quality was low",freezes:"Video frozen",stoppedUnexpectedly:"Video stopped unexpectedly",darkVideoReceived:"I can only see dark screens when others turn on their camera",audioVideoOutOfSync:"Audio and Video was out of sync",otherIssues:"I was having other video issues in this call"},screenshareRating:{noContentLocal:"Other people could not see my screenshare",noContentRemote:"I could not see other people's screenshare",cannotPresent:"I could not present my screen",lowQuality:"Screen share quality was low",freezes:"Screen share frozen",stoppedUnexpectedly:"Screen share stopped unexpectedly",largeDelay:"Screen share has a large delay",otherIssues:"I was having other screen share issues in this call"}},SurveyIssuesHeadingStrings:{overallRating:"Overall",audioRating:"Audio",videoRating:"Video",screenshareRating:"Presenting"},spotlightPrompt:{startSpotlightHeading:"Spotlight for everyone?",startSpotlightText:"You'll highlight this video for everyone in the meeting.",startSpotlightOnSelfText:"You'll highlight your video for everyone in the meeting.",startSpotlightConfirmButtonLabel:"Spotlight for everyone",startSpotlightCancelButtonLabel:"Cancel",stopSpotlightHeading:"Stop spotlighting this video?",stopSpotlightOnSelfHeading:"Exit spotlight?",stopAllSpotlightHeading:"Stop spotlighting all videos?",stopSpotlightText:"This video will no longer be highlighted for everyone in the meeting.",stopSpotlightOnSelfText:"Your video will no longer be highlighted for everyone in the meeting.",stopAllSpotlightText:"The videos will no longer be highlighted for everyone in the meeting.",stopSpotlightConfirmButtonLabel:"Stop spotlighting",stopSpotlightOnSelfConfirmButtonLabel:"Exit spotlight",stopSpotlightCancelButtonLabel:"Cancel"},exitSpotlightButtonLabel:"Exit spotlight",exitSpotlightButtonTooltip:"Exit spotlight"};var chat$j={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$j={chatButtonLabel:"Chat",chatButtonNewMessageNotificationLabel:"New Message",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipClose:"Hide chat",chatButtonTooltipOpen:"Show chat",chatPaneTitle:"Chat",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",dismissSidePaneButtonLabel:"Close",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",moreDrawerCaptionsMenuTitle:"Live captions",moreDrawerSpokenLanguageMenuTitle:"Spoken language",moreDrawerCaptionLanguageMenuTitle:"Caption language",moreDrawerGalleryOptionsMenuTitle:"Gallery options",peopleButtonLabel:"People",selectedPeopleButtonLabel:"People Button Selected",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",peoplePaneTitle:"People",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",openDialpadButtonLabel:"Dial phone number",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number"};var en_GB = {call:call$j,chat:chat$j,callWithChat:callWithChat$j};
|
@@ -38611,4 +39251,4 @@ exports.useTeamsCall = useTeamsCall;
|
|
38611
39251
|
exports.useTeamsCallAdapter = useTeamsCallAdapter;
|
38612
39252
|
exports.useTeamsCallAgent = useTeamsCallAgent;
|
38613
39253
|
exports.useTheme = useTheme;
|
38614
|
-
//# sourceMappingURL=index-
|
39254
|
+
//# sourceMappingURL=index-BI61bnOi.js.map
|