@azure/communication-react 1.2.3-alpha-202205100013.0 → 1.2.3-alpha-202205130015.0
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 +16 -5
- package/dist/dist-cjs/communication-react/index.js +343 -286
- 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/chat-component-bindings/src/handlers/createHandlers.d.ts +4 -1
- package/dist/dist-esm/chat-component-bindings/src/handlers/createHandlers.d.ts.map +1 -1
- package/dist/dist-esm/chat-component-bindings/src/handlers/createHandlers.js +4 -2
- package/dist/dist-esm/chat-component-bindings/src/handlers/createHandlers.js.map +1 -1
- package/dist/dist-esm/chat-stateful-client/src/StatefulChatClient.d.ts +2 -1
- package/dist/dist-esm/chat-stateful-client/src/StatefulChatClient.d.ts.map +1 -1
- package/dist/dist-esm/chat-stateful-client/src/StatefulChatClient.js +3 -2
- package/dist/dist-esm/chat-stateful-client/src/StatefulChatClient.js.map +1 -1
- package/dist/dist-esm/chat-stateful-client/src/index.d.ts +1 -1
- package/dist/dist-esm/chat-stateful-client/src/index.d.ts.map +1 -1
- package/dist/dist-esm/chat-stateful-client/src/index.js +1 -1
- package/dist/dist-esm/chat-stateful-client/src/index.js.map +1 -1
- package/dist/dist-esm/communication-react/src/index.d.ts +4 -3
- package/dist/dist-esm/communication-react/src/index.d.ts.map +1 -1
- package/dist/dist-esm/communication-react/src/index.js +2 -2
- package/dist/dist-esm/communication-react/src/index.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponent.d.ts +4 -2
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponent.d.ts.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponent.js +2 -2
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponent.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsEditBox.d.ts +4 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsEditBox.d.ts.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsEditBox.js +24 -15
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsEditBox.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ComplianceBanner/ComplianceBanner.d.ts +41 -0
- package/dist/dist-esm/react-components/src/components/ComplianceBanner/ComplianceBanner.d.ts.map +1 -0
- package/dist/dist-esm/{react-composites/src/composites/CallComposite/components → react-components/src/components/ComplianceBanner}/ComplianceBanner.js +52 -48
- package/dist/dist-esm/react-components/src/components/ComplianceBanner/ComplianceBanner.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/ComplianceBanner/Utils.d.ts +20 -0
- package/dist/dist-esm/react-components/src/components/ComplianceBanner/Utils.d.ts.map +1 -0
- package/dist/dist-esm/react-components/src/components/ComplianceBanner/Utils.js +42 -0
- package/dist/dist-esm/react-components/src/components/ComplianceBanner/Utils.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/ComplianceBanner/index.d.ts +3 -0
- package/dist/dist-esm/react-components/src/components/ComplianceBanner/index.d.ts.map +1 -0
- package/dist/dist-esm/react-components/src/components/ComplianceBanner/index.js +4 -0
- package/dist/dist-esm/react-components/src/components/ComplianceBanner/index.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.d.ts +50 -0
- package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.d.ts.map +1 -0
- package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.js +72 -0
- package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/InputBoxComponent.d.ts.map +1 -1
- package/dist/dist-esm/react-components/src/components/InputBoxComponent.js +1 -2
- package/dist/dist-esm/react-components/src/components/InputBoxComponent.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/LocalVideoTile.d.ts +29 -0
- package/dist/dist-esm/react-components/src/components/LocalVideoTile.d.ts.map +1 -0
- package/dist/dist-esm/react-components/src/components/LocalVideoTile.js +66 -0
- package/dist/dist-esm/react-components/src/components/LocalVideoTile.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/MessageThread.d.ts +10 -4
- package/dist/dist-esm/react-components/src/components/MessageThread.d.ts.map +1 -1
- package/dist/dist-esm/react-components/src/components/MessageThread.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/RemoteVideoTile.d.ts +2 -0
- package/dist/dist-esm/react-components/src/components/RemoteVideoTile.d.ts.map +1 -1
- package/dist/dist-esm/react-components/src/components/RemoteVideoTile.js +2 -0
- package/dist/dist-esm/react-components/src/components/RemoteVideoTile.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/SendBox.d.ts.map +1 -1
- package/dist/dist-esm/react-components/src/components/SendBox.js +0 -2
- package/dist/dist-esm/react-components/src/components/SendBox.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery.d.ts.map +1 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery.js +18 -40
- package/dist/dist-esm/react-components/src/components/VideoGallery.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/index.d.ts +5 -1
- package/dist/dist-esm/react-components/src/components/index.d.ts.map +1 -1
- package/dist/dist-esm/react-components/src/components/index.js +2 -0
- package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/styles/ChatMessageComponent.styles.d.ts.map +1 -1
- package/dist/dist-esm/react-components/src/components/styles/ChatMessageComponent.styles.js +1 -2
- package/dist/dist-esm/react-components/src/components/styles/ChatMessageComponent.styles.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/styles/Dialpad.styles.d.ts +22 -0
- package/dist/dist-esm/react-components/src/components/styles/Dialpad.styles.d.ts.map +1 -0
- package/dist/dist-esm/react-components/src/components/styles/Dialpad.styles.js +74 -0
- package/dist/dist-esm/react-components/src/components/styles/Dialpad.styles.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/styles/InputBoxComponent.style.d.ts +1 -1
- package/dist/dist-esm/react-components/src/components/styles/InputBoxComponent.style.d.ts.map +1 -1
- package/dist/dist-esm/react-components/src/components/styles/InputBoxComponent.style.js +20 -25
- package/dist/dist-esm/react-components/src/components/styles/InputBoxComponent.style.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/styles/SendBox.styles.d.ts +0 -1
- package/dist/dist-esm/react-components/src/components/styles/SendBox.styles.d.ts.map +1 -1
- package/dist/dist-esm/react-components/src/components/styles/SendBox.styles.js +3 -3
- package/dist/dist-esm/react-components/src/components/styles/SendBox.styles.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/utils/formatPhoneNumber.d.ts +5 -0
- package/dist/dist-esm/react-components/src/components/utils/formatPhoneNumber.d.ts.map +1 -0
- package/dist/dist-esm/react-components/src/components/utils/formatPhoneNumber.js +44 -0
- package/dist/dist-esm/react-components/src/components/utils/formatPhoneNumber.js.map +1 -0
- package/dist/dist-esm/react-components/src/localization/LocalizationProvider.d.ts.map +1 -1
- package/dist/dist-esm/react-components/src/localization/LocalizationProvider.js.map +1 -1
- package/dist/dist-esm/react-components/src/theming/themes.d.ts.map +1 -1
- package/dist/dist-esm/react-components/src/theming/themes.js +6 -0
- package/dist/dist-esm/react-components/src/theming/themes.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.d.ts +2 -3
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.d.ts.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +2 -3
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.d.ts.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js +3 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/LobbyPage.js +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/LobbyPage.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.d.ts +0 -19
- package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.d.ts.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js +0 -39
- package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.d.ts +3 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.d.ts.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.js +9 -14
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/ChatAdapter.d.ts +4 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/ChatAdapter.d.ts.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/localization/index.d.ts +7 -0
- package/dist/dist-esm/react-composites/src/composites/localization/index.d.ts.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/localization/index.js +8 -0
- package/dist/dist-esm/react-composites/src/composites/localization/index.js.map +1 -1
- package/dist/dist-esm/react-composites/src/index-public.d.ts +2 -0
- package/dist/dist-esm/react-composites/src/index-public.d.ts.map +1 -0
- package/dist/dist-esm/react-composites/src/index-public.js +8 -0
- package/dist/dist-esm/react-composites/src/index-public.js.map +1 -0
- package/package.json +7 -7
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ComplianceBanner.d.ts +0 -13
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ComplianceBanner.d.ts.map +0 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ComplianceBanner.js.map +0 -1
- package/dist/dist-esm/react-composites/src/index.d.ts +0 -2
- package/dist/dist-esm/react-composites/src/index.d.ts.map +0 -1
- package/dist/dist-esm/react-composites/src/index.js +0 -4
- package/dist/dist-esm/react-composites/src/index.js.map +0 -1
@@ -191,7 +191,7 @@ const fromFlatCommunicationIdentifier = (id) => {
|
|
191
191
|
// Copyright (c) Microsoft Corporation.
|
192
192
|
// Licensed under the MIT license.
|
193
193
|
// GENERATED FILE. DO NOT EDIT MANUALLY.
|
194
|
-
var telemetryVersion = '1.2.3-alpha-
|
194
|
+
var telemetryVersion = '1.2.3-alpha-202205130015.0';
|
195
195
|
|
196
196
|
// Copyright (c) Microsoft Corporation.
|
197
197
|
/**
|
@@ -1539,9 +1539,9 @@ const defaultSendBoxActiveBorderThicknessREM = 0.125;
|
|
1539
1539
|
* @private
|
1540
1540
|
*/
|
1541
1541
|
const borderAndBoxShadowStyle = (props) => {
|
1542
|
-
const { theme,
|
1543
|
-
const borderColor = hasErrorMessage ?
|
1544
|
-
const borderColorActive = hasErrorMessage ?
|
1542
|
+
const { theme, hasErrorMessage, disabled } = props;
|
1543
|
+
const borderColor = hasErrorMessage ? theme.semanticColors.errorText : theme.palette.neutralSecondary;
|
1544
|
+
const borderColorActive = hasErrorMessage ? theme.semanticColors.errorText : theme.palette.themePrimary;
|
1545
1545
|
const borderThickness = disabled ? 0 : defaultSendBoxInactiveBorderThicknessREM;
|
1546
1546
|
const borderActiveThickness = disabled ? 0 : defaultSendBoxActiveBorderThicknessREM;
|
1547
1547
|
return {
|
@@ -1594,6 +1594,9 @@ const lightTheme = {
|
|
1594
1594
|
callRedDark: '#8b2c3d',
|
1595
1595
|
callRedDarker: '#772a38',
|
1596
1596
|
iconWhite: '#ffffff'
|
1597
|
+
},
|
1598
|
+
semanticColors: {
|
1599
|
+
errorText: '#a80000'
|
1597
1600
|
}
|
1598
1601
|
};
|
1599
1602
|
/**
|
@@ -1631,6 +1634,9 @@ const darkTheme = {
|
|
1631
1634
|
callRedDark: '#a42e43',
|
1632
1635
|
callRedDarker: '#8b2c3d',
|
1633
1636
|
iconWhite: '#ffffff'
|
1637
|
+
},
|
1638
|
+
semanticColors: {
|
1639
|
+
errorText: '#f1707b'
|
1634
1640
|
}
|
1635
1641
|
};
|
1636
1642
|
|
@@ -1822,31 +1828,26 @@ const textContainerStyle = {
|
|
1822
1828
|
/**
|
1823
1829
|
* @private
|
1824
1830
|
*/
|
1825
|
-
const textFieldStyle =
|
1826
|
-
|
1827
|
-
|
1828
|
-
|
1829
|
-
|
1830
|
-
|
1831
|
-
|
1832
|
-
|
1833
|
-
|
1834
|
-
|
1835
|
-
|
1836
|
-
|
1837
|
-
|
1838
|
-
|
1839
|
-
|
1840
|
-
|
1841
|
-
|
1842
|
-
|
1843
|
-
|
1844
|
-
|
1845
|
-
},
|
1846
|
-
errorMessage: {
|
1847
|
-
color: errorColor
|
1848
|
-
}
|
1849
|
-
};
|
1831
|
+
const textFieldStyle = {
|
1832
|
+
root: {
|
1833
|
+
width: '100%',
|
1834
|
+
minHeight: '0',
|
1835
|
+
fontSize: '8.25rem'
|
1836
|
+
},
|
1837
|
+
wrapper: {},
|
1838
|
+
fieldGroup: {
|
1839
|
+
outline: 'none',
|
1840
|
+
border: 'none',
|
1841
|
+
height: 'auto',
|
1842
|
+
minHeight: '0',
|
1843
|
+
/**
|
1844
|
+
* Removing fieldGroup border to make sure no border is rendered around the text area in sendbox.
|
1845
|
+
*/
|
1846
|
+
':after': { border: 'none' }
|
1847
|
+
},
|
1848
|
+
field: {
|
1849
|
+
borderRadius: '0.25rem'
|
1850
|
+
}
|
1850
1851
|
};
|
1851
1852
|
/**
|
1852
1853
|
* @private
|
@@ -1919,11 +1920,10 @@ const getPerceptualBrightnessOfHexColor = (hexColor) => {
|
|
1919
1920
|
*/
|
1920
1921
|
const InputBoxComponent = (props) => {
|
1921
1922
|
const { styles, id, 'data-ui-id': dataUiId, textValue, onChange, textFieldRef, placeholderText, onKeyDown, onEnterKeyDown, supportNewline, inputClassName, errorMessage, disabled, children } = props;
|
1922
|
-
const theme = useTheme();
|
1923
1923
|
const mergedRootStyle = react.mergeStyles(inputBoxWrapperStyle, styles === null || styles === void 0 ? void 0 : styles.root);
|
1924
1924
|
const mergedTextFiledStyle = react.mergeStyles(inputBoxStyle, inputClassName, props.inlineChildren ? {} : inputBoxNewLineSpaceAffordance);
|
1925
1925
|
const mergedTextContainerStyle = react.mergeStyles(textContainerStyle, styles === null || styles === void 0 ? void 0 : styles.textFieldContainer);
|
1926
|
-
const mergedTextFieldStyle = react.concatStyleSets(textFieldStyle
|
1926
|
+
const mergedTextFieldStyle = react.concatStyleSets(textFieldStyle, {
|
1927
1927
|
fieldGroup: styles === null || styles === void 0 ? void 0 : styles.textField,
|
1928
1928
|
errorMessage: styles === null || styles === void 0 ? void 0 : styles.systemMessage
|
1929
1929
|
});
|
@@ -2233,7 +2233,6 @@ const SendBox = (props) => {
|
|
2233
2233
|
React__default['default'].createElement(SendBoxErrors, Object.assign({}, sendBoxErrorsProps)),
|
2234
2234
|
React__default['default'].createElement(react.Stack, { className: react.mergeStyles(borderAndBoxShadowStyle({
|
2235
2235
|
theme,
|
2236
|
-
errorColor: isDarkThemed(theme) ? '#f1707b' : '#a80000',
|
2237
2236
|
hasErrorMessage: !!errorMessage,
|
2238
2237
|
disabled: !!disabled
|
2239
2238
|
})) },
|
@@ -2581,9 +2580,10 @@ const onRenderSubmitIcon = (color) => {
|
|
2581
2580
|
const ChatMessageComponentAsEditBox = (props) => {
|
2582
2581
|
const { onCancel, onSubmit, strings, message } = props;
|
2583
2582
|
const [textValue, setTextValue] = React.useState(message.content || '');
|
2583
|
+
const [attachedFilesMetadata, setAttachedFilesMetadata] = React__default['default'].useState(getMessageAttachedFilesMetadata(message));
|
2584
2584
|
const editTextFieldRef = React__default['default'].useRef(null);
|
2585
2585
|
const theme = useTheme();
|
2586
|
-
const messageState = getMessageState(textValue);
|
2586
|
+
const messageState = getMessageState(textValue, attachedFilesMetadata !== null && attachedFilesMetadata !== void 0 ? attachedFilesMetadata : []);
|
2587
2587
|
const submitEnabled = messageState === 'OK';
|
2588
2588
|
React.useEffect(() => {
|
2589
2589
|
var _a;
|
@@ -2600,38 +2600,47 @@ const ChatMessageComponentAsEditBox = (props) => {
|
|
2600
2600
|
const editBoxStyles = React.useMemo(() => {
|
2601
2601
|
return react.concatStyleSets(editBoxStyleSet, { textField: { borderColor: theme.palette.themePrimary } });
|
2602
2602
|
}, [theme.palette.themePrimary]);
|
2603
|
-
/* @conditional-compile-remove(file-sharing) */
|
2604
2603
|
const onRenderFileUploads = React.useCallback(() => {
|
2605
|
-
|
2606
|
-
|
2607
|
-
React__default['default'].createElement(_FileUploadCards, { activeFileUploads: (_a = message.attachedFilesMetadata) === null || _a === void 0 ? void 0 : _a.map((file) => ({
|
2604
|
+
return ((attachedFilesMetadata === null || attachedFilesMetadata === void 0 ? void 0 : attachedFilesMetadata.length) && (React__default['default'].createElement("div", { style: { margin: '0.25rem' } },
|
2605
|
+
React__default['default'].createElement(_FileUploadCards, { activeFileUploads: attachedFilesMetadata === null || attachedFilesMetadata === void 0 ? void 0 : attachedFilesMetadata.map((file) => ({
|
2608
2606
|
id: file.name,
|
2609
2607
|
filename: file.name,
|
2610
2608
|
progress: 1
|
2611
|
-
}))
|
2612
|
-
|
2609
|
+
})), onCancelFileUpload: (fileId) => {
|
2610
|
+
setAttachedFilesMetadata(attachedFilesMetadata === null || attachedFilesMetadata === void 0 ? void 0 : attachedFilesMetadata.filter((file) => file.name !== fileId));
|
2611
|
+
} }))));
|
2612
|
+
}, [attachedFilesMetadata]);
|
2613
2613
|
return (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(borderAndBoxShadowStyle({
|
2614
2614
|
theme,
|
2615
|
-
errorColor: isDarkThemed(theme) ? '#f1707b' : '#a80000',
|
2616
2615
|
hasErrorMessage: false,
|
2617
2616
|
disabled: false
|
2618
2617
|
})) },
|
2619
2618
|
React__default['default'].createElement(InputBoxComponent, { inlineChildren: props.inlineEditButtons, id: 'editbox', textFieldRef: editTextFieldRef, inputClassName: editBoxStyle(props.inlineEditButtons), placeholderText: strings.editBoxPlaceholderText, textValue: textValue, onChange: setText, onEnterKeyDown: () => {
|
2620
|
-
submitEnabled &&
|
2619
|
+
submitEnabled &&
|
2620
|
+
onSubmit(textValue, message.metadata, {
|
2621
|
+
attachedFilesMetadata
|
2622
|
+
});
|
2621
2623
|
}, supportNewline: false, maxLength: MAXIMUM_LENGTH_OF_MESSAGE, errorMessage: textTooLongMessage, styles: editBoxStyles },
|
2622
2624
|
React__default['default'].createElement(InputBoxButton, { className: editingButtonStyle, ariaLabel: strings.editBoxCancelButton, tooltipContent: strings.editBoxCancelButton, onRenderIcon: onRenderThemedCancelIcon, onClick: () => {
|
2623
2625
|
onCancel && onCancel();
|
2624
2626
|
}, id: 'dismissIconWrapper' }),
|
2625
2627
|
React__default['default'].createElement(InputBoxButton, { className: editingButtonStyle, ariaLabel: strings.editBoxSubmitButton, tooltipContent: strings.editBoxSubmitButton, onRenderIcon: onRenderThemedSubmitIcon, onClick: (e) => {
|
2626
|
-
submitEnabled &&
|
2628
|
+
submitEnabled &&
|
2629
|
+
onSubmit(textValue, message.metadata, {
|
2630
|
+
attachedFilesMetadata
|
2631
|
+
});
|
2627
2632
|
e.stopPropagation();
|
2628
2633
|
}, id: 'submitIconWrapper' })),
|
2629
|
-
/* @conditional-compile-remove(file-sharing) */
|
2630
2634
|
onRenderFileUploads()));
|
2631
2635
|
};
|
2632
2636
|
const isMessageTooLong = (messageText) => messageText.length > MAXIMUM_LENGTH_OF_MESSAGE;
|
2633
|
-
const isMessageEmpty = (messageText) => messageText.trim().length === 0;
|
2634
|
-
const getMessageState = (messageText) => isMessageEmpty(messageText) ? 'too short' : isMessageTooLong(messageText) ? 'too long' : 'OK';
|
2637
|
+
const isMessageEmpty = (messageText, attachedFilesMetadata) => messageText.trim().length === 0 && attachedFilesMetadata.length === 0;
|
2638
|
+
const getMessageState = (messageText, attachedFilesMetadata) => isMessageEmpty(messageText, attachedFilesMetadata) ? 'too short' : isMessageTooLong(messageText) ? 'too long' : 'OK';
|
2639
|
+
// @TODO: Remove when file-sharing feature becomes stable.
|
2640
|
+
const getMessageAttachedFilesMetadata = (message) => {
|
2641
|
+
/* @conditional-compile-remove(file-sharing) */
|
2642
|
+
return message.attachedFilesMetadata;
|
2643
|
+
};
|
2635
2644
|
|
2636
2645
|
// Copyright (c) Microsoft Corporation.
|
2637
2646
|
const MINIMUM_TOUCH_TARGET_HEIGHT_REM$1 = 3;
|
@@ -2679,7 +2688,7 @@ const chatMessageEditedTagStyle = (theme) => react.mergeStyles({ fontWeight: rea
|
|
2679
2688
|
/**
|
2680
2689
|
* @private
|
2681
2690
|
*/
|
2682
|
-
const chatMessageFailedTagStyle = (theme) => react.mergeStyles({ fontWeight: react.FontWeights.light, color:
|
2691
|
+
const chatMessageFailedTagStyle = (theme) => react.mergeStyles({ fontWeight: react.FontWeights.light, color: theme.semanticColors.errorText });
|
2683
2692
|
/**
|
2684
2693
|
* @private
|
2685
2694
|
*/
|
@@ -3220,10 +3229,10 @@ const ChatMessageComponent = (props) => {
|
|
3220
3229
|
return React__default['default'].createElement(React__default['default'].Fragment, null);
|
3221
3230
|
}
|
3222
3231
|
else if (isEditing) {
|
3223
|
-
return (React__default['default'].createElement(ChatMessageComponentAsEditBox, { message: message, inlineEditButtons: props.inlineAcceptRejectEditButtons, strings: props.strings, onSubmit: (text) => __awaiter$o(void 0, void 0, void 0, function* () {
|
3232
|
+
return (React__default['default'].createElement(ChatMessageComponentAsEditBox, { message: message, inlineEditButtons: props.inlineAcceptRejectEditButtons, strings: props.strings, onSubmit: (text, metadata, options) => __awaiter$o(void 0, void 0, void 0, function* () {
|
3224
3233
|
props.onUpdateMessage &&
|
3225
3234
|
props.message.messageId &&
|
3226
|
-
(yield props.onUpdateMessage(props.message.messageId, text));
|
3235
|
+
(yield props.onUpdateMessage(props.message.messageId, text, metadata, options));
|
3227
3236
|
setIsEditing(false);
|
3228
3237
|
}), onCancel: () => {
|
3229
3238
|
setIsEditing(false);
|
@@ -4329,6 +4338,8 @@ const VideoTile = (props) => {
|
|
4329
4338
|
* A memoized version of VideoTile for rendering remote participants. React.memo is used for a performance
|
4330
4339
|
* boost by memoizing the same rendered component to avoid rerendering a VideoTile when its position in the
|
4331
4340
|
* array changes causing a rerender in the parent component. https://reactjs.org/docs/react-api.html#reactmemo
|
4341
|
+
*
|
4342
|
+
* @private
|
4332
4343
|
*/
|
4333
4344
|
const RemoteVideoTile = React__default['default'].memo((props) => {
|
4334
4345
|
const { isAvailable, isMuted, isSpeaking, isScreenSharingOn, onCreateRemoteStreamView, onDisposeRemoteStreamView, remoteVideoViewOptions, renderElement, userId, displayName, onRenderAvatar, showMuteIndicator } = props;
|
@@ -4805,25 +4816,6 @@ const LoadingSpinner = (props) => {
|
|
4805
4816
|
React__default['default'].createElement(react.Spinner, { label: props.loadingMessage, size: react.SpinnerSize.xSmall, "aria-live": 'assertive' })));
|
4806
4817
|
};
|
4807
4818
|
|
4808
|
-
// Copyright (c) Microsoft Corporation.
|
4809
|
-
/**
|
4810
|
-
* local video tile camera cycle button - for use on mobile screens only.
|
4811
|
-
* @internal
|
4812
|
-
*/
|
4813
|
-
const LocalVideoCameraCycleButton = (props) => {
|
4814
|
-
const { cameras, selectedCamera, onSelectCamera, label, ariaDescription } = props;
|
4815
|
-
const theme = react.useTheme();
|
4816
|
-
return (React__default['default'].createElement(react.IconButton, { "data-ui-id": 'local-camera-switcher-button', styles: localVideoCameraCycleButtonStyles(theme), iconProps: { iconName: 'LocalCameraSwitch' }, ariaLabel: label, ariaDescription: ariaDescription, "aria-live": 'polite', onClick: () => {
|
4817
|
-
if (cameras && cameras.length > 1 && selectedCamera !== undefined) {
|
4818
|
-
const index = cameras.findIndex((camera) => selectedCamera.id === camera.id);
|
4819
|
-
const newCamera = cameras[(index + 1) % cameras.length];
|
4820
|
-
if (onSelectCamera !== undefined) {
|
4821
|
-
onSelectCamera(newCamera);
|
4822
|
-
}
|
4823
|
-
}
|
4824
|
-
} }));
|
4825
|
-
};
|
4826
|
-
|
4827
4819
|
// Copyright (c) Microsoft Corporation.
|
4828
4820
|
const animationDuration = react.AnimationVariables.durationValue2;
|
4829
4821
|
const ZERO = { x: 0, y: 0 };
|
@@ -5496,6 +5488,84 @@ const _ModalClone = react.styled(ModalBase, getStyles, undefined, {
|
|
5496
5488
|
});
|
5497
5489
|
_ModalClone.displayName = 'Modal';
|
5498
5490
|
|
5491
|
+
// Copyright (c) Microsoft Corporation.
|
5492
|
+
/**
|
5493
|
+
* local video tile camera cycle button - for use on mobile screens only.
|
5494
|
+
* @internal
|
5495
|
+
*/
|
5496
|
+
const LocalVideoCameraCycleButton = (props) => {
|
5497
|
+
const { cameras, selectedCamera, onSelectCamera, label, ariaDescription } = props;
|
5498
|
+
const theme = react.useTheme();
|
5499
|
+
return (React__default['default'].createElement(react.IconButton, { "data-ui-id": 'local-camera-switcher-button', styles: localVideoCameraCycleButtonStyles(theme), iconProps: { iconName: 'LocalCameraSwitch' }, ariaLabel: label, ariaDescription: ariaDescription, "aria-live": 'polite', onClick: () => {
|
5500
|
+
if (cameras && cameras.length > 1 && selectedCamera !== undefined) {
|
5501
|
+
const index = cameras.findIndex((camera) => selectedCamera.id === camera.id);
|
5502
|
+
const newCamera = cameras[(index + 1) % cameras.length];
|
5503
|
+
if (onSelectCamera !== undefined) {
|
5504
|
+
onSelectCamera(newCamera);
|
5505
|
+
}
|
5506
|
+
}
|
5507
|
+
} }));
|
5508
|
+
};
|
5509
|
+
|
5510
|
+
// Copyright (c) Microsoft Corporation.
|
5511
|
+
/**
|
5512
|
+
* A memoized version of VideoTile for rendering local participant.
|
5513
|
+
*
|
5514
|
+
* @private
|
5515
|
+
*/
|
5516
|
+
const LocalVideoTile = React__default['default'].memo((props) => {
|
5517
|
+
const { isAvailable, isMuted, onCreateLocalStreamView, onDisposeLocalStreamView, localVideoViewOptions, renderElement, userId, showLabel, displayName, initialsName, onRenderAvatar, showMuteIndicator, styles, showCameraSwitcherInLocalPreview, localVideoCameraCycleButtonProps, localVideoCameraSwitcherLabel, localVideoSelectedDescription } = props;
|
5518
|
+
React.useEffect(() => {
|
5519
|
+
if (isAvailable && !renderElement) {
|
5520
|
+
onCreateLocalStreamView === null || onCreateLocalStreamView === void 0 ? void 0 : onCreateLocalStreamView(localVideoViewOptions);
|
5521
|
+
}
|
5522
|
+
// Always clean up element to make tile up to date and be able to dispose correctly
|
5523
|
+
return () => {
|
5524
|
+
if (renderElement) {
|
5525
|
+
onDisposeLocalStreamView === null || onDisposeLocalStreamView === void 0 ? void 0 : onDisposeLocalStreamView();
|
5526
|
+
}
|
5527
|
+
};
|
5528
|
+
}, [isAvailable, onCreateLocalStreamView, onDisposeLocalStreamView, localVideoViewOptions, renderElement]);
|
5529
|
+
// The execution order for above useEffect is onCreateRemoteStreamView =>(async time gap) RenderElement generated => element disposed => onDisposeRemoteStreamView
|
5530
|
+
// Element disposed could happen during async time gap, which still cause leaks for unused renderElement.
|
5531
|
+
// Need to do an entire cleanup when remoteTile gets disposed and make sure element gets correctly disposed
|
5532
|
+
React.useEffect(() => {
|
5533
|
+
return () => {
|
5534
|
+
onDisposeLocalStreamView === null || onDisposeLocalStreamView === void 0 ? void 0 : onDisposeLocalStreamView();
|
5535
|
+
};
|
5536
|
+
}, [onDisposeLocalStreamView]);
|
5537
|
+
const renderVideoStreamElement = React.useMemo(() => {
|
5538
|
+
// Checking if renderElement is well defined or not as calling SDK has a number of video streams limitation which
|
5539
|
+
// implies that, after their threshold, all streams have no child (blank video)
|
5540
|
+
if (!renderElement || !renderElement.childElementCount) {
|
5541
|
+
// Returning `undefined` results in the placeholder with avatar being shown
|
5542
|
+
return undefined;
|
5543
|
+
}
|
5544
|
+
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
5545
|
+
React__default['default'].createElement(FloatingLocalCameraCycleButton, { showCameraSwitcherInLocalPreview: showCameraSwitcherInLocalPreview !== null && showCameraSwitcherInLocalPreview !== void 0 ? showCameraSwitcherInLocalPreview : false, localVideoCameraCycleButtonProps: localVideoCameraCycleButtonProps, localVideoCameraSwitcherLabel: localVideoCameraSwitcherLabel, localVideoSelectedDescription: localVideoSelectedDescription }),
|
5546
|
+
React__default['default'].createElement(StreamMedia, { videoStreamElement: renderElement })));
|
5547
|
+
}, [
|
5548
|
+
localVideoCameraCycleButtonProps,
|
5549
|
+
localVideoCameraSwitcherLabel,
|
5550
|
+
localVideoSelectedDescription,
|
5551
|
+
renderElement,
|
5552
|
+
showCameraSwitcherInLocalPreview
|
5553
|
+
]);
|
5554
|
+
return (React__default['default'].createElement(VideoTile, { key: userId, userId: userId, renderElement: renderVideoStreamElement, showLabel: showLabel, displayName: displayName, initialsName: initialsName, styles: styles, onRenderPlaceholder: onRenderAvatar, isMuted: isMuted, showMuteIndicator: showMuteIndicator }));
|
5555
|
+
});
|
5556
|
+
const FloatingLocalCameraCycleButton = (props) => {
|
5557
|
+
const { showCameraSwitcherInLocalPreview, localVideoCameraCycleButtonProps, localVideoCameraSwitcherLabel, localVideoSelectedDescription } = props;
|
5558
|
+
const ariaDescription = (localVideoCameraCycleButtonProps === null || localVideoCameraCycleButtonProps === void 0 ? void 0 : localVideoCameraCycleButtonProps.selectedCamera) &&
|
5559
|
+
localVideoSelectedDescription &&
|
5560
|
+
_formatString(localVideoSelectedDescription, {
|
5561
|
+
cameraName: localVideoCameraCycleButtonProps.selectedCamera.name
|
5562
|
+
});
|
5563
|
+
return (React__default['default'].createElement(react.Stack, { horizontalAlign: "end" }, showCameraSwitcherInLocalPreview &&
|
5564
|
+
(localVideoCameraCycleButtonProps === null || localVideoCameraCycleButtonProps === void 0 ? void 0 : localVideoCameraCycleButtonProps.cameras) !== undefined &&
|
5565
|
+
(localVideoCameraCycleButtonProps === null || localVideoCameraCycleButtonProps === void 0 ? void 0 : localVideoCameraCycleButtonProps.selectedCamera) !== undefined &&
|
5566
|
+
(localVideoCameraCycleButtonProps === null || localVideoCameraCycleButtonProps === void 0 ? void 0 : localVideoCameraCycleButtonProps.onSelectCamera) !== undefined && (React__default['default'].createElement(LocalVideoCameraCycleButton, { cameras: localVideoCameraCycleButtonProps.cameras, selectedCamera: localVideoCameraCycleButtonProps.selectedCamera, onSelectCamera: localVideoCameraCycleButtonProps.onSelectCamera, label: localVideoCameraSwitcherLabel, ariaDescription: ariaDescription }))));
|
5567
|
+
};
|
5568
|
+
|
5499
5569
|
// Copyright (c) Microsoft Corporation.
|
5500
5570
|
// Currently the Calling JS SDK supports up to 4 remote video streams
|
5501
5571
|
const DEFAULT_MAX_REMOTE_VIDEO_STREAMS = 4;
|
@@ -5520,7 +5590,7 @@ const modalMaxDragPosition = { x: localVideoTileOuterPaddingPX, y: localVideoTil
|
|
5520
5590
|
*/
|
5521
5591
|
const VideoGallery = (props) => {
|
5522
5592
|
var _a, _b, _c;
|
5523
|
-
const { localParticipant, remoteParticipants = [], localVideoViewOptions, remoteVideoViewOptions, dominantSpeakers, onRenderLocalVideoTile, onRenderRemoteVideoTile, onCreateLocalStreamView, onCreateRemoteStreamView, onDisposeRemoteStreamView, styles, layout, onRenderAvatar, showMuteIndicator, maxRemoteVideoStreams = DEFAULT_MAX_REMOTE_VIDEO_STREAMS, showCameraSwitcherInLocalPreview, localVideoCameraCycleButtonProps } = props;
|
5593
|
+
const { localParticipant, remoteParticipants = [], localVideoViewOptions, remoteVideoViewOptions, dominantSpeakers, onRenderLocalVideoTile, onRenderRemoteVideoTile, onCreateLocalStreamView, onDisposeLocalStreamView, onCreateRemoteStreamView, onDisposeRemoteStreamView, styles, layout, onRenderAvatar, showMuteIndicator, maxRemoteVideoStreams = DEFAULT_MAX_REMOTE_VIDEO_STREAMS, showCameraSwitcherInLocalPreview, localVideoCameraCycleButtonProps } = props;
|
5524
5594
|
const ids = useIdentifiers();
|
5525
5595
|
const theme = useTheme();
|
5526
5596
|
const localeStrings = useLocale$1().strings.videoGallery;
|
@@ -5559,56 +5629,37 @@ const VideoGallery = (props) => {
|
|
5559
5629
|
lastVisibleParticipants: visibleAudioParticipants.current,
|
5560
5630
|
maxDominantSpeakers: MAX_AUDIO_DOMINANT_SPEAKERS
|
5561
5631
|
});
|
5562
|
-
const LocalCameraCycleButton = React.useCallback(() => {
|
5563
|
-
const ariaDescription = (localVideoCameraCycleButtonProps === null || localVideoCameraCycleButtonProps === void 0 ? void 0 : localVideoCameraCycleButtonProps.selectedCamera) &&
|
5564
|
-
_formatString(strings.localVideoSelectedDescription, {
|
5565
|
-
cameraName: localVideoCameraCycleButtonProps.selectedCamera.name
|
5566
|
-
});
|
5567
|
-
return (React__default['default'].createElement(react.Stack, { horizontalAlign: "end" }, showCameraSwitcherInLocalPreview &&
|
5568
|
-
(localVideoCameraCycleButtonProps === null || localVideoCameraCycleButtonProps === void 0 ? void 0 : localVideoCameraCycleButtonProps.cameras) !== undefined &&
|
5569
|
-
(localVideoCameraCycleButtonProps === null || localVideoCameraCycleButtonProps === void 0 ? void 0 : localVideoCameraCycleButtonProps.selectedCamera) !== undefined &&
|
5570
|
-
(localVideoCameraCycleButtonProps === null || localVideoCameraCycleButtonProps === void 0 ? void 0 : localVideoCameraCycleButtonProps.onSelectCamera) !== undefined && (React__default['default'].createElement(LocalVideoCameraCycleButton, { cameras: localVideoCameraCycleButtonProps.cameras, selectedCamera: localVideoCameraCycleButtonProps.selectedCamera, onSelectCamera: localVideoCameraCycleButtonProps.onSelectCamera, label: strings.localVideoCameraSwitcherLabel, ariaDescription: ariaDescription }))));
|
5571
|
-
}, [
|
5572
|
-
localVideoCameraCycleButtonProps === null || localVideoCameraCycleButtonProps === void 0 ? void 0 : localVideoCameraCycleButtonProps.cameras,
|
5573
|
-
localVideoCameraCycleButtonProps === null || localVideoCameraCycleButtonProps === void 0 ? void 0 : localVideoCameraCycleButtonProps.onSelectCamera,
|
5574
|
-
localVideoCameraCycleButtonProps === null || localVideoCameraCycleButtonProps === void 0 ? void 0 : localVideoCameraCycleButtonProps.selectedCamera,
|
5575
|
-
showCameraSwitcherInLocalPreview,
|
5576
|
-
strings.localVideoCameraSwitcherLabel,
|
5577
|
-
strings.localVideoSelectedDescription
|
5578
|
-
]);
|
5579
5632
|
/**
|
5580
5633
|
* Utility function for memoized rendering of LocalParticipant.
|
5581
5634
|
*/
|
5582
5635
|
const localVideoTile = React.useMemo(() => {
|
5583
|
-
|
5636
|
+
var _a, _b;
|
5584
5637
|
if (onRenderLocalVideoTile) {
|
5585
5638
|
return onRenderLocalVideoTile(localParticipant);
|
5586
5639
|
}
|
5587
|
-
const localVideoTileStyles = shouldFloatLocalVideo ? floatingLocalVideoTileStyle : {}
|
5588
|
-
const localVideoTileStylesThemed = react.concatStyleSets(localVideoTileStyles, {
|
5640
|
+
const localVideoTileStyles = react.concatStyleSets(shouldFloatLocalVideo ? floatingLocalVideoTileStyle : {}, {
|
5589
5641
|
root: { borderRadius: theme.effects.roundedCorner4 }
|
5590
5642
|
}, styles === null || styles === void 0 ? void 0 : styles.localVideo);
|
5591
|
-
if (localVideoStream && !localVideoStream.renderElement) {
|
5592
|
-
onCreateLocalStreamView && onCreateLocalStreamView(localVideoViewOptions);
|
5593
|
-
}
|
5594
5643
|
return (React__default['default'].createElement(react.Stack, { tabIndex: 0, "aria-label": strings.localVideoMovementLabel, role: 'dialog' },
|
5595
|
-
React__default['default'].createElement(
|
5596
|
-
React__default['default'].createElement(LocalCameraCycleButton, null),
|
5597
|
-
React__default['default'].createElement(StreamMedia, { videoStreamElement: localVideoStream.renderElement }))) : undefined, showLabel: !(shouldFloatLocalVideo && isNarrow), displayName: isNarrow ? '' : strings.localVideoLabel, initialsName: localParticipant.displayName, styles: localVideoTileStylesThemed, onRenderPlaceholder: onRenderAvatar, isMuted: localParticipant.isMuted, showMuteIndicator: showMuteIndicator })));
|
5644
|
+
React__default['default'].createElement(LocalVideoTile, { userId: localParticipant.userId, onCreateLocalStreamView: onCreateLocalStreamView, onDisposeLocalStreamView: onDisposeLocalStreamView, isAvailable: (_a = localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable, isMuted: localParticipant.isMuted, renderElement: (_b = localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.videoStream) === null || _b === void 0 ? void 0 : _b.renderElement, displayName: isNarrow ? '' : strings.localVideoLabel, initialsName: localParticipant.displayName, localVideoViewOptions: localVideoViewOptions, onRenderAvatar: onRenderAvatar, showLabel: !(shouldFloatLocalVideo && isNarrow), showMuteIndicator: showMuteIndicator, showCameraSwitcherInLocalPreview: showCameraSwitcherInLocalPreview, localVideoCameraCycleButtonProps: localVideoCameraCycleButtonProps, localVideoCameraSwitcherLabel: strings.localVideoCameraSwitcherLabel, localVideoSelectedDescription: strings.localVideoSelectedDescription, styles: localVideoTileStyles })));
|
5598
5645
|
}, [
|
5599
|
-
localParticipant,
|
5600
5646
|
isNarrow,
|
5647
|
+
localParticipant,
|
5648
|
+
localVideoCameraCycleButtonProps,
|
5649
|
+
localVideoViewOptions,
|
5601
5650
|
onCreateLocalStreamView,
|
5651
|
+
onDisposeLocalStreamView,
|
5652
|
+
onRenderAvatar,
|
5602
5653
|
onRenderLocalVideoTile,
|
5603
|
-
|
5604
|
-
|
5605
|
-
strings.localVideoMovementLabel,
|
5606
|
-
strings.localVideoLabel,
|
5607
|
-
LocalCameraCycleButton,
|
5654
|
+
shouldFloatLocalVideo,
|
5655
|
+
showCameraSwitcherInLocalPreview,
|
5608
5656
|
showMuteIndicator,
|
5609
|
-
|
5610
|
-
|
5611
|
-
|
5657
|
+
strings.localVideoCameraSwitcherLabel,
|
5658
|
+
strings.localVideoLabel,
|
5659
|
+
strings.localVideoMovementLabel,
|
5660
|
+
strings.localVideoSelectedDescription,
|
5661
|
+
styles === null || styles === void 0 ? void 0 : styles.localVideo,
|
5662
|
+
theme.effects.roundedCorner4
|
5612
5663
|
]);
|
5613
5664
|
const defaultOnRenderVideoTile = React.useCallback((participant, isVideoParticipant) => {
|
5614
5665
|
const remoteVideoStream = participant.videoStream;
|
@@ -6715,6 +6766,175 @@ const _DrawerMenu = (props) => {
|
|
6715
6766
|
} })))))));
|
6716
6767
|
};
|
6717
6768
|
|
6769
|
+
// Copyright (c) Microsoft Corporation.
|
6770
|
+
// Licensed under the MIT license.
|
6771
|
+
/**
|
6772
|
+
* Return different conditions based on the current and previous state of recording and transcribing
|
6773
|
+
*
|
6774
|
+
* @param callRecordState - The current call record state: on, off, stopped
|
6775
|
+
* @param callTranscribeState - The current call transcribe state: on, off, stopped
|
6776
|
+
*
|
6777
|
+
* @remarks - The stopped state means: previously on but currently off
|
6778
|
+
*
|
6779
|
+
* @private
|
6780
|
+
*/
|
6781
|
+
const computeVariant = (callRecordState, callTranscribeState) => {
|
6782
|
+
if (callRecordState === 'on' && callTranscribeState === 'on') {
|
6783
|
+
return 'RECORDING_AND_TRANSCRIPTION_STARTED';
|
6784
|
+
}
|
6785
|
+
else if (callRecordState === 'on' && callTranscribeState === 'off') {
|
6786
|
+
return 'RECORDING_STARTED';
|
6787
|
+
}
|
6788
|
+
else if (callRecordState === 'off' && callTranscribeState === 'on') {
|
6789
|
+
return 'TRANSCRIPTION_STARTED';
|
6790
|
+
}
|
6791
|
+
else if (callRecordState === 'on' && callTranscribeState === 'stopped') {
|
6792
|
+
return 'TRANSCRIPTION_STOPPED_STILL_RECORDING';
|
6793
|
+
}
|
6794
|
+
else if (callRecordState === 'stopped' && callTranscribeState === 'on') {
|
6795
|
+
return 'RECORDING_STOPPED_STILL_TRANSCRIBING';
|
6796
|
+
}
|
6797
|
+
else if (callRecordState === 'off' && callTranscribeState === 'stopped') {
|
6798
|
+
return 'TRANSCRIPTION_STOPPED';
|
6799
|
+
}
|
6800
|
+
else if (callRecordState === 'stopped' && callTranscribeState === 'off') {
|
6801
|
+
return 'RECORDING_STOPPED';
|
6802
|
+
}
|
6803
|
+
else if (callRecordState === 'stopped' && callTranscribeState === 'stopped') {
|
6804
|
+
return 'RECORDING_AND_TRANSCRIPTION_STOPPED';
|
6805
|
+
}
|
6806
|
+
else {
|
6807
|
+
return 'NO_STATE';
|
6808
|
+
}
|
6809
|
+
};
|
6810
|
+
|
6811
|
+
// Copyright (c) Microsoft Corporation.
|
6812
|
+
/**
|
6813
|
+
* A component that displays banners to notify the user when call recording and
|
6814
|
+
* transcription is enabled or disabled in a call.
|
6815
|
+
*
|
6816
|
+
* This component implements a state machine that tracks the changes to call
|
6817
|
+
* recording and transcription state and shows the corresponding message.
|
6818
|
+
*
|
6819
|
+
* @internal
|
6820
|
+
*/
|
6821
|
+
const _ComplianceBanner = (props) => {
|
6822
|
+
//set variant when incoming state is different from current state
|
6823
|
+
//when variant change, return message bar
|
6824
|
+
//when message bar is dismissed,set variant to default nostate and if current state is stopped, set to off
|
6825
|
+
const [variant, setVariant] = React.useState('NO_STATE');
|
6826
|
+
const cachedProps = React.useRef({
|
6827
|
+
latestBooleanState: {
|
6828
|
+
callTranscribeState: false,
|
6829
|
+
callRecordState: false
|
6830
|
+
},
|
6831
|
+
latestStringState: {
|
6832
|
+
callTranscribeState: 'off',
|
6833
|
+
callRecordState: 'off'
|
6834
|
+
}
|
6835
|
+
});
|
6836
|
+
// Only update cached props and variant if there is _some_ change in the latest props.
|
6837
|
+
// This ensures that state machine is only updated if there is an actual change in the props.
|
6838
|
+
if (props.callRecordState !== cachedProps.current.latestBooleanState.callRecordState ||
|
6839
|
+
props.callTranscribeState !== cachedProps.current.latestBooleanState.callTranscribeState) {
|
6840
|
+
cachedProps.current = {
|
6841
|
+
latestBooleanState: props,
|
6842
|
+
latestStringState: {
|
6843
|
+
callRecordState: determineStates(cachedProps.current.latestStringState.callRecordState, props.callRecordState),
|
6844
|
+
callTranscribeState: determineStates(cachedProps.current.latestStringState.callTranscribeState, props.callTranscribeState)
|
6845
|
+
}
|
6846
|
+
};
|
6847
|
+
setVariant(computeVariant(cachedProps.current.latestStringState.callRecordState, cachedProps.current.latestStringState.callTranscribeState));
|
6848
|
+
// when both states are stopped, after displaying message "RECORDING_AND_TRANSCRIPTION_STOPPED", change both states to off (going back to the default state)
|
6849
|
+
if (cachedProps.current.latestStringState.callRecordState === 'stopped' &&
|
6850
|
+
cachedProps.current.latestStringState.callTranscribeState === 'stopped') {
|
6851
|
+
cachedProps.current.latestStringState.callRecordState = 'off';
|
6852
|
+
cachedProps.current.latestStringState.callTranscribeState = 'off';
|
6853
|
+
}
|
6854
|
+
}
|
6855
|
+
return variant === 'NO_STATE' ? (React__default['default'].createElement(React__default['default'].Fragment, null)) : (React__default['default'].createElement(react.MessageBar, { messageBarType: react.MessageBarType.warning, onDismiss: () => {
|
6856
|
+
// when closing the banner, change variant to nostate and change stopped state to off state.
|
6857
|
+
// Reason: on banner close, going back to the default state
|
6858
|
+
setVariant('NO_STATE');
|
6859
|
+
if (cachedProps.current.latestStringState.callRecordState === 'stopped') {
|
6860
|
+
cachedProps.current.latestStringState.callRecordState = 'off';
|
6861
|
+
}
|
6862
|
+
if (cachedProps.current.latestStringState.callTranscribeState === 'stopped') {
|
6863
|
+
cachedProps.current.latestStringState.callTranscribeState = 'off';
|
6864
|
+
}
|
6865
|
+
}, dismissButtonAriaLabel: props.strings.close },
|
6866
|
+
React__default['default'].createElement(BannerMessage, { variant: variant, strings: props.strings })));
|
6867
|
+
};
|
6868
|
+
function determineStates(previous, current) {
|
6869
|
+
// if current state is on, then return on
|
6870
|
+
if (current) {
|
6871
|
+
return 'on';
|
6872
|
+
}
|
6873
|
+
// if current state is off
|
6874
|
+
else {
|
6875
|
+
// if previous state is on and current state is off, return stopped (on -> off)
|
6876
|
+
if (previous === 'on') {
|
6877
|
+
return 'stopped';
|
6878
|
+
}
|
6879
|
+
// otherwise remain previous state unchanged
|
6880
|
+
else {
|
6881
|
+
return previous;
|
6882
|
+
}
|
6883
|
+
}
|
6884
|
+
}
|
6885
|
+
function BannerMessage(props) {
|
6886
|
+
const { variant, strings } = props;
|
6887
|
+
switch (variant) {
|
6888
|
+
case 'TRANSCRIPTION_STOPPED_STILL_RECORDING':
|
6889
|
+
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
6890
|
+
React__default['default'].createElement("b", null, strings.complianceBannerTranscriptionStopped),
|
6891
|
+
` ${strings.complianceBannerNowOnlyRecording}`,
|
6892
|
+
React__default['default'].createElement(PrivacyPolicy, { linkText: strings.privacyPolicy })));
|
6893
|
+
case 'RECORDING_STOPPED_STILL_TRANSCRIBING':
|
6894
|
+
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
6895
|
+
React__default['default'].createElement("b", null, strings.complianceBannerRecordingStopped),
|
6896
|
+
` ${strings.complianceBannerNowOnlyTranscription}`,
|
6897
|
+
React__default['default'].createElement(PrivacyPolicy, { linkText: strings.privacyPolicy })));
|
6898
|
+
case 'RECORDING_AND_TRANSCRIPTION_STOPPED':
|
6899
|
+
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
6900
|
+
React__default['default'].createElement("b", null, strings.complianceBannerRecordingAndTranscriptionSaved),
|
6901
|
+
` ${strings.complianceBannerRecordingAndTranscriptionStopped}`,
|
6902
|
+
React__default['default'].createElement(LearnMore, { linkText: strings.learnMore })));
|
6903
|
+
case 'RECORDING_AND_TRANSCRIPTION_STARTED':
|
6904
|
+
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
6905
|
+
React__default['default'].createElement("b", null, strings.complianceBannerRecordingAndTranscriptionStarted),
|
6906
|
+
` ${strings.complianceBannerTranscriptionConsent}`,
|
6907
|
+
React__default['default'].createElement(PrivacyPolicy, { linkText: strings.privacyPolicy })));
|
6908
|
+
case 'TRANSCRIPTION_STARTED':
|
6909
|
+
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
6910
|
+
React__default['default'].createElement("b", null, strings.complianceBannerTranscriptionStarted),
|
6911
|
+
` ${strings.complianceBannerTranscriptionConsent}`,
|
6912
|
+
React__default['default'].createElement(PrivacyPolicy, { linkText: strings.privacyPolicy })));
|
6913
|
+
case 'RECORDING_STOPPED':
|
6914
|
+
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
6915
|
+
React__default['default'].createElement("b", null, strings.complianceBannerRecordingSaving),
|
6916
|
+
` ${strings.complianceBannerRecordingStopped}`,
|
6917
|
+
React__default['default'].createElement(LearnMore, { linkText: strings.learnMore })));
|
6918
|
+
case 'RECORDING_STARTED':
|
6919
|
+
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
6920
|
+
React__default['default'].createElement("b", null, strings.complianceBannerRecordingStarted),
|
6921
|
+
` ${strings.complianceBannerTranscriptionConsent}`,
|
6922
|
+
React__default['default'].createElement(PrivacyPolicy, { linkText: strings.privacyPolicy })));
|
6923
|
+
case 'TRANSCRIPTION_STOPPED':
|
6924
|
+
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
6925
|
+
React__default['default'].createElement("b", null, strings.complianceBannerTranscriptionSaving),
|
6926
|
+
` ${strings.complianceBannerTranscriptionStopped}`,
|
6927
|
+
React__default['default'].createElement(LearnMore, { linkText: strings.learnMore })));
|
6928
|
+
}
|
6929
|
+
return React__default['default'].createElement(React__default['default'].Fragment, null);
|
6930
|
+
}
|
6931
|
+
function PrivacyPolicy(props) {
|
6932
|
+
return (React__default['default'].createElement(react.Link, { href: "https://privacy.microsoft.com/privacystatement#mainnoticetoendusersmodule", target: "_blank", underline: true }, props.linkText));
|
6933
|
+
}
|
6934
|
+
function LearnMore(props) {
|
6935
|
+
return (React__default['default'].createElement(react.Link, { href: "https://support.microsoft.com/office/record-a-meeting-in-teams-34dfbe7f-b07d-4a27-b4c6-de62f1348c24", target: "_blank", underline: true }, props.linkText));
|
6936
|
+
}
|
6937
|
+
|
6718
6938
|
// Copyright (c) Microsoft Corporation.
|
6719
6939
|
// Licensed under the MIT license.
|
6720
6940
|
/**
|
@@ -7124,8 +7344,10 @@ const createDefaultChatHandlers = memoizeOne__default['default']((chatClient, ch
|
|
7124
7344
|
};
|
7125
7345
|
yield chatThreadClient.sendMessage(sendMessageRequest, options);
|
7126
7346
|
}),
|
7127
|
-
onUpdateMessage: (messageId, content, metadata) => __awaiter$k(void 0, void 0, void 0, function* () {
|
7128
|
-
|
7347
|
+
onUpdateMessage: (messageId, content, metadata, options) => __awaiter$k(void 0, void 0, void 0, function* () {
|
7348
|
+
const updatedMetadata = metadata ? Object.assign({}, metadata) : {};
|
7349
|
+
updatedMetadata['fileSharingMetadata'] = JSON.stringify((options === null || options === void 0 ? void 0 : options.attachedFilesMetadata) || []);
|
7350
|
+
yield chatThreadClient.updateMessage(messageId, { content, metadata: updatedMetadata });
|
7129
7351
|
}),
|
7130
7352
|
onDeleteMessage: (messageId) => __awaiter$k(void 0, void 0, void 0, function* () {
|
7131
7353
|
yield chatThreadClient.deleteMessage(messageId);
|
@@ -10878,14 +11100,15 @@ const proxyChatClient = {
|
|
10878
11100
|
const createStatefulChatClient = (args, options) => {
|
10879
11101
|
chatStatefulLogger.info(`Creating chat stateful client using library version: ${_getApplicationId()}`);
|
10880
11102
|
const tweakedOptions = Object.assign(Object.assign({}, options), { chatClientOptions: Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.chatClientOptions), { userAgentOptions: { userAgentPrefix: _getApplicationId() } }) });
|
10881
|
-
return
|
11103
|
+
return _createStatefulChatClientWithDeps(new communicationChat.ChatClient(args.endpoint, args.credential, tweakedOptions.chatClientOptions), args, tweakedOptions);
|
10882
11104
|
};
|
10883
11105
|
/**
|
10884
11106
|
* Internal implementation of {@link createStatefulChatClient} for dependency injection.
|
10885
11107
|
*
|
10886
11108
|
* Used by tests. Should not be exported out of this package.
|
11109
|
+
* @internal
|
10887
11110
|
*/
|
10888
|
-
const
|
11111
|
+
const _createStatefulChatClientWithDeps = (chatClient, args, options) => {
|
10889
11112
|
const context = new ChatContext$1(options === null || options === void 0 ? void 0 : options.maxStateChangeListeners);
|
10890
11113
|
let eventSubscriber;
|
10891
11114
|
context.updateChatConfig(communicationCommon.getIdentifierKind(args.userId), args.displayName);
|
@@ -11361,17 +11584,13 @@ class AzureCommunicationChatAdapter {
|
|
11361
11584
|
this.unsubscribeAllEvents();
|
11362
11585
|
}
|
11363
11586
|
fetchInitialData() {
|
11364
|
-
var e_1, _a;
|
11365
11587
|
return __awaiter$9(this, void 0, void 0, function* () {
|
11366
|
-
try
|
11588
|
+
// If get properties fails we dont want to try to get the participants after.
|
11589
|
+
yield this.asyncTeeErrorToEventEmitter(() => __awaiter$9(this, void 0, void 0, function* () {
|
11590
|
+
var e_1, _a;
|
11367
11591
|
yield this.chatThreadClient.getProperties();
|
11368
|
-
}
|
11369
|
-
catch (e) {
|
11370
|
-
console.log(e);
|
11371
|
-
}
|
11372
|
-
// Fetch all participants who joined before the local user.
|
11373
|
-
try {
|
11374
11592
|
try {
|
11593
|
+
// Fetch all participants who joined before the local user.
|
11375
11594
|
for (var _b = __asyncValues(this.chatThreadClient.listParticipants().byPage({
|
11376
11595
|
// Fetch 100 participants per page by default.
|
11377
11596
|
maxPageSize: 100
|
@@ -11388,10 +11607,7 @@ class AzureCommunicationChatAdapter {
|
|
11388
11607
|
}
|
11389
11608
|
finally { if (e_1) throw e_1.error; }
|
11390
11609
|
}
|
11391
|
-
}
|
11392
|
-
catch (e) {
|
11393
|
-
console.log(e);
|
11394
|
-
}
|
11610
|
+
}));
|
11395
11611
|
});
|
11396
11612
|
}
|
11397
11613
|
getState() {
|
@@ -11454,10 +11670,11 @@ class AzureCommunicationChatAdapter {
|
|
11454
11670
|
}));
|
11455
11671
|
});
|
11456
11672
|
}
|
11457
|
-
updateMessage(messageId, content, metadata) {
|
11673
|
+
updateMessage(messageId, content, metadata, options) {
|
11458
11674
|
return __awaiter$9(this, void 0, void 0, function* () {
|
11459
11675
|
return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$9(this, void 0, void 0, function* () {
|
11460
|
-
|
11676
|
+
/* @conditional-compile-remove(file-sharing) */
|
11677
|
+
return yield this.handlers.onUpdateMessage(messageId, content, metadata, options);
|
11461
11678
|
}));
|
11462
11679
|
});
|
11463
11680
|
}
|
@@ -12751,45 +12968,6 @@ const getCallCompositePage = (call, previousCall) => {
|
|
12751
12968
|
// No call state - show starting page (configuration)
|
12752
12969
|
return 'configuration';
|
12753
12970
|
};
|
12754
|
-
/**
|
12755
|
-
* Return different conditions based on the current and previous state of recording and transcribing
|
12756
|
-
*
|
12757
|
-
* @param callRecordState - The current call record state: on, off, stopped
|
12758
|
-
* @param callTranscribeState - The current call transcribe state: on, off, stopped
|
12759
|
-
*
|
12760
|
-
* @remarks - The stopped state means: previously on but currently off
|
12761
|
-
*
|
12762
|
-
* @private
|
12763
|
-
*/
|
12764
|
-
const computeVariant = (callRecordState, callTranscribeState) => {
|
12765
|
-
if (callRecordState === 'on' && callTranscribeState === 'on') {
|
12766
|
-
return 'RECORDING_AND_TRANSCRIPTION_STARTED';
|
12767
|
-
}
|
12768
|
-
else if (callRecordState === 'on' && callTranscribeState === 'off') {
|
12769
|
-
return 'RECORDING_STARTED';
|
12770
|
-
}
|
12771
|
-
else if (callRecordState === 'off' && callTranscribeState === 'on') {
|
12772
|
-
return 'TRANSCRIPTION_STARTED';
|
12773
|
-
}
|
12774
|
-
else if (callRecordState === 'on' && callTranscribeState === 'stopped') {
|
12775
|
-
return 'TRANSCRIPTION_STOPPED_STILL_RECORDING';
|
12776
|
-
}
|
12777
|
-
else if (callRecordState === 'stopped' && callTranscribeState === 'on') {
|
12778
|
-
return 'RECORDING_STOPPED_STILL_TRANSCRIBING';
|
12779
|
-
}
|
12780
|
-
else if (callRecordState === 'off' && callTranscribeState === 'stopped') {
|
12781
|
-
return 'TRANSCRIPTION_STOPPED';
|
12782
|
-
}
|
12783
|
-
else if (callRecordState === 'stopped' && callTranscribeState === 'off') {
|
12784
|
-
return 'RECORDING_STOPPED';
|
12785
|
-
}
|
12786
|
-
else if (callRecordState === 'stopped' && callTranscribeState === 'stopped') {
|
12787
|
-
return 'RECORDING_AND_TRANSCRIPTION_STOPPED';
|
12788
|
-
}
|
12789
|
-
else {
|
12790
|
-
return 'NO_STATE';
|
12791
|
-
}
|
12792
|
-
};
|
12793
12971
|
|
12794
12972
|
// Copyright (c) Microsoft Corporation.
|
12795
12973
|
// Licensed under the MIT license.
|
@@ -13198,128 +13376,6 @@ const onFetchCustomButtonPropsTrampoline = (options) => {
|
|
13198
13376
|
return response;
|
13199
13377
|
};
|
13200
13378
|
|
13201
|
-
// Copyright (c) Microsoft Corporation.
|
13202
|
-
/**
|
13203
|
-
* @private
|
13204
|
-
*/
|
13205
|
-
const ComplianceBanner = (props) => {
|
13206
|
-
function determineStates(previous, current) {
|
13207
|
-
// if current state is on, then return on
|
13208
|
-
if (current) {
|
13209
|
-
return 'on';
|
13210
|
-
}
|
13211
|
-
// if current state is off
|
13212
|
-
else {
|
13213
|
-
// if previous state is on and current state is off, return stopped (on -> off)
|
13214
|
-
if (previous === 'on') {
|
13215
|
-
return 'stopped';
|
13216
|
-
}
|
13217
|
-
// otherwise remain previous state unchanged
|
13218
|
-
else {
|
13219
|
-
return previous;
|
13220
|
-
}
|
13221
|
-
}
|
13222
|
-
}
|
13223
|
-
//set variant when incoming state is different from current state
|
13224
|
-
//when variant change, return message bar
|
13225
|
-
//when message bar is dismissed,set variant to default nostate and if current state is stopped, set to off
|
13226
|
-
const strings = useLocale().strings;
|
13227
|
-
const [variant, setVariant] = React.useState('NO_STATE');
|
13228
|
-
const cachedProps = React.useRef({
|
13229
|
-
latestBooleanState: {
|
13230
|
-
callTranscribeState: false,
|
13231
|
-
callRecordState: false
|
13232
|
-
},
|
13233
|
-
latestStringState: {
|
13234
|
-
callTranscribeState: 'off',
|
13235
|
-
callRecordState: 'off'
|
13236
|
-
}
|
13237
|
-
});
|
13238
|
-
// Only update cached props and variant if there is _some_ change in the latest props.
|
13239
|
-
// This ensures that state machine is only updated if there is an actual change in the props.
|
13240
|
-
if (props.callRecordState !== cachedProps.current.latestBooleanState.callRecordState ||
|
13241
|
-
props.callTranscribeState !== cachedProps.current.latestBooleanState.callTranscribeState) {
|
13242
|
-
cachedProps.current = {
|
13243
|
-
latestBooleanState: props,
|
13244
|
-
latestStringState: {
|
13245
|
-
callRecordState: determineStates(cachedProps.current.latestStringState.callRecordState, props.callRecordState),
|
13246
|
-
callTranscribeState: determineStates(cachedProps.current.latestStringState.callTranscribeState, props.callTranscribeState)
|
13247
|
-
}
|
13248
|
-
};
|
13249
|
-
setVariant(computeVariant(cachedProps.current.latestStringState.callRecordState, cachedProps.current.latestStringState.callTranscribeState));
|
13250
|
-
// when both states are stopped, after displaying message "RECORDING_AND_TRANSCRIPTION_STOPPED", change both states to off (going back to the default state)
|
13251
|
-
if (cachedProps.current.latestStringState.callRecordState === 'stopped' &&
|
13252
|
-
cachedProps.current.latestStringState.callTranscribeState === 'stopped') {
|
13253
|
-
cachedProps.current.latestStringState.callRecordState = 'off';
|
13254
|
-
cachedProps.current.latestStringState.callTranscribeState = 'off';
|
13255
|
-
}
|
13256
|
-
}
|
13257
|
-
return variant === 'NO_STATE' ? (React__default['default'].createElement(React__default['default'].Fragment, null)) : (React__default['default'].createElement(react.MessageBar, { messageBarType: react.MessageBarType.warning, onDismiss: () => {
|
13258
|
-
// when closing the banner, change variant to nostate and change stopped state to off state.
|
13259
|
-
// Reason: on banner close, going back to the default state
|
13260
|
-
setVariant('NO_STATE');
|
13261
|
-
if (cachedProps.current.latestStringState.callRecordState === 'stopped') {
|
13262
|
-
cachedProps.current.latestStringState.callRecordState = 'off';
|
13263
|
-
}
|
13264
|
-
if (cachedProps.current.latestStringState.callTranscribeState === 'stopped') {
|
13265
|
-
cachedProps.current.latestStringState.callTranscribeState = 'off';
|
13266
|
-
}
|
13267
|
-
}, dismissButtonAriaLabel: strings.call.close },
|
13268
|
-
React__default['default'].createElement(BannerMessage, { variant: variant, strings: strings })));
|
13269
|
-
};
|
13270
|
-
function BannerMessage(props) {
|
13271
|
-
const { variant, strings } = props;
|
13272
|
-
switch (variant) {
|
13273
|
-
case 'TRANSCRIPTION_STOPPED_STILL_RECORDING':
|
13274
|
-
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
13275
|
-
React__default['default'].createElement("b", null, strings.call.complianceBannerTranscriptionStopped),
|
13276
|
-
` ${strings.call.complianceBannerNowOnlyRecording}`,
|
13277
|
-
React__default['default'].createElement(PrivacyPolicy, { linkText: strings.call.privacyPolicy })));
|
13278
|
-
case 'RECORDING_STOPPED_STILL_TRANSCRIBING':
|
13279
|
-
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
13280
|
-
React__default['default'].createElement("b", null, strings.call.complianceBannerRecordingStopped),
|
13281
|
-
` ${strings.call.complianceBannerNowOnlyTranscription}`,
|
13282
|
-
React__default['default'].createElement(PrivacyPolicy, { linkText: strings.call.privacyPolicy })));
|
13283
|
-
case 'RECORDING_AND_TRANSCRIPTION_STOPPED':
|
13284
|
-
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
13285
|
-
React__default['default'].createElement("b", null, strings.call.complianceBannerRecordingAndTranscriptionSaved),
|
13286
|
-
` ${strings.call.complianceBannerRecordingAndTranscriptionStopped}`,
|
13287
|
-
React__default['default'].createElement(LearnMore, { linkText: strings.call.learnMore })));
|
13288
|
-
case 'RECORDING_AND_TRANSCRIPTION_STARTED':
|
13289
|
-
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
13290
|
-
React__default['default'].createElement("b", null, strings.call.complianceBannerRecordingAndTranscriptionStarted),
|
13291
|
-
` ${strings.call.complianceBannerTranscriptionConsent}`,
|
13292
|
-
React__default['default'].createElement(PrivacyPolicy, { linkText: strings.call.privacyPolicy })));
|
13293
|
-
case 'TRANSCRIPTION_STARTED':
|
13294
|
-
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
13295
|
-
React__default['default'].createElement("b", null, strings.call.complianceBannerTranscriptionStarted),
|
13296
|
-
` ${strings.call.complianceBannerTranscriptionConsent}`,
|
13297
|
-
React__default['default'].createElement(PrivacyPolicy, { linkText: strings.call.privacyPolicy })));
|
13298
|
-
case 'RECORDING_STOPPED':
|
13299
|
-
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
13300
|
-
React__default['default'].createElement("b", null, strings.call.complianceBannerRecordingSaving),
|
13301
|
-
` ${strings.call.complianceBannerRecordingStopped}`,
|
13302
|
-
React__default['default'].createElement(LearnMore, { linkText: strings.call.learnMore })));
|
13303
|
-
case 'RECORDING_STARTED':
|
13304
|
-
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
13305
|
-
React__default['default'].createElement("b", null, strings.call.complianceBannerRecordingStarted),
|
13306
|
-
` ${strings.call.complianceBannerTranscriptionConsent}`,
|
13307
|
-
React__default['default'].createElement(PrivacyPolicy, { linkText: strings.call.privacyPolicy })));
|
13308
|
-
case 'TRANSCRIPTION_STOPPED':
|
13309
|
-
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
13310
|
-
React__default['default'].createElement("b", null, strings.call.complianceBannerTranscriptionSaving),
|
13311
|
-
` ${strings.call.complianceBannerTranscriptionStopped}`,
|
13312
|
-
React__default['default'].createElement(LearnMore, { linkText: strings.call.learnMore })));
|
13313
|
-
}
|
13314
|
-
return React__default['default'].createElement(React__default['default'].Fragment, null);
|
13315
|
-
}
|
13316
|
-
function PrivacyPolicy(props) {
|
13317
|
-
return (React__default['default'].createElement(react.Link, { href: "https://privacy.microsoft.com/privacystatement#mainnoticetoendusersmodule", target: "_blank", underline: true }, props.linkText));
|
13318
|
-
}
|
13319
|
-
function LearnMore(props) {
|
13320
|
-
return (React__default['default'].createElement(react.Link, { href: "https://support.microsoft.com/office/record-a-meeting-in-teams-34dfbe7f-b07d-4a27-b4c6-de62f1348c24", target: "_blank", underline: true }, props.linkText));
|
13321
|
-
}
|
13322
|
-
|
13323
13379
|
// Copyright (c) Microsoft Corporation.
|
13324
13380
|
// Licensed under the MIT license.
|
13325
13381
|
/** @private */
|
@@ -13455,7 +13511,7 @@ const CallArrangement = (props) => {
|
|
13455
13511
|
React__default['default'].createElement(react.Stack, { verticalFill: true, horizontalAlign: "stretch", className: containerClassName, "data-ui-id": props.dataUiId },
|
13456
13512
|
React__default['default'].createElement(react.Stack.Item, { styles: notificationsContainerStyles },
|
13457
13513
|
React__default['default'].createElement(react.Stack, { styles: bannerNotificationStyles },
|
13458
|
-
React__default['default'].createElement(
|
13514
|
+
React__default['default'].createElement(_ComplianceBanner, Object.assign({}, props.complianceBannerProps))),
|
13459
13515
|
props.errorBarProps !== false && (React__default['default'].createElement(react.Stack, { styles: bannerNotificationStyles },
|
13460
13516
|
React__default['default'].createElement(ErrorBar, Object.assign({}, props.errorBarProps)))),
|
13461
13517
|
!!props.mutedNotificationProps && React__default['default'].createElement(MutedNotification, Object.assign({}, props.mutedNotificationProps))),
|
@@ -13783,9 +13839,10 @@ const CallPage = (props) => {
|
|
13783
13839
|
const errorBarProps = usePropsFor$1(ErrorBar);
|
13784
13840
|
const mutedNotificationProps = useSelector$1(mutedNotificationSelector);
|
13785
13841
|
const networkReconnectTileProps = useSelector$1(networkReconnectTileSelector);
|
13842
|
+
const strings = useLocale().strings.call;
|
13786
13843
|
// Reduce the controls shown when mobile view is enabled.
|
13787
13844
|
const callControlOptions = mobileView ? reduceCallControlsForMobile(options === null || options === void 0 ? void 0 : options.callControls) : options === null || options === void 0 ? void 0 : options.callControls;
|
13788
|
-
return (React__default['default'].createElement(CallArrangement, { complianceBannerProps: Object.assign({}, complianceBannerProps), errorBarProps: (options === null || options === void 0 ? void 0 : options.errorBar) !== false && Object.assign({}, errorBarProps), mutedNotificationProps: mutedNotificationProps, callControlProps: {
|
13845
|
+
return (React__default['default'].createElement(CallArrangement, { complianceBannerProps: Object.assign(Object.assign({}, complianceBannerProps), { strings }), errorBarProps: (options === null || options === void 0 ? void 0 : options.errorBar) !== false && Object.assign({}, errorBarProps), mutedNotificationProps: mutedNotificationProps, callControlProps: {
|
13789
13846
|
callInvitationURL: callInvitationURL,
|
13790
13847
|
onFetchParticipantMenuItems: onFetchParticipantMenuItems,
|
13791
13848
|
options: callControlOptions,
|
@@ -14339,7 +14396,7 @@ const LobbyPage = (props) => {
|
|
14339
14396
|
? reduceCallControlsForMobile((_a = props.options) === null || _a === void 0 ? void 0 : _a.callControls)
|
14340
14397
|
: (_b = props.options) === null || _b === void 0 ? void 0 : _b.callControls;
|
14341
14398
|
callControlOptions = disableLobbyPageControls(callControlOptions);
|
14342
|
-
return (React__default['default'].createElement(CallArrangement, { complianceBannerProps: {}, errorBarProps: ((_c = props.options) === null || _c === void 0 ? void 0 : _c.errorBar) !== false && Object.assign({}, errorBarProps), callControlProps: {
|
14399
|
+
return (React__default['default'].createElement(CallArrangement, { complianceBannerProps: { strings }, errorBarProps: ((_c = props.options) === null || _c === void 0 ? void 0 : _c.errorBar) !== false && Object.assign({}, errorBarProps), callControlProps: {
|
14343
14400
|
options: callControlOptions,
|
14344
14401
|
increaseFlyoutItemSize: props.mobileView
|
14345
14402
|
}, mobileView: props.mobileView, onRenderGalleryContent: () => React__default['default'].createElement(LobbyTile, Object.assign({}, lobbyProps, { overlayProps: overlayProps(strings, inLobby) })), dataUiId: 'lobby-page' }));
|
@@ -16313,7 +16370,7 @@ const CallWithChatScreen = (props) => {
|
|
16313
16370
|
setActivePane('none');
|
16314
16371
|
}, [setActivePane]);
|
16315
16372
|
/** Constant setting of id for the parent stack of the composite */
|
16316
|
-
const compositeParentDivId = 'callWithChatCompositeParentDiv-internal';
|
16373
|
+
const compositeParentDivId = reactHooks.useId('callWithChatCompositeParentDiv-internal');
|
16317
16374
|
const toggleChat = React.useCallback(() => {
|
16318
16375
|
if (activePane === 'chat') {
|
16319
16376
|
setActivePane('none');
|