@azure/communication-react 1.14.0-alpha-202402290012 → 1.14.0-alpha-202403020011

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.
Files changed (94) hide show
  1. package/dist/communication-react.d.ts +8 -2
  2. package/dist/dist-cjs/communication-react/index.js +194 -150
  3. package/dist/dist-cjs/communication-react/index.js.map +1 -1
  4. package/dist/dist-esm/acs-ui-common/src/common.d.ts +5 -0
  5. package/dist/dist-esm/acs-ui-common/src/common.js +7 -0
  6. package/dist/dist-esm/acs-ui-common/src/common.js.map +1 -1
  7. package/dist/dist-esm/acs-ui-common/src/index.d.ts +1 -1
  8. package/dist/dist-esm/acs-ui-common/src/index.js +1 -1
  9. package/dist/dist-esm/acs-ui-common/src/index.js.map +1 -1
  10. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  11. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  12. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.d.ts +1 -1
  13. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js +25 -6
  14. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js.map +1 -1
  15. package/dist/dist-esm/calling-component-bindings/src/videoGallerySelector.d.ts +1 -1
  16. package/dist/dist-esm/calling-component-bindings/src/videoGallerySelector.js.map +1 -1
  17. package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts +6 -0
  18. package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
  19. package/dist/dist-esm/communication-react/src/index.js.map +1 -1
  20. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsMessageBubble.js +4 -4
  21. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsMessageBubble.js.map +1 -1
  22. package/dist/dist-esm/react-components/src/components/FileDownloadCards.js +1 -1
  23. package/dist/dist-esm/react-components/src/components/FileDownloadCards.js.map +1 -1
  24. package/dist/dist-esm/react-components/src/components/ImageOverlay.d.ts +1 -1
  25. package/dist/dist-esm/react-components/src/components/ImageOverlay.js.map +1 -1
  26. package/dist/dist-esm/react-components/src/components/MessageThread.js.map +1 -1
  27. package/dist/dist-esm/react-components/src/components/RTE/RTEInputBoxComponent.d.ts +2 -1
  28. package/dist/dist-esm/react-components/src/components/RTE/RTEInputBoxComponent.js +11 -3
  29. package/dist/dist-esm/react-components/src/components/RTE/RTEInputBoxComponent.js.map +1 -1
  30. package/dist/dist-esm/react-components/src/components/RTE/RTERibbonButtons.js +1 -1
  31. package/dist/dist-esm/react-components/src/components/RTE/RTERibbonButtons.js.map +1 -1
  32. package/dist/dist-esm/react-components/src/components/RTE/RTESendBox.js +4 -9
  33. package/dist/dist-esm/react-components/src/components/RTE/RTESendBox.js.map +1 -1
  34. package/dist/dist-esm/react-components/src/components/RTE/RTESendBoxErrors.js +6 -0
  35. package/dist/dist-esm/react-components/src/components/RTE/RTESendBoxErrors.js.map +1 -1
  36. package/dist/dist-esm/react-components/src/components/RTE/RichTextEditor.d.ts +1 -1
  37. package/dist/dist-esm/react-components/src/components/RTE/RichTextEditor.js +12 -18
  38. package/dist/dist-esm/react-components/src/components/RTE/RichTextEditor.js.map +1 -1
  39. package/dist/dist-esm/react-components/src/components/Survey/TagsSurvey/TagsSurvey.js +4 -4
  40. package/dist/dist-esm/react-components/src/components/Survey/TagsSurvey/TagsSurvey.js.map +1 -1
  41. package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
  42. package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.d.ts +5 -1
  43. package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.js +49 -84
  44. package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.js.map +1 -1
  45. package/dist/dist-esm/react-components/src/components/utils.d.ts +0 -6
  46. package/dist/dist-esm/react-components/src/components/utils.js +0 -8
  47. package/dist/dist-esm/react-components/src/components/utils.js.map +1 -1
  48. package/dist/dist-esm/react-components/src/localization/locales/utils.js +2 -2
  49. package/dist/dist-esm/react-components/src/localization/locales/utils.js.map +1 -1
  50. package/dist/dist-esm/react-components/src/types/ChatMessage.js.map +1 -1
  51. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +3 -7
  52. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  53. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallingSoundSubscriber.js +3 -3
  54. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallingSoundSubscriber.js.map +1 -1
  55. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallReadinessModal.d.ts +2 -2
  56. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallReadinessModal.js.map +1 -1
  57. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js +15 -2
  58. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js.map +1 -1
  59. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/DtmfDialpadPage.js +1 -1
  60. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/DtmfDialpadPage.js.map +1 -1
  61. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/TrackCapabilityChangedNotifications.js +9 -3
  62. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/TrackCapabilityChangedNotifications.js.map +1 -1
  63. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js +8 -0
  64. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js.map +1 -1
  65. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.js.map +1 -1
  66. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatComposite.js +6 -1
  67. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatComposite.js.map +1 -1
  68. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/ChatAdapter.js.map +1 -1
  69. package/dist/dist-esm/react-composites/src/composites/ChatComposite/hooks/useHandlers.js +3 -1
  70. package/dist/dist-esm/react-composites/src/composites/ChatComposite/hooks/useHandlers.js.map +1 -1
  71. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CustomButton.d.ts +10 -1
  72. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CustomButton.js +5 -1
  73. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CustomButton.js.map +1 -1
  74. package/dist/dist-esm/react-composites/src/composites/common/Drawer/CaptionLanguageSettingsDrawer.d.ts +21 -0
  75. package/dist/dist-esm/react-composites/src/composites/common/Drawer/CaptionLanguageSettingsDrawer.js +43 -0
  76. package/dist/dist-esm/react-composites/src/composites/common/Drawer/CaptionLanguageSettingsDrawer.js.map +1 -0
  77. package/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.js +4 -3
  78. package/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.js.map +1 -1
  79. package/dist/dist-esm/react-composites/src/composites/common/Drawer/SpokenLanguageSettingsDrawer.d.ts +21 -0
  80. package/dist/dist-esm/react-composites/src/composites/common/Drawer/{CaptionSettingsDrawer.js → SpokenLanguageSettingsDrawer.js} +4 -3
  81. package/dist/dist-esm/react-composites/src/composites/common/Drawer/SpokenLanguageSettingsDrawer.js.map +1 -0
  82. package/dist/dist-esm/react-composites/src/composites/common/ModalLocalAndRemotePIP.js.map +1 -1
  83. package/dist/dist-esm/react-composites/src/composites/common/MoreButton.js.map +1 -1
  84. package/dist/dist-esm/react-composites/src/composites/common/PeoplePaneContent.d.ts +2 -2
  85. package/dist/dist-esm/react-composites/src/composites/common/PeoplePaneContent.js.map +1 -1
  86. package/dist/dist-esm/react-composites/src/composites/common/Survey.js +1 -1
  87. package/dist/dist-esm/react-composites/src/composites/common/Survey.js.map +1 -1
  88. package/dist/dist-esm/react-composites/src/composites/common/styles/Survey.styles.d.ts +1 -1
  89. package/dist/dist-esm/react-composites/src/composites/common/styles/Survey.styles.js.map +1 -1
  90. package/dist/dist-esm/react-composites/src/composites/localization/locales/utils.js +5 -1
  91. package/dist/dist-esm/react-composites/src/composites/localization/locales/utils.js.map +1 -1
  92. package/package.json +6 -5
  93. package/dist/dist-esm/react-composites/src/composites/common/Drawer/CaptionSettingsDrawer.d.ts +0 -21
  94. package/dist/dist-esm/react-composites/src/composites/common/Drawer/CaptionSettingsDrawer.js.map +0 -1
@@ -17,6 +17,7 @@ var reactFileTypeIcons = require('@fluentui/react-file-type-icons');
17
17
  var roosterjsEditorPlugins = require('roosterjs-editor-plugins');
18
18
  var roosterjsEditorCore = require('roosterjs-editor-core');
19
19
  var roosterjsReact = require('roosterjs-react');
20
+ var roosterjsEditorApi = require('roosterjs-editor-api');
20
21
  var uuid = require('uuid');
21
22
  var reactChat = require('@fluentui-contrib/react-chat');
22
23
  var react$1 = require('@griffel/react');
@@ -173,7 +174,7 @@ function getDefaultExportFromCjs (x) {
173
174
  // Copyright (c) Microsoft Corporation.
174
175
  // Licensed under the MIT License.
175
176
  // GENERATED FILE. DO NOT EDIT MANUALLY.
176
- var telemetryVersion = '1.14.0-alpha-202402290012';
177
+ var telemetryVersion = '1.14.0-alpha-202403020011';
177
178
 
178
179
 
179
180
  var telemetryVersion$1 = /*@__PURE__*/getDefaultExportFromCjs(telemetryVersion);
@@ -333,6 +334,13 @@ const _convertPxToRem = (px) => {
333
334
  const _preventDismissOnEvent = (ev) => {
334
335
  return ev.type === 'resize' || ev.type === 'scroll';
335
336
  };
337
+ /**
338
+ * @internal
339
+ * Helper function to get the keys of an object
340
+ */
341
+ function _getKeys(obj) {
342
+ return Object.keys(obj);
343
+ }
336
344
 
337
345
  // Copyright (c) Microsoft Corporation.
338
346
  // Licensed under the MIT License.
@@ -5912,14 +5920,6 @@ e.nativeEvent.isComposing ||
5912
5920
  * @private
5913
5921
  */
5914
5922
  const nullToUndefined = (value) => (value === null ? undefined : value);
5915
- /**
5916
- * Helper function to get the keys of an object
5917
- *
5918
- * @private
5919
- */
5920
- function getKeys(obj) {
5921
- return Object.keys(obj);
5922
- }
5923
5923
 
5924
5924
  // Copyright (c) Microsoft Corporation.
5925
5925
  // Licensed under the MIT License.
@@ -9173,97 +9173,62 @@ const richTextEditorStyle = react.mergeStyles({
9173
9173
  /**
9174
9174
  * @private
9175
9175
  */
9176
- const ribbonButtonStyle = (theme) => {
9176
+ const ribbonOverflowButtonStyle = (theme) => {
9177
9177
  return {
9178
- icon: { color: theme.palette.neutralPrimary, height: 'auto' },
9179
- menuIcon: { color: theme.palette.neutralPrimary, height: 'auto' },
9180
- root: { minWidth: 'auto', backgroundColor: 'transparent' },
9181
- rootChecked: {
9182
- backgroundColor: 'transparent',
9183
- selectors: {
9184
- // Icon's color doesn't work here because of the specificity
9185
- '.ms-Button-icon': {
9186
- color: theme.palette.themePrimary
9187
- },
9188
- '.ms-Button-menuIcon': {
9189
- color: theme.palette.themePrimary
9190
- }
9191
- }
9192
- },
9193
- rootHovered: {
9194
- backgroundColor: 'transparent',
9195
- selectors: {
9196
- // Icon's color doesn't work here because of the specificity
9197
- '.ms-Button-icon': {
9198
- color: theme.palette.themePrimary
9199
- },
9200
- '.ms-Button-menuIcon': {
9201
- color: theme.palette.themePrimary
9202
- }
9203
- }
9204
- },
9205
- rootCheckedHovered: {
9206
- backgroundColor: 'transparent',
9207
- selectors: {
9208
- // Icon's color doesn't work here because of the specificity
9209
- '.ms-Button-icon': {
9210
- color: theme.palette.themePrimary
9211
- },
9212
- '.ms-Button-menuIcon': {
9213
- color: theme.palette.themePrimary
9214
- }
9215
- }
9216
- },
9217
- rootCheckedPressed: {
9218
- backgroundColor: 'transparent',
9219
- selectors: {
9220
- // Icon's color doesn't work here because of the specificity
9221
- '.ms-Button-icon': {
9222
- color: theme.palette.themePrimary
9223
- },
9224
- '.ms-Button-menuIcon': {
9225
- color: theme.palette.themePrimary
9226
- }
9227
- }
9228
- },
9229
- rootPressed: {
9230
- backgroundColor: 'transparent',
9231
- selectors: {
9232
- // Icon's color doesn't work here because of the specificity
9233
- '.ms-Button-icon': {
9234
- color: theme.palette.themePrimary
9235
- },
9236
- '.ms-Button-menuIcon': {
9237
- color: theme.palette.themePrimary
9238
- }
9239
- }
9240
- },
9241
- rootExpanded: {
9242
- backgroundColor: 'transparent',
9243
- selectors: {
9244
- // Icon's color doesn't work here because of the specificity
9245
- '.ms-Button-icon': {
9246
- color: theme.palette.themePrimary
9247
- },
9248
- '.ms-Button-menuIcon': {
9249
- color: theme.palette.themePrimary
9178
+ subComponentStyles: {
9179
+ menuItem: {
9180
+ icon: { color: theme.palette.neutralPrimary, paddingTop: '0.5rem' },
9181
+ root: ribbonOverflowButtonRootStyles(theme)
9182
+ },
9183
+ callout: {}
9184
+ }
9185
+ };
9186
+ };
9187
+ const ribbonOverflowButtonRootStyles = (theme) => {
9188
+ return {
9189
+ selectors: {
9190
+ // Icon's color doesn't work here because of the specificity
9191
+ '&:hover': {
9192
+ selectors: {
9193
+ '.ms-ContextualMenu-icon': {
9194
+ color: theme.palette.neutralPrimary
9195
+ }
9250
9196
  }
9251
9197
  }
9252
- },
9253
- rootExpandedHovered: {
9254
- backgroundColor: 'transparent',
9255
- selectors: {
9256
- //icon color is not working here because of the specificity
9257
- '.ms-Button-icon': {
9258
- color: theme.palette.themePrimary
9259
- },
9260
- '.ms-Button-menuIcon': {
9261
- color: theme.palette.themePrimary
9262
- }
9198
+ }
9199
+ };
9200
+ };
9201
+ const ribbonButtonRootStyles = (theme) => {
9202
+ return {
9203
+ backgroundColor: 'transparent',
9204
+ selectors: {
9205
+ // Icon's color doesn't work here because of the specificity
9206
+ '.ms-Button-icon': {
9207
+ color: theme.palette.themePrimary
9208
+ },
9209
+ '.ms-Button-menuIcon': {
9210
+ color: theme.palette.themePrimary
9263
9211
  }
9264
9212
  }
9265
9213
  };
9266
9214
  };
9215
+ /**
9216
+ * @private
9217
+ */
9218
+ const ribbonButtonStyle = (theme) => {
9219
+ return {
9220
+ icon: { color: theme.palette.neutralPrimary, height: 'auto' },
9221
+ menuIcon: { color: theme.palette.neutralPrimary, height: 'auto' },
9222
+ root: { minWidth: 'auto', backgroundColor: 'transparent' },
9223
+ rootChecked: ribbonButtonRootStyles(theme),
9224
+ rootHovered: ribbonButtonRootStyles(theme),
9225
+ rootCheckedHovered: ribbonButtonRootStyles(theme),
9226
+ rootCheckedPressed: ribbonButtonRootStyles(theme),
9227
+ rootPressed: ribbonButtonRootStyles(theme),
9228
+ rootExpanded: ribbonButtonRootStyles(theme),
9229
+ rootExpandedHovered: ribbonButtonRootStyles(theme)
9230
+ };
9231
+ };
9267
9232
  /**
9268
9233
  * @private
9269
9234
  */
@@ -9326,7 +9291,7 @@ const createKnownRibbonButton = (key, theme, icon) => {
9326
9291
  // AllButtonStringKeys is a union of all the string keys of all the buttons
9327
9292
  const result = buttons[0];
9328
9293
  button.iconName = icon;
9329
- button.commandBarProperties = Object.assign(Object.assign({}, button.commandBarProperties), { buttonStyles: Object.assign(Object.assign({}, (_a = button.commandBarProperties) === null || _a === void 0 ? void 0 : _a.buttonStyles), ribbonButtonStyle(theme)) });
9294
+ button.commandBarProperties = Object.assign(Object.assign({}, button.commandBarProperties), { buttonStyles: Object.assign(Object.assign({}, (_a = button.commandBarProperties) === null || _a === void 0 ? void 0 : _a.buttonStyles), ribbonButtonStyle(theme)), canCheck: false });
9330
9295
  return result;
9331
9296
  }
9332
9297
  return undefined;
@@ -9375,10 +9340,9 @@ const ribbonButtonsStrings = (strings) => {
9375
9340
  * @beta
9376
9341
  */
9377
9342
  React.forwardRef((props, ref) => {
9378
- const { content, onChange, placeholderText, strings } = props;
9343
+ const { initialContent, onChange, placeholderText, strings } = props;
9379
9344
  const editor = React.useRef(null);
9380
- const [divComponent, setDivComponent] = React.useState(null);
9381
- const theme = react.useTheme();
9345
+ const theme = useTheme();
9382
9346
  React.useImperativeHandle(ref, () => {
9383
9347
  return {
9384
9348
  focus() {
@@ -9389,26 +9353,19 @@ React.forwardRef((props, ref) => {
9389
9353
  };
9390
9354
  }, []);
9391
9355
  React.useEffect(() => {
9392
- var _a, _b;
9393
- if (content !== ((_a = editor.current) === null || _a === void 0 ? void 0 : _a.getContent())) {
9394
- (_b = editor.current) === null || _b === void 0 ? void 0 : _b.setContent(content || '');
9395
- }
9396
- }, [content]);
9397
- React.useEffect(() => {
9398
- if (divComponent !== null && theme.palette.neutralPrimary !== undefined) {
9356
+ if (editor.current !== null) {
9399
9357
  // Adjust color prop for the div component when theme is updated
9400
9358
  // because doNotAdjustEditorColor is set for Rooster
9401
- divComponent.style.color = theme.palette.neutralPrimary;
9359
+ roosterjsEditorApi.setTextColor(editor.current, theme.palette.neutralPrimary);
9402
9360
  }
9403
- }, [divComponent, theme]);
9361
+ }, [theme]);
9404
9362
  const ribbonPlugin = React.useMemo(() => {
9405
9363
  return roosterjsReact.createRibbonPlugin();
9406
9364
  }, []);
9407
9365
  const editorCreator = React.useCallback((div, options) => {
9408
9366
  editor.current = new roosterjsEditorCore.Editor(div, options);
9409
- setDivComponent(div);
9410
9367
  // Remove the background color of the editor
9411
- div.style.backgroundColor = 'transparent';
9368
+ roosterjsEditorApi.setBackgroundColor(editor.current, 'transparent');
9412
9369
  return editor.current;
9413
9370
  }, []);
9414
9371
  const plugins = React.useMemo(() => {
@@ -9427,13 +9384,14 @@ React.forwardRef((props, ref) => {
9427
9384
  styles: ribbonButtonStyle(theme),
9428
9385
  menuProps: {
9429
9386
  items: [], // CommandBar will determine items rendered in overflow
9430
- isBeakVisible: false
9387
+ isBeakVisible: false,
9388
+ styles: ribbonOverflowButtonStyle(theme)
9431
9389
  }
9432
9390
  }, strings: ribbonButtonsStrings(strings) }));
9433
9391
  }, [strings, ribbonPlugin, theme]);
9434
9392
  return (React.createElement("div", null,
9435
9393
  ribbon,
9436
- React.createElement(roosterjsReact.Rooster, { inDarkMode: isDarkThemed(theme), plugins: plugins, className: richTextEditorStyle, editorCreator: editorCreator,
9394
+ React.createElement(roosterjsReact.Rooster, { initialContent: initialContent, inDarkMode: isDarkThemed(theme), plugins: plugins, className: richTextEditorStyle, editorCreator: editorCreator,
9437
9395
  // TODO: confirm the color during inline images implementation
9438
9396
  imageSelectionBorderColor: 'blue',
9439
9397
  // doNotAdjustEditorColor is used to fix the default background color for Rooster component
@@ -11228,7 +11186,7 @@ const DownloadIconTrampoline = () => {
11228
11186
  return React.createElement(react.Icon, { "data-ui-id": "file-download-card-download-icon", iconName: "DownloadFile", style: actionIconStyle });
11229
11187
  };
11230
11188
  const useLocaleStringsTrampoline = () => {
11231
- /* @conditional-compile-remove(file-sharing) @conditional-compile-remove(teams-inline-images-and-file-sharing)*/
11189
+ /* @conditional-compile-remove(file-sharing) */
11232
11190
  return useLocale$1().strings.messageThread;
11233
11191
  };
11234
11192
 
@@ -11301,18 +11259,18 @@ const MessageBubble = (props) => {
11301
11259
  const defaultOnRenderFileDownloads = React.useCallback(() => {
11302
11260
  /* @conditional-compile-remove(file-sharing) */
11303
11261
  return (React.createElement(_FileDownloadCards, { userId: userId,
11304
- /* @conditional-compile-remove(file-sharing) @conditional-compile-remove(teams-inline-images-and-file-sharing)*/
11262
+ /* @conditional-compile-remove(file-sharing) */
11305
11263
  fileMetadata: message.files || [],
11306
11264
  /* @conditional-compile-remove(file-sharing) */
11307
11265
  downloadHandler: fileDownloadHandler,
11308
- /* @conditional-compile-remove(file-sharing) @conditional-compile-remove(teams-inline-images-and-file-sharing)*/
11266
+ /* @conditional-compile-remove(file-sharing) */
11309
11267
  strings: { downloadFile: strings.downloadFile, fileCardGroupMessage: strings.fileCardGroupMessage } }));
11310
11268
  }, [
11311
11269
  userId,
11312
11270
  message,
11313
- /* @conditional-compile-remove(file-sharing) @conditional-compile-remove(teams-inline-images-and-file-sharing)*/
11271
+ /* @conditional-compile-remove(file-sharing) */
11314
11272
  strings,
11315
- /* @conditional-compile-remove(file-sharing) @conditional-compile-remove(teams-inline-images-and-file-sharing)*/
11273
+ /* @conditional-compile-remove(file-sharing) */
11316
11274
  fileDownloadHandler
11317
11275
  ]);
11318
11276
  const editedOn = 'editedOn' in message ? message.editedOn : undefined;
@@ -19306,8 +19264,8 @@ const _TagsSurvey = (props) => {
19306
19264
  videoRating: [],
19307
19265
  screenshareRating: []
19308
19266
  };
19309
- getKeys(callIssuesToTag).forEach((issueCategory) => {
19310
- getKeys(callIssuesToTag[issueCategory]).map((issue) => {
19267
+ _getKeys(callIssuesToTag).forEach((issueCategory) => {
19268
+ _getKeys(callIssuesToTag[issueCategory]).map((issue) => {
19311
19269
  const issueCapitalized = ((issue === null || issue === void 0 ? void 0 : issue.charAt(0).toUpperCase()) + (issue === null || issue === void 0 ? void 0 : issue.slice(1)));
19312
19270
  const issueMessages = callIssuesToTag[issueCategory];
19313
19271
  if (tags[issueCategory]) {
@@ -19399,7 +19357,7 @@ const _TagsSurvey = (props) => {
19399
19357
  return (React.createElement(React.Fragment, null,
19400
19358
  React.createElement(react.Stack, { verticalAlign: "center" },
19401
19359
  React.createElement(react.Text, { className: questionTextStyle$1(theme) }, strings === null || strings === void 0 ? void 0 : strings.tagsSurveyQuestion)),
19402
- React.createElement(react.Pivot, null, getKeys(tags).map((key, i) => {
19360
+ React.createElement(react.Pivot, null, _getKeys(tags).map((key, i) => {
19403
19361
  return (React.createElement(react.PivotItem, { key: `key-${i}`, headerText: categoryHeadings[key], headerButtonProps: {
19404
19362
  'data-order': i,
19405
19363
  'data-title': key
@@ -20277,7 +20235,7 @@ const _CaptionsSettingsModal = (props) => {
20277
20235
  */
20278
20236
  const createComponentStrings = (localizedStrings) => {
20279
20237
  const strings = Object.assign({}, en_US$1);
20280
- getKeys(localizedStrings).forEach((key) => {
20238
+ _getKeys(localizedStrings).forEach((key) => {
20281
20239
  // mark the value as unknown because the type changes based on the key.
20282
20240
  // this is unsafe at runtime as we could assign the wrong type based on the key here.
20283
20241
  // but typescript isn't smart enough to know that the key used across each access will result in the same type
@@ -20600,7 +20558,9 @@ const _videoGalleryRemoteParticipantsMemo = (remoteParticipants, isHideAttendeeN
20600
20558
  /* @conditional-compile-remove(reaction) */
20601
20559
  remoteParticipantReaction,
20602
20560
  /* @conditional-compile-remove(spotlight) */
20603
- participant.spotlight);
20561
+ participant.spotlight,
20562
+ /* @conditional-compile-remove(ppt-live) */
20563
+ participant.contentSharingStream);
20604
20564
  }));
20605
20565
  });
20606
20566
  };
@@ -20610,15 +20570,18 @@ raisedHand, // temp unknown type to build stable
20610
20570
  /* @conditional-compile-remove(reaction) */
20611
20571
  reaction, // temp unknown type to build stable
20612
20572
  /* @conditional-compile-remove(spotlight) */
20613
- spotlight // temp unknown type to build stable
20614
- ) => {
20573
+ spotlight, // temp unknown type to build stable
20574
+ /* @conditional-compile-remove(ppt-live) */
20575
+ contentSharingStream) => {
20615
20576
  return convertRemoteParticipantToVideoGalleryRemoteParticipant(userId, isMuted, isSpeaking, videoStreams, state, displayName,
20616
20577
  /* @conditional-compile-remove(raise-hand) */
20617
20578
  raisedHand,
20618
20579
  /* @conditional-compile-remove(reaction) */
20619
20580
  reaction,
20620
20581
  /* @conditional-compile-remove(spotlight) */
20621
- spotlight);
20582
+ spotlight,
20583
+ /* @conditional-compile-remove(ppt-live) */
20584
+ contentSharingStream);
20622
20585
  });
20623
20586
  /** @private */
20624
20587
  const convertRemoteParticipantToVideoGalleryRemoteParticipant = (userId, isMuted, isSpeaking, videoStreams, state, displayName,
@@ -20627,8 +20590,9 @@ raisedHand, // temp unknown type to build stable
20627
20590
  /* @conditional-compile-remove(reaction) */
20628
20591
  reaction, // temp unknown type to build stable
20629
20592
  /* @conditional-compile-remove(spotlight) */
20630
- spotlight // temp unknown type to build stable
20631
- ) => {
20593
+ spotlight, // temp unknown type to build stable
20594
+ /* @conditional-compile-remove(ppt-live) */
20595
+ contentSharingStream) => {
20632
20596
  const rawVideoStreamsArray = Object.values(videoStreams);
20633
20597
  let videoStream = undefined;
20634
20598
  let screenShareStream = undefined;
@@ -20642,6 +20606,10 @@ spotlight // temp unknown type to build stable
20642
20606
  if (sdkScreenShareStream) {
20643
20607
  screenShareStream = convertRemoteVideoStreamToVideoGalleryStream(sdkScreenShareStream);
20644
20608
  }
20609
+ /* @conditional-compile-remove(ppt-live) */
20610
+ if (contentSharingStream) {
20611
+ screenShareStream = convertRemoteContentSharingStreamToVideoGalleryStream(contentSharingStream);
20612
+ }
20645
20613
  return {
20646
20614
  userId,
20647
20615
  displayName,
@@ -20674,6 +20642,15 @@ const convertRemoteVideoStreamToVideoGalleryStream = (stream) => {
20674
20642
  streamSize: stream.streamSize
20675
20643
  };
20676
20644
  };
20645
+ /* @conditional-compile-remove(ppt-live) */
20646
+ const convertRemoteContentSharingStreamToVideoGalleryStream = (stream) => {
20647
+ return {
20648
+ isAvailable: !!stream,
20649
+ isReceiving: true,
20650
+ isMirrored: false,
20651
+ renderElement: stream
20652
+ };
20653
+ };
20677
20654
  /** @private */
20678
20655
  const memoizeLocalParticipant = memoizeOne((identifier, displayName, isMuted, isScreenSharingOn, localVideoStream,
20679
20656
  /* @conditional-compile-remove(rooms) */ role,
@@ -24857,7 +24834,9 @@ const createCompositeHandlers$1 = memoizeOne((adapter) => ({
24857
24834
  onTyping: adapter.sendTypingIndicator,
24858
24835
  onRemoveParticipant: adapter.removeParticipant,
24859
24836
  updateThreadTopicName: adapter.setTopic,
24860
- onUpdateMessage: (messageId, content, options) => {
24837
+ onUpdateMessage: (messageId, content,
24838
+ /* @conditional-compile-remove(file-sharing) */
24839
+ options) => {
24861
24840
  const metadata = options === null || options === void 0 ? void 0 : options.metadata;
24862
24841
  /* @conditional-compile-remove(file-sharing) */
24863
24842
  const updatedOptions = (options === null || options === void 0 ? void 0 : options.attachmentMetadata) ? Object.assign({}, options.attachmentMetadata) : {};
@@ -25341,11 +25320,16 @@ const ChatScreen = (props) => {
25341
25320
  */
25342
25321
  const ChatComposite = (props) => {
25343
25322
  const { adapter, options, onFetchAvatarPersonaData, onRenderTypingIndicator, onRenderMessage, onFetchParticipantMenuItems } = props;
25323
+ /* @conditional-compile-remove(file-sharing) */
25344
25324
  const formFactor = props['formFactor'] || 'desktop';
25345
25325
  return (React.createElement("div", { className: chatScreenContainerStyle },
25346
25326
  React.createElement(BaseProvider, Object.assign({}, props),
25347
25327
  React.createElement(ChatAdapterProvider, { adapter: adapter },
25348
- React.createElement(ChatScreen, { formFactor: formFactor, options: options, onFetchAvatarPersonaData: onFetchAvatarPersonaData, onRenderTypingIndicator: onRenderTypingIndicator, onRenderMessage: onRenderMessage, onFetchParticipantMenuItems: onFetchParticipantMenuItems,
25328
+ React.createElement(ChatScreen
25329
+ /* @conditional-compile-remove(file-sharing) */
25330
+ , {
25331
+ /* @conditional-compile-remove(file-sharing) */
25332
+ formFactor: formFactor, options: options, onFetchAvatarPersonaData: onFetchAvatarPersonaData, onRenderTypingIndicator: onRenderTypingIndicator, onRenderMessage: onRenderMessage, onFetchParticipantMenuItems: onFetchParticipantMenuItems,
25349
25333
  /* @conditional-compile-remove(file-sharing) */
25350
25334
  fileSharing: options === null || options === void 0 ? void 0 : options.fileSharing })))));
25351
25335
  };
@@ -25820,13 +25804,21 @@ const disableCallControls = (callControlOptions, disabledControls) => {
25820
25804
  let newOptions = (_a = (callControlOptions instanceof Object ? Object.assign({}, callControlOptions) : callControlOptions)) !== null && _a !== void 0 ? _a : {};
25821
25805
  if (newOptions === true || newOptions === undefined) {
25822
25806
  newOptions = disabledControls.reduce((acc, key) => {
25807
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
25808
+ // @ts-expect-error TODO: fix noImplicitAny error here
25809
+ // Not solveable at this time due to typescript limitations. The typing is too complex for typescript to
25810
+ // understand. Will need to revisit when either typescript or the calling component bindings are updated.
25823
25811
  acc[key] = { disabled: true };
25824
25812
  return acc;
25825
25813
  }, {});
25826
25814
  }
25827
25815
  else {
25828
25816
  disabledControls.forEach((key) => {
25817
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
25818
+ // @ts-expect-error refer to above comment
25829
25819
  if (newOptions[key] !== false) {
25820
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
25821
+ // @ts-expect-error refer to above comment
25830
25822
  newOptions[key] = { disabled: true };
25831
25823
  }
25832
25824
  });
@@ -26012,14 +26004,25 @@ const createCompositeHandlers = memoizeOne((adapter) => {
26012
26004
  }),
26013
26005
  /* @conditional-compile-remove(PSTN-calls) */
26014
26006
  onAddParticipant: (participant, options) => __awaiter$j(void 0, void 0, void 0, function* () {
26015
- return yield adapter.addParticipant(participant, options);
26007
+ if ('communicationUserId' in participant) {
26008
+ return yield adapter.addParticipant(participant);
26009
+ }
26010
+ else if ('phoneNumber' in participant) {
26011
+ return yield adapter.addParticipant(participant, options);
26012
+ }
26016
26013
  }),
26017
26014
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(dtmf-dialer) */
26018
26015
  onSendDtmfTone: (dtmfTone) => __awaiter$j(void 0, void 0, void 0, function* () {
26019
26016
  yield adapter.sendDtmfTone(dtmfTone);
26020
26017
  }),
26021
26018
  onRemoveParticipant: (userId) => __awaiter$j(void 0, void 0, void 0, function* () {
26022
- yield adapter.removeParticipant(userId);
26019
+ if (typeof userId === 'string') {
26020
+ yield adapter.removeParticipant(userId);
26021
+ }
26022
+ else {
26023
+ /* @conditional-compile-remove(PSTN-calls) */
26024
+ yield adapter.removeParticipant(_toCommunicationIdentifier(userId));
26025
+ }
26023
26026
  }),
26024
26027
  /* @conditional-compile-remove(raise-hand) */
26025
26028
  onRaiseHand: () => __awaiter$j(void 0, void 0, void 0, function* () {
@@ -26930,7 +26933,11 @@ const generateCustomControlBarButtons = (placement, customButtons) => customButt
26930
26933
  .filter((buttonProps) => buttonProps.placement === placement)
26931
26934
  .map((buttonProps, i) => (internalProps) => {
26932
26935
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
26933
- if (buttonProps['onRenderButton']) {
26936
+ // onRenderButton is a custom prop that can be passed to override the default rendering of the button
26937
+ // This is useful for custom buttons that need to render more than just an icon and label and is used
26938
+ // for CallWithChat button notification badge. However, onRenderButton is not a public prop and is
26939
+ // not documented in the API. This is a temporary solution and will need to be revisited.
26940
+ if ('onRenderButton' in buttonProps) {
26934
26941
  return buttonProps['onRenderButton'](internalProps);
26935
26942
  }
26936
26943
  return (React.createElement(ControlBarButton, { ariaDescription: (_b = (_a = buttonProps.strings) === null || _a === void 0 ? void 0 : _a.ariaDescription) !== null && _b !== void 0 ? _b : internalProps.ariaDescription, ariaLabel: (_f = (_d = (_c = buttonProps.strings) === null || _c === void 0 ? void 0 : _c.ariaLabel) !== null && _d !== void 0 ? _d : (_e = buttonProps.strings) === null || _e === void 0 ? void 0 : _e.tooltipContent) !== null && _f !== void 0 ? _f : internalProps.ariaLabel, disabled: (_g = buttonProps.disabled) !== null && _g !== void 0 ? _g : internalProps.disabled, id: (_h = buttonProps.id) !== null && _h !== void 0 ? _h : internalProps.id, key: `${buttonProps.placement}_${i}`, onClick: (_j = buttonProps.onItemClick) !== null && _j !== void 0 ? _j : internalProps.onClick, onRenderIcon: () => {
@@ -28264,7 +28271,7 @@ const captionSettingsDrawerStyles = (theme) => ({
28264
28271
  // Copyright (c) Microsoft Corporation.
28265
28272
  // Licensed under the MIT License.
28266
28273
  /** @private */
28267
- const CaptionSettingsDrawer = (props) => {
28274
+ const CaptionLanguageSettingsDrawer = (props) => {
28268
28275
  var _a;
28269
28276
  /* @conditional-compile-remove(close-captions) */
28270
28277
  const theme = useTheme();
@@ -28275,7 +28282,7 @@ const CaptionSettingsDrawer = (props) => {
28275
28282
  /* @conditional-compile-remove(close-captions) */
28276
28283
  const drawerItems = React.useMemo(() => {
28277
28284
  var _a;
28278
- return Object.keys((_a = props.supportedLanguageStrings) !== null && _a !== void 0 ? _a : []).map((languageCode) => ({
28285
+ return _getKeys((_a = props.supportedLanguageStrings) !== null && _a !== void 0 ? _a : []).map((languageCode) => ({
28279
28286
  itemKey: languageCode,
28280
28287
  text: props.supportedLanguageStrings ? props.supportedLanguageStrings[languageCode] : languageCode,
28281
28288
  onItemClick: () => onDrawerItemClick(languageCode),
@@ -28319,6 +28326,38 @@ const themedToggleButtonStyle = (theme, checked) => {
28319
28326
  };
28320
28327
  };
28321
28328
 
28329
+ // Copyright (c) Microsoft Corporation.
28330
+ // Licensed under the MIT License.
28331
+ /** @private */
28332
+ const SpokenLanguageSettingsDrawer = (props) => {
28333
+ var _a;
28334
+ /* @conditional-compile-remove(close-captions) */
28335
+ const theme = useTheme();
28336
+ /* @conditional-compile-remove(close-captions) */
28337
+ const onDrawerItemClick = React.useCallback((languageCode) => {
28338
+ props.selectLanguage(languageCode);
28339
+ }, [props]);
28340
+ /* @conditional-compile-remove(close-captions) */
28341
+ const drawerItems = React.useMemo(() => {
28342
+ var _a;
28343
+ return _getKeys((_a = props.supportedLanguageStrings) !== null && _a !== void 0 ? _a : []).map((languageCode) => ({
28344
+ itemKey: languageCode,
28345
+ text: props.supportedLanguageStrings ? props.supportedLanguageStrings[languageCode] : languageCode,
28346
+ onItemClick: () => onDrawerItemClick(languageCode),
28347
+ secondaryIconProps: props.currentLanguage === languageCode ? { iconName: 'Accept' } : undefined
28348
+ }));
28349
+ }, [props.currentLanguage, props.supportedLanguageStrings, onDrawerItemClick]);
28350
+ const sortedDrawerItems = React.useMemo(() => {
28351
+ const copy = [...drawerItems];
28352
+ return copy.sort((a, b) => (a.text && b.text && a.text > b.text ? 1 : -1));
28353
+ }, [drawerItems]);
28354
+ /* @conditional-compile-remove(close-captions) */
28355
+ return (React.createElement(_DrawerMenu, { heading: (_a = props.strings) === null || _a === void 0 ? void 0 : _a.menuTitle, items: sortedDrawerItems !== null && sortedDrawerItems !== void 0 ? sortedDrawerItems : [], onLightDismiss: () => {
28356
+ props.setCurrentLanguage(props.currentLanguage);
28357
+ props.onLightDismiss();
28358
+ }, styles: captionSettingsDrawerStyles(theme) }));
28359
+ };
28360
+
28322
28361
  // Copyright (c) Microsoft Corporation.
28323
28362
  // Licensed under the MIT License.
28324
28363
  var __awaiter$g = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -28669,8 +28708,8 @@ const MoreDrawer = (props) => {
28669
28708
  });
28670
28709
  /* @conditional-compile-remove(close-captions) */
28671
28710
  return (React.createElement(React.Fragment, null,
28672
- isSpokenLanguageDrawerOpen && props.isCaptionsSupported && (React.createElement(CaptionSettingsDrawer, { onLightDismiss: props.onLightDismiss, selectLanguage: setCurrentSpokenLanguage, setCurrentLanguage: captionSettingsHandlers.onSetSpokenLanguage, currentLanguage: currentSpokenLanguage, strings: { menuTitle: props.strings.spokenLanguageMenuTitle }, supportedLanguageStrings: supportedSpokenLanguageStrings })),
28673
- isCaptionLanguageDrawerOpen && props.isCaptionsSupported && (React.createElement(CaptionSettingsDrawer, { onLightDismiss: props.onLightDismiss, selectLanguage: setCurrentCaptionLanguage, setCurrentLanguage: captionSettingsHandlers.onSetCaptionLanguage, currentLanguage: currentCaptionLanguage, strings: { menuTitle: props.strings.captionLanguageMenuTitle }, supportedLanguageStrings: supportedCaptionLanguageStrings })),
28711
+ isSpokenLanguageDrawerOpen && props.isCaptionsSupported && (React.createElement(SpokenLanguageSettingsDrawer, { onLightDismiss: props.onLightDismiss, selectLanguage: setCurrentSpokenLanguage, setCurrentLanguage: captionSettingsHandlers.onSetSpokenLanguage, currentLanguage: currentSpokenLanguage, strings: { menuTitle: props.strings.spokenLanguageMenuTitle }, supportedLanguageStrings: supportedSpokenLanguageStrings })),
28712
+ isCaptionLanguageDrawerOpen && props.isCaptionsSupported && (React.createElement(CaptionLanguageSettingsDrawer, { onLightDismiss: props.onLightDismiss, selectLanguage: setCurrentCaptionLanguage, setCurrentLanguage: captionSettingsHandlers.onSetCaptionLanguage, currentLanguage: currentCaptionLanguage, strings: { menuTitle: props.strings.captionLanguageMenuTitle }, supportedLanguageStrings: supportedCaptionLanguageStrings })),
28674
28713
  !isSpokenLanguageDrawerOpen && !isCaptionLanguageDrawerOpen && (React.createElement(_DrawerMenu, { items: drawerMenuItems, onLightDismiss: props.onLightDismiss }))));
28675
28714
  };
28676
28715
  const isDeviceSelected = (speaker, selectedSpeaker) => !!selectedSpeaker && speaker.id === selectedSpeaker.id;
@@ -31066,7 +31105,7 @@ const DtmfDialpadPageContent = (props) => {
31066
31105
  return (React.createElement(react.Stack, { style: { height: '100%', width: '100%', background: theme.palette.white } },
31067
31106
  React.createElement(react.Stack, { verticalAlign: 'center', style: { margin: 'auto' } },
31068
31107
  React.createElement(DtmfDialerContentTimer, null),
31069
- React.createElement(react.Text, { style: { margin: 'auto' } }, calleeName !== 'Unnamed participant' ? calleeName : ''),
31108
+ React.createElement(react.Text, { style: { margin: 'auto' } }, calleeName && calleeName !== 'Unnamed participant' ? calleeName === null || calleeName === void 0 ? void 0 : calleeName.toString() : ''),
31070
31109
  React.createElement(Dialpad, { onSendDtmfTone: (tone) => __awaiter$c(void 0, void 0, void 0, function* () {
31071
31110
  /* @conditional-compile-remove(dtmf-dialer) */
31072
31111
  yield adapter.sendDtmfTone(tone);
@@ -33173,15 +33212,21 @@ const trackCapabilityChangedNotificationAsDismissed = (capabilityName, trackedNo
33173
33212
  };
33174
33213
  /* @conditional-compile-remove(capabilities) */
33175
33214
  const updateLatestCapabilityChangedNotificationMap = (capabilitiesChangedInfoAndRole, activeNotifications) => {
33215
+ var _a, _b;
33176
33216
  if (!capabilitiesChangedInfoAndRole.capabilitiesChangeInfo) {
33177
33217
  return activeNotifications;
33178
33218
  }
33179
- for (const [capabilityName, newCapabilityValue] of Object.entries(capabilitiesChangedInfoAndRole.capabilitiesChangeInfo.newValue)) {
33219
+ for (const [capabilityKey, newCapabilityValue] of Object.entries(capabilitiesChangedInfoAndRole.capabilitiesChangeInfo.newValue)) {
33220
+ // Cast is safe because we are iterating over the enum keys on the object.entries where
33221
+ // newCapabilityValue typing is correctly returned. Object.entries limitations
33222
+ // always returns string for the key
33223
+ const capabilityName = capabilityKey;
33180
33224
  // If the active notification for a capability has the same `isPresent` value and the same reason as the new
33181
33225
  // capability value from the SDK then we will not create a new notification to avoid redundancy
33182
33226
  if (activeNotifications[capabilityName] &&
33183
- newCapabilityValue.isPresent === activeNotifications[capabilityName].isPresent &&
33184
- capabilitiesChangedInfoAndRole.capabilitiesChangeInfo.reason === activeNotifications[capabilityName].changedReason) {
33227
+ newCapabilityValue.isPresent === ((_a = activeNotifications[capabilityName]) === null || _a === void 0 ? void 0 : _a.isPresent) &&
33228
+ capabilitiesChangedInfoAndRole.capabilitiesChangeInfo.reason ===
33229
+ ((_b = activeNotifications[capabilityName]) === null || _b === void 0 ? void 0 : _b.changedReason)) {
33185
33230
  continue;
33186
33231
  }
33187
33232
  const newCapabilityChangeNotification = {
@@ -33385,7 +33430,7 @@ const Survey = (props) => {
33385
33430
  return (React.createElement(React.Fragment, null,
33386
33431
  showDefaultAfterSubmitScreen && React.createElement(ThankYouForFeedbackPage, { iconName: iconName }),
33387
33432
  showDefaultAfterDismissedScreen && (React.createElement(NoticePage, { iconName: iconName, title: title, moreDetails: moreDetails, dataUiId: 'left-call-page', disableStartCallButton: disableStartCallButton })),
33388
- !showDefaultAfterSubmitScreen && !showDefaultAfterDismissedScreen && (React.createElement(react.Stack, { verticalAlign: "center", className: surveyContainerStyle(isMobile) },
33433
+ !showDefaultAfterSubmitScreen && !showDefaultAfterDismissedScreen && (React.createElement(react.Stack, { verticalAlign: "center", className: surveyContainerStyle(!!isMobile) },
33389
33434
  React.createElement(react.Text, { className: questionTextStyle(theme) }, strings.surveyTitle),
33390
33435
  React.createElement(SurveyContent, { setShowSubmitFeedbackButton: (showButton) => {
33391
33436
  setShowSubmitFeedbackButton(showButton);
@@ -33902,9 +33947,9 @@ class CallingSoundSubscriber {
33902
33947
  this.onCallStateChanged();
33903
33948
  }
33904
33949
  unsubscribeAll() {
33905
- var _a;
33906
- this.call.off('stateChanged', this.onCallStateChanged);
33907
- if ((_a = this.soundsLoaded) === null || _a === void 0 ? void 0 : _a.callRingingSound) {
33950
+ var _a, _b;
33951
+ (_a = this.call) === null || _a === void 0 ? void 0 : _a.off('stateChanged', this.onCallStateChanged);
33952
+ if ((_b = this.soundsLoaded) === null || _b === void 0 ? void 0 : _b.callRingingSound) {
33908
33953
  this.soundsLoaded.callRingingSound.pause();
33909
33954
  }
33910
33955
  }
@@ -34643,15 +34688,11 @@ class AzureCommunicationCallAdapter {
34643
34688
  : {};
34644
34689
  const combinedCallOptions = Object.assign(Object.assign({}, startCallVideoOptions), options);
34645
34690
  const idsToAdd = participants.map((participant) => {
34646
- let backendId = participant;
34647
- if (typeof participant === 'string') {
34648
- backendId = _toCommunicationIdentifier(participant);
34649
- }
34650
- if (backendId.phoneNumber) {
34691
+ const backendId = _toCommunicationIdentifier(participant);
34692
+ if ('phoneNumber' in backendId) {
34651
34693
  if ((options === null || options === void 0 ? void 0 : options.alternateCallerId) === undefined) {
34652
34694
  throw new Error('Unable to start call, PSTN user present with no alternateCallerId.');
34653
34695
  }
34654
- return backendId;
34655
34696
  }
34656
34697
  return backendId;
34657
34698
  });
@@ -35314,7 +35355,7 @@ const createTeamsCallAdapterFromClient = (callClient, callAgent, locator, option
35314
35355
  return new AzureCommunicationCallAdapter(callClient, locator, callAgent, deviceManager, options);
35315
35356
  });
35316
35357
  const isCallError = (e) => {
35317
- return e['target'] !== undefined && e['innerError'] !== undefined;
35358
+ return 'target' in e && 'innerError' in e;
35318
35359
  };
35319
35360
 
35320
35361
  // Copyright (c) Microsoft Corporation.
@@ -37035,7 +37076,10 @@ var call$j={cameraLabel:"Camera",noCamerasLabel:"No cameras found",cameraPermiss
37035
37076
  */
37036
37077
  const createCompositeStrings = (localizedStrings) => {
37037
37078
  const strings = Object.assign({}, en_US);
37038
- Object.keys(localizedStrings).forEach((key) => {
37079
+ _getKeys(localizedStrings).forEach((key) => {
37080
+ // mark the value as unknown because the type changes based on the key.
37081
+ // this is unsafe at runtime as we could assign the wrong type based on the key here.
37082
+ // but typescript isn't smart enough to know that the key used across each access will result in the same type
37039
37083
  strings[key] = Object.assign(Object.assign({}, strings[key]), localizedStrings[key]);
37040
37084
  });
37041
37085
  return strings;