@azure/communication-react 1.5.1-alpha-202305250013 → 1.5.1-alpha-202305270013
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 +10 -2
- package/dist/dist-cjs/communication-react/index.js +366 -205
- 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-component-bindings/src/baseSelectors.d.ts +2 -0
- package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js +6 -0
- package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/captionsSelector.js +5 -2
- package/dist/dist-esm/calling-component-bindings/src/captionsSelector.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts +4 -0
- package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/CallContext.d.ts +1 -0
- package/dist/dist-esm/calling-stateful-client/src/CallContext.js +9 -0
- package/dist/dist-esm/calling-stateful-client/src/CallContext.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/CallDeclarativeCommon.js +2 -1
- package/dist/dist-esm/calling-stateful-client/src/CallDeclarativeCommon.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/Converter.js +2 -1
- package/dist/dist-esm/calling-stateful-client/src/Converter.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/CaptionsBanner.d.ts +9 -0
- package/dist/dist-esm/react-components/src/components/CaptionsBanner.js +8 -6
- package/dist/dist-esm/react-components/src/components/CaptionsBanner.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/CaptionsSettingsModal.js +11 -4
- package/dist/dist-esm/react-components/src/components/CaptionsSettingsModal.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsEditBox.js +26 -22
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsEditBox.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/DevicesButton.js +9 -0
- package/dist/dist-esm/react-components/src/components/DevicesButton.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/Drawer/DrawerMenu.d.ts +5 -0
- package/dist/dist-esm/react-components/src/components/Drawer/DrawerMenu.js +1 -1
- package/dist/dist-esm/react-components/src/components/Drawer/DrawerMenu.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/Drawer/DrawerSurface.d.ts +5 -0
- package/dist/dist-esm/react-components/src/components/Drawer/DrawerSurface.js +23 -5
- package/dist/dist-esm/react-components/src/components/Drawer/DrawerSurface.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/InputBoxComponent.js +127 -28
- package/dist/dist-esm/react-components/src/components/InputBoxComponent.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/StartCaptionsButton.js +9 -2
- package/dist/dist-esm/react-components/src/components/StartCaptionsButton.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/VideoTile.js +3 -4
- package/dist/dist-esm/react-components/src/components/VideoTile.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/styles/Captions.style.d.ts +4 -0
- package/dist/dist-esm/react-components/src/components/styles/Captions.style.js +6 -0
- package/dist/dist-esm/react-components/src/components/styles/Captions.style.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/styles/ChatMessageComponent.styles.d.ts +10 -0
- package/dist/dist-esm/react-components/src/components/styles/ChatMessageComponent.styles.js +10 -0
- package/dist/dist-esm/react-components/src/components/styles/ChatMessageComponent.styles.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/styles/VideoTile.styles.js +2 -1
- package/dist/dist-esm/react-components/src/components/styles/VideoTile.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/adapter/CallAdapter.d.ts +2 -2
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallReadinessModal.js +3 -3
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallReadinessModal.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js +1 -2
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/index.d.ts +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/index.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/AddPeopleDropdown.js +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/AddPeopleDropdown.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/CallingDialpad.js +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/CallingDialpad.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/CaptionsBanner.js +13 -5
- package/dist/dist-esm/react-composites/src/composites/common/CaptionsBanner.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/CaptionsBannerMoreButton.js +0 -3
- package/dist/dist-esm/react-composites/src/composites/common/CaptionsBannerMoreButton.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/ControlBar/DesktopMoreButton.js +0 -3
- package/dist/dist-esm/react-composites/src/composites/common/ControlBar/DesktopMoreButton.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.js +1 -8
- package/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/Drawer/SpokenLanguageDrawer.styles.js +0 -1
- package/dist/dist-esm/react-composites/src/composites/common/Drawer/SpokenLanguageDrawer.styles.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/SendDtmfDialpad.js +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/SendDtmfDialpad.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.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
@@ -165,7 +165,7 @@ const _toCommunicationIdentifier = (id) => {
|
|
165
165
|
// Copyright (c) Microsoft Corporation.
|
166
166
|
// Licensed under the MIT license.
|
167
167
|
// GENERATED FILE. DO NOT EDIT MANUALLY.
|
168
|
-
var telemetryVersion = '1.5.1-alpha-
|
168
|
+
var telemetryVersion = '1.5.1-alpha-202305270013';
|
169
169
|
|
170
170
|
// Copyright (c) Microsoft Corporation.
|
171
171
|
/**
|
@@ -392,6 +392,12 @@ const getCaptionsStatus = (state, props) => {
|
|
392
392
|
};
|
393
393
|
/* @conditional-compile-remove(close-captions) */
|
394
394
|
/** @private */
|
395
|
+
const getStartCaptionsInProgress = (state, props) => {
|
396
|
+
var _a;
|
397
|
+
return (_a = state.calls[props.callId]) === null || _a === void 0 ? void 0 : _a.captionsFeature.startCaptionsInProgress;
|
398
|
+
};
|
399
|
+
/* @conditional-compile-remove(close-captions) */
|
400
|
+
/** @private */
|
395
401
|
const getCurrentCaptionLanguage = (state, props) => {
|
396
402
|
var _a;
|
397
403
|
return (_a = state.calls[props.callId]) === null || _a === void 0 ? void 0 : _a.captionsFeature.currentCaptionLanguage;
|
@@ -1025,7 +1031,7 @@ const _changeSpokenLanguageSelector = reselect__namespace.createSelector([getSup
|
|
1025
1031
|
*
|
1026
1032
|
* @internal
|
1027
1033
|
*/
|
1028
|
-
const _captionsBannerSelector = reselect__namespace.createSelector([getCaptions, getCaptionsStatus], (captions, isCaptionsFeatureActive) => {
|
1034
|
+
const _captionsBannerSelector = reselect__namespace.createSelector([getCaptions, getCaptionsStatus, getStartCaptionsInProgress], (captions, isCaptionsFeatureActive, startCaptionsInProgress) => {
|
1029
1035
|
// Following Teams app logic, no matter how many 'Partial' captions come,
|
1030
1036
|
// we only pick first one according to start time, and all the other partial captions will be filtered out
|
1031
1037
|
// This will give customers a stable captions experience when others talking over the dominant speaker
|
@@ -1044,7 +1050,8 @@ const _captionsBannerSelector = reselect__namespace.createSelector([getCaptions,
|
|
1044
1050
|
});
|
1045
1051
|
return {
|
1046
1052
|
captions: captionsInfo !== null && captionsInfo !== void 0 ? captionsInfo : [],
|
1047
|
-
isCaptionsOn: isCaptionsFeatureActive !== null && isCaptionsFeatureActive !== void 0 ? isCaptionsFeatureActive : false
|
1053
|
+
isCaptionsOn: isCaptionsFeatureActive !== null && isCaptionsFeatureActive !== void 0 ? isCaptionsFeatureActive : false,
|
1054
|
+
startCaptionsInProgress: startCaptionsInProgress !== null && startCaptionsInProgress !== void 0 ? startCaptionsInProgress : false
|
1048
1055
|
};
|
1049
1056
|
});
|
1050
1057
|
/* @conditional-compile-remove(close-captions) */
|
@@ -1448,7 +1455,8 @@ function convertSdkCallToDeclarativeCall(call) {
|
|
1448
1455
|
supportedCaptionLanguages: [],
|
1449
1456
|
currentCaptionLanguage: '',
|
1450
1457
|
currentSpokenLanguage: '',
|
1451
|
-
isCaptionsFeatureActive: false
|
1458
|
+
isCaptionsFeatureActive: false,
|
1459
|
+
startCaptionsInProgress: false
|
1452
1460
|
}
|
1453
1461
|
};
|
1454
1462
|
}
|
@@ -2101,6 +2109,15 @@ class CallContext$2 {
|
|
2101
2109
|
});
|
2102
2110
|
}
|
2103
2111
|
/* @conditional-compile-remove(close-captions) */
|
2112
|
+
setStartCaptionsInProgress(callId, startCaptionsInProgress) {
|
2113
|
+
this.modifyState((draft) => {
|
2114
|
+
const call = draft.calls[this._callIdHistory.latestCallId(callId)];
|
2115
|
+
if (call) {
|
2116
|
+
call.captionsFeature.startCaptionsInProgress = startCaptionsInProgress;
|
2117
|
+
}
|
2118
|
+
});
|
2119
|
+
}
|
2120
|
+
/* @conditional-compile-remove(close-captions) */
|
2104
2121
|
setSelectedSpokenLanguage(callId, spokenLanguage) {
|
2105
2122
|
this.modifyState((draft) => {
|
2106
2123
|
const call = draft.calls[this._callIdHistory.latestCallId(callId)];
|
@@ -3690,8 +3707,8 @@ class ProxyTeamsCaptionsFeature {
|
|
3690
3707
|
case 'startCaptions':
|
3691
3708
|
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$B(this, void 0, void 0, function* () {
|
3692
3709
|
var _a, _b;
|
3710
|
+
this._context.setStartCaptionsInProgress(this._call.id, true);
|
3693
3711
|
const ret = yield target.startCaptions(...args);
|
3694
|
-
this._context.setIsCaptionActive(this._call.id, true);
|
3695
3712
|
this._context.setSelectedSpokenLanguage(this._call.id, (_b = (_a = args[0]) === null || _a === void 0 ? void 0 : _a.spokenLanguage) !== null && _b !== void 0 ? _b : 'en-us');
|
3696
3713
|
return ret;
|
3697
3714
|
}), 'Call.feature');
|
@@ -3699,6 +3716,7 @@ class ProxyTeamsCaptionsFeature {
|
|
3699
3716
|
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$B(this, void 0, void 0, function* () {
|
3700
3717
|
const ret = yield target.stopCaptions(...args);
|
3701
3718
|
this._context.setIsCaptionActive(this._call.id, false);
|
3719
|
+
this._context.setStartCaptionsInProgress(this._call.id, false);
|
3702
3720
|
return ret;
|
3703
3721
|
}), 'Call.feature');
|
3704
3722
|
case 'setSpokenLanguage':
|
@@ -5028,7 +5046,7 @@ function chunk(options, itemsPerRow) {
|
|
5028
5046
|
/**
|
5029
5047
|
* @private
|
5030
5048
|
*/
|
5031
|
-
const defaultSpokenLanguage
|
5049
|
+
const defaultSpokenLanguage = 'en-us';
|
5032
5050
|
|
5033
5051
|
// Copyright (c) Microsoft Corporation.
|
5034
5052
|
/**
|
@@ -6068,9 +6086,17 @@ const InputBoxComponent = (props) => {
|
|
6068
6086
|
// Index of the previous selection end in the text field
|
6069
6087
|
const [selectionEndValue, setSelectionEndValue] = React.useState(null);
|
6070
6088
|
/* @conditional-compile-remove(mention) */
|
6071
|
-
// Boolean value to check if onMouseDown event should be handled during select as selection range
|
6089
|
+
// Boolean value to check if onMouseDown event should be handled during select as selection range
|
6090
|
+
// for onMouseDown event is not updated yet and the selection range for mouse click/taps will be
|
6091
|
+
// updated in onSelect event if needed.
|
6072
6092
|
const [shouldHandleOnMouseDownDuringSelect, setShouldHandleOnMouseDownDuringSelect] = React.useState(true);
|
6073
6093
|
/* @conditional-compile-remove(mention) */
|
6094
|
+
// Point of start of touch/mouse selection
|
6095
|
+
const [interactionStartPoint, setInteractionStartPoint] = React.useState();
|
6096
|
+
/* @conditional-compile-remove(mention) */
|
6097
|
+
// Target selection from mouse movement
|
6098
|
+
const [targetSelection, setTargetSelection] = React.useState();
|
6099
|
+
/* @conditional-compile-remove(mention) */
|
6074
6100
|
// Caret position in the text field
|
6075
6101
|
const [caretPosition, setCaretPosition] = React.useState(undefined);
|
6076
6102
|
/* @conditional-compile-remove(mention) */
|
@@ -6239,10 +6265,6 @@ const InputBoxComponent = (props) => {
|
|
6239
6265
|
/* @conditional-compile-remove(mention) */
|
6240
6266
|
const debouncedQueryUpdate = useDebounce.useDebouncedCallback((query) => __awaiter$w(void 0, void 0, void 0, function* () {
|
6241
6267
|
var _a;
|
6242
|
-
if (query === undefined) {
|
6243
|
-
updateMentionSuggestions([]);
|
6244
|
-
return;
|
6245
|
-
}
|
6246
6268
|
const suggestions = (_a = (yield (mentionLookupOptions === null || mentionLookupOptions === void 0 ? void 0 : mentionLookupOptions.onQueryUpdated(query)))) !== null && _a !== void 0 ? _a : [];
|
6247
6269
|
if (suggestions.length === 0) {
|
6248
6270
|
setActiveSuggestionIndex(undefined);
|
@@ -6332,33 +6354,54 @@ const InputBoxComponent = (props) => {
|
|
6332
6354
|
}, [setSelectionStartValue, setSelectionEndValue]);
|
6333
6355
|
/* @conditional-compile-remove(mention) */
|
6334
6356
|
const handleOnSelect = React.useCallback((event, inputTextValue, tags, shouldHandleOnMouseDownDuringSelect, selectionStartValue, selectionEndValue) => {
|
6335
|
-
|
6336
|
-
|
6337
|
-
|
6338
|
-
|
6339
|
-
|
6340
|
-
|
6341
|
-
|
6342
|
-
|
6343
|
-
|
6357
|
+
if (shouldHandleOnMouseDownDuringSelect) {
|
6358
|
+
if (targetSelection !== undefined) {
|
6359
|
+
setSelectionStartValue(targetSelection.start);
|
6360
|
+
setSelectionEndValue(targetSelection.end);
|
6361
|
+
event.currentTarget.setSelectionRange(targetSelection.start, targetSelection.end);
|
6362
|
+
setTargetSelection(undefined);
|
6363
|
+
}
|
6364
|
+
else if (event.currentTarget.selectionStart !== null) {
|
6365
|
+
// on select was triggered by mouse down/up with no movement
|
6366
|
+
const mentionTag = findMentionTagForSelection(tags, event.currentTarget.selectionStart);
|
6367
|
+
if (mentionTag !== undefined && mentionTag.plainTextBeginIndex !== undefined) {
|
6368
|
+
// handle mention click
|
6369
|
+
// Get range of word that was clicked on
|
6370
|
+
const selectionRange = rangeOfWordInSelection({
|
6371
|
+
textInput: inputTextValue,
|
6372
|
+
selectionStart: event.currentTarget.selectionStart,
|
6373
|
+
selectionEnd: event.currentTarget.selectionEnd,
|
6374
|
+
tag: mentionTag
|
6375
|
+
});
|
6376
|
+
if (event.currentTarget.selectionDirection === null) {
|
6377
|
+
event.currentTarget.setSelectionRange(selectionRange.start, selectionRange.end);
|
6378
|
+
}
|
6379
|
+
else {
|
6380
|
+
event.currentTarget.setSelectionRange(selectionRange.start, selectionRange.end, event.currentTarget.selectionDirection);
|
6381
|
+
}
|
6382
|
+
setSelectionStartValue(selectionRange.start);
|
6383
|
+
setSelectionEndValue(selectionRange.end);
|
6344
6384
|
}
|
6345
6385
|
else {
|
6346
|
-
|
6386
|
+
setSelectionStartValue(event.currentTarget.selectionStart);
|
6387
|
+
setSelectionEndValue(event.currentTarget.selectionEnd);
|
6347
6388
|
}
|
6348
|
-
setSelectionStartValue(mentionTag.plainTextBeginIndex);
|
6349
|
-
setSelectionEndValue((_c = mentionTag.plainTextEndIndex) !== null && _c !== void 0 ? _c : mentionTag.plainTextBeginIndex);
|
6350
|
-
}
|
6351
|
-
else {
|
6352
|
-
setSelectionStartValue(event.currentTarget.selectionStart);
|
6353
|
-
setSelectionEndValue(event.currentTarget.selectionEnd);
|
6354
6389
|
}
|
6355
6390
|
}
|
6356
6391
|
else {
|
6357
6392
|
// selection was changed by keyboard
|
6358
6393
|
updateSelectionIndexesWithMentionIfNeeded(event, inputTextValue, selectionStartValue, selectionEndValue, tags);
|
6359
6394
|
}
|
6360
|
-
// don't set setShouldHandleOnMouseDownDuringSelect(false) here as setSelectionRange
|
6361
|
-
|
6395
|
+
// don't set setShouldHandleOnMouseDownDuringSelect(false) here as setSelectionRange
|
6396
|
+
// could trigger additional calls of onSelect event and they may not be handled correctly
|
6397
|
+
// (because of setSelectionRange calls or rerender)
|
6398
|
+
}, [
|
6399
|
+
updateSelectionIndexesWithMentionIfNeeded,
|
6400
|
+
targetSelection,
|
6401
|
+
setTargetSelection,
|
6402
|
+
setSelectionStartValue,
|
6403
|
+
setSelectionEndValue
|
6404
|
+
]);
|
6362
6405
|
/* @conditional-compile-remove(mention) */
|
6363
6406
|
const handleOnChange = React.useCallback((event, tagsValue, htmlTextValue, inputTextValue, currentTriggerStartIndex, previousSelectionStart, previousSelectionEnd, currentSelectionStart, currentSelectionEnd, updatedValue) => __awaiter$w(void 0, void 0, void 0, function* () {
|
6364
6407
|
var _b;
|
@@ -6417,7 +6460,7 @@ const InputBoxComponent = (props) => {
|
|
6417
6460
|
setCurrentTriggerStartIndex(tagIndex);
|
6418
6461
|
}
|
6419
6462
|
if (tagIndex === -1) {
|
6420
|
-
|
6463
|
+
updateMentionSuggestions([]);
|
6421
6464
|
}
|
6422
6465
|
else {
|
6423
6466
|
// In the middle of a @mention lookup
|
@@ -6467,11 +6510,43 @@ const InputBoxComponent = (props) => {
|
|
6467
6510
|
}
|
6468
6511
|
}
|
6469
6512
|
onChange && onChange(event, result);
|
6470
|
-
}), [onChange, mentionLookupOptions, setCaretIndex, setCaretPosition, debouncedQueryUpdate]);
|
6513
|
+
}), [onChange, mentionLookupOptions, setCaretIndex, setCaretPosition, updateMentionSuggestions, debouncedQueryUpdate]);
|
6471
6514
|
const getInputFieldTextValue = () => {
|
6472
6515
|
/* @conditional-compile-remove(mention) */
|
6473
6516
|
return inputTextValue;
|
6474
6517
|
};
|
6518
|
+
/* @conditional-compile-remove(mention) */
|
6519
|
+
// Adjust the selection range based on a mouse / touch interaction
|
6520
|
+
const handleOnMove = React.useCallback((event) => {
|
6521
|
+
var _a;
|
6522
|
+
let targetStart = event.currentTarget.selectionStart;
|
6523
|
+
let targetEnd = event.currentTarget.selectionEnd;
|
6524
|
+
// Should we do anything?
|
6525
|
+
if (interactionStartPoint !== undefined &&
|
6526
|
+
// And did selection change?
|
6527
|
+
targetStart !== null &&
|
6528
|
+
(targetStart !== (targetSelection === null || targetSelection === void 0 ? void 0 : targetSelection.start) || targetEnd !== (targetSelection === null || targetSelection === void 0 ? void 0 : targetSelection.end))) {
|
6529
|
+
const direction = event.clientX > interactionStartPoint.x ? 'forward' : 'backward';
|
6530
|
+
const mentionTag = findMentionTagForSelection(tagsValue, direction === 'backward'
|
6531
|
+
? event.currentTarget.selectionStart
|
6532
|
+
: (_a = event.currentTarget.selectionEnd) !== null && _a !== void 0 ? _a : event.currentTarget.selectionStart);
|
6533
|
+
let updateCurrentTarget = false;
|
6534
|
+
if (mentionTag !== undefined && mentionTag.plainTextBeginIndex !== undefined) {
|
6535
|
+
targetStart = Math.min(mentionTag.plainTextBeginIndex, targetStart);
|
6536
|
+
if (mentionTag.plainTextEndIndex !== undefined && targetEnd !== null) {
|
6537
|
+
targetEnd = Math.max(mentionTag.plainTextEndIndex, targetEnd);
|
6538
|
+
}
|
6539
|
+
updateCurrentTarget = true;
|
6540
|
+
setShouldHandleOnMouseDownDuringSelect(false);
|
6541
|
+
}
|
6542
|
+
// Update selection range
|
6543
|
+
setTargetSelection({ start: targetStart, end: targetEnd });
|
6544
|
+
if (updateCurrentTarget) {
|
6545
|
+
// Only set the control, if the values are updated
|
6546
|
+
event.currentTarget.setSelectionRange(targetStart, targetEnd, direction);
|
6547
|
+
}
|
6548
|
+
}
|
6549
|
+
}, [setTargetSelection, targetSelection, setShouldHandleOnMouseDownDuringSelect, interactionStartPoint, tagsValue]);
|
6475
6550
|
return (React__default['default'].createElement(react.Stack, { className: mergedRootStyle },
|
6476
6551
|
React__default['default'].createElement("div", { className: mergedTextContainerStyle },
|
6477
6552
|
/* @conditional-compile-remove(mention) */ mentionSuggestions.length > 0 && (React__default['default'].createElement(_MentionPopover, { suggestions: mentionSuggestions, activeSuggestionIndex: activeSuggestionIndex, target: inputBoxRef, targetPositionOffset: caretPosition, onRenderSuggestionItem: mentionLookupOptions === null || mentionLookupOptions === void 0 ? void 0 : mentionLookupOptions.onRenderSuggestionItem, onSuggestionSelected: onSuggestionSelected, onDismiss: () => {
|
@@ -6503,8 +6578,9 @@ const InputBoxComponent = (props) => {
|
|
6503
6578
|
handleOnSelect(e, inputTextValue, tagsValue, shouldHandleOnMouseDownDuringSelect, selectionStartValue, selectionEndValue);
|
6504
6579
|
},
|
6505
6580
|
/* @conditional-compile-remove(mention) */
|
6506
|
-
onMouseDown: () => {
|
6507
|
-
|
6581
|
+
onMouseDown: (e) => {
|
6582
|
+
setInteractionStartPoint({ x: e.clientX, y: e.clientY });
|
6583
|
+
// as events order is onMouseDown -> onMouseMove -> onMouseUp -> onSelect -> onClick
|
6508
6584
|
// onClick and onMouseDown can't handle clicking on mention event because
|
6509
6585
|
// onMouseDown doesn't have correct selectionRange yet and
|
6510
6586
|
// onClick already has wrong range as it's called after onSelect that updates the selection range
|
@@ -6512,11 +6588,27 @@ const InputBoxComponent = (props) => {
|
|
6512
6588
|
setShouldHandleOnMouseDownDuringSelect(true);
|
6513
6589
|
},
|
6514
6590
|
/* @conditional-compile-remove(mention) */
|
6515
|
-
|
6591
|
+
onMouseMove: handleOnMove,
|
6592
|
+
/* @conditional-compile-remove(mention) */
|
6593
|
+
onMouseUp: () => {
|
6594
|
+
setInteractionStartPoint(undefined);
|
6595
|
+
},
|
6596
|
+
/* @conditional-compile-remove(mention) */
|
6597
|
+
onTouchStart: (e) => {
|
6598
|
+
setInteractionStartPoint({
|
6599
|
+
x: e.targetTouches.item(0).clientX,
|
6600
|
+
y: e.targetTouches.item(0).clientY
|
6601
|
+
});
|
6516
6602
|
// see onMouseDown for more details
|
6517
6603
|
setShouldHandleOnMouseDownDuringSelect(true);
|
6518
6604
|
},
|
6519
6605
|
/* @conditional-compile-remove(mention) */
|
6606
|
+
onTouchMove: handleOnMove,
|
6607
|
+
/* @conditional-compile-remove(mention) */
|
6608
|
+
onTouchEnd: () => {
|
6609
|
+
setInteractionStartPoint(undefined);
|
6610
|
+
},
|
6611
|
+
/* @conditional-compile-remove(mention) */
|
6520
6612
|
onBlur: () => {
|
6521
6613
|
// setup all flags to default values when text field loses focus
|
6522
6614
|
setShouldHandleOnMouseDownDuringSelect(false);
|
@@ -6602,6 +6694,31 @@ const findMentionTagForSelection = (tags, selection) => {
|
|
6602
6694
|
return mentionTag;
|
6603
6695
|
};
|
6604
6696
|
/* @conditional-compile-remove(mention) */
|
6697
|
+
const rangeOfWordInSelection = ({ textInput, selectionStart, selectionEnd, tag }) => {
|
6698
|
+
var _a;
|
6699
|
+
if (tag.plainTextBeginIndex === undefined) {
|
6700
|
+
return { start: selectionStart, end: selectionEnd === null ? selectionStart : selectionEnd };
|
6701
|
+
}
|
6702
|
+
// Look at start word index and optionally end word index.
|
6703
|
+
// Select combination of the two and return the range.
|
6704
|
+
let start = selectionStart;
|
6705
|
+
let end = selectionEnd === null ? selectionStart : selectionEnd;
|
6706
|
+
const firstWordStartIndex = textInput.lastIndexOf(' ', selectionStart);
|
6707
|
+
if (firstWordStartIndex === tag.plainTextBeginIndex) {
|
6708
|
+
start = firstWordStartIndex;
|
6709
|
+
}
|
6710
|
+
else {
|
6711
|
+
start = Math.max(firstWordStartIndex + 1, tag.plainTextBeginIndex);
|
6712
|
+
}
|
6713
|
+
const firstWordEndIndex = textInput.indexOf(' ', selectionStart);
|
6714
|
+
end = Math.max(firstWordEndIndex + 1, (_a = tag.plainTextEndIndex) !== null && _a !== void 0 ? _a : firstWordEndIndex + 1);
|
6715
|
+
if (selectionEnd !== null && tag.plainTextEndIndex !== undefined) {
|
6716
|
+
const lastWordEndIndex = textInput.indexOf(' ', selectionEnd);
|
6717
|
+
end = Math.max(lastWordEndIndex > -1 ? lastWordEndIndex : tag.plainTextEndIndex, selectionEnd);
|
6718
|
+
}
|
6719
|
+
return { start, end };
|
6720
|
+
};
|
6721
|
+
/* @conditional-compile-remove(mention) */
|
6605
6722
|
/**
|
6606
6723
|
* Find a new the selection index.
|
6607
6724
|
*
|
@@ -8159,6 +8276,16 @@ const chatMessageMenuStyle = react.mergeStyles({
|
|
8159
8276
|
cursor: 'pointer',
|
8160
8277
|
overflow: 'hidden'
|
8161
8278
|
});
|
8279
|
+
/**
|
8280
|
+
* @private
|
8281
|
+
*/
|
8282
|
+
const chatMessageEditContainerStyle = {
|
8283
|
+
margin: 0,
|
8284
|
+
padding: 0,
|
8285
|
+
maxWidth: 'unset',
|
8286
|
+
minWidth: 'unset',
|
8287
|
+
backgroundColor: 'transparent'
|
8288
|
+
};
|
8162
8289
|
/**
|
8163
8290
|
* Styles that can be applied to ensure flyout items have the minimum touch target size.
|
8164
8291
|
*
|
@@ -8247,31 +8374,34 @@ const ChatMessageComponentAsEditBox = (props) => {
|
|
8247
8374
|
setAttachedFilesMetadata(attachedFilesMetadata === null || attachedFilesMetadata === void 0 ? void 0 : attachedFilesMetadata.filter((file) => file.name !== fileId));
|
8248
8375
|
} }))));
|
8249
8376
|
}, [attachedFilesMetadata]);
|
8250
|
-
|
8251
|
-
|
8252
|
-
|
8253
|
-
|
8254
|
-
|
8255
|
-
|
8256
|
-
|
8257
|
-
onSubmit(textValue, message.metadata, {
|
8258
|
-
attachedFilesMetadata
|
8259
|
-
});
|
8260
|
-
}, supportNewline: false, maxLength: MAXIMUM_LENGTH_OF_MESSAGE, errorMessage: textTooLongMessage, styles: editBoxStyles,
|
8261
|
-
/* @conditional-compile-remove(mention) */
|
8262
|
-
mentionLookupOptions: mentionLookupOptions },
|
8263
|
-
React__default['default'].createElement(InputBoxButton, { className: editingButtonStyle, ariaLabel: strings.editBoxCancelButton, tooltipContent: strings.editBoxCancelButton, onRenderIcon: onRenderThemedCancelIcon, onClick: () => {
|
8264
|
-
onCancel && onCancel(message.messageId);
|
8265
|
-
}, id: 'dismissIconWrapper' }),
|
8266
|
-
React__default['default'].createElement(InputBoxButton, { className: editingButtonStyle, ariaLabel: strings.editBoxSubmitButton, tooltipContent: strings.editBoxSubmitButton, onRenderIcon: onRenderThemedSubmitIcon, onClick: (e) => {
|
8377
|
+
const getContent = () => {
|
8378
|
+
return (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(borderAndBoxShadowStyle({
|
8379
|
+
theme,
|
8380
|
+
hasErrorMessage: message.failureReason !== undefined,
|
8381
|
+
disabled: false
|
8382
|
+
})) },
|
8383
|
+
React__default['default'].createElement(InputBoxComponent, { inlineChildren: props.inlineEditButtons, id: 'editbox', textFieldRef: editTextFieldRef, inputClassName: editBoxStyle(props.inlineEditButtons), placeholderText: strings.editBoxPlaceholderText, textValue: textValue, onChange: setText, onEnterKeyDown: () => {
|
8267
8384
|
submitEnabled &&
|
8268
8385
|
onSubmit(textValue, message.metadata, {
|
8269
8386
|
attachedFilesMetadata
|
8270
8387
|
});
|
8271
|
-
|
8272
|
-
|
8273
|
-
|
8274
|
-
|
8388
|
+
}, supportNewline: false, maxLength: MAXIMUM_LENGTH_OF_MESSAGE, errorMessage: textTooLongMessage, styles: editBoxStyles,
|
8389
|
+
/* @conditional-compile-remove(mention) */
|
8390
|
+
mentionLookupOptions: mentionLookupOptions },
|
8391
|
+
React__default['default'].createElement(InputBoxButton, { className: editingButtonStyle, ariaLabel: strings.editBoxCancelButton, tooltipContent: strings.editBoxCancelButton, onRenderIcon: onRenderThemedCancelIcon, onClick: () => {
|
8392
|
+
onCancel && onCancel(message.messageId);
|
8393
|
+
}, id: 'dismissIconWrapper' }),
|
8394
|
+
React__default['default'].createElement(InputBoxButton, { className: editingButtonStyle, ariaLabel: strings.editBoxSubmitButton, tooltipContent: strings.editBoxSubmitButton, onRenderIcon: onRenderThemedSubmitIcon, onClick: (e) => {
|
8395
|
+
submitEnabled &&
|
8396
|
+
onSubmit(textValue, message.metadata, {
|
8397
|
+
attachedFilesMetadata
|
8398
|
+
});
|
8399
|
+
e.stopPropagation();
|
8400
|
+
}, id: 'submitIconWrapper' })),
|
8401
|
+
message.failureReason && (React__default['default'].createElement("div", { className: react.mergeStyles(chatMessageFailedTagStyle(theme), { padding: '0.5rem' }) }, message.failureReason)),
|
8402
|
+
onRenderFileUploads()));
|
8403
|
+
};
|
8404
|
+
return React__default['default'].createElement(i.Message, { styles: chatMessageEditContainerStyle, content: getContent() });
|
8275
8405
|
};
|
8276
8406
|
const isMessageTooLong = (messageText) => messageText.length > MAXIMUM_LENGTH_OF_MESSAGE;
|
8277
8407
|
const isMessageEmpty = (messageText, attachedFilesMetadata) => messageText.trim().length === 0 && attachedFilesMetadata.length === 0;
|
@@ -10285,10 +10415,13 @@ const lightDismissContainerStyles = { root: { height: '100%' } };
|
|
10285
10415
|
* @internal
|
10286
10416
|
*/
|
10287
10417
|
const _DrawerSurface = (props) => {
|
10288
|
-
var _a, _b, _c;
|
10289
|
-
const rootStyles =
|
10418
|
+
var _a, _b, _c, _d;
|
10419
|
+
const rootStyles = props.disableMaxHeight
|
10420
|
+
? react.mergeStyles(drawerSurfaceStyles, (_a = props.styles) === null || _a === void 0 ? void 0 : _a.root)
|
10421
|
+
: react.mergeStyles(drawerSurfaceStyles, focusTrapZoneStyles, (_b = props.styles) === null || _b === void 0 ? void 0 : _b.root);
|
10422
|
+
const containerStyles = react.mergeStyleSets(drawerContentContainerStyles, (_c = props.styles) === null || _c === void 0 ? void 0 : _c.drawerContentContainer);
|
10290
10423
|
return (React__default['default'].createElement(react.Stack, { className: rootStyles },
|
10291
|
-
React__default['default'].createElement(DrawerLightDismiss, { styles: (
|
10424
|
+
React__default['default'].createElement(DrawerLightDismiss, { styles: (_d = props.styles) === null || _d === void 0 ? void 0 : _d.lightDismissRoot, onDismiss: props.onLightDismiss }),
|
10292
10425
|
React__default['default'].createElement(react.FocusTrapZone, { onKeyDown: (e) => {
|
10293
10426
|
if (e.key === 'Escape' || e.key === 'Esc') {
|
10294
10427
|
props.onLightDismiss && props.onLightDismiss();
|
@@ -10297,13 +10430,28 @@ const _DrawerSurface = (props) => {
|
|
10297
10430
|
// Ensure when the focus trap has focus, the light dismiss area can still be clicked with mouse to dismiss.
|
10298
10431
|
// Note: this still correctly captures keyboard focus, this just allows mouse click outside of the focus trap.
|
10299
10432
|
isClickableOutsideFocusTrap: true },
|
10300
|
-
React__default['default'].createElement(DrawerContentContainer, { styles:
|
10433
|
+
React__default['default'].createElement(DrawerContentContainer, { styles: containerStyles, heading: props.heading }, props.children))));
|
10301
10434
|
};
|
10302
10435
|
const drawerSurfaceStyles = {
|
10303
10436
|
width: '100%',
|
10304
10437
|
height: '100%',
|
10305
10438
|
background: 'rgba(0,0,0,0.4)'
|
10306
10439
|
};
|
10440
|
+
const focusTrapZoneStyles = {
|
10441
|
+
// Targets FocusTrapZone in drawer.
|
10442
|
+
// Setting percentage to Height to transform a container does not work unless the
|
10443
|
+
// direct parent container also has a Height set other than 'auto'.
|
10444
|
+
'> div:nth-child(2)': {
|
10445
|
+
maxHeight: '75%',
|
10446
|
+
overflow: 'auto'
|
10447
|
+
}
|
10448
|
+
};
|
10449
|
+
const drawerContentContainerStyles = {
|
10450
|
+
root: {
|
10451
|
+
// Needed to fill max height from parent, drawerSurfaceStyles
|
10452
|
+
height: '100%'
|
10453
|
+
}
|
10454
|
+
};
|
10307
10455
|
|
10308
10456
|
// Copyright (c) Microsoft Corporation.
|
10309
10457
|
/**
|
@@ -10344,7 +10492,7 @@ const _DrawerMenu = (props) => {
|
|
10344
10492
|
borderTopLeftRadius: borderRadius
|
10345
10493
|
}
|
10346
10494
|
}), [firstItemStyle, borderRadius]);
|
10347
|
-
return (React__default['default'].createElement(_DrawerSurface, { styles: (_b = props.styles) === null || _b === void 0 ? void 0 : _b.drawerSurfaceStyles, onLightDismiss: props.onLightDismiss, heading: props.heading },
|
10495
|
+
return (React__default['default'].createElement(_DrawerSurface, { disableMaxHeight: props.disableMaxHeight, styles: (_b = props.styles) === null || _b === void 0 ? void 0 : _b.drawerSurfaceStyles, onLightDismiss: props.onLightDismiss, heading: props.heading },
|
10348
10496
|
React__default['default'].createElement(react.Stack, { styles: props.styles, role: "menu", "data-ui-id": "drawer-menu" }, menuItemsToRender === null || menuItemsToRender === void 0 ? void 0 :
|
10349
10497
|
menuItemsToRender.slice(0, 1).map((item) => (React__default['default'].createElement(DrawerMenuItem, Object.assign({}, item, { key: '0', styles: modifiedFirstItemStyle, onItemClick: (ev, itemKey) => {
|
10350
10498
|
onItemClick(item, ev, itemKey);
|
@@ -10703,7 +10851,8 @@ const moreButtonStyles = {
|
|
10703
10851
|
zIndex: 1,
|
10704
10852
|
color: 'inherit',
|
10705
10853
|
top: '-0.125rem',
|
10706
|
-
height: '100%'
|
10854
|
+
height: '100%',
|
10855
|
+
padding: '0rem'
|
10707
10856
|
},
|
10708
10857
|
rootHovered: {
|
10709
10858
|
background: 'none'
|
@@ -10825,8 +10974,7 @@ const DEFAULT_PERSONA_MIN_SIZE_PX = 32;
|
|
10825
10974
|
const DefaultPlaceholder = (props) => {
|
10826
10975
|
const { text, noVideoAvailableAriaLabel, coinSize, hidePersonaDetails } = props;
|
10827
10976
|
return (React__default['default'].createElement(react.Stack, { className: react.mergeStyles({ position: 'absolute', height: '100%', width: '100%' }) },
|
10828
|
-
React__default['default'].createElement(react.Stack, { styles: defaultPersonaStyles },
|
10829
|
-
React__default['default'].createElement(react.Persona, { coinSize: coinSize, hidePersonaDetails: hidePersonaDetails, text: text !== null && text !== void 0 ? text : '', initialsTextColor: "white", "aria-label": noVideoAvailableAriaLabel !== null && noVideoAvailableAriaLabel !== void 0 ? noVideoAvailableAriaLabel : '', showOverflowTooltip: false }))));
|
10977
|
+
React__default['default'].createElement(react.Stack, { styles: defaultPersonaStyles }, coinSize && (React__default['default'].createElement(react.Persona, { coinSize: coinSize, hidePersonaDetails: hidePersonaDetails, text: text !== null && text !== void 0 ? text : '', initialsTextColor: "white", "aria-label": noVideoAvailableAriaLabel !== null && noVideoAvailableAriaLabel !== void 0 ? noVideoAvailableAriaLabel : '', showOverflowTooltip: false })))));
|
10830
10978
|
};
|
10831
10979
|
const defaultPersonaStyles = { root: { margin: 'auto', maxHeight: '100%' } };
|
10832
10980
|
/* @conditional-compile-remove(pinned-participants) */
|
@@ -10863,7 +11011,7 @@ const VideoTile = (props) => {
|
|
10863
11011
|
const [isHovered, setIsHovered] = React.useState(false);
|
10864
11012
|
/* @conditional-compile-remove(pinned-participants) */
|
10865
11013
|
const [isFocused, setIsFocused] = React.useState(false);
|
10866
|
-
const [personaSize, setPersonaSize] = React.useState(
|
11014
|
+
const [personaSize, setPersonaSize] = React.useState();
|
10867
11015
|
const videoTileRef = React.useRef(null);
|
10868
11016
|
const locale = useLocale$1();
|
10869
11017
|
const theme = useTheme();
|
@@ -10947,7 +11095,7 @@ const VideoTile = (props) => {
|
|
10947
11095
|
}) }, onRenderPlaceholder ? (onRenderPlaceholder(userId !== null && userId !== void 0 ? userId : '', placeholderOptions, DefaultPlaceholder)) : (React__default['default'].createElement(DefaultPlaceholder, Object.assign({}, placeholderOptions))))),
|
10948
11096
|
(canShowLabel || participantStateString) && (React__default['default'].createElement(react.Stack, { horizontal: true, className: tileInfoContainerStyle, tokens: tileInfoContainerTokens },
|
10949
11097
|
React__default['default'].createElement(react.Stack, { horizontal: true, className: tileInfoStyle },
|
10950
|
-
canShowLabel && (React__default['default'].createElement(react.Text, { className: react.mergeStyles(displayNameStyle), title: displayName, style: { color: participantStateString ? theme.palette.neutralSecondary : 'inherit' } }, displayName)),
|
11098
|
+
canShowLabel && (React__default['default'].createElement(react.Text, { className: react.mergeStyles(displayNameStyle), title: displayName, style: { color: participantStateString ? theme.palette.neutralSecondary : 'inherit' }, "data-ui-id": "video-tile-display-name" }, displayName)),
|
10951
11099
|
participantStateString && (React__default['default'].createElement(react.Text, { className: react.mergeStyles(participantStateStringStyles(theme)) }, bracketedParticipantString(participantStateString, !!canShowLabel))),
|
10952
11100
|
showMuteIndicator && isMuted && (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(iconContainerStyle) },
|
10953
11101
|
React__default['default'].createElement(react.Icon, { iconName: "VideoTileMicOff" }))),
|
@@ -13690,6 +13838,9 @@ const generateDefaultDeviceMenuProps = (props, strings, primaryActionItem, isSel
|
|
13690
13838
|
key: 'sectionCamera',
|
13691
13839
|
title: strings.cameraMenuTooltip,
|
13692
13840
|
subMenuProps: {
|
13841
|
+
calloutProps: {
|
13842
|
+
preventDismissOnEvent: _preventDismissOnEvent
|
13843
|
+
},
|
13693
13844
|
items: cameras.map((camera) => ({
|
13694
13845
|
key: camera.id,
|
13695
13846
|
text: camera.name,
|
@@ -13730,6 +13881,9 @@ const generateDefaultDeviceMenuProps = (props, strings, primaryActionItem, isSel
|
|
13730
13881
|
key: key,
|
13731
13882
|
title: title,
|
13732
13883
|
subMenuProps: {
|
13884
|
+
calloutProps: {
|
13885
|
+
preventDismissOnEvent: _preventDismissOnEvent
|
13886
|
+
},
|
13733
13887
|
items: microphones.map((microphone) => ({
|
13734
13888
|
key: microphone.id,
|
13735
13889
|
text: microphone.name,
|
@@ -13762,6 +13916,9 @@ const generateDefaultDeviceMenuProps = (props, strings, primaryActionItem, isSel
|
|
13762
13916
|
{
|
13763
13917
|
key: 'sectionSpeaker',
|
13764
13918
|
subMenuProps: {
|
13919
|
+
calloutProps: {
|
13920
|
+
preventDismissOnEvent: _preventDismissOnEvent
|
13921
|
+
},
|
13765
13922
|
items: speakers.map((speaker) => ({
|
13766
13923
|
key: speaker.id,
|
13767
13924
|
text: speaker.name,
|
@@ -15581,6 +15738,12 @@ const captionContainerClassName = react.mergeStyles({
|
|
15581
15738
|
* @private
|
15582
15739
|
*/
|
15583
15740
|
const captionsBannerClassName = react.mergeStyles(Object.assign({ height: _pxToRem(100), overflowY: 'auto', overflowX: 'hidden' }, scrollbarStyles));
|
15741
|
+
/**
|
15742
|
+
* @private
|
15743
|
+
*/
|
15744
|
+
const loadingBannerClassName = react.mergeStyles({
|
15745
|
+
height: _pxToRem(100)
|
15746
|
+
});
|
15584
15747
|
/**
|
15585
15748
|
* @private
|
15586
15749
|
*/
|
@@ -15629,7 +15792,7 @@ const _Caption = (props) => {
|
|
15629
15792
|
* A component for displaying a CaptionsBanner with user icon, displayName and captions text.
|
15630
15793
|
*/
|
15631
15794
|
const _CaptionsBanner = (props) => {
|
15632
|
-
const { captions, isCaptionsOn, onRenderAvatar } = props;
|
15795
|
+
const { captions, isCaptionsOn, startCaptionsInProgress, onRenderAvatar, strings } = props;
|
15633
15796
|
const captionsScrollDivRef = React.useRef(null);
|
15634
15797
|
const [isAtBottomOfScroll, setIsAtBottomOfScroll] = React.useState(true);
|
15635
15798
|
const scrollToBottom = () => {
|
@@ -15658,12 +15821,14 @@ const _CaptionsBanner = (props) => {
|
|
15658
15821
|
scrollToBottom();
|
15659
15822
|
}
|
15660
15823
|
}, [captions, isAtBottomOfScroll]);
|
15661
|
-
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
15662
|
-
React__default['default'].createElement(c, { innerRef: captionsScrollDivRef },
|
15824
|
+
return (React__default['default'].createElement(React__default['default'].Fragment, null, startCaptionsInProgress && (React__default['default'].createElement(react.FocusZone, { as: "ul", className: captionsContainerClassName },
|
15825
|
+
isCaptionsOn && (React__default['default'].createElement(c, { innerRef: captionsScrollDivRef },
|
15663
15826
|
React__default['default'].createElement(react.Stack, { verticalAlign: "start", className: captionsBannerClassName }, captions.map((caption) => {
|
15664
15827
|
return (React__default['default'].createElement("div", { key: caption.id, className: captionContainerClassName, "data-is-focusable": true },
|
15665
15828
|
React__default['default'].createElement(_Caption, Object.assign({}, caption, { onRenderAvatar: onRenderAvatar }))));
|
15666
|
-
}))))
|
15829
|
+
})))),
|
15830
|
+
!isCaptionsOn && (React__default['default'].createElement(react.Stack, { verticalAlign: "center", className: loadingBannerClassName, "data-is-focusable": true },
|
15831
|
+
React__default['default'].createElement(react.Spinner, { label: strings === null || strings === void 0 ? void 0 : strings.captionsBannerSpinnerText, ariaLive: "assertive", labelPosition: "right" })))))));
|
15667
15832
|
};
|
15668
15833
|
|
15669
15834
|
// Copyright (c) Microsoft Corporation.
|
@@ -15777,14 +15942,24 @@ const _CaptionsSettingsModal = (props) => {
|
|
15777
15942
|
const { supportedSpokenLanguages, currentSpokenLanguage, isCaptionsFeatureActive, showModal, onSetSpokenLanguage, onDismissCaptionsSettings, onStartCaptions, strings, captionsAvailableLanguageStrings } = props;
|
15778
15943
|
const theme = react.useTheme();
|
15779
15944
|
const [selectedItem, setSelectedItem] = React.useState({
|
15780
|
-
key: currentSpokenLanguage !== '' ? currentSpokenLanguage : defaultSpokenLanguage
|
15781
|
-
text: currentSpokenLanguage !== '' ? currentSpokenLanguage : defaultSpokenLanguage
|
15945
|
+
key: currentSpokenLanguage !== '' ? currentSpokenLanguage : defaultSpokenLanguage,
|
15946
|
+
text: currentSpokenLanguage !== '' ? currentSpokenLanguage : defaultSpokenLanguage
|
15782
15947
|
});
|
15948
|
+
const [hasSetSpokenLanguage, setHasSetSpokenLanguage] = React.useState(false);
|
15783
15949
|
const onDismiss = React.useCallback(() => {
|
15784
15950
|
if (onDismissCaptionsSettings) {
|
15785
15951
|
onDismissCaptionsSettings();
|
15786
15952
|
}
|
15787
15953
|
}, [onDismissCaptionsSettings]);
|
15954
|
+
React.useEffect(() => {
|
15955
|
+
// set spoken language when start captions with a spoken language specified.
|
15956
|
+
// this is to fix the bug when a second user starts captions with a new spoken language, captions bot ignore that spoken language
|
15957
|
+
if (isCaptionsFeatureActive && !hasSetSpokenLanguage) {
|
15958
|
+
onSetSpokenLanguage(selectedItem.key.toString());
|
15959
|
+
// we only need to call set spoken language once when first starting captions
|
15960
|
+
setHasSetSpokenLanguage(true);
|
15961
|
+
}
|
15962
|
+
}, [isCaptionsFeatureActive, onSetSpokenLanguage, selectedItem.key, hasSetSpokenLanguage]);
|
15788
15963
|
const onConfirm = React.useCallback(() => __awaiter$p(void 0, void 0, void 0, function* () {
|
15789
15964
|
const languageCode = selectedItem.key.toString();
|
15790
15965
|
if (isCaptionsFeatureActive) {
|
@@ -15792,9 +15967,6 @@ const _CaptionsSettingsModal = (props) => {
|
|
15792
15967
|
}
|
15793
15968
|
else {
|
15794
15969
|
yield onStartCaptions({ spokenLanguage: languageCode });
|
15795
|
-
// set spoken language when start captions with a spoken language specified.
|
15796
|
-
// this is to fix the bug when a second user starts captions with a new spoken language, captions bot ignore that spoken language
|
15797
|
-
onSetSpokenLanguage(languageCode);
|
15798
15970
|
}
|
15799
15971
|
onDismiss();
|
15800
15972
|
}), [onDismiss, isCaptionsFeatureActive, onSetSpokenLanguage, onStartCaptions, selectedItem.key]);
|
@@ -15816,7 +15988,7 @@ const _CaptionsSettingsModal = (props) => {
|
|
15816
15988
|
}), []);
|
15817
15989
|
const CaptionsSettingsComponent = React.useCallback(() => {
|
15818
15990
|
return (React__default['default'].createElement(react.Stack, null,
|
15819
|
-
React__default['default'].createElement(react.Dropdown, { label: strings === null || strings === void 0 ? void 0 : strings.captionsSettingsDropdownLabel, selectedKey: selectedItem ? selectedItem.key : undefined, onChange: onChange, calloutProps: calloutProps, placeholder: currentSpokenLanguage !== '' ? currentSpokenLanguage : defaultSpokenLanguage
|
15991
|
+
React__default['default'].createElement(react.Dropdown, { label: strings === null || strings === void 0 ? void 0 : strings.captionsSettingsDropdownLabel, selectedKey: selectedItem ? selectedItem.key : undefined, onChange: onChange, calloutProps: calloutProps, placeholder: currentSpokenLanguage !== '' ? currentSpokenLanguage : defaultSpokenLanguage, options: dropdownOptions, styles: dropdownStyles }),
|
15820
15992
|
React__default['default'].createElement(react.Text, { className: dropdownInfoTextStyle(theme) }, strings === null || strings === void 0 ? void 0 : strings.captionsSettingsDropdownInfoText)));
|
15821
15993
|
}, [
|
15822
15994
|
calloutProps,
|
@@ -18330,7 +18502,7 @@ const CallCompositeIcon = (props) => (React__default['default'].createElement(re
|
|
18330
18502
|
*/
|
18331
18503
|
const CallWithChatCompositeIcon = (props) => (React__default['default'].createElement(react.FontIcon, Object.assign({}, props)));
|
18332
18504
|
|
18333
|
-
var call$d={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",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"}};var chat$d={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$d={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$d,chat:chat$d,callWithChat:callWithChat$d};
|
18505
|
+
var call$d={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",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..."};var chat$d={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$d={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$d,chat:chat$d,callWithChat:callWithChat$d};
|
18334
18506
|
|
18335
18507
|
var call$c={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",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"}};var chat$c={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$c={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$c,chat:chat$c,callWithChat:callWithChat$c};
|
18336
18508
|
|
@@ -20742,9 +20914,6 @@ const CaptionsBannerMoreButton = (props) => {
|
|
20742
20914
|
yield startCaptionsButtonHandlers.onStartCaptions({
|
20743
20915
|
spokenLanguage: startCaptionsButtonProps.currentSpokenLanguage
|
20744
20916
|
});
|
20745
|
-
// set spoken language when start captions with a spoken language specified.
|
20746
|
-
// this is to fix the bug when a second user starts captions with a new spoken language, captions bot ignore that spoken language
|
20747
|
-
startCaptionsButtonHandlers.onSetSpokenLanguage(startCaptionsButtonProps.currentSpokenLanguage);
|
20748
20917
|
}), [startCaptionsButtonHandlers, startCaptionsButtonProps.currentSpokenLanguage]);
|
20749
20918
|
/* @conditional-compile-remove(close-captions) */
|
20750
20919
|
moreButtonContextualMenuItems.push({
|
@@ -20824,15 +20993,21 @@ const CaptionsBanner = (props) => {
|
|
20824
20993
|
right: 0,
|
20825
20994
|
top: 0
|
20826
20995
|
});
|
20996
|
+
/* @conditional-compile-remove(close-captions) */
|
20997
|
+
const strings = useLocale().strings.call;
|
20998
|
+
/* @conditional-compile-remove(close-captions) */
|
20999
|
+
const captionsBannerStrings = {
|
21000
|
+
captionsBannerSpinnerText: strings.captionsBannerSpinnerText
|
21001
|
+
};
|
20827
21002
|
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
20828
21003
|
/* @conditional-compile-remove(close-captions) */ isCaptionsSettingsOpen && (React__default['default'].createElement(CaptionsSettingsModal, { showCaptionsSettingsModal: isCaptionsSettingsOpen, onDismissCaptionsSettings: onDismissCaptionsSettings })),
|
20829
|
-
/* @conditional-compile-remove(close-captions) */
|
20830
|
-
|
21004
|
+
/* @conditional-compile-remove(close-captions) */
|
21005
|
+
React__default['default'].createElement("div", { className: containerClassName },
|
20831
21006
|
React__default['default'].createElement(react.Stack, { horizontalAlign: "center" },
|
20832
21007
|
React__default['default'].createElement(react.Stack.Item, { style: { width: props.isMobile ? mobileViewBannerWidth : desktopViewBannerWidth } },
|
20833
|
-
React__default['default'].createElement(_CaptionsBanner, Object.assign({}, captionsBannerProps, handlers)))),
|
20834
|
-
!props.isMobile && (React__default['default'].createElement("div", { className: floatingChildClassName },
|
20835
|
-
React__default['default'].createElement(CaptionsBannerMoreButton, { onCaptionsSettingsClick: onClickCaptionsSettings }))))))
|
21008
|
+
React__default['default'].createElement(_CaptionsBanner, Object.assign({}, captionsBannerProps, handlers, { strings: captionsBannerStrings })))),
|
21009
|
+
!props.isMobile && captionsBannerProps.isCaptionsOn && (React__default['default'].createElement("div", { className: floatingChildClassName },
|
21010
|
+
React__default['default'].createElement(CaptionsBannerMoreButton, { onCaptionsSettingsClick: onClickCaptionsSettings }))))));
|
20836
21011
|
};
|
20837
21012
|
|
20838
21013
|
// Copyright (c) Microsoft Corporation.
|
@@ -21227,7 +21402,7 @@ const SendDtmfDialpad = (props) => {
|
|
21227
21402
|
const dialpadStyle = React.useMemo(() => themedDialpadStyle$1(isMobile, theme), [theme, isMobile]);
|
21228
21403
|
if (isMobile) {
|
21229
21404
|
return (React__default['default'].createElement(react.Stack, null, showDialpad && (React__default['default'].createElement(react.Stack, { styles: drawerContainerStyles() },
|
21230
|
-
React__default['default'].createElement(_DrawerSurface, { onLightDismiss: onDismissTriggered },
|
21405
|
+
React__default['default'].createElement(_DrawerSurface, { disableMaxHeight: true, onLightDismiss: onDismissTriggered },
|
21231
21406
|
React__default['default'].createElement(react.Stack, { style: { padding: '1rem' } },
|
21232
21407
|
React__default['default'].createElement(Dialpad, Object.assign({ styles: dialpadStyle }, dialpadProps, { showDeleteButton: false, textFieldValue: textFieldValue, onChange: onChange, strings: strings, isMobile: isMobile }))))))));
|
21233
21408
|
}
|
@@ -21605,9 +21780,6 @@ const DesktopMoreButton = (props) => {
|
|
21605
21780
|
yield startCaptionsButtonHandlers.onStartCaptions({
|
21606
21781
|
spokenLanguage: startCaptionsButtonProps.currentSpokenLanguage
|
21607
21782
|
});
|
21608
|
-
// set spoken language when start captions with a spoken language specified.
|
21609
|
-
// this is to fix the bug when a second user starts captions with a new spoken language, captions bot ignore that spoken language
|
21610
|
-
startCaptionsButtonHandlers.onSetSpokenLanguage(startCaptionsButtonProps.currentSpokenLanguage);
|
21611
21783
|
}), [startCaptionsButtonHandlers, startCaptionsButtonProps.currentSpokenLanguage]);
|
21612
21784
|
/* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(close-captions) */
|
21613
21785
|
const moreButtonStrings = React.useMemo(() => ({
|
@@ -22092,116 +22264,12 @@ const callStatusSelector = reselect.createSelector([getCallStatus, getIsScreenSh
|
|
22092
22264
|
};
|
22093
22265
|
});
|
22094
22266
|
|
22095
|
-
// Copyright (c) Microsoft Corporation.
|
22096
|
-
/**
|
22097
|
-
* Default Modal PIP related pixel measurements used for ModalLocalAndremotePIP and common/utils.
|
22098
|
-
*
|
22099
|
-
* @private
|
22100
|
-
*/
|
22101
|
-
const MODAL_PIP_DEFAULT_PX = {
|
22102
|
-
rightPositionPx: 16,
|
22103
|
-
topPositionPx: 52,
|
22104
|
-
widthPx: 88,
|
22105
|
-
heightPx: 128
|
22106
|
-
};
|
22107
|
-
/**
|
22108
|
-
* @private
|
22109
|
-
*/
|
22110
|
-
const getPipStyles = (theme) => ({
|
22111
|
-
modal: {
|
22112
|
-
main: Object.assign(Object.assign({ borderRadius: theme.effects.roundedCorner4, boxShadow: theme.effects.elevation8,
|
22113
|
-
// Above the message thread / people pane.
|
22114
|
-
zIndex: 2 }, (theme.rtl
|
22115
|
-
? { left: _pxToRem(MODAL_PIP_DEFAULT_PX.rightPositionPx) }
|
22116
|
-
: { right: _pxToRem(MODAL_PIP_DEFAULT_PX.rightPositionPx) })), { top: _pxToRem(MODAL_PIP_DEFAULT_PX.topPositionPx) })
|
22117
|
-
}
|
22118
|
-
});
|
22119
|
-
/**
|
22120
|
-
* @private
|
22121
|
-
*/
|
22122
|
-
const PIPContainerStyle = {
|
22123
|
-
root: { position: 'absolute', width: '100%', height: '100%', pointerEvents: 'none' }
|
22124
|
-
};
|
22125
|
-
/**
|
22126
|
-
* @private
|
22127
|
-
*/
|
22128
|
-
const hiddenStyle = react.concatStyleSets(PIPContainerStyle, { root: { display: 'none' } });
|
22129
|
-
/**
|
22130
|
-
* @private
|
22131
|
-
*/
|
22132
|
-
const modalStyle = {
|
22133
|
-
main: {
|
22134
|
-
minWidth: 'min-content',
|
22135
|
-
minHeight: 'min-content',
|
22136
|
-
position: 'absolute',
|
22137
|
-
overflow: 'hidden',
|
22138
|
-
// pointer events for root Modal div set to auto to make LocalAndRemotePIP interactive
|
22139
|
-
pointerEvents: 'auto',
|
22140
|
-
touchAction: 'none'
|
22141
|
-
},
|
22142
|
-
root: {
|
22143
|
-
width: '100%',
|
22144
|
-
height: '100%',
|
22145
|
-
// pointer events for root Modal div set to none to make descendants interactive
|
22146
|
-
pointerEvents: 'none'
|
22147
|
-
}
|
22148
|
-
};
|
22149
|
-
/**
|
22150
|
-
* Styles for layer host to bound the modal wrapping PiPiP in the mobile pane.
|
22151
|
-
* @private
|
22152
|
-
*/
|
22153
|
-
const modalLayerHostStyle = {
|
22154
|
-
display: 'flex',
|
22155
|
-
position: 'absolute',
|
22156
|
-
left: 0,
|
22157
|
-
top: 0,
|
22158
|
-
width: '100%',
|
22159
|
-
height: '100%',
|
22160
|
-
overflow: 'hidden',
|
22161
|
-
zIndex: '100000',
|
22162
|
-
// pointer events for layerHost set to none to make descendants interactive
|
22163
|
-
pointerEvents: 'none'
|
22164
|
-
};
|
22165
|
-
|
22166
|
-
// Copyright (c) Microsoft Corporation.
|
22167
|
-
/**
|
22168
|
-
* @private
|
22169
|
-
*/
|
22170
|
-
// Use document.getElementById until Fluent's Stack supports componentRef property: https://github.com/microsoft/fluentui/issues/20410
|
22171
|
-
const useMinMaxDragPosition = (modalLayerHostId, rtl) => {
|
22172
|
-
const modalHostRef = React.useRef(document.getElementById(modalLayerHostId));
|
22173
|
-
const modalHostWidth = _useContainerWidth(modalHostRef);
|
22174
|
-
const modalHostHeight = _useContainerHeight(modalHostRef);
|
22175
|
-
const minDragPosition = React.useMemo(() => modalHostWidth === undefined
|
22176
|
-
? undefined
|
22177
|
-
: {
|
22178
|
-
x: rtl
|
22179
|
-
? -1 * MODAL_PIP_DEFAULT_PX.rightPositionPx
|
22180
|
-
: MODAL_PIP_DEFAULT_PX.rightPositionPx - modalHostWidth + MODAL_PIP_DEFAULT_PX.widthPx,
|
22181
|
-
y: -1 * MODAL_PIP_DEFAULT_PX.topPositionPx
|
22182
|
-
}, [modalHostWidth, rtl]);
|
22183
|
-
const maxDragPosition = React.useMemo(() => modalHostWidth === undefined || modalHostHeight === undefined
|
22184
|
-
? undefined
|
22185
|
-
: {
|
22186
|
-
x: rtl
|
22187
|
-
? modalHostWidth - MODAL_PIP_DEFAULT_PX.rightPositionPx - MODAL_PIP_DEFAULT_PX.widthPx
|
22188
|
-
: MODAL_PIP_DEFAULT_PX.rightPositionPx,
|
22189
|
-
y: modalHostHeight - MODAL_PIP_DEFAULT_PX.topPositionPx - MODAL_PIP_DEFAULT_PX.heightPx
|
22190
|
-
}, [modalHostHeight, modalHostWidth, rtl]);
|
22191
|
-
return { minDragPosition: minDragPosition, maxDragPosition: maxDragPosition };
|
22192
|
-
};
|
22193
|
-
/**
|
22194
|
-
* @private
|
22195
|
-
*/
|
22196
|
-
const defaultSpokenLanguage = 'en-us';
|
22197
|
-
|
22198
22267
|
// Copyright (c) Microsoft Corporation.
|
22199
22268
|
/**
|
22200
22269
|
* @private
|
22201
22270
|
*/
|
22202
22271
|
const spokenLanguageDrawerStyles = (theme) => ({
|
22203
22272
|
root: {
|
22204
|
-
height: _pxToRem(300),
|
22205
22273
|
overflow: 'auto'
|
22206
22274
|
},
|
22207
22275
|
drawerSurfaceStyles: {
|
@@ -22418,18 +22486,13 @@ const MoreDrawer = (props) => {
|
|
22418
22486
|
/* @conditional-compile-remove(close-captions) */
|
22419
22487
|
const [isSpokenLanguageDrawerOpen, setIsSpokenLanguageDrawerOpen] = React.useState(false);
|
22420
22488
|
/* @conditional-compile-remove(close-captions) */
|
22421
|
-
const [currentSpokenLanguage, setCurrentSpokenLanguage] = React.useState(startCaptionsButtonProps.currentSpokenLanguage
|
22422
|
-
? defaultSpokenLanguage
|
22423
|
-
: startCaptionsButtonProps.currentSpokenLanguage);
|
22489
|
+
const [currentSpokenLanguage, setCurrentSpokenLanguage] = React.useState(startCaptionsButtonProps.currentSpokenLanguage);
|
22424
22490
|
/* @conditional-compile-remove(close-captions) */
|
22425
22491
|
const onToggleChange = React.useCallback(() => __awaiter$b(void 0, void 0, void 0, function* () {
|
22426
22492
|
if (!startCaptionsButtonProps.checked) {
|
22427
22493
|
yield startCaptionsButtonHandlers.onStartCaptions({
|
22428
22494
|
spokenLanguage: currentSpokenLanguage
|
22429
22495
|
});
|
22430
|
-
// set spoken language when start captions with a spoken language specified.
|
22431
|
-
// this is to fix the bug when a second user starts captions with a new spoken language, captions bot ignore that spoken language
|
22432
|
-
startCaptionsButtonHandlers.onSetSpokenLanguage(currentSpokenLanguage);
|
22433
22496
|
}
|
22434
22497
|
else {
|
22435
22498
|
startCaptionsButtonHandlers.onStopCaptions();
|
@@ -22969,7 +23032,7 @@ const CallingDialpad = (props) => {
|
|
22969
23032
|
};
|
22970
23033
|
if (isMobile) {
|
22971
23034
|
return (React__default['default'].createElement(react.Stack, { "data-ui-id": "call-with-chat-composite-dialpad" }, showDialpad && (React__default['default'].createElement(react.Stack, { styles: drawerContainerStyles() },
|
22972
|
-
React__default['default'].createElement(_DrawerSurface, { onLightDismiss: onDismissTriggered },
|
23035
|
+
React__default['default'].createElement(_DrawerSurface, { onLightDismiss: onDismissTriggered, disableMaxHeight: true },
|
22973
23036
|
React__default['default'].createElement(react.Stack, { style: { padding: '1rem' } }, dialpadComponent()))))));
|
22974
23037
|
}
|
22975
23038
|
return (React__default['default'].createElement(React__default['default'].Fragment, null, React__default['default'].createElement(react.Modal, { titleAriaId: strings.dialpadModalAriaLabel, isOpen: showDialpad, onDismiss: onDismissTriggered, isBlocking: true, styles: dialpadModalStyle, "data-ui-id": "call-with-chat-composite-dialpad" },
|
@@ -23054,7 +23117,7 @@ const AddPeopleDropdown = (props) => {
|
|
23054
23117
|
defaultMenuProps.items.length > 0 && (React__default['default'].createElement(react.Stack.Item, { styles: copyLinkButtonContainerStyles },
|
23055
23118
|
React__default['default'].createElement(react.PrimaryButton, { onClick: setDrawerMenuItemsForAddPeople, styles: copyLinkButtonStylesThemed, onRenderIcon: () => PeoplePaneAddPersonIconTrampoline(), text: strings.peoplePaneAddPeopleButtonLabel, "data-ui-id": "call-add-people-button" }))),
|
23056
23119
|
addPeopleDrawerMenuItems.length > 0 && (React__default['default'].createElement(react.Stack, { styles: drawerContainerStyles(), "data-ui-id": "call-add-people-dropdown" },
|
23057
|
-
React__default['default'].createElement(_DrawerMenu, { onLightDismiss: () => setAddPeopleDrawerMenuItems([]), items: addPeopleDrawerMenuItems }))),
|
23120
|
+
React__default['default'].createElement(_DrawerMenu, { disableMaxHeight: true, onLightDismiss: () => setAddPeopleDrawerMenuItems([]), items: addPeopleDrawerMenuItems }))),
|
23058
23121
|
alternateCallerId && (React__default['default'].createElement(CallingDialpad, { isMobile: true, strings: strings, showDialpad: showDialpad, onDismissDialpad: onDismissDialpad, onAddParticipant: onAddParticipant, alternateCallerId: alternateCallerId }))));
|
23059
23122
|
}
|
23060
23123
|
return (React__default['default'].createElement(React__default['default'].Fragment, null, React__default['default'].createElement(react.Stack, null,
|
@@ -23617,6 +23680,77 @@ const localAndRemotePIPSelector = reselect__namespace.createSelector([getDisplay
|
|
23617
23680
|
};
|
23618
23681
|
});
|
23619
23682
|
|
23683
|
+
// Copyright (c) Microsoft Corporation.
|
23684
|
+
/**
|
23685
|
+
* Default Modal PIP related pixel measurements used for ModalLocalAndremotePIP and common/utils.
|
23686
|
+
*
|
23687
|
+
* @private
|
23688
|
+
*/
|
23689
|
+
const MODAL_PIP_DEFAULT_PX = {
|
23690
|
+
rightPositionPx: 16,
|
23691
|
+
topPositionPx: 52,
|
23692
|
+
widthPx: 88,
|
23693
|
+
heightPx: 128
|
23694
|
+
};
|
23695
|
+
/**
|
23696
|
+
* @private
|
23697
|
+
*/
|
23698
|
+
const getPipStyles = (theme) => ({
|
23699
|
+
modal: {
|
23700
|
+
main: Object.assign(Object.assign({ borderRadius: theme.effects.roundedCorner4, boxShadow: theme.effects.elevation8,
|
23701
|
+
// Above the message thread / people pane.
|
23702
|
+
zIndex: 2 }, (theme.rtl
|
23703
|
+
? { left: _pxToRem(MODAL_PIP_DEFAULT_PX.rightPositionPx) }
|
23704
|
+
: { right: _pxToRem(MODAL_PIP_DEFAULT_PX.rightPositionPx) })), { top: _pxToRem(MODAL_PIP_DEFAULT_PX.topPositionPx) })
|
23705
|
+
}
|
23706
|
+
});
|
23707
|
+
/**
|
23708
|
+
* @private
|
23709
|
+
*/
|
23710
|
+
const PIPContainerStyle = {
|
23711
|
+
root: { position: 'absolute', width: '100%', height: '100%', pointerEvents: 'none' }
|
23712
|
+
};
|
23713
|
+
/**
|
23714
|
+
* @private
|
23715
|
+
*/
|
23716
|
+
const hiddenStyle = react.concatStyleSets(PIPContainerStyle, { root: { display: 'none' } });
|
23717
|
+
/**
|
23718
|
+
* @private
|
23719
|
+
*/
|
23720
|
+
const modalStyle = {
|
23721
|
+
main: {
|
23722
|
+
minWidth: 'min-content',
|
23723
|
+
minHeight: 'min-content',
|
23724
|
+
position: 'absolute',
|
23725
|
+
overflow: 'hidden',
|
23726
|
+
// pointer events for root Modal div set to auto to make LocalAndRemotePIP interactive
|
23727
|
+
pointerEvents: 'auto',
|
23728
|
+
touchAction: 'none'
|
23729
|
+
},
|
23730
|
+
root: {
|
23731
|
+
width: '100%',
|
23732
|
+
height: '100%',
|
23733
|
+
// pointer events for root Modal div set to none to make descendants interactive
|
23734
|
+
pointerEvents: 'none'
|
23735
|
+
}
|
23736
|
+
};
|
23737
|
+
/**
|
23738
|
+
* Styles for layer host to bound the modal wrapping PiPiP in the mobile pane.
|
23739
|
+
* @private
|
23740
|
+
*/
|
23741
|
+
const modalLayerHostStyle = {
|
23742
|
+
display: 'flex',
|
23743
|
+
position: 'absolute',
|
23744
|
+
left: 0,
|
23745
|
+
top: 0,
|
23746
|
+
width: '100%',
|
23747
|
+
height: '100%',
|
23748
|
+
overflow: 'hidden',
|
23749
|
+
zIndex: '100000',
|
23750
|
+
// pointer events for layerHost set to none to make descendants interactive
|
23751
|
+
pointerEvents: 'none'
|
23752
|
+
};
|
23753
|
+
|
23620
23754
|
// Copyright (c) Microsoft Corporation.
|
23621
23755
|
/**
|
23622
23756
|
* Drag options for Modal in {@link ModalLocalAndRemotePIP} component
|
@@ -23663,6 +23797,34 @@ const ModalLocalAndRemotePIP = (props) => {
|
|
23663
23797
|
!props.hidden && localAndRemotePIP)));
|
23664
23798
|
};
|
23665
23799
|
|
23800
|
+
// Copyright (c) Microsoft Corporation.
|
23801
|
+
/**
|
23802
|
+
* @private
|
23803
|
+
*/
|
23804
|
+
// Use document.getElementById until Fluent's Stack supports componentRef property: https://github.com/microsoft/fluentui/issues/20410
|
23805
|
+
const useMinMaxDragPosition = (modalLayerHostId, rtl) => {
|
23806
|
+
const modalHostRef = React.useRef(document.getElementById(modalLayerHostId));
|
23807
|
+
const modalHostWidth = _useContainerWidth(modalHostRef);
|
23808
|
+
const modalHostHeight = _useContainerHeight(modalHostRef);
|
23809
|
+
const minDragPosition = React.useMemo(() => modalHostWidth === undefined
|
23810
|
+
? undefined
|
23811
|
+
: {
|
23812
|
+
x: rtl
|
23813
|
+
? -1 * MODAL_PIP_DEFAULT_PX.rightPositionPx
|
23814
|
+
: MODAL_PIP_DEFAULT_PX.rightPositionPx - modalHostWidth + MODAL_PIP_DEFAULT_PX.widthPx,
|
23815
|
+
y: -1 * MODAL_PIP_DEFAULT_PX.topPositionPx
|
23816
|
+
}, [modalHostWidth, rtl]);
|
23817
|
+
const maxDragPosition = React.useMemo(() => modalHostWidth === undefined || modalHostHeight === undefined
|
23818
|
+
? undefined
|
23819
|
+
: {
|
23820
|
+
x: rtl
|
23821
|
+
? modalHostWidth - MODAL_PIP_DEFAULT_PX.rightPositionPx - MODAL_PIP_DEFAULT_PX.widthPx
|
23822
|
+
: MODAL_PIP_DEFAULT_PX.rightPositionPx,
|
23823
|
+
y: modalHostHeight - MODAL_PIP_DEFAULT_PX.topPositionPx - MODAL_PIP_DEFAULT_PX.heightPx
|
23824
|
+
}, [modalHostHeight, modalHostWidth, rtl]);
|
23825
|
+
return { minDragPosition: minDragPosition, maxDragPosition: maxDragPosition };
|
23826
|
+
};
|
23827
|
+
|
23666
23828
|
// Copyright (c) Microsoft Corporation.
|
23667
23829
|
/**
|
23668
23830
|
* @private
|
@@ -24028,8 +24190,7 @@ const MediaGallery = (props) => {
|
|
24028
24190
|
}, [cameraSwitcherCallback, cameraSwitcherCameras]);
|
24029
24191
|
const onRenderAvatar = React.useCallback((userId, options) => {
|
24030
24192
|
return (React__default['default'].createElement(react.Stack, { className: react.mergeStyles({ position: 'absolute', height: '100%', width: '100%' }) },
|
24031
|
-
React__default['default'].createElement(react.Stack, { styles: { root: { margin: 'auto', maxHeight: '100%' } } },
|
24032
|
-
React__default['default'].createElement(AvatarPersona, Object.assign({ userId: userId }, options, { dataProvider: props.onFetchAvatarPersonaData })))));
|
24193
|
+
React__default['default'].createElement(react.Stack, { styles: { root: { margin: 'auto', maxHeight: '100%' } } }, (options === null || options === void 0 ? void 0 : options.coinSize) && (React__default['default'].createElement(AvatarPersona, Object.assign({ userId: userId }, options, { dataProvider: props.onFetchAvatarPersonaData }))))));
|
24033
24194
|
}, [props.onFetchAvatarPersonaData]);
|
24034
24195
|
useLocalVideoStartTrigger(!!props.isVideoStreamOn);
|
24035
24196
|
/* @conditional-compile-remove(pinned-participants) */
|
@@ -25001,7 +25162,7 @@ const CallReadinessModal = (props) => {
|
|
25001
25162
|
}
|
25002
25163
|
};
|
25003
25164
|
if (mobileView && modal !== undefined) {
|
25004
|
-
return (React__default['default'].createElement(React__default['default'].Fragment, null, isPermissionsModalDismissed && (React__default['default'].createElement(_DrawerSurface, { onLightDismiss: onLightDismissTriggered, styles: drawerContainerStyles(DRAWER_HIGH_Z_BAND) }, modal()))));
|
25165
|
+
return (React__default['default'].createElement(React__default['default'].Fragment, null, isPermissionsModalDismissed && (React__default['default'].createElement(_DrawerSurface, { disableMaxHeight: true, onLightDismiss: onLightDismissTriggered, styles: drawerContainerStyles(DRAWER_HIGH_Z_BAND) }, modal()))));
|
25005
25166
|
}
|
25006
25167
|
else if (!mobileView && modal !== undefined) {
|
25007
25168
|
return (React__default['default'].createElement(_ModalClone, { styles: {
|
@@ -25070,7 +25231,7 @@ const CallReadinessModalFallBack = (props) => {
|
|
25070
25231
|
};
|
25071
25232
|
if (mobileView) {
|
25072
25233
|
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
25073
|
-
(checkPermissionModalShowing || audioState === 'prompt' || videoState === 'prompt') && (React__default['default'].createElement(_DrawerSurface, { onLightDismiss: onLightDismissTriggered, styles: drawerContainerStyles(DRAWER_HIGH_Z_BAND) },
|
25234
|
+
(checkPermissionModalShowing || audioState === 'prompt' || videoState === 'prompt') && (React__default['default'].createElement(_DrawerSurface, { disableMaxHeight: true, onLightDismiss: onLightDismissTriggered, styles: drawerContainerStyles(DRAWER_HIGH_Z_BAND) },
|
25074
25235
|
React__default['default'].createElement(CameraAndMicrophoneSitePermissions, { appName: 'app',
|
25075
25236
|
/* @conditional-compile-remove(unsupported-browser) */
|
25076
25237
|
browserHint: isSafari ? 'safari' : 'unset', onTroubleshootingClick: onPermissionsTroubleshootingClick
|
@@ -25078,7 +25239,7 @@ const CallReadinessModalFallBack = (props) => {
|
|
25078
25239
|
onPermissionsTroubleshootingClick(permissionsState);
|
25079
25240
|
}
|
25080
25241
|
: undefined, kind: "check" }))),
|
25081
|
-
isPermissionsModalDismissed && !checkPermissionModalShowing && modal !== undefined && (React__default['default'].createElement(_DrawerSurface, { onLightDismiss: onLightDismissTriggered, styles: drawerContainerStyles(DRAWER_HIGH_Z_BAND) }, modal()))));
|
25242
|
+
isPermissionsModalDismissed && !checkPermissionModalShowing && modal !== undefined && (React__default['default'].createElement(_DrawerSurface, { disableMaxHeight: true, onLightDismiss: onLightDismissTriggered, styles: drawerContainerStyles(DRAWER_HIGH_Z_BAND) }, modal()))));
|
25082
25243
|
}
|
25083
25244
|
else {
|
25084
25245
|
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|