@azure/communication-react 1.5.1-alpha-202306170013 → 1.5.1-alpha-202306200012
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 +11 -0
- package/dist/dist-cjs/communication-react/index.js +177 -112
- 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/react-components/src/components/HorizontalGallery.js +6 -3
- package/dist/dist-esm/react-components/src/components/HorizontalGallery.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ParticipantItem.d.ts +5 -0
- package/dist/dist-esm/react-components/src/components/ParticipantItem.js +3 -2
- package/dist/dist-esm/react-components/src/components/ParticipantItem.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ParticipantList.d.ts +2 -0
- package/dist/dist-esm/react-components/src/components/ParticipantList.js +4 -4
- package/dist/dist-esm/react-components/src/components/ParticipantList.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ResponsiveVerticalGallery.d.ts +2 -2
- package/dist/dist-esm/react-components/src/components/ResponsiveVerticalGallery.js +2 -1
- package/dist/dist-esm/react-components/src/components/ResponsiveVerticalGallery.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/TextFieldWithMention/TextFieldWithMention.js +25 -39
- package/dist/dist-esm/react-components/src/components/TextFieldWithMention/TextFieldWithMention.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/TextFieldWithMention/mentionTagUtils.d.ts +0 -1
- package/dist/dist-esm/react-components/src/components/TextFieldWithMention/mentionTagUtils.js +50 -21
- package/dist/dist-esm/react-components/src/components/TextFieldWithMention/mentionTagUtils.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/VerticalGallery.js +6 -3
- package/dist/dist-esm/react-components/src/components/VerticalGallery.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js +4 -2
- package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.js +11 -6
- package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery/Layout.d.ts +3 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery/Layout.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery/OverflowGallery.js +3 -3
- package/dist/dist-esm/react-components/src/components/VideoGallery/OverflowGallery.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/FloatingLocalVideo.styles.d.ts +1 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/FloatingLocalVideo.styles.js +6 -3
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/FloatingLocalVideo.styles.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.d.ts +1 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.js +11 -3
- package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery.js +12 -7
- package/dist/dist-esm/react-components/src/components/VideoGallery.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/VideoTile.js +1 -1
- package/dist/dist-esm/react-components/src/components/VideoTile.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/styles/VerticalGallery.styles.js +1 -1
- package/dist/dist-esm/react-components/src/components/styles/VerticalGallery.styles.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/styles/VideoGallery.styles.d.ts +4 -0
- package/dist/dist-esm/react-components/src/components/styles/VideoGallery.styles.js +6 -0
- package/dist/dist-esm/react-components/src/components/styles/VideoGallery.styles.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/pages/TransferPage.js +24 -11
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/TransferPage.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/TransferPage.styles.d.ts +7 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/TransferPage.styles.js +4 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/TransferPage.styles.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/ParticipantContainer.js +4 -3
- package/dist/dist-esm/react-composites/src/composites/common/ParticipantContainer.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/localization/locales/en-US/strings.json +2 -1
- package/package.json +8 -8
@@ -167,7 +167,7 @@ const _toCommunicationIdentifier = (id) => {
|
|
167
167
|
// Copyright (c) Microsoft Corporation.
|
168
168
|
// Licensed under the MIT license.
|
169
169
|
// GENERATED FILE. DO NOT EDIT MANUALLY.
|
170
|
-
var telemetryVersion = '1.5.1-alpha-
|
170
|
+
var telemetryVersion = '1.5.1-alpha-202306200012';
|
171
171
|
|
172
172
|
// Copyright (c) Microsoft Corporation.
|
173
173
|
/**
|
@@ -6304,10 +6304,14 @@ const getTagClosingTagInfo = (tag) => {
|
|
6304
6304
|
* @returns Updated HTML and selection index if the selection index should be set.
|
6305
6305
|
*/
|
6306
6306
|
const updateHTML = (props) => {
|
6307
|
-
const { htmlText, oldPlainText,
|
6307
|
+
const { htmlText, oldPlainText, tags, startIndex, oldPlainTextEndIndex, change, mentionTrigger } = props;
|
6308
6308
|
if (tags.length === 0 || (startIndex === 0 && oldPlainTextEndIndex === oldPlainText.length - 1)) {
|
6309
6309
|
// no tags added yet or the whole text is changed
|
6310
|
-
|
6310
|
+
const changeWithSkippedChars = escapeHTMLChars(change);
|
6311
|
+
const updatedHTML = escapeHTMLChars(oldPlainText.substring(0, startIndex)) +
|
6312
|
+
changeWithSkippedChars +
|
6313
|
+
escapeHTMLChars(oldPlainText.substring(oldPlainTextEndIndex));
|
6314
|
+
return { updatedHTML, updatedSelectionIndex: oldPlainTextEndIndex + change.length };
|
6311
6315
|
}
|
6312
6316
|
let result = '';
|
6313
6317
|
let lastProcessedHTMLIndex = 0;
|
@@ -6317,7 +6321,7 @@ const updateHTML = (props) => {
|
|
6317
6321
|
// e.g.: change is after and partially in tag => change will be added after the tag and outdated text in the tag will be removed
|
6318
6322
|
// e.g.: change is on the beginning of the tag => change will be added before the tag
|
6319
6323
|
// e.g.: change is on the end of the tag => change will be added to the tag if it's not mention and after the tag if it's mention
|
6320
|
-
let processedChange = change;
|
6324
|
+
let processedChange = escapeHTMLChars(change);
|
6321
6325
|
// end tag plain text index of the last processed tag
|
6322
6326
|
let lastProcessedPlainTextTagEndIndex = 0;
|
6323
6327
|
// as some tags/text can be removed fully, selection should be updated correctly
|
@@ -6339,13 +6343,13 @@ const updateHTML = (props) => {
|
|
6339
6343
|
if (startIndex <= tag.plainTextBeginIndex) {
|
6340
6344
|
// change start is before the open tag
|
6341
6345
|
// Math.max(lastProcessedPlainTextTagEndIndex, startIndex) is used as startIndex may not be in [[previous tag].plainTextEndIndex - tag.plainTextBeginIndex] range
|
6342
|
-
const startChangeDiff =
|
6346
|
+
const startChangeDiff = getChangeDiff(oldPlainText, Math.max(lastProcessedPlainTextTagEndIndex, startIndex), tag.plainTextBeginIndex);
|
6343
6347
|
result += htmlText.substring(lastProcessedHTMLIndex, tag.openTagIndex - startChangeDiff) + processedChange;
|
6344
6348
|
processedChange = '';
|
6345
6349
|
if (oldPlainTextEndIndex <= tag.plainTextBeginIndex) {
|
6346
6350
|
// the whole change is before tag start
|
6347
6351
|
// mentionTag length can be ignored here as the change is before the tag
|
6348
|
-
const endChangeDiff = tag.plainTextBeginIndex
|
6352
|
+
const endChangeDiff = getChangeDiff(oldPlainText, oldPlainTextEndIndex, tag.plainTextBeginIndex);
|
6349
6353
|
lastProcessedHTMLIndex = tag.openTagIndex - endChangeDiff;
|
6350
6354
|
// the change is handled; exit
|
6351
6355
|
break;
|
@@ -6375,13 +6379,13 @@ const updateHTML = (props) => {
|
|
6375
6379
|
if (startIndex !== tag.plainTextBeginIndex && startIndex !== closingTagInfo.plainTextEndIndex) {
|
6376
6380
|
// mention tag should be deleted when user tries to edit it in the middle
|
6377
6381
|
result += htmlText.substring(lastProcessedHTMLIndex, tag.openTagIndex) + processedChange;
|
6378
|
-
changeNewEndIndex = tag.plainTextBeginIndex + processedChange.length;
|
6382
|
+
changeNewEndIndex = tag.plainTextBeginIndex + unEscapeHtmlCharacters(processedChange).length;
|
6379
6383
|
lastProcessedHTMLIndex = closingTagInfo.closeTagIdx + closingTagInfo.closeTagLength;
|
6380
6384
|
}
|
6381
6385
|
else if (startIndex === tag.plainTextBeginIndex) {
|
6382
6386
|
// non empty change at the beginning of the mention tag to be added before the mention tag
|
6383
6387
|
result += htmlText.substring(lastProcessedHTMLIndex, tag.openTagIndex) + processedChange;
|
6384
|
-
changeNewEndIndex = tag.plainTextBeginIndex + processedChange.length;
|
6388
|
+
changeNewEndIndex = tag.plainTextBeginIndex + unEscapeHtmlCharacters(processedChange).length;
|
6385
6389
|
lastProcessedHTMLIndex = tag.openTagIndex;
|
6386
6390
|
}
|
6387
6391
|
else if (startIndex === closingTagInfo.plainTextEndIndex) {
|
@@ -6389,12 +6393,13 @@ const updateHTML = (props) => {
|
|
6389
6393
|
result +=
|
6390
6394
|
htmlText.substring(lastProcessedHTMLIndex, closingTagInfo.closeTagIdx + closingTagInfo.closeTagLength) +
|
6391
6395
|
processedChange;
|
6392
|
-
changeNewEndIndex = closingTagInfo.plainTextEndIndex + processedChange.length;
|
6396
|
+
changeNewEndIndex = closingTagInfo.plainTextEndIndex + unEscapeHtmlCharacters(processedChange).length;
|
6393
6397
|
lastProcessedHTMLIndex = closingTagInfo.closeTagIdx + closingTagInfo.closeTagLength;
|
6394
6398
|
}
|
6395
6399
|
processedChange = '';
|
6396
6400
|
}
|
6397
6401
|
else {
|
6402
|
+
// When change is empty, it means that this change is a deletion
|
6398
6403
|
const updateMentionTagResult = handleMentionTagUpdate({
|
6399
6404
|
htmlText,
|
6400
6405
|
oldPlainText,
|
@@ -6422,7 +6427,6 @@ const updateHTML = (props) => {
|
|
6422
6427
|
const updatedContent = updateHTML({
|
6423
6428
|
htmlText: tag.content,
|
6424
6429
|
oldPlainText,
|
6425
|
-
newPlainText,
|
6426
6430
|
tags: tag.subTags,
|
6427
6431
|
startIndex,
|
6428
6432
|
oldPlainTextEndIndex,
|
@@ -6434,13 +6438,13 @@ const updateHTML = (props) => {
|
|
6434
6438
|
}
|
6435
6439
|
else {
|
6436
6440
|
// no subtags
|
6437
|
-
const startChangeDiff =
|
6441
|
+
const startChangeDiff = getChangeDiff(oldPlainText, tag.plainTextBeginIndex, startIndex);
|
6438
6442
|
result +=
|
6439
6443
|
htmlText.substring(lastProcessedHTMLIndex, tag.openTagIndex + tag.openTagBody.length + startChangeDiff) +
|
6440
6444
|
processedChange;
|
6441
6445
|
processedChange = '';
|
6442
6446
|
if (oldPlainTextEndIndex < closingTagInfo.plainTextEndIndex) {
|
6443
|
-
const endChangeDiff =
|
6447
|
+
const endChangeDiff = getChangeDiff(oldPlainText, tag.plainTextBeginIndex, oldPlainTextEndIndex);
|
6444
6448
|
lastProcessedHTMLIndex = tag.openTagIndex + tag.openTagBody.length + endChangeDiff;
|
6445
6449
|
}
|
6446
6450
|
else if (oldPlainTextEndIndex === closingTagInfo.plainTextEndIndex) {
|
@@ -6479,7 +6483,6 @@ const updateHTML = (props) => {
|
|
6479
6483
|
const updatedContent = updateHTML({
|
6480
6484
|
htmlText: tag.content,
|
6481
6485
|
oldPlainText,
|
6482
|
-
newPlainText,
|
6483
6486
|
tags: tag.subTags,
|
6484
6487
|
startIndex,
|
6485
6488
|
oldPlainTextEndIndex,
|
@@ -6539,7 +6542,6 @@ const updateHTML = (props) => {
|
|
6539
6542
|
const updatedContent = updateHTML({
|
6540
6543
|
htmlText: tag.content,
|
6541
6544
|
oldPlainText,
|
6542
|
-
newPlainText,
|
6543
6545
|
tags: tag.subTags,
|
6544
6546
|
startIndex,
|
6545
6547
|
oldPlainTextEndIndex,
|
@@ -6555,7 +6557,7 @@ const updateHTML = (props) => {
|
|
6555
6557
|
htmlText.substring(lastProcessedHTMLIndex, tag.openTagIndex + tag.openTagBody.length) + processedChange;
|
6556
6558
|
processedChange = '';
|
6557
6559
|
// oldPlainTextEndIndex already includes mentionTag length
|
6558
|
-
const endChangeDiff = closingTagInfo.plainTextEndIndex
|
6560
|
+
const endChangeDiff = getChangeDiff(oldPlainText, oldPlainTextEndIndex, closingTagInfo.plainTextEndIndex);
|
6559
6561
|
// as change may be before the end of the tag, we need to add the rest of the tag
|
6560
6562
|
lastProcessedHTMLIndex = closingTagInfo.closeTagIdx - endChangeDiff;
|
6561
6563
|
}
|
@@ -6567,9 +6569,9 @@ const updateHTML = (props) => {
|
|
6567
6569
|
if (i === tags.length - 1 && oldPlainTextEndIndex >= closingTagInfo.plainTextEndIndex) {
|
6568
6570
|
// the last tag should handle the end of the change if needed
|
6569
6571
|
// oldPlainTextEndIndex already includes mentionTag length
|
6570
|
-
const endChangeDiff =
|
6572
|
+
const endChangeDiff = getChangeDiff(oldPlainText, closingTagInfo.plainTextEndIndex, oldPlainTextEndIndex);
|
6571
6573
|
if (startIndex >= closingTagInfo.plainTextEndIndex) {
|
6572
|
-
const startChangeDiff =
|
6574
|
+
const startChangeDiff = getChangeDiff(oldPlainText, closingTagInfo.plainTextEndIndex, startIndex);
|
6573
6575
|
result +=
|
6574
6576
|
htmlText.substring(lastProcessedHTMLIndex, closingTagInfo.closeTagIdx + closingTagInfo.closeTagLength + startChangeDiff) + processedChange;
|
6575
6577
|
}
|
@@ -6719,17 +6721,18 @@ const textToTagParser = (text, trigger) => {
|
|
6719
6721
|
if (!foundHtmlTag) {
|
6720
6722
|
if (parseIndex !== 0) {
|
6721
6723
|
// Add the remaining text to the plain text representation
|
6722
|
-
|
6724
|
+
const newText = text.substring(parseIndex);
|
6725
|
+
plainTextRepresentation += unEscapeHtmlCharacters(newText);
|
6723
6726
|
}
|
6724
6727
|
else {
|
6725
|
-
plainTextRepresentation = text;
|
6728
|
+
plainTextRepresentation = unEscapeHtmlCharacters(text);
|
6726
6729
|
}
|
6727
6730
|
break;
|
6728
6731
|
}
|
6729
6732
|
if (foundHtmlTag.type === 'open' || foundHtmlTag.type === 'self-closing') {
|
6730
6733
|
const nextTag = parseOpenTag(foundHtmlTag.content, foundHtmlTag.startIdx);
|
6731
6734
|
// Add the plain text between the last tag and this one found
|
6732
|
-
plainTextRepresentation += text.substring(parseIndex, foundHtmlTag.startIdx);
|
6735
|
+
plainTextRepresentation += unEscapeHtmlCharacters(text.substring(parseIndex, foundHtmlTag.startIdx));
|
6733
6736
|
nextTag.plainTextBeginIndex = plainTextRepresentation.length;
|
6734
6737
|
if (foundHtmlTag.type === 'open') {
|
6735
6738
|
tagParseStack.push(nextTag);
|
@@ -6755,14 +6758,14 @@ const textToTagParser = (text, trigger) => {
|
|
6755
6758
|
plainTextRepresentation.slice(currentOpenTag.plainTextBeginIndex);
|
6756
6759
|
}
|
6757
6760
|
if (!currentOpenTag.subTags) {
|
6758
|
-
plainTextRepresentation += currentOpenTag.content;
|
6761
|
+
plainTextRepresentation += unEscapeHtmlCharacters(currentOpenTag.content);
|
6759
6762
|
}
|
6760
6763
|
else if (currentOpenTag.subTags.length > 0) {
|
6761
6764
|
// Add text after the last tag
|
6762
6765
|
const lastSubTag = currentOpenTag.subTags[currentOpenTag.subTags.length - 1];
|
6763
6766
|
const startOfRemainingText = ((_a = lastSubTag.closingTagIndex) !== null && _a !== void 0 ? _a : lastSubTag.openTagIndex) + lastSubTag.tagType.length + 3;
|
6764
6767
|
const trailingText = currentOpenTag.content.substring(startOfRemainingText);
|
6765
|
-
plainTextRepresentation += trailingText;
|
6768
|
+
plainTextRepresentation += unEscapeHtmlCharacters(trailingText);
|
6766
6769
|
}
|
6767
6770
|
currentOpenTag.plainTextEndIndex = plainTextRepresentation.length;
|
6768
6771
|
addTag(currentOpenTag, tagParseStack, tags);
|
@@ -6850,6 +6853,32 @@ const addTag = (tag, parseStack, tags) => {
|
|
6850
6853
|
}
|
6851
6854
|
}
|
6852
6855
|
};
|
6856
|
+
// We should revisit this in the future when we support other text such as rich text editing.
|
6857
|
+
const escapeHTMLChars = (text) => {
|
6858
|
+
const mentionRegex = new RegExp(`<${MSFT_MENTION_TAG}(.*?)>(.*?)</${MSFT_MENTION_TAG}>`, 'i');
|
6859
|
+
if (!text.match(mentionRegex)) {
|
6860
|
+
return text
|
6861
|
+
.replace(/&(?![A-Z]+;)/gi, '&')
|
6862
|
+
.replace(/</g, '<')
|
6863
|
+
.replace(/>/g, '>');
|
6864
|
+
}
|
6865
|
+
return text;
|
6866
|
+
};
|
6867
|
+
const getChangeDiff = (plainText, startIndex, endIndex) => {
|
6868
|
+
return endIndex - startIndex + getLengthDiffForEscapedHtmlChars(plainText, startIndex, endIndex);
|
6869
|
+
};
|
6870
|
+
const getLengthDiffForEscapedHtmlChars = (text, startIndex, endIndex) => {
|
6871
|
+
var _a, _b;
|
6872
|
+
const subText = text.substring(startIndex, endIndex);
|
6873
|
+
const escapedAngleBracketCount = ((_a = subText.match(/(<)|(>)/g)) === null || _a === void 0 ? void 0 : _a.length) || 0;
|
6874
|
+
let escapedCharLength = escapedAngleBracketCount * ('<'.length - '<'.length);
|
6875
|
+
const escapedAmpersandCount = ((_b = subText.match(/&/g)) === null || _b === void 0 ? void 0 : _b.length) || 0;
|
6876
|
+
escapedCharLength += escapedAmpersandCount * ('&'.length - '&'.length);
|
6877
|
+
return escapedCharLength;
|
6878
|
+
};
|
6879
|
+
const unEscapeHtmlCharacters = (text) => {
|
6880
|
+
return text.replace(/</g, '<').replace(/>/g, '>').replace(/&/g, '&');
|
6881
|
+
};
|
6853
6882
|
|
6854
6883
|
// Copyright (c) Microsoft Corporation.
|
6855
6884
|
/**
|
@@ -7117,13 +7146,11 @@ const TextFieldWithMention = (props) => {
|
|
7117
7146
|
const oldPlainText = inputTextValue;
|
7118
7147
|
const mention = htmlStringForMentionSuggestion(suggestion, localeStrings);
|
7119
7148
|
// update plain text with the mention html text
|
7120
|
-
const newPlainText = inputTextValue.substring(0, currentTriggerStartIndex) + mention + inputTextValue.substring(selectionEnd);
|
7121
7149
|
const triggerText = (_b = mentionLookupOptions === null || mentionLookupOptions === void 0 ? void 0 : mentionLookupOptions.trigger) !== null && _b !== void 0 ? _b : DEFAULT_MENTION_TRIGGER;
|
7122
7150
|
// update html text with updated plain text
|
7123
7151
|
const updatedContent = updateHTML({
|
7124
7152
|
htmlText: textValue,
|
7125
7153
|
oldPlainText,
|
7126
|
-
newPlainText,
|
7127
7154
|
tags: tagsValue,
|
7128
7155
|
startIndex: currentTriggerStartIndex,
|
7129
7156
|
oldPlainTextEndIndex: selectionEnd,
|
@@ -7438,44 +7465,32 @@ const TextFieldWithMention = (props) => {
|
|
7438
7465
|
}
|
7439
7466
|
}
|
7440
7467
|
}
|
7441
|
-
|
7442
|
-
|
7443
|
-
|
7444
|
-
|
7445
|
-
|
7446
|
-
|
7447
|
-
|
7448
|
-
|
7449
|
-
|
7450
|
-
|
7451
|
-
|
7452
|
-
|
7453
|
-
|
7454
|
-
|
7455
|
-
|
7456
|
-
|
7457
|
-
|
7458
|
-
|
7459
|
-
|
7460
|
-
|
7461
|
-
|
7462
|
-
|
7463
|
-
|
7464
|
-
|
7465
|
-
|
7466
|
-
|
7467
|
-
mentionTrigger: triggerText
|
7468
|
-
});
|
7469
|
-
result = updatedContent.updatedHTML;
|
7470
|
-
// update caret index if needed
|
7471
|
-
if (updatedContent.updatedSelectionIndex !== undefined) {
|
7472
|
-
setCaretIndex(updatedContent.updatedSelectionIndex);
|
7473
|
-
setSelectionEndValue(updatedContent.updatedSelectionIndex);
|
7474
|
-
setSelectionStartValue(updatedContent.updatedSelectionIndex);
|
7475
|
-
}
|
7476
|
-
}
|
7477
|
-
onChange && onChange(event, result);
|
7478
|
-
}), [onChange, mentionLookupOptions, setCaretIndex, setCaretPosition, updateMentionSuggestions, debouncedQueryUpdate]);
|
7468
|
+
const { changeStart, oldChangeEnd, newChangeEnd } = findStringsDiffIndexes({
|
7469
|
+
oldText: inputTextValue,
|
7470
|
+
newText: newValue,
|
7471
|
+
previousSelectionStart: previousSelectionStartValue,
|
7472
|
+
previousSelectionEnd: previousSelectionEndValue,
|
7473
|
+
currentSelectionStart: currentSelectionStartValue,
|
7474
|
+
currentSelectionEnd: currentSelectionEndValue
|
7475
|
+
});
|
7476
|
+
const change = newValue.substring(changeStart, newChangeEnd);
|
7477
|
+
const updatedContent = updateHTML({
|
7478
|
+
htmlText: htmlTextValue,
|
7479
|
+
oldPlainText: inputTextValue,
|
7480
|
+
tags: tagsValue,
|
7481
|
+
startIndex: changeStart,
|
7482
|
+
oldPlainTextEndIndex: oldChangeEnd,
|
7483
|
+
change,
|
7484
|
+
mentionTrigger: triggerText
|
7485
|
+
});
|
7486
|
+
// update caret index if needed
|
7487
|
+
if (updatedContent.updatedSelectionIndex !== undefined) {
|
7488
|
+
setCaretIndex(updatedContent.updatedSelectionIndex);
|
7489
|
+
setSelectionEndValue(updatedContent.updatedSelectionIndex);
|
7490
|
+
setSelectionStartValue(updatedContent.updatedSelectionIndex);
|
7491
|
+
}
|
7492
|
+
onChange && onChange(event, updatedContent.updatedHTML);
|
7493
|
+
}), [debouncedQueryUpdate, mentionLookupOptions, onChange, updateMentionSuggestions]);
|
7479
7494
|
// Adjust the selection range based on a mouse / touch interaction
|
7480
7495
|
const handleOnMove = React.useCallback(({ event, selectionStartValue, selectionEndValue, interactionStartSelection, shouldHandleMoveEvent }) => {
|
7481
7496
|
if (shouldHandleMoveEvent &&
|
@@ -10283,6 +10298,7 @@ const ParticipantItem = (props) => {
|
|
10283
10298
|
const theme = useTheme();
|
10284
10299
|
const localeStrings = useLocale$1().strings.participantItem;
|
10285
10300
|
const ids = useIdentifiers();
|
10301
|
+
const uniqueId = React.useId();
|
10286
10302
|
const strings = Object.assign(Object.assign({}, localeStrings), props.strings);
|
10287
10303
|
// For 'me' show empty name so avatar will get 'Person' icon, when there is no name
|
10288
10304
|
const meAvatarText = (displayName === null || displayName === void 0 ? void 0 : displayName.trim()) || '';
|
@@ -10322,7 +10338,7 @@ const ParticipantItem = (props) => {
|
|
10322
10338
|
React__default['default'].createElement(react.Stack, { horizontal: true, className: react.mergeStyles({
|
10323
10339
|
width: `calc(100% - ${!me && participantStateString ? participantStateMaxWidth : menuButtonContainerStyle.width})`,
|
10324
10340
|
alignItems: 'center'
|
10325
|
-
}) },
|
10341
|
+
}), id: uniqueId, "aria-labelledby": `${props.ariaLabelledBy} ${uniqueId}` },
|
10326
10342
|
avatar,
|
10327
10343
|
me && React__default['default'].createElement(react.Text, { className: meTextStyle }, strings.isMeText),
|
10328
10344
|
React__default['default'].createElement(react.Stack, { horizontal: true, className: react.mergeStyles(infoContainerStyle) }, onRenderIcon && onRenderIcon(props))),
|
@@ -10444,7 +10460,7 @@ const iconStyles$2 = react.mergeStyles({
|
|
10444
10460
|
});
|
10445
10461
|
|
10446
10462
|
// Copyright (c) Microsoft Corporation.
|
10447
|
-
const onRenderParticipantDefault = (participant, strings, myUserId, onRenderAvatar, createParticipantMenuItems, styles, onParticipantClick, showParticipantOverflowTooltip) => {
|
10463
|
+
const onRenderParticipantDefault = (participant, strings, myUserId, onRenderAvatar, createParticipantMenuItems, styles, onParticipantClick, showParticipantOverflowTooltip, participantAriaLabelledBy) => {
|
10448
10464
|
const callingParticipant = participant;
|
10449
10465
|
let presence = undefined;
|
10450
10466
|
if (callingParticipant) {
|
@@ -10464,7 +10480,7 @@ const onRenderParticipantDefault = (participant, strings, myUserId, onRenderAvat
|
|
10464
10480
|
return (React__default['default'].createElement(ParticipantItem, { styles: styles, key: participant.userId, userId: participant.userId, displayName: participant.displayName, me: myUserId ? participant.userId === myUserId : false, menuItems: menuItems, presence: presence, onRenderIcon: onRenderIcon, onRenderAvatar: onRenderAvatar, onClick: () => onParticipantClick === null || onParticipantClick === void 0 ? void 0 : onParticipantClick(participant), showParticipantOverflowTooltip: showParticipantOverflowTooltip,
|
10465
10481
|
/* @conditional-compile-remove(one-to-n-calling) */
|
10466
10482
|
/* @conditional-compile-remove(PSTN-calls) */
|
10467
|
-
participantState: callingParticipant.state }));
|
10483
|
+
participantState: callingParticipant.state, ariaLabelledBy: participantAriaLabelledBy }));
|
10468
10484
|
};
|
10469
10485
|
const getParticipantsForDefaultRender = (participants, excludeMe, myUserId) => {
|
10470
10486
|
if (!excludeMe || !myUserId) {
|
@@ -10487,7 +10503,7 @@ const getParticipantsForDefaultRender = (participants, excludeMe, myUserId) => {
|
|
10487
10503
|
*/
|
10488
10504
|
const ParticipantList = (props) => {
|
10489
10505
|
var _a, _b, _c, _d;
|
10490
|
-
const { excludeMe = false, myUserId, participants, onRemoveParticipant, onRenderAvatar, onRenderParticipant, onFetchParticipantMenuItems, showParticipantOverflowTooltip } = props;
|
10506
|
+
const { excludeMe = false, myUserId, participants, onRemoveParticipant, onRenderAvatar, onRenderParticipant, onFetchParticipantMenuItems, showParticipantOverflowTooltip, participantAriaLabelledBy } = props;
|
10491
10507
|
const ids = useIdentifiers();
|
10492
10508
|
const strings = useLocale$1().strings.participantItem;
|
10493
10509
|
const displayedParticipants = React.useMemo(() => {
|
@@ -10525,7 +10541,7 @@ const ParticipantList = (props) => {
|
|
10525
10541
|
const participantItemStyles = React.useMemo(() => { var _a; return react.merge(participantListItemStyle, (_a = props.styles) === null || _a === void 0 ? void 0 : _a.participantItemStyles); }, [(_c = props.styles) === null || _c === void 0 ? void 0 : _c.participantItemStyles]);
|
10526
10542
|
return (React__default['default'].createElement(react.Stack, { "data-ui-id": ids.participantList, className: react.mergeStyles(participantListStyle$1, (_d = props.styles) === null || _d === void 0 ? void 0 : _d.root) }, displayedParticipants.map((participant) => onRenderParticipant
|
10527
10543
|
? onRenderParticipant(participant)
|
10528
|
-
: onRenderParticipantDefault(participant, strings, myUserId, onRenderAvatar, createParticipantMenuItems, participantItemStyles, props.onParticipantClick, showParticipantOverflowTooltip))));
|
10544
|
+
: onRenderParticipantDefault(participant, strings, myUserId, onRenderAvatar, createParticipantMenuItems, participantItemStyles, props.onParticipantClick, showParticipantOverflowTooltip, participantAriaLabelledBy))));
|
10529
10545
|
};
|
10530
10546
|
|
10531
10547
|
// Copyright (c) Microsoft Corporation.
|
@@ -11270,7 +11286,7 @@ const VideoTile = (props) => {
|
|
11270
11286
|
}
|
11271
11287
|
const currentObserver = observer.current;
|
11272
11288
|
return () => currentObserver.disconnect();
|
11273
|
-
}, [
|
11289
|
+
}, [videoTileRef]);
|
11274
11290
|
/* @conditional-compile-remove(pinned-participants) */
|
11275
11291
|
const useLongPressProps = React.useMemo(() => {
|
11276
11292
|
return {
|
@@ -11629,6 +11645,12 @@ const localVideoCameraCycleButtonStyles = (theme) => {
|
|
11629
11645
|
}
|
11630
11646
|
};
|
11631
11647
|
};
|
11648
|
+
/**
|
11649
|
+
* @private
|
11650
|
+
*/
|
11651
|
+
const localVideoTileContainerStyles = {
|
11652
|
+
root: { width: '100%', height: '100%' }
|
11653
|
+
};
|
11632
11654
|
|
11633
11655
|
// Copyright (c) Microsoft Corporation.
|
11634
11656
|
/**
|
@@ -11771,7 +11793,7 @@ const DEFAULT_MAX_OVERFLOW_GALLERY_DOMINANT_SPEAKERS = 6;
|
|
11771
11793
|
const _useOrganizedParticipants = (props) => {
|
11772
11794
|
const visibleGridParticipants = React.useRef([]);
|
11773
11795
|
const visibleOverflowGalleryParticipants = React.useRef([]);
|
11774
|
-
const { remoteParticipants = [], dominantSpeakers = [], maxRemoteVideoStreams, maxOverflowGalleryDominantSpeakers = DEFAULT_MAX_OVERFLOW_GALLERY_DOMINANT_SPEAKERS, isScreenShareActive = false, pinnedParticipantUserIds = [] } = props;
|
11796
|
+
const { remoteParticipants = [], localParticipant, dominantSpeakers = [], maxRemoteVideoStreams, maxOverflowGalleryDominantSpeakers = DEFAULT_MAX_OVERFLOW_GALLERY_DOMINANT_SPEAKERS, isScreenShareActive = false, pinnedParticipantUserIds = [] } = props;
|
11775
11797
|
const videoParticipants = remoteParticipants.filter((p) => { var _a; return (_a = p.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable; });
|
11776
11798
|
visibleGridParticipants.current =
|
11777
11799
|
pinnedParticipantUserIds.length > 0 || isScreenShareActive
|
@@ -11809,7 +11831,13 @@ const _useOrganizedParticipants = (props) => {
|
|
11809
11831
|
]);
|
11810
11832
|
const gridParticipants = getGridParticipants();
|
11811
11833
|
const getOverflowGalleryRemoteParticipants = React.useCallback(() => {
|
11812
|
-
if (isScreenShareActive) {
|
11834
|
+
if (isScreenShareActive && localParticipant) {
|
11835
|
+
const localParticipantPlusOverflow = [localParticipant].concat(visibleGridParticipants.current.concat(visibleOverflowGalleryParticipants.current));
|
11836
|
+
// If screen sharing is active, assign video and audio participants as overflow gallery participants
|
11837
|
+
/* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
|
11838
|
+
return localParticipantPlusOverflow.concat(callingParticipants);
|
11839
|
+
}
|
11840
|
+
else if (isScreenShareActive) {
|
11813
11841
|
// If screen sharing is active, assign video and audio participants as overflow gallery participants
|
11814
11842
|
/* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
|
11815
11843
|
return visibleGridParticipants.current.concat(visibleOverflowGalleryParticipants.current.concat(callingParticipants));
|
@@ -11824,7 +11852,8 @@ const _useOrganizedParticipants = (props) => {
|
|
11824
11852
|
}
|
11825
11853
|
}, [
|
11826
11854
|
/* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ callingParticipants,
|
11827
|
-
isScreenShareActive
|
11855
|
+
isScreenShareActive,
|
11856
|
+
localParticipant
|
11828
11857
|
]);
|
11829
11858
|
const overflowGalleryParticipants = getOverflowGalleryRemoteParticipants();
|
11830
11859
|
return { gridParticipants, overflowGalleryParticipants: overflowGalleryParticipants };
|
@@ -11977,9 +12006,12 @@ const HorizontalGallery = (props) => {
|
|
11977
12006
|
const firstIndexOfCurrentPage = page * childrenPerPage;
|
11978
12007
|
const clippedPage = firstIndexOfCurrentPage < numberOfChildren - 1 ? page : lastPage;
|
11979
12008
|
const childrenOnCurrentPage = React.useMemo(() => {
|
11980
|
-
|
11981
|
-
return
|
11982
|
-
|
12009
|
+
if (indexesArray[0] !== undefined) {
|
12010
|
+
return indexesArray[clippedPage].map((index) => {
|
12011
|
+
return React__default['default'].Children.toArray(children)[index];
|
12012
|
+
});
|
12013
|
+
}
|
12014
|
+
return [];
|
11983
12015
|
}, [indexesArray, clippedPage, children]);
|
11984
12016
|
const showButtons = numberOfChildren > childrenPerPage;
|
11985
12017
|
const disablePreviousButton = page === 0;
|
@@ -12035,10 +12067,13 @@ const LOCAL_VIDEO_TILE_ZINDEX = 2;
|
|
12035
12067
|
/**
|
12036
12068
|
* @private
|
12037
12069
|
*/
|
12038
|
-
const localVideoTileContainerStyle = (theme, localVideoTileSizeRem) => {
|
12070
|
+
const localVideoTileContainerStyle = (theme, localVideoTileSizeRem, screenSharePresent) => {
|
12071
|
+
console.log(screenSharePresent);
|
12039
12072
|
return {
|
12040
|
-
|
12041
|
-
|
12073
|
+
width: screenSharePresent ? `${localVideoTileSizeRem.width}rem` : '',
|
12074
|
+
height: screenSharePresent ? `${localVideoTileSizeRem.height}rem` : '',
|
12075
|
+
minWidth: screenSharePresent ? '' : `${localVideoTileSizeRem.width}rem`,
|
12076
|
+
minHeight: screenSharePresent ? '' : `${localVideoTileSizeRem.height}rem`,
|
12042
12077
|
position: 'absolute',
|
12043
12078
|
bottom: `${localVideoTileOuterPaddingRem}rem`,
|
12044
12079
|
borderRadius: theme.effects.roundedCorner4,
|
@@ -12365,7 +12400,7 @@ const childrenContainerStyle = (pageControlBarHeight) => {
|
|
12365
12400
|
*/
|
12366
12401
|
const rootStyle = {
|
12367
12402
|
height: '100%',
|
12368
|
-
width: '
|
12403
|
+
width: 'inherit',
|
12369
12404
|
gap: `${VERTICAL_GALLERY_GAP}rem`,
|
12370
12405
|
position: 'relative'
|
12371
12406
|
};
|
@@ -12434,9 +12469,12 @@ const VerticalGallery = (props) => {
|
|
12434
12469
|
const firstIndexOfCurrentPage = (page - 1) * childrenPerPage;
|
12435
12470
|
const clippedPage = firstIndexOfCurrentPage < numberOfChildren - 1 ? page : lastPage;
|
12436
12471
|
const childrenOnCurrentPage = React.useMemo(() => {
|
12437
|
-
|
12438
|
-
return
|
12439
|
-
|
12472
|
+
if (indexesArray[0] !== undefined) {
|
12473
|
+
return indexesArray[clippedPage - 1].map((index) => {
|
12474
|
+
return React__default['default'].Children.toArray(children)[index];
|
12475
|
+
});
|
12476
|
+
}
|
12477
|
+
return;
|
12440
12478
|
}, [indexesArray, clippedPage, children]);
|
12441
12479
|
const showButtons = numberOfChildren > childrenPerPage;
|
12442
12480
|
const onPreviousButtonClick = () => {
|
@@ -12520,13 +12558,14 @@ const VerticalGalleryControlBar = (props) => {
|
|
12520
12558
|
* @beta
|
12521
12559
|
*/
|
12522
12560
|
const ResponsiveVerticalGallery = (props) => {
|
12561
|
+
var _a;
|
12523
12562
|
const { children, containerStyles, verticalGalleryStyles, gapHeightRem, controlBarHeightRem, isShort, onFetchTilesToRender, onChildrenPerPageChange } = props;
|
12524
12563
|
const containerRef = React.useRef(null);
|
12525
12564
|
const containerHeight = _useContainerHeight(containerRef);
|
12526
12565
|
const topPadding = containerRef.current ? parseFloat(getComputedStyle(containerRef.current).paddingTop) : 0;
|
12527
12566
|
const bottomPadding = containerRef.current ? parseFloat(getComputedStyle(containerRef.current).paddingBottom) : 0;
|
12528
12567
|
const childrenPerPage = calculateVerticalChildrenPerPage({
|
12529
|
-
numberOfChildren: React__default['default'].Children.count(children),
|
12568
|
+
numberOfChildren: (_a = React__default['default'].Children.count(children)) !== null && _a !== void 0 ? _a : 0,
|
12530
12569
|
containerHeight: (containerHeight !== null && containerHeight !== void 0 ? containerHeight : 0) - topPadding - bottomPadding,
|
12531
12570
|
gapHeightRem,
|
12532
12571
|
controlBarHeight: controlBarHeightRem !== null && controlBarHeightRem !== void 0 ? controlBarHeightRem : 2,
|
@@ -12620,16 +12659,16 @@ const OverflowGallery = (props) => {
|
|
12620
12659
|
]);
|
12621
12660
|
/* @conditional-compile-remove(vertical-gallery) */
|
12622
12661
|
if (overflowGalleryPosition === 'VerticalRight') {
|
12623
|
-
return (React__default['default'].createElement(ResponsiveVerticalGallery, { key: "responsive-vertical-gallery", containerStyles: containerStyles, verticalGalleryStyles: galleryStyles, controlBarHeightRem: HORIZONTAL_GALLERY_BUTTON_WIDTH, gapHeightRem: HORIZONTAL_GALLERY_GAP, isShort: isShort, onFetchTilesToRender: onFetchTilesToRender, onChildrenPerPageChange: onChildrenPerPageChange }, overflowGalleryElements));
|
12662
|
+
return (React__default['default'].createElement(ResponsiveVerticalGallery, { key: "responsive-vertical-gallery", containerStyles: containerStyles, verticalGalleryStyles: galleryStyles, controlBarHeightRem: HORIZONTAL_GALLERY_BUTTON_WIDTH, gapHeightRem: HORIZONTAL_GALLERY_GAP, isShort: isShort, onFetchTilesToRender: onFetchTilesToRender, onChildrenPerPageChange: onChildrenPerPageChange }, overflowGalleryElements ? overflowGalleryElements : [React__default['default'].createElement(React__default['default'].Fragment, null)]));
|
12624
12663
|
}
|
12625
12664
|
/* @conditional-compile-remove(pinned-participants) */
|
12626
12665
|
if (isNarrow) {
|
12627
12666
|
// There are no pages for ScrollableHorizontalGallery so we will approximate the first 3 remote
|
12628
12667
|
// participant tiles are visible
|
12629
12668
|
onChildrenPerPageChange === null || onChildrenPerPageChange === void 0 ? void 0 : onChildrenPerPageChange(3);
|
12630
|
-
return (React__default['default'].createElement(ScrollableHorizontalGallery, { horizontalGalleryElements: overflowGalleryElements, onFetchTilesToRender: onFetchTilesToRender, key: "scrollable-horizontal-gallery" }));
|
12669
|
+
return (React__default['default'].createElement(ScrollableHorizontalGallery, { horizontalGalleryElements: overflowGalleryElements ? overflowGalleryElements : [React__default['default'].createElement(React__default['default'].Fragment, null)], onFetchTilesToRender: onFetchTilesToRender, key: "scrollable-horizontal-gallery" }));
|
12631
12670
|
}
|
12632
|
-
return (React__default['default'].createElement(ResponsiveHorizontalGallery, { key: "responsive-horizontal-gallery", containerStyles: containerStyles, onFetchTilesToRender: onFetchTilesToRender, horizontalGalleryStyles: galleryStyles, buttonWidthRem: HORIZONTAL_GALLERY_BUTTON_WIDTH, gapWidthRem: HORIZONTAL_GALLERY_GAP, onChildrenPerPageChange: onChildrenPerPageChange }, overflowGalleryElements));
|
12671
|
+
return (React__default['default'].createElement(ResponsiveHorizontalGallery, { key: "responsive-horizontal-gallery", containerStyles: containerStyles, onFetchTilesToRender: onFetchTilesToRender, horizontalGalleryStyles: galleryStyles, buttonWidthRem: HORIZONTAL_GALLERY_BUTTON_WIDTH, gapWidthRem: HORIZONTAL_GALLERY_GAP, onChildrenPerPageChange: onChildrenPerPageChange }, overflowGalleryElements ? overflowGalleryElements : [React__default['default'].createElement(React__default['default'].Fragment, null)]));
|
12633
12672
|
};
|
12634
12673
|
|
12635
12674
|
// Copyright (c) Microsoft Corporation.
|
@@ -12640,7 +12679,7 @@ const OverflowGallery = (props) => {
|
|
12640
12679
|
* @private
|
12641
12680
|
*/
|
12642
12681
|
const DefaultLayout = (props) => {
|
12643
|
-
const { remoteParticipants = [], dominantSpeakers, localVideoComponent, screenShareComponent, onRenderRemoteParticipant, styles, maxRemoteVideoStreams, parentWidth,
|
12682
|
+
const { remoteParticipants = [], localParticipant, dominantSpeakers, localVideoComponent, screenShareComponent, onRenderRemoteParticipant, styles, maxRemoteVideoStreams, parentWidth,
|
12644
12683
|
/* @conditional-compile-remove(vertical-gallery) */
|
12645
12684
|
parentHeight, pinnedParticipantUserIds = [],
|
12646
12685
|
/* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition = 'HorizontalBottom' } = props;
|
@@ -12649,14 +12688,16 @@ const DefaultLayout = (props) => {
|
|
12649
12688
|
const isShort = parentHeight ? isShortHeight(parentHeight) : false;
|
12650
12689
|
// This is for tracking the number of children in the first page of overflow gallery.
|
12651
12690
|
// This number will be used for the maxOverflowGalleryDominantSpeakers when organizing the remote participants.
|
12691
|
+
// We need to add the local participant to the pinned participant count so we are placing the speakers correctly.
|
12652
12692
|
const childrenPerPage = React.useRef(4);
|
12653
12693
|
const { gridParticipants, overflowGalleryParticipants } = useOrganizedParticipants({
|
12654
12694
|
remoteParticipants,
|
12695
|
+
localParticipant,
|
12655
12696
|
dominantSpeakers,
|
12656
12697
|
maxRemoteVideoStreams,
|
12657
12698
|
isScreenShareActive: !!screenShareComponent,
|
12658
12699
|
maxOverflowGalleryDominantSpeakers: screenShareComponent
|
12659
|
-
? childrenPerPage.current - (pinnedParticipantUserIds.length % childrenPerPage.current)
|
12700
|
+
? childrenPerPage.current - ((pinnedParticipantUserIds.length + 1) % childrenPerPage.current)
|
12660
12701
|
: childrenPerPage.current,
|
12661
12702
|
/* @conditional-compile-remove(pinned-participants) */ pinnedParticipantUserIds
|
12662
12703
|
});
|
@@ -13501,7 +13542,10 @@ const FloatingLocalVideoLayout = (props) => {
|
|
13501
13542
|
const overflowGalleryTiles = overflowGalleryParticipants.map((p, i) => {
|
13502
13543
|
var _a, _b;
|
13503
13544
|
return onRenderRemoteParticipant(p, maxRemoteVideoStreams && maxRemoteVideoStreams >= 0
|
13504
|
-
? ((_a = p.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable) &&
|
13545
|
+
? ((_a = p.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable) &&
|
13546
|
+
indexesToRender &&
|
13547
|
+
indexesToRender.includes(i) &&
|
13548
|
+
activeVideoStreams++ < maxRemoteVideoStreams
|
13505
13549
|
: (_b = p.videoStream) === null || _b === void 0 ? void 0 : _b.isAvailable);
|
13506
13550
|
});
|
13507
13551
|
const layerHostId = reactHooks.useId('layerhost');
|
@@ -13510,7 +13554,7 @@ const FloatingLocalVideoLayout = (props) => {
|
|
13510
13554
|
return SMALL_FLOATING_MODAL_SIZE_REM;
|
13511
13555
|
}
|
13512
13556
|
/* @conditional-compile-remove(vertical-gallery) */
|
13513
|
-
if (overflowGalleryTiles.length > 0 && overflowGalleryPosition === 'VerticalRight') {
|
13557
|
+
if ((overflowGalleryTiles.length > 0 || screenShareComponent) && overflowGalleryPosition === 'VerticalRight') {
|
13514
13558
|
return isNarrow
|
13515
13559
|
? SMALL_FLOATING_MODAL_SIZE_REM
|
13516
13560
|
: isShort
|
@@ -13518,25 +13562,26 @@ const FloatingLocalVideoLayout = (props) => {
|
|
13518
13562
|
: VERTICAL_GALLERY_FLOATING_MODAL_SIZE_REM;
|
13519
13563
|
}
|
13520
13564
|
/*@conditional-compile-remove(click-to-call) */
|
13521
|
-
if (overflowGalleryTiles.length > 0 && overflowGalleryPosition === 'HorizontalBottom') {
|
13565
|
+
if ((overflowGalleryTiles.length > 0 || screenShareComponent) && overflowGalleryPosition === 'HorizontalBottom') {
|
13522
13566
|
return localVideoTileSize === '16:9' || !isNarrow ? LARGE_FLOATING_MODAL_SIZE_REM : SMALL_FLOATING_MODAL_SIZE_REM;
|
13523
13567
|
}
|
13524
13568
|
return LARGE_FLOATING_MODAL_SIZE_REM;
|
13525
13569
|
}, [
|
13526
13570
|
overflowGalleryTiles.length,
|
13527
13571
|
isNarrow,
|
13572
|
+
screenShareComponent,
|
13528
13573
|
/* @conditional-compile-remove(vertical-gallery) */ isShort,
|
13529
13574
|
/* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition,
|
13530
13575
|
/* @conditional-compile-remove(click-to-call) */ localVideoTileSize
|
13531
13576
|
]);
|
13532
|
-
const wrappedLocalVideoComponent = localVideoComponent && shouldFloatLocalVideo ? (
|
13577
|
+
const wrappedLocalVideoComponent = (localVideoComponent && shouldFloatLocalVideo) || (screenShareComponent && localVideoComponent) ? (
|
13533
13578
|
// When we use showCameraSwitcherInLocalPreview it disables dragging to allow keyboard navigation.
|
13534
13579
|
showCameraSwitcherInLocalPreview ? (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(localVideoTileWithControlsContainerStyle(theme, localVideoSizeRem), {
|
13535
13580
|
boxShadow: theme.effects.elevation8,
|
13536
13581
|
zIndex: LOCAL_VIDEO_TILE_ZINDEX
|
13537
|
-
}) }, localVideoComponent)) : overflowGalleryTiles.length > 0 ? (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(localVideoTileContainerStyle(theme, localVideoSizeRem)) }, localVideoComponent)) : (React__default['default'].createElement(FloatingLocalVideo, { localVideoComponent: localVideoComponent, layerHostId: layerHostId, localVideoSizeRem: localVideoSizeRem, parentWidth: parentWidth, parentHeight: parentHeight }))) : undefined;
|
13582
|
+
}) }, localVideoComponent)) : overflowGalleryTiles.length > 0 || screenShareComponent ? (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(localVideoTileContainerStyle(theme, localVideoSizeRem, !!screenShareComponent)) }, localVideoComponent)) : (React__default['default'].createElement(FloatingLocalVideo, { localVideoComponent: localVideoComponent, layerHostId: layerHostId, localVideoSizeRem: localVideoSizeRem, parentWidth: parentWidth, parentHeight: parentHeight }))) : undefined;
|
13538
13583
|
const overflowGallery = React.useMemo(() => {
|
13539
|
-
if (overflowGalleryTiles.length === 0) {
|
13584
|
+
if (overflowGalleryTiles.length === 0 && !screenShareComponent) {
|
13540
13585
|
return null;
|
13541
13586
|
}
|
13542
13587
|
return (React__default['default'].createElement(OverflowGallery
|
@@ -13553,6 +13598,7 @@ const FloatingLocalVideoLayout = (props) => {
|
|
13553
13598
|
}, [
|
13554
13599
|
isNarrow,
|
13555
13600
|
/* @conditional-compile-remove(vertical-gallery) */ isShort,
|
13601
|
+
screenShareComponent,
|
13556
13602
|
overflowGalleryTiles,
|
13557
13603
|
styles === null || styles === void 0 ? void 0 : styles.horizontalGallery,
|
13558
13604
|
/* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition,
|
@@ -13669,7 +13715,7 @@ const VideoGallery = (props) => {
|
|
13669
13715
|
root: { borderRadius: theme.effects.roundedCorner4 }
|
13670
13716
|
}, styles === null || styles === void 0 ? void 0 : styles.localVideo);
|
13671
13717
|
const initialsName = !localParticipant.displayName ? '' : localParticipant.displayName;
|
13672
|
-
return (React__default['default'].createElement(react.Stack, { key: "local-video-tile-key", tabIndex: 0, "aria-label": strings.localVideoMovementLabel, role: 'dialog' },
|
13718
|
+
return (React__default['default'].createElement(react.Stack, { styles: localVideoTileContainerStyles, key: "local-video-tile-key", tabIndex: 0, "aria-label": strings.localVideoMovementLabel, role: 'dialog' },
|
13673
13719
|
React__default['default'].createElement(_LocalVideoTile, { userId: localParticipant.userId, onCreateLocalStreamView: onCreateLocalStreamView, onDisposeLocalStreamView: onDisposeLocalStreamView, isAvailable: (_a = localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable, isMuted: localParticipant.isMuted, renderElement: (_b = localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.videoStream) === null || _b === void 0 ? void 0 : _b.renderElement, displayName: isNarrow ? '' : strings.localVideoLabel, initialsName: initialsName, localVideoViewOptions: localVideoViewOptions, onRenderAvatar: onRenderAvatar, showLabel: !((shouldFloatLocalVideo && isNarrow) ||
|
13674
13720
|
/*@conditional-compile-remove(click-to-call) */ localVideoTileSize === '9:16'), showMuteIndicator: showMuteIndicator, showCameraSwitcherInLocalPreview: showCameraSwitcherInLocalPreview, localVideoCameraCycleButtonProps: localVideoCameraCycleButtonProps, localVideoCameraSwitcherLabel: strings.localVideoCameraSwitcherLabel, localVideoSelectedDescription: strings.localVideoSelectedDescription, styles: localVideoTileStyles })));
|
13675
13721
|
}, [
|
@@ -13731,11 +13777,13 @@ const VideoGallery = (props) => {
|
|
13731
13777
|
/* @conditional-compile-remove(PSTN-calls) */
|
13732
13778
|
participantState: participant.state,
|
13733
13779
|
/* @conditional-compile-remove(pinned-participants) */
|
13734
|
-
menuKind:
|
13735
|
-
?
|
13736
|
-
|
13737
|
-
|
13738
|
-
|
13780
|
+
menuKind: participant.userId === localParticipant.userId
|
13781
|
+
? undefined
|
13782
|
+
: remoteVideoTileMenuOptions
|
13783
|
+
? remoteVideoTileMenuOptions.kind === 'drawer'
|
13784
|
+
? 'drawer'
|
13785
|
+
: 'contextual'
|
13786
|
+
: undefined,
|
13739
13787
|
/* @conditional-compile-remove(pinned-participants) */
|
13740
13788
|
drawerMenuHostId: drawerMenuHostId,
|
13741
13789
|
/* @conditional-compile-remove(pinned-participants) */
|
@@ -13752,6 +13800,7 @@ const VideoGallery = (props) => {
|
|
13752
13800
|
onCreateRemoteStreamView,
|
13753
13801
|
onDisposeRemoteVideoStreamView,
|
13754
13802
|
remoteVideoViewOptions,
|
13803
|
+
localParticipant,
|
13755
13804
|
onRenderAvatar,
|
13756
13805
|
showMuteIndicator,
|
13757
13806
|
strings,
|
@@ -13772,6 +13821,7 @@ const VideoGallery = (props) => {
|
|
13772
13821
|
: undefined;
|
13773
13822
|
const layoutProps = React.useMemo(() => ({
|
13774
13823
|
remoteParticipants,
|
13824
|
+
localParticipant,
|
13775
13825
|
screenShareComponent,
|
13776
13826
|
showCameraSwitcherInLocalPreview,
|
13777
13827
|
maxRemoteVideoStreams,
|
@@ -13786,6 +13836,7 @@ const VideoGallery = (props) => {
|
|
13786
13836
|
/* @conditional-compile-remove(click-to-call) */ localVideoTileSize
|
13787
13837
|
}), [
|
13788
13838
|
remoteParticipants,
|
13839
|
+
localParticipant,
|
13789
13840
|
screenShareComponent,
|
13790
13841
|
showCameraSwitcherInLocalPreview,
|
13791
13842
|
maxRemoteVideoStreams,
|
@@ -18785,7 +18836,7 @@ const CallCompositeIcon = (props) => (React__default['default'].createElement(re
|
|
18785
18836
|
*/
|
18786
18837
|
const CallWithChatCompositeIcon = (props) => (React__default['default'].createElement(react.FontIcon, Object.assign({}, props)));
|
18787
18838
|
|
18788
|
-
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",deniedPermissionToRoomDetails:"You do not have permission to join this room.",deniedPermissionToRoomTitle:"Permission denied to room",peopleButtonLabel:"People",peoplePaneTitle:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",removeMenuLabel:"Remove",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",roomNotFoundDetails:"Room ID provided is not valid.",roomNotFoundTitle:"Room not found",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:"What language is being spoken?",captionsSettingsDropdownLabel:"Spoken language",captionsSettingsDropdownInfoText:"Language that everyone on this call is speaking.",captionsSettingsConfirmButtonLabel:"Confirm",captionsSettingsCancelButtonLabel:"Cancel",captionsSettingsModalAriaLabel:"Captions Setting Modal",captionsSettingsCloseModalButtonAriaLabel:"Close Captions Setting",captionsBannerMoreButtonCallingLabel:"More",captionsBannerMoreButtonTooltip:"More options",captionsAvailableLanguageStrings:{"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"},captionsBannerSpinnerText:"Starting captions...",transferPageTransferorText:"Transferring...",transferPageTransferTargetText:"Connecting...",transferPageUnknownTransferorDisplayName:"Unknown",transferPageUnknownTransferTargetDisplayName:"Unknown"};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",peopleButtonLabel:"People",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$j,chat:chat$j,callWithChat:callWithChat$j};
|
18839
|
+
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",deniedPermissionToRoomDetails:"You do not have permission to join this room.",deniedPermissionToRoomTitle:"Permission denied to room",peopleButtonLabel:"People",peoplePaneTitle:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",removeMenuLabel:"Remove",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",roomNotFoundDetails:"Room ID provided is not valid.",roomNotFoundTitle:"Room not found",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:"What language is being spoken?",captionsSettingsDropdownLabel:"Spoken language",captionsSettingsDropdownInfoText:"Language that everyone on this call is speaking.",captionsSettingsConfirmButtonLabel:"Confirm",captionsSettingsCancelButtonLabel:"Cancel",captionsSettingsModalAriaLabel:"Captions Setting Modal",captionsSettingsCloseModalButtonAriaLabel:"Close Captions Setting",captionsBannerMoreButtonCallingLabel:"More",captionsBannerMoreButtonTooltip:"More options",captionsAvailableLanguageStrings:{"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"},captionsBannerSpinnerText:"Starting captions...",transferPageTransferorText:"Transferring...",transferPageTransferTargetText:"Connecting...",transferPageUnknownTransferorDisplayName:"Unknown",transferPageUnknownTransferTargetDisplayName:"Unknown",transferPageNoticeString:"You are being transferred"};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",peopleButtonLabel:"People",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$j,chat:chat$j,callWithChat:callWithChat$j};
|
18789
18840
|
|
18790
18841
|
var call$i={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",deniedPermissionToRoomDetails:"You do not have permission to join this room.",deniedPermissionToRoomTitle:"Permission denied to room",peopleButtonLabel:"People",peoplePaneTitle:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",removeMenuLabel:"Remove",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",roomNotFoundDetails:"Room ID provided is not valid.",roomNotFoundTitle:"Room not found",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:"What language is being spoken?",captionsSettingsDropdownLabel:"Spoken language",captionsSettingsDropdownInfoText:"Language that everyone on this call is speaking.",captionsSettingsConfirmButtonLabel:"Confirm",captionsSettingsCancelButtonLabel:"Cancel",captionsSettingsModalAriaLabel:"Captions Setting Modal",captionsSettingsCloseModalButtonAriaLabel:"Close Captions Setting",captionsBannerMoreButtonCallingLabel:"More",captionsBannerMoreButtonTooltip:"More options",captionsAvailableLanguageStrings:{"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"},captionsBannerSpinnerText:"Starting captions...",transferPageTransferorText:"Transferring...",transferPageTransferTargetText:"Connecting...",transferPageUnknownTransferorDisplayName:"Unknown",transferPageUnknownTransferTargetDisplayName:"Unknown"};var chat$i={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$i={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",peopleButtonLabel:"People",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$i,chat:chat$i,callWithChat:callWithChat$i};
|
18791
18842
|
|
@@ -20687,6 +20738,7 @@ const ParticipantContainer = (props) => {
|
|
20687
20738
|
*/
|
20688
20739
|
const ParticipantListWithHeading = (props) => {
|
20689
20740
|
const { onFetchAvatarPersonaData, onFetchParticipantMenuItems, title, participantListProps } = props;
|
20741
|
+
const subheadingUniqueId = React.useId();
|
20690
20742
|
const theme = react.useTheme();
|
20691
20743
|
const subheadingStyleThemed = React.useMemo(() => ({
|
20692
20744
|
root: {
|
@@ -20696,11 +20748,11 @@ const ParticipantListWithHeading = (props) => {
|
|
20696
20748
|
}
|
20697
20749
|
}), [theme.palette.neutralSecondary, theme.fonts.smallPlus.fontSize, props.isMobile]);
|
20698
20750
|
return (React__default['default'].createElement(react.Stack, { className: participantListStack },
|
20699
|
-
React__default['default'].createElement(react.Stack.Item, { styles: subheadingStyleThemed, "aria-label": title }, title),
|
20751
|
+
React__default['default'].createElement(react.Stack.Item, { styles: subheadingStyleThemed, "aria-label": title, id: subheadingUniqueId }, title),
|
20700
20752
|
React__default['default'].createElement(react.FocusZone, { className: participantListContainerStyle, shouldFocusOnMount: true },
|
20701
20753
|
React__default['default'].createElement(ParticipantList, Object.assign({}, participantListProps, { styles: props.isMobile ? participantListMobileStyle : participantListStyle, onRenderAvatar: (userId, options) => (React__default['default'].createElement(React__default['default'].Fragment, null,
|
20702
20754
|
React__default['default'].createElement(AvatarPersona, Object.assign({ "data-ui-id": "chat-composite-participant-custom-avatar", userId: userId }, options, { hidePersonaDetails: !!(options === null || options === void 0 ? void 0 : options.text) }, { dataProvider: onFetchAvatarPersonaData })),
|
20703
|
-
(options === null || options === void 0 ? void 0 : options.text) && (React__default['default'].createElement(react.Text, { nowrap: true, styles: displayNameStyles$1 }, options === null || options === void 0 ? void 0 : options.text)))), onFetchParticipantMenuItems: onFetchParticipantMenuItems, showParticipantOverflowTooltip: !props.isMobile })))));
|
20755
|
+
(options === null || options === void 0 ? void 0 : options.text) && (React__default['default'].createElement(react.Text, { nowrap: true, styles: displayNameStyles$1 }, options === null || options === void 0 ? void 0 : options.text)))), onFetchParticipantMenuItems: onFetchParticipantMenuItems, showParticipantOverflowTooltip: !props.isMobile, participantAriaLabelledBy: subheadingUniqueId })))));
|
20704
20756
|
};
|
20705
20757
|
|
20706
20758
|
// Copyright (c) Microsoft Corporation.
|
@@ -26019,6 +26071,10 @@ const outboundCallStringsTrampoline = (strings) => {
|
|
26019
26071
|
|
26020
26072
|
// Copyright (c) Microsoft Corporation.
|
26021
26073
|
// Licensed under the MIT license.
|
26074
|
+
/**
|
26075
|
+
* @private
|
26076
|
+
*/
|
26077
|
+
const pageContainer = { width: '100%', height: '100%' };
|
26022
26078
|
/**
|
26023
26079
|
* @private
|
26024
26080
|
*/
|
@@ -26079,6 +26135,8 @@ const TransferPage = (props) => {
|
|
26079
26135
|
const remoteParticipants = useSelector$1(getRemoteParticipants);
|
26080
26136
|
/* @conditional-compile-remove(call-transfer) */
|
26081
26137
|
const transferCall = useSelector$1(getTransferCall);
|
26138
|
+
/* @conditional-compile-remove(call-transfer) */
|
26139
|
+
const [announcerString, setAnnouncerString] = React.useState(undefined);
|
26082
26140
|
// Reduce the controls shown when mobile view is enabled.
|
26083
26141
|
const callControlOptions = props.mobileView
|
26084
26142
|
? reduceCallControlsForMobile((_a = props.options) === null || _a === void 0 ? void 0 : _a.callControls)
|
@@ -26093,6 +26151,10 @@ const TransferPage = (props) => {
|
|
26093
26151
|
}
|
26094
26152
|
return 'transferor';
|
26095
26153
|
}, [transferCall, transferTarget === null || transferTarget === void 0 ? void 0 : transferTarget.displayName]);
|
26154
|
+
/* @conditional-compile-remove(call-transfer) */
|
26155
|
+
React.useEffect(() => {
|
26156
|
+
setAnnouncerString(strings.transferPageNoticeString);
|
26157
|
+
}, [strings.transferPageNoticeString]);
|
26096
26158
|
let transferTileParticipant = transferor;
|
26097
26159
|
/* @conditional-compile-remove(call-transfer) */
|
26098
26160
|
if (pageSubject === 'transferTarget') {
|
@@ -26105,16 +26167,19 @@ const TransferPage = (props) => {
|
|
26105
26167
|
transferParticipantDisplayName =
|
26106
26168
|
(_d = transferTarget === null || transferTarget === void 0 ? void 0 : transferTarget.displayName) !== null && _d !== void 0 ? _d : strings.transferPageUnknownTransferTargetDisplayName;
|
26107
26169
|
}
|
26108
|
-
return (React__default['default'].createElement(
|
26109
|
-
|
26110
|
-
|
26111
|
-
|
26112
|
-
|
26113
|
-
|
26114
|
-
|
26115
|
-
|
26116
|
-
|
26117
|
-
|
26170
|
+
return (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(pageContainer) },
|
26171
|
+
/* @conditional-compile-remove(call-transfer) */
|
26172
|
+
React__default['default'].createElement(Announcer$1, { announcementString: announcerString, ariaLive: "polite" }),
|
26173
|
+
React__default['default'].createElement(CallArrangement, { complianceBannerProps: { strings },
|
26174
|
+
// Ignore errors from before current call. This avoids old errors from showing up when a user re-joins a call.
|
26175
|
+
errorBarProps: ((_e = props.options) === null || _e === void 0 ? void 0 : _e.errorBar) !== false && Object.assign(Object.assign({}, errorBarProps), { ignorePremountErrors: true }), callControlProps: {
|
26176
|
+
options: callControlOptions,
|
26177
|
+
increaseFlyoutItemSize: props.mobileView
|
26178
|
+
}, mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, onRenderGalleryContent: () => (React__default['default'].createElement(TransferTile, { userId: transferTileParticipant ? toFlatCommunicationIdentifier(transferTileParticipant === null || transferTileParticipant === void 0 ? void 0 : transferTileParticipant.identifier) : undefined, displayName: transferParticipantDisplayName, initialsName: transferParticipantDisplayName,
|
26179
|
+
/* @conditional-compile-remove(call-transfer) */
|
26180
|
+
statusText: pageSubject === 'transferTarget'
|
26181
|
+
? strings.transferPageTransferTargetText
|
26182
|
+
: strings.transferPageTransferorText, onRenderAvatar: props.onRenderAvatar, onFetchAvatarPersonaData: props.onFetchAvatarPersonaData })), dataUiId: 'transfer-page', updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader })));
|
26118
26183
|
};
|
26119
26184
|
const TransferTile = (props) => {
|
26120
26185
|
const { displayName, initialsName, userId, onRenderAvatar, onFetchAvatarPersonaData, statusText } = props;
|