@azure/communication-react 1.18.0-alpha-202406180013 → 1.18.0-alpha-202406191739

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 (99) hide show
  1. package/dist/communication-react.d.ts +54 -28
  2. package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-2XnQpAq_.js → ChatMessageComponentAsRichTextEditBox-HBSSHZ2s.js} +2 -2
  3. package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-2XnQpAq_.js.map → ChatMessageComponentAsRichTextEditBox-HBSSHZ2s.js.map} +1 -1
  4. package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-D-f-hDmN.js → RichTextSendBoxWrapper-DDN8Weyb.js} +2 -2
  5. package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-D-f-hDmN.js.map → RichTextSendBoxWrapper-DDN8Weyb.js.map} +1 -1
  6. package/dist/dist-cjs/communication-react/{index-DaC5GeKa.js → index-CAm6Qb1t.js} +497 -103
  7. package/dist/dist-cjs/communication-react/index-CAm6Qb1t.js.map +1 -0
  8. package/dist/dist-cjs/communication-react/index.js +1 -1
  9. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  10. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  11. package/dist/dist-esm/calling-component-bindings/src/errorNotificationsSelector.d.ts +22 -0
  12. package/dist/dist-esm/calling-component-bindings/src/errorNotificationsSelector.js +146 -0
  13. package/dist/dist-esm/calling-component-bindings/src/errorNotificationsSelector.js.map +1 -0
  14. package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.d.ts +1 -0
  15. package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.js +7 -1
  16. package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.js.map +1 -1
  17. package/dist/dist-esm/calling-component-bindings/src/index.d.ts +2 -0
  18. package/dist/dist-esm/calling-component-bindings/src/index.js +2 -0
  19. package/dist/dist-esm/calling-component-bindings/src/index.js.map +1 -1
  20. package/dist/dist-esm/chat-component-bindings/src/handlers/createHandlers.js +2 -1
  21. package/dist/dist-esm/chat-component-bindings/src/handlers/createHandlers.js.map +1 -1
  22. package/dist/dist-esm/react-components/src/components/ErrorBar.js +1 -1
  23. package/dist/dist-esm/react-components/src/components/ErrorBar.js.map +1 -1
  24. package/dist/dist-esm/react-components/src/components/Notifications.d.ts +23 -28
  25. package/dist/dist-esm/react-components/src/components/Notifications.js +17 -7
  26. package/dist/dist-esm/react-components/src/components/Notifications.js.map +1 -1
  27. package/dist/dist-esm/react-components/src/components/ParticipantList.js +3 -2
  28. package/dist/dist-esm/react-components/src/components/ParticipantList.js.map +1 -1
  29. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/PlaceholderPlugin.d.ts +2 -2
  30. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/PlaceholderPlugin.js +1 -1
  31. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/PlaceholderPlugin.js.map +1 -1
  32. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.js +16 -29
  33. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.js.map +1 -1
  34. package/dist/dist-esm/react-components/src/components/TroubleshootingGuideErrorBar.js +1 -1
  35. package/dist/dist-esm/react-components/src/components/TroubleshootingGuideErrorBar.js.map +1 -1
  36. package/dist/dist-esm/react-components/src/components/VideoEffects/VideoBackgroundEffectsPicker.js +1 -1
  37. package/dist/dist-esm/react-components/src/components/VideoEffects/VideoBackgroundEffectsPicker.js.map +1 -1
  38. package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoTileContextualMenuProps.d.ts +1 -0
  39. package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoTileContextualMenuProps.js +3 -3
  40. package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoTileContextualMenuProps.js.map +1 -1
  41. package/dist/dist-esm/react-components/src/components/VideoGallery.d.ts +2 -0
  42. package/dist/dist-esm/react-components/src/components/VideoGallery.js.map +1 -1
  43. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js +1 -1
  44. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js.map +1 -1
  45. package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.js +24 -13
  46. package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.js.map +1 -1
  47. package/dist/dist-esm/react-components/src/components/utils.d.ts +32 -1
  48. package/dist/dist-esm/react-components/src/components/utils.js +84 -0
  49. package/dist/dist-esm/react-components/src/components/utils.js.map +1 -1
  50. package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +2 -23
  51. package/dist/dist-esm/react-components/src/theming/themes.js +13 -12
  52. package/dist/dist-esm/react-components/src/theming/themes.js.map +1 -1
  53. package/dist/dist-esm/react-components/src/theming/v9ThemeShim.js +1 -1
  54. package/dist/dist-esm/react-components/src/theming/v9ThemeShim.js.map +1 -1
  55. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js +24 -5
  56. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js.map +1 -1
  57. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.d.ts +20 -0
  58. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.js.map +1 -1
  59. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts +1 -0
  60. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +8 -0
  61. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  62. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.d.ts +4 -0
  63. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.js.map +1 -1
  64. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.d.ts +4 -2
  65. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +33 -5
  66. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
  67. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/usePeoplePane.d.ts +1 -1
  68. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/usePeoplePane.js +68 -4
  69. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/usePeoplePane.js.map +1 -1
  70. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/useVideoEffectsPane.d.ts +3 -2
  71. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/useVideoEffectsPane.js +1 -1
  72. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/useVideoEffectsPane.js.map +1 -1
  73. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js +4 -0
  74. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js.map +1 -1
  75. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.d.ts +3 -2
  76. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js +5 -3
  77. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js.map +1 -1
  78. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/HoldPage.js +4 -2
  79. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/HoldPage.js.map +1 -1
  80. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/LobbyPage.js +4 -2
  81. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/LobbyPage.js.map +1 -1
  82. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/TransferPage.js +4 -2
  83. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/TransferPage.js.map +1 -1
  84. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts +1 -0
  85. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +6 -0
  86. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
  87. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts +4 -0
  88. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.js.map +1 -1
  89. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.d.ts +1 -0
  90. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js +6 -0
  91. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js.map +1 -1
  92. package/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.d.ts +1 -0
  93. package/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.js.map +1 -1
  94. package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.d.ts +3 -2
  95. package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.js +40 -2
  96. package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.js.map +1 -1
  97. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-US/strings.json +6 -1
  98. package/package.json +6 -6
  99. package/dist/dist-cjs/communication-react/index-DaC5GeKa.js.map +0 -1
@@ -175,7 +175,7 @@ function getDefaultExportFromCjs (x) {
175
175
  // Copyright (c) Microsoft Corporation.
176
176
  // Licensed under the MIT License.
177
177
  // GENERATED FILE. DO NOT EDIT MANUALLY.
178
- var telemetryVersion = '1.18.0-alpha-202406180013';
178
+ var telemetryVersion = '1.18.0-alpha-202406191739';
179
179
 
180
180
 
181
181
  var telemetryVersion$1 = /*@__PURE__*/getDefaultExportFromCjs(telemetryVersion);
@@ -1124,6 +1124,10 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1124
1124
  }));
1125
1125
  }
1126
1126
  });
1127
+ /* @conditional-compile-remove(soft-mute) */
1128
+ const onMuteAllRemoteParticipants = () => __awaiter$R(void 0, void 0, void 0, function* () {
1129
+ call === null || call === void 0 ? void 0 : call.muteAllRemoteParticipants();
1130
+ });
1127
1131
  const canStartSpotlight = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Capabilities).capabilities.spotlightParticipant.isPresent;
1128
1132
  const canRemoveSpotlight = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Capabilities).capabilities.removeParticipantsSpotlight.isPresent;
1129
1133
  const onStartLocalSpotlight = canStartSpotlight
@@ -1192,7 +1196,9 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1192
1196
  onStartRemoteSpotlight,
1193
1197
  onStopRemoteSpotlight,
1194
1198
  /* @conditional-compile-remove(soft-mute) */
1195
- onMuteParticipant
1199
+ onMuteParticipant,
1200
+ /* @conditional-compile-remove(soft-mute) */
1201
+ onMuteAllRemoteParticipants
1196
1202
  };
1197
1203
  });
1198
1204
 
@@ -1300,6 +1306,145 @@ const createDefaultTeamsCallingHandlers = memoizeOne((callClient, callAgent, dev
1300
1306
  }) });
1301
1307
  });
1302
1308
 
1309
+ // Copyright (c) Microsoft Corporation.
1310
+ // Licensed under the MIT License.
1311
+ /* @conditional-compile-remove(notifications) */
1312
+ /* @conditional-compile-remove(notifications) */
1313
+ /**
1314
+ * Select the active errors from the state for the `Notification` component.
1315
+ *
1316
+ * Invariants:
1317
+ * - `ErrorType` is never repeated in the returned errors.
1318
+ * - Errors are returned in a fixed order by `ErrorType`.
1319
+ *
1320
+ * @beta
1321
+ */
1322
+ const errorNotificationsSelector = reselect.createSelector([getLatestErrors$1, getDiagnostics, getDeviceManager$1, getEnvironmentInfo], (latestErrors, diagnostics, deviceManager, environmentInfo) => {
1323
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
1324
+ // The order in which the errors are returned is significant: The `Notification` shows errors on the UI in that order.
1325
+ // There are several options for the ordering:
1326
+ // - Sorted by when the errors happened (latest first / oldest first).
1327
+ // - Stable sort by error type.
1328
+ //
1329
+ // We chose to stable sort by error type: We intend to show only a small number of errors on the UI and we do not
1330
+ // have timestamps for errors.
1331
+ const activeErrorMessages = [];
1332
+ const isSafari = () => {
1333
+ /* @conditional-compile-remove(calling-environment-info) */
1334
+ return (environmentInfo === null || environmentInfo === void 0 ? void 0 : environmentInfo.environment.browser) === 'safari';
1335
+ };
1336
+ const isMacOS = () => {
1337
+ /* @conditional-compile-remove(calling-environment-info) */
1338
+ return (environmentInfo === null || environmentInfo === void 0 ? void 0 : environmentInfo.environment.platform) === 'mac';
1339
+ };
1340
+ // Errors reported via diagnostics are more reliable than from API method failures, so process those first.
1341
+ if (((_a = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.network.latest.networkReceiveQuality) === null || _a === void 0 ? void 0 : _a.value) === communicationCalling.DiagnosticQuality.Bad ||
1342
+ ((_b = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.network.latest.networkReceiveQuality) === null || _b === void 0 ? void 0 : _b.value) === communicationCalling.DiagnosticQuality.Poor) {
1343
+ activeErrorMessages.push({ type: 'callNetworkQualityLow' });
1344
+ }
1345
+ if (((_c = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.noSpeakerDevicesEnumerated) === null || _c === void 0 ? void 0 : _c.value) === true) {
1346
+ activeErrorMessages.push({ type: 'callNoSpeakerFound' });
1347
+ }
1348
+ if (((_d = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.noMicrophoneDevicesEnumerated) === null || _d === void 0 ? void 0 : _d.value) === true) {
1349
+ activeErrorMessages.push({ type: 'callNoMicrophoneFound' });
1350
+ }
1351
+ if (((_e = deviceManager.deviceAccess) === null || _e === void 0 ? void 0 : _e.audio) === false && isSafari()) {
1352
+ activeErrorMessages.push({ type: 'callMicrophoneAccessDeniedSafari' });
1353
+ }
1354
+ if (((_f = deviceManager.deviceAccess) === null || _f === void 0 ? void 0 : _f.audio) === false && !isSafari()) {
1355
+ activeErrorMessages.push({ type: 'callMicrophoneAccessDenied' });
1356
+ }
1357
+ if (((_g = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.microphonePermissionDenied) === null || _g === void 0 ? void 0 : _g.value) === true && isMacOS()) {
1358
+ activeErrorMessages.push({ type: 'callMacOsMicrophoneAccessDenied' });
1359
+ }
1360
+ else if (((_h = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.microphonePermissionDenied) === null || _h === void 0 ? void 0 : _h.value) === true) {
1361
+ activeErrorMessages.push({ type: 'callMicrophoneAccessDenied' });
1362
+ }
1363
+ const microphoneMuteUnexpectedlyDiagnostic = (diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.microphoneMuteUnexpectedly) || (diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.microphoneNotFunctioning);
1364
+ if (microphoneMuteUnexpectedlyDiagnostic) {
1365
+ if (microphoneMuteUnexpectedlyDiagnostic.value === communicationCalling.DiagnosticQuality.Bad) {
1366
+ // Inform the user that microphone stopped working and inform them to start microphone again
1367
+ activeErrorMessages.push({ type: 'callMicrophoneMutedBySystem' });
1368
+ }
1369
+ else if (microphoneMuteUnexpectedlyDiagnostic.value === communicationCalling.DiagnosticQuality.Good) {
1370
+ // Inform the user that microphone recovered
1371
+ activeErrorMessages.push({ type: 'callMicrophoneUnmutedBySystem' });
1372
+ }
1373
+ }
1374
+ const cameraStoppedUnexpectedlyDiagnostic = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.cameraStoppedUnexpectedly;
1375
+ if (cameraStoppedUnexpectedlyDiagnostic) {
1376
+ if (cameraStoppedUnexpectedlyDiagnostic.value === communicationCalling.DiagnosticQuality.Bad) {
1377
+ // Inform the user that camera stopped working and inform them to start video again
1378
+ activeErrorMessages.push({ type: 'callVideoStoppedBySystem' });
1379
+ }
1380
+ else if (cameraStoppedUnexpectedlyDiagnostic.value === communicationCalling.DiagnosticQuality.Good) {
1381
+ // Inform the user that camera recovered
1382
+ activeErrorMessages.push({ type: 'callVideoRecoveredBySystem' });
1383
+ }
1384
+ }
1385
+ if (((_j = deviceManager.deviceAccess) === null || _j === void 0 ? void 0 : _j.video) === false && isSafari()) {
1386
+ activeErrorMessages.push({ type: 'callCameraAccessDeniedSafari' });
1387
+ }
1388
+ else if (((_k = deviceManager.deviceAccess) === null || _k === void 0 ? void 0 : _k.video) === false) {
1389
+ activeErrorMessages.push({ type: 'callCameraAccessDenied' });
1390
+ }
1391
+ else {
1392
+ if (((_l = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.cameraFreeze) === null || _l === void 0 ? void 0 : _l.value) === true) {
1393
+ activeErrorMessages.push({ type: 'cameraFrozenForRemoteParticipants' });
1394
+ }
1395
+ }
1396
+ /**
1397
+ * show the Mac specific strings if the platform is detected as mac
1398
+ */
1399
+ if (((_m = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.cameraPermissionDenied) === null || _m === void 0 ? void 0 : _m.value) === true && isMacOS()) {
1400
+ activeErrorMessages.push({ type: 'callMacOsCameraAccessDenied' });
1401
+ }
1402
+ /**
1403
+ * This UFD only works on mac still so we should only see it fire on mac.
1404
+ */
1405
+ if (((_o = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.screenshareRecordingDisabled) === null || _o === void 0 ? void 0 : _o.value) === true && isMacOS()) {
1406
+ activeErrorMessages.push({ type: 'callMacOsScreenShareAccessDenied' });
1407
+ }
1408
+ else if (((_p = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.screenshareRecordingDisabled) === null || _p === void 0 ? void 0 : _p.value) === true) {
1409
+ activeErrorMessages.push({ type: 'startScreenShareGeneric' });
1410
+ }
1411
+ // Prefer to show errors with privacy implications.
1412
+ appendActiveErrorIfDefined$1(activeErrorMessages, latestErrors, 'Call.stopVideo', 'stopVideoGeneric');
1413
+ appendActiveErrorIfDefined$1(activeErrorMessages, latestErrors, 'Call.mute', 'muteGeneric');
1414
+ appendActiveErrorIfDefined$1(activeErrorMessages, latestErrors, 'Call.stopScreenSharing', 'stopScreenShareGeneric');
1415
+ if (((_q = latestErrors['Call.startVideo']) === null || _q === void 0 ? void 0 : _q.message) === 'Call.startVideo: Video operation failure SourceUnavailableError') {
1416
+ appendActiveErrorIfDefined$1(activeErrorMessages, latestErrors, 'Call.startVideo', 'callCameraAlreadyInUse');
1417
+ }
1418
+ else if (((_r = latestErrors['Call.startVideo']) === null || _r === void 0 ? void 0 : _r.message) === 'Call.startVideo: Video operation failure permissionDeniedError') {
1419
+ appendActiveErrorIfDefined$1(activeErrorMessages, latestErrors, 'Call.startVideo', 'callCameraAccessDenied');
1420
+ }
1421
+ else {
1422
+ appendActiveErrorIfDefined$1(activeErrorMessages, latestErrors, 'Call.startVideo', 'startVideoGeneric');
1423
+ }
1424
+ appendActiveErrorIfDefined$1(activeErrorMessages, latestErrors, 'Call.unmute', 'unmuteGeneric');
1425
+ appendActiveErrorIfDefined$1(activeErrorMessages, latestErrors, 'VideoEffectsFeature.startEffects', 'unableToStartVideoEffect');
1426
+ if (((_s = latestErrors['CallAgent.join']) === null || _s === void 0 ? void 0 : _s.message) === 'CallAgent.join: Invalid meeting link') {
1427
+ appendActiveErrorIfDefined$1(activeErrorMessages, latestErrors, 'CallAgent.join', 'failedToJoinCallInvalidMeetingLink');
1428
+ }
1429
+ else {
1430
+ appendActiveErrorIfDefined$1(activeErrorMessages, latestErrors, 'CallAgent.join', 'failedToJoinCallGeneric');
1431
+ }
1432
+ if ((_t = latestErrors['Call.feature']) === null || _t === void 0 ? void 0 : _t.message.match(/Call\.feature: startSpotlight failed\. \d+ is the max number of participants that can be Spotlighted/g)) {
1433
+ appendActiveErrorIfDefined$1(activeErrorMessages, latestErrors, 'Call.feature', 'startSpotlightWhileMaxParticipantsAreSpotlighted');
1434
+ }
1435
+ return { activeErrorMessages: activeErrorMessages };
1436
+ });
1437
+ /* @conditional-compile-remove(notifications) */
1438
+ const appendActiveErrorIfDefined$1 = (activeErrorMessages, latestErrors, target, activeErrorType) => {
1439
+ if (latestErrors[target] === undefined) {
1440
+ return;
1441
+ }
1442
+ activeErrorMessages.push({
1443
+ type: activeErrorType,
1444
+ timestamp: latestErrors[target].timestamp
1445
+ });
1446
+ };
1447
+
1303
1448
  // Copyright (c) Microsoft Corporation.
1304
1449
  // Licensed under the MIT License.
1305
1450
  /**
@@ -5750,7 +5895,7 @@ const typingIndicatorStringStyle = react.mergeStyles({
5750
5895
  wordBreak: 'break-word'
5751
5896
  });
5752
5897
 
5753
- var participantItem$k={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed participant",participantStateRinging:"Calling...",participantStateHold:"On hold",attendeeRole:"Attendee"};var ParticipantList$l={overflowParticipantCount:"+{overflowCount} more"};var typingIndicator$k={singleUser:"{user} is typing ...",multipleUsers:"{users} are typing ...",multipleUsersAbbreviateOne:"{users} and 1 other are typing ...",multipleUsersAbbreviateMany:"{users} and {numOthers} others are typing ...",delimiter:", "};var sendBox$k={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",attachmentUploadsPendingError:"Uploading... Please wait.",removeAttachment:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed",attachmentMoreMenu:"More Options"};var richTextSendBox$k={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",attachmentUploadsPendingError:"Uploading... Please wait.",removeAttachment:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed",richTextBoldTooltip:"Bold",richTextItalicTooltip:"Italic",richTextUnderlineTooltip:"Underline",richTextBulletListTooltip:"Bulleted list",richTextNumberListTooltip:"Numbered list",richTextIncreaseIndentTooltip:"Increase indent",richTextDecreaseIndentTooltip:"Decrease indent",richTextInsertTableTooltip:"Insert table",richTextFormatButtonTooltip:"Format",richTextInsertRowOrColumnMenu:"Insert",richTextInsertTableMenuTitle:"Insert {column} x {row} table",richTextInsertRowAboveMenu:"Insert above",richTextInsertRowBelowMenu:"Insert below",richTextInsertColumnLeftMenu:"Insert left",richTextInsertColumnRightMenu:"Insert right",richTextDeleteRowOrColumnMenu:"Delete",richTextDeleteColumnMenu:"Delete column",richTextDeleteRowMenu:"Delete row",richTextDeleteTableMenu:"Delete table",richTextToolbarMoreButtonAriaLabel:"More options",attachmentMoreMenu:"More Options"};var mentionPopover$k={mentionPopoverHeader:"Suggestions"};var imageOverlay$k={downloadButtonLabel:"Download",dismissButtonAriaLabel:"Close"};var messageStatusIndicator$k={deliveredAriaLabel:"Message sent",deliveredTooltipText:"Sent",seenAriaLabel:"Message seen by others",seenTooltipText:"Seen",readByTooltipText:"Read by {messageThreadReadCount} of {remoteParticipantsCount}",sendingAriaLabel:"Message sending",sendingTooltipText:"Sending",failedToSendAriaLabel:"Message failed to send",failedToSendTooltipText:"Failed to send"};var endCallButton$k={label:"Leave",tooltipContent:"Leave call",leaveOption:"Leave",endCallOption:"End call for everyone"};var cameraButton$k={onLabel:"Camera",offLabel:"Camera",tooltipDisabledContent:"Camera is disabled",tooltipOnContent:"Turn off camera",tooltipOffContent:"Turn on camera",tooltipVideoLoadingContent:"Video is loading",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",cameraButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Turn off camera and camera options",offSplitButtonAriaLabel:"Turn on camera and camera options",cameraActionTurnedOnAnnouncement:"Your camera has been turned on",cameraActionTurnedOffAnnouncement:"Your camera has been turned off",onSplitButtonPrimaryActionCamera:"Turn off camera",offSplitButtonPrimaryActionCamera:"Turn on camera",cameraPrimaryActionSplitButtonTitle:"Use camera",videoEffectsMenuItemTitle:"Effects"};var microphoneButton$k={onLabel:"Mic",offLabel:"Mic",tooltipDisabledContent:"Microphone is disabled",tooltipOnContent:"Mute microphone",tooltipOffContent:"Unmute microphone",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker",microphoneButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Mute microphone and audio options",offSplitButtonAriaLabel:"Unmute microphone and audio options",microphoneActionTurnedOnAnnouncement:"Your microphone has been turned on",microphoneActionTurnedOffAnnouncement:"Your microphone has been turned off",offSplitButtonMicrophonePrimaryAction:"Unmute microphone",onSplitButtonMicrophonePrimaryAction:"Mute microphone",microphonePrimaryActionSplitButtonTitle:"Use microphone"};var devicesButton$k={label:"Devices",tooltipContent:"Manage devices",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",audioDeviceMenuTitle:"Audio Device",audioDeviceMenuTooltip:"Choose audio device",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker"};var participantsButton$k={label:"People",tooltipContent:"Show participants",menuHeader:"In this call",participantsListButtonLabel:"{numParticipants} people",muteAllButtonLabel:"Mute all",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied"};var screenShareButton$k={onLabel:"Stop presenting",offLabel:"Present",tooltipDisabledContent:"Presenting is disabled",tooltipOnContent:"Presenting your screen",tooltipOffContent:"Present your screen"};var raiseHandButton$k={offLabel:"Raise",onLabel:"Lower",tooltipDisabledContent:"Raise Hand action is disabled",tooltipOnContent:"Lower Hand",tooltipOffContent:"Raise Hand"};var reactionButton$k={label:"React",ariaLabel:"React Button, Send a reaction",tooltipDisabledContent:"Reaction action is disabled",tooltipContent:"Send a reaction",likeReactionTooltipContent:"Like",heartReactionTooltipContent:"Love",laughReactionTooltipContent:"Laugh",applauseReactionTooltipContent:"Applause",surprisedReactionTooltipContent:"Surprised"};var messageThread$k={yesterday:"Yesterday",sunday:"Sunday",monday:"Monday",tuesday:"Tuesday",wednesday:"Wednesday",thursday:"Thursday",friday:"Friday",saturday:"Saturday",participantJoined:"joined the chat.",participantLeft:"left the chat.",editMessage:"Edit",removeMessage:"Delete",resendMessage:"Try sending again",failToSendTag:"Failed to send",editedTag:"Edited",liveAuthorIntro:"{author} says",messageContentAriaText:"{status} {author} said {message}",messageContentMineAriaText:"{status} You said {message}",editBoxTextLimit:"Your message is over the limit of {limitNumber} characters",editBoxPlaceholderText:"Edit your message",newMessagesIndicator:"New messages",noDisplayNameSub:"No name",editBoxCancelButton:"Cancel",editBoxSubmitButton:"Done",messageReadCount:"Read by {messageReadByCount} of {remoteParticipantsCount}",actionMenuMoreOptions:"More Options",downloadAttachment:"Download file",openAttachment:"Open file",blockedWarningText:"This message was deleted due to organizational policy.",blockedWarningLinkText:"Details",attachmentCardGroupMessage:"The message has {attachmentCount} attachment",messageDeletedAnnouncementAriaLabel:"The message is deleted",richTextBoldTooltip:"Bold",richTextItalicTooltip:"Italic",richTextUnderlineTooltip:"Underline",richTextBulletListTooltip:"Bulleted list",richTextNumberListTooltip:"Numbered list",richTextIncreaseIndentTooltip:"Increase indent",richTextDecreaseIndentTooltip:"Decrease indent",richTextInsertTableTooltip:"Insert table",richTextFormatButtonTooltip:"Format",richTextInsertRowOrColumnMenu:"Insert",richTextInsertTableMenuTitle:"Insert {column} x {row} table",richTextInsertRowAboveMenu:"Insert above",richTextInsertRowBelowMenu:"Insert below",richTextInsertColumnLeftMenu:"Insert left",richTextInsertColumnRightMenu:"Insert right",richTextDeleteRowOrColumnMenu:"Delete",richTextDeleteColumnMenu:"Delete column",richTextDeleteRowMenu:"Delete row",richTextDeleteTableMenu:"Delete table",richTextToolbarMoreButtonAriaLabel:"More options"};var errorBar$k={unableToReachChatService:"You are offline",accessDenied:"Unable to access chat services - please check the user credentials provided",userNotInChatThread:"You are no longer in this chat thread",sendMessageNotInChatThread:"Failed to send message because you are no longer in this chat thread",sendMessageGeneric:"Failed to send message",callingNetworkFailure:"Troubling connecting call - you seem to be offline",startVideoGeneric:"Failed to start video",stopVideoGeneric:"Failed to stop video",muteGeneric:"Failed to mute microphone",unmuteGeneric:"Failed to unmute microphone",speakingWhileMuted:"Your microphone is muted",startScreenShareGeneric:"There was an issue starting screen share.",stopScreenShareGeneric:"Failed to stop screen sharing",callNetworkQualityLow:"Network quality is low.",callNoSpeakerFound:"No speakers or headphones found. Connect an audio device to hear the call.",callNoMicrophoneFound:"No microphones found. Connect an audio input device.",callMicrophoneAccessDenied:"Unable to access microphone. Click the lock in the address bar to grant permission to this webpage.",callMicrophoneAccessDeniedSafari:"Unable to access microphone. Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",callMicrophoneMutedBySystem:"You are muted by your system.",callMicrophoneUnmutedBySystem:"Your microphone recovered and you were unmuted by your system.",callMacOsMicrophoneAccessDenied:"Unable to access microphone. Grant microphone permission in your macOS privacy settings.",callLocalVideoFreeze:"Network bandwidth is poor. Your video may appear paused for others on the call.",callCameraAccessDenied:"Unable to access camera. Click the lock in the address bar to grant permission to this webpage.",callCameraAccessDeniedSafari:"Unable to access camera. Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",callCameraAlreadyInUse:"Unable to access camera. It may already be in use by another application.",callVideoStoppedBySystem:"Your video has been stopped by your system.",callVideoRecoveredBySystem:"Your video has resumed.",callMacOsCameraAccessDenied:"MacOS is blocking access to your camera. Update your privacy settings to allow this browser to access your camera.",callMacOsScreenShareAccessDenied:"MacOS is blocking screen sharing. Update your privacy settings to allow this browser to record your screen.",dismissButtonAriaLabel:"Close",failedToJoinCallGeneric:"Failed to join call.",failedToJoinCallInvalidMeetingLink:"Unable to join Meeting. Invalid Link.",cameraFrozenForRemoteParticipants:"Users in the call are having issues seeing your video. Please check your devices and network.",unableToStartVideoEffect:"Unable to apply video effect.",startSpotlightWhileMaxParticipantsAreSpotlighted:"Cannot start spotlight on participant(s) because the maximum number of participants are already spotlighted."};var notifications$k={unableToReachChatService:{title:"You are offline.",closeButtonAriaLabel:"Close"},accessDenied:{title:"Unable to access chat services",message:"Please check the user credentials provided",closeButtonAriaLabel:"Close"},userNotInChatThread:{title:"You are no longer in this chat thread.",closeButtonAriaLabel:"Close"},sendMessageNotInChatThread:{title:"Failed to send message",message:"You are no longer in this chat thread",closeButtonAriaLabel:"Close"},sendMessageGeneric:{title:"Failed to send message.",closeButtonAriaLabel:"Close"},callingNetworkFailure:{title:"Troubling connecting call",message:"You seem to be offline. Please check your network connection and try again.",closeButtonAriaLabel:"Close"},startVideoGeneric:{title:"Failed to start video.",closeButtonAriaLabel:"Close"},stopVideoGeneric:{title:"Failed to stop video.",closeButtonAriaLabel:"Close"},muteGeneric:{title:"Failed to mute microphone.",closeButtonAriaLabel:"Close"},unmuteGeneric:{title:"Failed to unmute microphone.",closeButtonAriaLabel:"Close"},speakingWhileMuted:{title:"You're muted.",closeButtonAriaLabel:"Close"},startScreenShareGeneric:{title:"There was an issue starting screen share.",closeButtonAriaLabel:"Close"},stopScreenShareGeneric:{title:"Failed to stop screen sharing.",closeButtonAriaLabel:"Close"},callNetworkQualityLow:{title:"Network quality is low.",closeButtonAriaLabel:"Close"},callNoSpeakerFound:{title:"No speakers or headphones found",message:"Connect an audio device to hear the call.",closeButtonAriaLabel:"Close"},callNoMicrophoneFound:{title:"No microphones found",message:"Connect an audio input device.",closeButtonAriaLabel:"Close"},callMicrophoneAccessDenied:{title:"Unable to access microphone",message:"Click the lock in the address bar to grant permission to this webpage.",closeButtonAriaLabel:"Close"},callMicrophoneAccessDeniedSafari:{title:"Unable to access microphone",message:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",closeButtonAriaLabel:"Close"},callMicrophoneMutedBySystem:{title:"You are muted by your system.",closeButtonAriaLabel:"Close"},callMicrophoneUnmutedBySystem:{title:"Your microphone recovered and you were unmuted by your system.",closeButtonAriaLabel:"Close"},callMacOsMicrophoneAccessDenied:{title:"Unable to access microphone",message:"Grant microphone permission in your macOS privacy settings.",closeButtonAriaLabel:"Close"},callLocalVideoFreeze:{title:"Network bandwidth is poor",message:"Your video may appear paused for others on the call.",closeButtonAriaLabel:"Close"},callCameraAccessDenied:{title:"Unable to access camera",message:"Click the lock in the address bar to grant permission to this webpage.",closeButtonAriaLabel:"Close"},callCameraAccessDeniedSafari:{title:"Unable to access camera",message:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",closeButtonAriaLabel:"Close"},callCameraAlreadyInUse:{title:"Unable to access camera",message:"It may already be in use by another application.",closeButtonAriaLabel:"Close"},callVideoStoppedBySystem:{title:"Your video has been stopped by your system.",closeButtonAriaLabel:"Close"},callVideoRecoveredBySystem:{title:"Your video has resumed.",closeButtonAriaLabel:"Close"},callMacOsCameraAccessDenied:{title:"MacOS is blocking access to your camera",message:"Update your privacy settings to allow this browser to access your camera.",closeButtonAriaLabel:"Close"},callMacOsScreenShareAccessDenied:{title:"MacOS is blocking screen sharing",message:"Update your privacy settings to allow this browser to record your screen.",closeButtonAriaLabel:"Close"},failedToJoinCallGeneric:{title:"Failed to join call.",closeButtonAriaLabel:"Close"},failedToJoinCallInvalidMeetingLink:{title:"Unable to join Meeting. Invalid Link.",closeButtonAriaLabel:"Close"},cameraFrozenForRemoteParticipants:{title:"Users in the call are having issues seeing your video",message:"Please check your devices and network.",closeButtonAriaLabel:"Close"},unableToStartVideoEffect:{title:"Unable to apply video effect.",closeButtonAriaLabel:"Close"},startSpotlightWhileMaxParticipantsAreSpotlighted:{title:"Cannot start spotlight on participant(s)",message:"The maximum number of participants are already spotlighted.",closeButtonAriaLabel:"Close"}};var videoGallery$k={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Switch camera",localVideoMovementLabel:"Movable Local Video Tile",localVideoMovementAriaLabel:"Movable Local Video Tile",localVideoSelectedDescription:"{cameraName} selected",displayNamePlaceholder:"Unnamed participant",fitRemoteParticipantToFrame:"Fit to frame",fillRemoteParticipantFrame:"Fill frame",pinParticipantForMe:"Pin for me",pinParticipantForMeLimitReached:"Pin (limit reached)",unpinParticipantForMe:"Unpin",pinParticipantMenuItemAriaLabel:"Pin {participantName}",unpinParticipantMenuItemAriaLabel:"Unpin {participantName}",pinnedParticipantAnnouncementAriaLabel:"Pinned {participantName}",unpinnedParticipantAnnouncementAriaLabel:"Unpinned {participantName}",startSpotlightVideoTileMenuLabel:"Spotlight for everyone",addSpotlightVideoTileMenuLabel:"Add spotlight",spotlightLimitReachedMenuTitle:"Spotlight limit reached",stopSpotlightVideoTileMenuLabel:"Stop spotlighting",stopSpotlightOnSelfVideoTileMenuLabel:"Exit spotlight",attendeeRole:"Attendee"};var dialpad$k={placeholderText:"Enter phone number",deleteButtonAriaLabel:"Delete"};var holdButton$k={onLabel:"Resume",offLabel:"Hold",tooltipOnContent:"Resume call",tooltipOffContent:"Hold call"};var videoTile$k={participantStateRinging:"Calling...",participantStateHold:"On hold",moreOptionsButtonAriaLabel:"More Options"};var CameraAndMicrophoneSitePermissionsRequest$k={primaryText:"Allow {appName} to use your camera and microphone",secondaryText:"This is so participants can see and hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera and microphone",ariaLabel:"Allow camera and microphone access"};var CameraSitePermissionsRequest$k={primaryText:"Allow {appName} to use your camera",secondaryText:"This is so participants can see you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera",ariaLabel:"Allow camera access"};var MicrophoneSitePermissionsRequest$k={primaryText:"Allow {appName} to use your microphone",secondaryText:"This is so participants can hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without microphone",ariaLabel:"Allow microphone access"};var CameraAndMicrophoneSitePermissionsCheck$k={primaryText:"Checking for camera and microphone access",secondaryText:"Allow access if prompted. This is so participants can see and hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera and microphone",ariaLabel:"Checking for camera and microphone access. Allow access if prompted."};var CameraSitePermissionsCheck$k={primaryText:"Checking for camera access",secondaryText:"Allow access if prompted. This is so participants can see you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera",ariaLabel:"Checking for camera access. Allow access if prompted."};var MicrophoneSitePermissionsCheck$k={primaryText:"Checking for microphone access",secondaryText:"Allow access if prompted. This is so participants can hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without microphone",ariaLabel:"Checking for microphone access. Allow access if prompted."};var CameraAndMicrophoneSitePermissionsDenied$k={primaryText:"Unable to access camera and microphone",secondaryText:"Click the lock icon in the address bar to grant microphone permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without camera and microphone",linkText:"Need help? Get troubleshooting help"};var CameraAndMicrophoneSitePermissionsDeniedSafari$k={primaryText:"Unable to access camera and microphone",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without camera and microphone",linkText:"Need help? Get troubleshooting help"};var CameraSitePermissionsDenied$k={primaryText:"Unable to access camera",secondaryText:"Click the lock icon in the address bar to grant camera permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without camera",linkText:"Need help? Get troubleshooting help"};var MicrophoneSitePermissionsDenied$k={primaryText:"Unable to access microphone",secondaryText:"Click the lock icon in the address bar to grant microphone permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without microphone",linkText:"Need help? Get troubleshooting help"};var CameraSitePermissionsDeniedSafari$k={primaryText:"Unable to access camera",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without camera",linkText:"Need help? Get troubleshooting help"};var MicrophoneSitePermissionsDeniedSafari$k={primaryText:"Unable to access microphone",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without microphone",linkText:"Need help? Get troubleshooting help"};var UnsupportedBrowser$l={primaryText:"Browser not supported",secondaryText:"Please join this call using a compatible browser.",moreHelpLinkText:"See compatibility requirements"};var UnsupportedBrowserVersion$l={primaryText:"Browser update needed",secondaryText:"To ensure the best call possible, please update your browser and then try joining the call again.",moreHelpLinkText:"See compatibility requirements",continueAnywayButtonText:"Start call without updating"};var UnsupportedOperatingSystem$l={primaryText:"Operating system not supported",secondaryText:"Please join this call using a device with a compatible operating system.",moreHelpLinkText:"See compatibility requirements"};var BrowserPermissionDenied$k={primaryText:"Can't use your camera or microphone",secondaryText:"Your browser might not have access to your camera or microphone. To fix this, open System Preferences.",primaryButtonText:"Try again",linkText:"Need help? Get troubleshooting help"};var BrowserPermissionDeniedIOS$k={primaryText:"Allow microphone access to continue",secondaryText:"So other participants can hear you.",primaryButtonText:"Try again",imageAltText:"Microphone and camera device permission location for iOS",linkText:"Need help? Get troubleshooting help",step1Text:"Go to the Settings app",step2Text:"Scroll down to settings for this browser",step3Text:"Turn on Microphone (Camera optional)",step4Text:"Try joining the call again",step1DigitText:"1",step2DigitText:"2",step3DigitText:"3",step4DigitText:"4"};var verticalGallery$k={leftNavButtonAriaLabel:"previous page",rightNavButtonAriaLabel:"next page"};var MeetingConferencePhoneInfo$k={meetingConferencePhoneInfoModalTitle:"Join call from your phone",meetingConferencePhoneInfoModalDialIn:"Dial number",meetingConferencePhoneInfoModalMeetingId:"Enter meeting ID",meetingConferencePhoneInfoModalWait:"Wait to be admitted by organizer",meetingConferencePhoneInfoModalNoPhoneAvailable:"No phone available",meetingConferencePhoneInfoModalTollFree:"{phoneNumber} (Toll-free) {country}, {city}",meetingConferencePhoneInfoModalTollFreeWithoutGeoData:"{phoneNumber} (Toll-free)",meetingConferencePhoneInfoModalToll:"{phoneNumber} (Toll) {country}, {city}",meetingConferencePhoneInfoModalTollWithoutGeoData:"{phoneNumber} (Toll)"};var en_US$1 = {participantItem:participantItem$k,ParticipantList:ParticipantList$l,typingIndicator:typingIndicator$k,sendBox:sendBox$k,richTextSendBox:richTextSendBox$k,mentionPopover:mentionPopover$k,imageOverlay:imageOverlay$k,messageStatusIndicator:messageStatusIndicator$k,endCallButton:endCallButton$k,cameraButton:cameraButton$k,microphoneButton:microphoneButton$k,devicesButton:devicesButton$k,participantsButton:participantsButton$k,screenShareButton:screenShareButton$k,raiseHandButton:raiseHandButton$k,reactionButton:reactionButton$k,messageThread:messageThread$k,errorBar:errorBar$k,notifications:notifications$k,videoGallery:videoGallery$k,dialpad:dialpad$k,holdButton:holdButton$k,videoTile:videoTile$k,CameraAndMicrophoneSitePermissionsRequest:CameraAndMicrophoneSitePermissionsRequest$k,CameraSitePermissionsRequest:CameraSitePermissionsRequest$k,MicrophoneSitePermissionsRequest:MicrophoneSitePermissionsRequest$k,CameraAndMicrophoneSitePermissionsCheck:CameraAndMicrophoneSitePermissionsCheck$k,CameraSitePermissionsCheck:CameraSitePermissionsCheck$k,MicrophoneSitePermissionsCheck:MicrophoneSitePermissionsCheck$k,CameraAndMicrophoneSitePermissionsDenied:CameraAndMicrophoneSitePermissionsDenied$k,CameraAndMicrophoneSitePermissionsDeniedSafari:CameraAndMicrophoneSitePermissionsDeniedSafari$k,CameraSitePermissionsDenied:CameraSitePermissionsDenied$k,MicrophoneSitePermissionsDenied:MicrophoneSitePermissionsDenied$k,CameraSitePermissionsDeniedSafari:CameraSitePermissionsDeniedSafari$k,MicrophoneSitePermissionsDeniedSafari:MicrophoneSitePermissionsDeniedSafari$k,UnsupportedBrowser:UnsupportedBrowser$l,UnsupportedBrowserVersion:UnsupportedBrowserVersion$l,UnsupportedOperatingSystem:UnsupportedOperatingSystem$l,BrowserPermissionDenied:BrowserPermissionDenied$k,BrowserPermissionDeniedIOS:BrowserPermissionDeniedIOS$k,verticalGallery:verticalGallery$k,MeetingConferencePhoneInfo:MeetingConferencePhoneInfo$k};
5898
+ var participantItem$k={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed participant",participantStateRinging:"Calling...",participantStateHold:"On hold",attendeeRole:"Attendee"};var ParticipantList$l={overflowParticipantCount:"+{overflowCount} more"};var typingIndicator$k={singleUser:"{user} is typing ...",multipleUsers:"{users} are typing ...",multipleUsersAbbreviateOne:"{users} and 1 other are typing ...",multipleUsersAbbreviateMany:"{users} and {numOthers} others are typing ...",delimiter:", "};var sendBox$k={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",attachmentUploadsPendingError:"Uploading... Please wait.",removeAttachment:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed",attachmentMoreMenu:"More Options"};var richTextSendBox$k={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",attachmentUploadsPendingError:"Uploading... Please wait.",removeAttachment:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed",richTextBoldTooltip:"Bold",richTextItalicTooltip:"Italic",richTextUnderlineTooltip:"Underline",richTextBulletListTooltip:"Bulleted list",richTextNumberListTooltip:"Numbered list",richTextIncreaseIndentTooltip:"Increase indent",richTextDecreaseIndentTooltip:"Decrease indent",richTextInsertTableTooltip:"Insert table",richTextFormatButtonTooltip:"Format",richTextInsertRowOrColumnMenu:"Insert",richTextInsertTableMenuTitle:"Insert {column} x {row} table",richTextInsertRowAboveMenu:"Insert above",richTextInsertRowBelowMenu:"Insert below",richTextInsertColumnLeftMenu:"Insert left",richTextInsertColumnRightMenu:"Insert right",richTextDeleteRowOrColumnMenu:"Delete",richTextDeleteColumnMenu:"Delete column",richTextDeleteRowMenu:"Delete row",richTextDeleteTableMenu:"Delete table",richTextToolbarMoreButtonAriaLabel:"More options",attachmentMoreMenu:"More Options"};var mentionPopover$k={mentionPopoverHeader:"Suggestions"};var imageOverlay$k={downloadButtonLabel:"Download",dismissButtonAriaLabel:"Close"};var messageStatusIndicator$k={deliveredAriaLabel:"Message sent",deliveredTooltipText:"Sent",seenAriaLabel:"Message seen by others",seenTooltipText:"Seen",readByTooltipText:"Read by {messageThreadReadCount} of {remoteParticipantsCount}",sendingAriaLabel:"Message sending",sendingTooltipText:"Sending",failedToSendAriaLabel:"Message failed to send",failedToSendTooltipText:"Failed to send"};var endCallButton$k={label:"Leave",tooltipContent:"Leave call",leaveOption:"Leave",endCallOption:"End call for everyone"};var cameraButton$k={onLabel:"Camera",offLabel:"Camera",tooltipDisabledContent:"Camera is disabled",tooltipOnContent:"Turn off camera",tooltipOffContent:"Turn on camera",tooltipVideoLoadingContent:"Video is loading",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",cameraButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Turn off camera and camera options",offSplitButtonAriaLabel:"Turn on camera and camera options",cameraActionTurnedOnAnnouncement:"Your camera has been turned on",cameraActionTurnedOffAnnouncement:"Your camera has been turned off",onSplitButtonPrimaryActionCamera:"Turn off camera",offSplitButtonPrimaryActionCamera:"Turn on camera",cameraPrimaryActionSplitButtonTitle:"Use camera",videoEffectsMenuItemTitle:"Effects"};var microphoneButton$k={onLabel:"Mic",offLabel:"Mic",tooltipDisabledContent:"Microphone is disabled",tooltipOnContent:"Mute microphone",tooltipOffContent:"Unmute microphone",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker",microphoneButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Mute microphone and audio options",offSplitButtonAriaLabel:"Unmute microphone and audio options",microphoneActionTurnedOnAnnouncement:"Your microphone has been turned on",microphoneActionTurnedOffAnnouncement:"Your microphone has been turned off",offSplitButtonMicrophonePrimaryAction:"Unmute microphone",onSplitButtonMicrophonePrimaryAction:"Mute microphone",microphonePrimaryActionSplitButtonTitle:"Use microphone"};var devicesButton$k={label:"Devices",tooltipContent:"Manage devices",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",audioDeviceMenuTitle:"Audio Device",audioDeviceMenuTooltip:"Choose audio device",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker"};var participantsButton$k={label:"People",tooltipContent:"Show participants",menuHeader:"In this call",participantsListButtonLabel:"{numParticipants} people",muteAllButtonLabel:"Mute all",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied"};var screenShareButton$k={onLabel:"Stop presenting",offLabel:"Present",tooltipDisabledContent:"Presenting is disabled",tooltipOnContent:"Presenting your screen",tooltipOffContent:"Present your screen"};var raiseHandButton$k={offLabel:"Raise",onLabel:"Lower",tooltipDisabledContent:"Raise Hand action is disabled",tooltipOnContent:"Lower Hand",tooltipOffContent:"Raise Hand"};var reactionButton$k={label:"React",ariaLabel:"React Button, Send a reaction",tooltipDisabledContent:"Reaction action is disabled",tooltipContent:"Send a reaction",likeReactionTooltipContent:"Like",heartReactionTooltipContent:"Love",laughReactionTooltipContent:"Laugh",applauseReactionTooltipContent:"Applause",surprisedReactionTooltipContent:"Surprised"};var messageThread$k={yesterday:"Yesterday",sunday:"Sunday",monday:"Monday",tuesday:"Tuesday",wednesday:"Wednesday",thursday:"Thursday",friday:"Friday",saturday:"Saturday",participantJoined:"joined the chat.",participantLeft:"left the chat.",editMessage:"Edit",removeMessage:"Delete",resendMessage:"Try sending again",failToSendTag:"Failed to send",editedTag:"Edited",liveAuthorIntro:"{author} says",messageContentAriaText:"{status} {author} said {message}",messageContentMineAriaText:"{status} You said {message}",editBoxTextLimit:"Your message is over the limit of {limitNumber} characters",editBoxPlaceholderText:"Edit your message",newMessagesIndicator:"New messages",noDisplayNameSub:"No name",editBoxCancelButton:"Cancel",editBoxSubmitButton:"Done",messageReadCount:"Read by {messageReadByCount} of {remoteParticipantsCount}",actionMenuMoreOptions:"More Options",downloadAttachment:"Download file",openAttachment:"Open file",blockedWarningText:"This message was deleted due to organizational policy.",blockedWarningLinkText:"Details",attachmentCardGroupMessage:"The message has {attachmentCount} attachment",messageDeletedAnnouncementAriaLabel:"The message is deleted",richTextBoldTooltip:"Bold",richTextItalicTooltip:"Italic",richTextUnderlineTooltip:"Underline",richTextBulletListTooltip:"Bulleted list",richTextNumberListTooltip:"Numbered list",richTextIncreaseIndentTooltip:"Increase indent",richTextDecreaseIndentTooltip:"Decrease indent",richTextInsertTableTooltip:"Insert table",richTextFormatButtonTooltip:"Format",richTextInsertRowOrColumnMenu:"Insert",richTextInsertTableMenuTitle:"Insert {column} x {row} table",richTextInsertRowAboveMenu:"Insert above",richTextInsertRowBelowMenu:"Insert below",richTextInsertColumnLeftMenu:"Insert left",richTextInsertColumnRightMenu:"Insert right",richTextDeleteRowOrColumnMenu:"Delete",richTextDeleteColumnMenu:"Delete column",richTextDeleteRowMenu:"Delete row",richTextDeleteTableMenu:"Delete table",richTextToolbarMoreButtonAriaLabel:"More options"};var errorBar$k={unableToReachChatService:"You are offline",accessDenied:"Unable to access chat services - please check the user credentials provided",userNotInChatThread:"You are no longer in this chat thread",sendMessageNotInChatThread:"Failed to send message because you are no longer in this chat thread",sendMessageGeneric:"Failed to send message",callingNetworkFailure:"Troubling connecting call - you seem to be offline",startVideoGeneric:"Failed to start video",stopVideoGeneric:"Failed to stop video",muteGeneric:"Failed to mute microphone",unmuteGeneric:"Failed to unmute microphone",speakingWhileMuted:"Your microphone is muted",startScreenShareGeneric:"There was an issue starting screen share.",stopScreenShareGeneric:"Failed to stop screen sharing",callNetworkQualityLow:"Network quality is low.",callNoSpeakerFound:"No speakers or headphones found. Connect an audio device to hear the call.",callNoMicrophoneFound:"No microphones found. Connect an audio input device.",callMicrophoneAccessDenied:"Unable to access microphone. Click the lock in the address bar to grant permission to this webpage.",callMicrophoneAccessDeniedSafari:"Unable to access microphone. Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",callMicrophoneMutedBySystem:"You are muted by your system.",callMicrophoneUnmutedBySystem:"Your microphone recovered and you were unmuted by your system.",callMacOsMicrophoneAccessDenied:"Unable to access microphone. Grant microphone permission in your macOS privacy settings.",callLocalVideoFreeze:"Network bandwidth is poor. Your video may appear paused for others on the call.",callCameraAccessDenied:"Unable to access camera. Click the lock in the address bar to grant permission to this webpage.",callCameraAccessDeniedSafari:"Unable to access camera. Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",callCameraAlreadyInUse:"Unable to access camera. It may already be in use by another application.",callVideoStoppedBySystem:"Your video has been stopped by your system.",callVideoRecoveredBySystem:"Your video has resumed.",callMacOsCameraAccessDenied:"MacOS is blocking access to your camera. Update your privacy settings to allow this browser to access your camera.",callMacOsScreenShareAccessDenied:"MacOS is blocking screen sharing. Update your privacy settings to allow this browser to record your screen.",dismissButtonAriaLabel:"Close",failedToJoinCallGeneric:"Failed to join call.",failedToJoinCallInvalidMeetingLink:"Unable to join Meeting. Invalid Link.",cameraFrozenForRemoteParticipants:"Users in the call are having issues seeing your video. Please check your devices and network.",unableToStartVideoEffect:"Unable to apply video effect.",startSpotlightWhileMaxParticipantsAreSpotlighted:"Cannot start spotlight on participant(s) because the maximum number of participants are already spotlighted."};var notifications$k={callingNetworkFailure:{title:"Troubling connecting call",message:"You seem to be offline. Please check your network connection and try again.",closeButtonAriaLabel:"Close"},startVideoGeneric:{title:"Failed to start video.",closeButtonAriaLabel:"Close"},stopVideoGeneric:{title:"Failed to stop video.",closeButtonAriaLabel:"Close"},muteGeneric:{title:"Failed to mute microphone.",closeButtonAriaLabel:"Close"},unmuteGeneric:{title:"Failed to unmute microphone.",closeButtonAriaLabel:"Close"},speakingWhileMuted:{title:"You're muted.",closeButtonAriaLabel:"Close"},startScreenShareGeneric:{title:"There was an issue starting screen share.",closeButtonAriaLabel:"Close"},stopScreenShareGeneric:{title:"Failed to stop screen sharing.",closeButtonAriaLabel:"Close"},callNetworkQualityLow:{title:"Network quality is low.",closeButtonAriaLabel:"Close"},callNoSpeakerFound:{title:"No speakers or headphones found",message:"Connect an audio device to hear the call.",closeButtonAriaLabel:"Close"},callNoMicrophoneFound:{title:"No microphones found",message:"Connect an audio input device.",closeButtonAriaLabel:"Close"},callMicrophoneAccessDenied:{title:"Unable to access microphone",message:"Click the lock in the address bar to grant permission to this webpage.",closeButtonAriaLabel:"Close"},callMicrophoneAccessDeniedSafari:{title:"Unable to access microphone",message:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",closeButtonAriaLabel:"Close"},callMicrophoneMutedBySystem:{title:"You are muted by your system.",closeButtonAriaLabel:"Close"},callMicrophoneUnmutedBySystem:{title:"Your microphone recovered and you were unmuted by your system.",closeButtonAriaLabel:"Close"},callMacOsMicrophoneAccessDenied:{title:"Unable to access microphone",message:"Grant microphone permission in your macOS privacy settings.",closeButtonAriaLabel:"Close"},callLocalVideoFreeze:{title:"Network bandwidth is poor",message:"Your video may appear paused for others on the call.",closeButtonAriaLabel:"Close"},callCameraAccessDenied:{title:"Unable to access camera",message:"Click the lock in the address bar to grant permission to this webpage.",closeButtonAriaLabel:"Close"},callCameraAccessDeniedSafari:{title:"Unable to access camera",message:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",closeButtonAriaLabel:"Close"},callCameraAlreadyInUse:{title:"Unable to access camera",message:"It may already be in use by another application.",closeButtonAriaLabel:"Close"},callVideoStoppedBySystem:{title:"Your video has been stopped by your system.",closeButtonAriaLabel:"Close"},callVideoRecoveredBySystem:{title:"Your video has resumed.",closeButtonAriaLabel:"Close"},callMacOsCameraAccessDenied:{title:"MacOS is blocking access to your camera",message:"Update your privacy settings to allow this browser to access your camera.",closeButtonAriaLabel:"Close"},callMacOsScreenShareAccessDenied:{title:"MacOS is blocking screen sharing",message:"Update your privacy settings to allow this browser to record your screen.",closeButtonAriaLabel:"Close"},failedToJoinCallGeneric:{title:"Failed to join call.",closeButtonAriaLabel:"Close"},failedToJoinCallInvalidMeetingLink:{title:"Unable to join Meeting. Invalid Link.",closeButtonAriaLabel:"Close"},cameraFrozenForRemoteParticipants:{title:"Users in the call are having issues seeing your video",message:"Please check your devices and network.",closeButtonAriaLabel:"Close"},unableToStartVideoEffect:{title:"Unable to apply video effect.",closeButtonAriaLabel:"Close"},startSpotlightWhileMaxParticipantsAreSpotlighted:{title:"Cannot start spotlight on participant(s)",message:"The maximum number of participants are already spotlighted.",closeButtonAriaLabel:"Close"}};var videoGallery$k={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Switch camera",localVideoMovementLabel:"Movable Local Video Tile",localVideoMovementAriaLabel:"Movable Local Video Tile",localVideoSelectedDescription:"{cameraName} selected",displayNamePlaceholder:"Unnamed participant",fitRemoteParticipantToFrame:"Fit to frame",fillRemoteParticipantFrame:"Fill frame",pinParticipantForMe:"Pin for me",pinParticipantForMeLimitReached:"Pin (limit reached)",unpinParticipantForMe:"Unpin",pinParticipantMenuItemAriaLabel:"Pin {participantName}",unpinParticipantMenuItemAriaLabel:"Unpin {participantName}",pinnedParticipantAnnouncementAriaLabel:"Pinned {participantName}",unpinnedParticipantAnnouncementAriaLabel:"Unpinned {participantName}",startSpotlightVideoTileMenuLabel:"Spotlight for everyone",addSpotlightVideoTileMenuLabel:"Add spotlight",spotlightLimitReachedMenuTitle:"Spotlight limit reached",stopSpotlightVideoTileMenuLabel:"Stop spotlighting",stopSpotlightOnSelfVideoTileMenuLabel:"Exit spotlight",attendeeRole:"Attendee",muteParticipantMenuItemLabel:"Mute"};var dialpad$k={placeholderText:"Enter phone number",deleteButtonAriaLabel:"Delete"};var holdButton$k={onLabel:"Resume",offLabel:"Hold",tooltipOnContent:"Resume call",tooltipOffContent:"Hold call"};var videoTile$k={participantStateRinging:"Calling...",participantStateHold:"On hold",moreOptionsButtonAriaLabel:"More Options"};var CameraAndMicrophoneSitePermissionsRequest$k={primaryText:"Allow {appName} to use your camera and microphone",secondaryText:"This is so participants can see and hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera and microphone",ariaLabel:"Allow camera and microphone access"};var CameraSitePermissionsRequest$k={primaryText:"Allow {appName} to use your camera",secondaryText:"This is so participants can see you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera",ariaLabel:"Allow camera access"};var MicrophoneSitePermissionsRequest$k={primaryText:"Allow {appName} to use your microphone",secondaryText:"This is so participants can hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without microphone",ariaLabel:"Allow microphone access"};var CameraAndMicrophoneSitePermissionsCheck$k={primaryText:"Checking for camera and microphone access",secondaryText:"Allow access if prompted. This is so participants can see and hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera and microphone",ariaLabel:"Checking for camera and microphone access. Allow access if prompted."};var CameraSitePermissionsCheck$k={primaryText:"Checking for camera access",secondaryText:"Allow access if prompted. This is so participants can see you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera",ariaLabel:"Checking for camera access. Allow access if prompted."};var MicrophoneSitePermissionsCheck$k={primaryText:"Checking for microphone access",secondaryText:"Allow access if prompted. This is so participants can hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without microphone",ariaLabel:"Checking for microphone access. Allow access if prompted."};var CameraAndMicrophoneSitePermissionsDenied$k={primaryText:"Unable to access camera and microphone",secondaryText:"Click the lock icon in the address bar to grant microphone permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without camera and microphone",linkText:"Need help? Get troubleshooting help"};var CameraAndMicrophoneSitePermissionsDeniedSafari$k={primaryText:"Unable to access camera and microphone",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without camera and microphone",linkText:"Need help? Get troubleshooting help"};var CameraSitePermissionsDenied$k={primaryText:"Unable to access camera",secondaryText:"Click the lock icon in the address bar to grant camera permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without camera",linkText:"Need help? Get troubleshooting help"};var MicrophoneSitePermissionsDenied$k={primaryText:"Unable to access microphone",secondaryText:"Click the lock icon in the address bar to grant microphone permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without microphone",linkText:"Need help? Get troubleshooting help"};var CameraSitePermissionsDeniedSafari$k={primaryText:"Unable to access camera",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without camera",linkText:"Need help? Get troubleshooting help"};var MicrophoneSitePermissionsDeniedSafari$k={primaryText:"Unable to access microphone",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without microphone",linkText:"Need help? Get troubleshooting help"};var UnsupportedBrowser$l={primaryText:"Browser not supported",secondaryText:"Please join this call using a compatible browser.",moreHelpLinkText:"See compatibility requirements"};var UnsupportedBrowserVersion$l={primaryText:"Browser update needed",secondaryText:"To ensure the best call possible, please update your browser and then try joining the call again.",moreHelpLinkText:"See compatibility requirements",continueAnywayButtonText:"Start call without updating"};var UnsupportedOperatingSystem$l={primaryText:"Operating system not supported",secondaryText:"Please join this call using a device with a compatible operating system.",moreHelpLinkText:"See compatibility requirements"};var BrowserPermissionDenied$k={primaryText:"Can't use your camera or microphone",secondaryText:"Your browser might not have access to your camera or microphone. To fix this, open System Preferences.",primaryButtonText:"Try again",linkText:"Need help? Get troubleshooting help"};var BrowserPermissionDeniedIOS$k={primaryText:"Allow microphone access to continue",secondaryText:"So other participants can hear you.",primaryButtonText:"Try again",imageAltText:"Microphone and camera device permission location for iOS",linkText:"Need help? Get troubleshooting help",step1Text:"Go to the Settings app",step2Text:"Scroll down to settings for this browser",step3Text:"Turn on Microphone (Camera optional)",step4Text:"Try joining the call again",step1DigitText:"1",step2DigitText:"2",step3DigitText:"3",step4DigitText:"4"};var verticalGallery$k={leftNavButtonAriaLabel:"previous page",rightNavButtonAriaLabel:"next page"};var MeetingConferencePhoneInfo$k={meetingConferencePhoneInfoModalTitle:"Join call from your phone",meetingConferencePhoneInfoModalDialIn:"Dial number",meetingConferencePhoneInfoModalMeetingId:"Enter meeting ID",meetingConferencePhoneInfoModalWait:"Wait to be admitted by organizer",meetingConferencePhoneInfoModalNoPhoneAvailable:"No phone available",meetingConferencePhoneInfoModalTollFree:"{phoneNumber} (Toll-free) {country}, {city}",meetingConferencePhoneInfoModalTollFreeWithoutGeoData:"{phoneNumber} (Toll-free)",meetingConferencePhoneInfoModalToll:"{phoneNumber} (Toll) {country}, {city}",meetingConferencePhoneInfoModalTollWithoutGeoData:"{phoneNumber} (Toll)"};var en_US$1 = {participantItem:participantItem$k,ParticipantList:ParticipantList$l,typingIndicator:typingIndicator$k,sendBox:sendBox$k,richTextSendBox:richTextSendBox$k,mentionPopover:mentionPopover$k,imageOverlay:imageOverlay$k,messageStatusIndicator:messageStatusIndicator$k,endCallButton:endCallButton$k,cameraButton:cameraButton$k,microphoneButton:microphoneButton$k,devicesButton:devicesButton$k,participantsButton:participantsButton$k,screenShareButton:screenShareButton$k,raiseHandButton:raiseHandButton$k,reactionButton:reactionButton$k,messageThread:messageThread$k,errorBar:errorBar$k,notifications:notifications$k,videoGallery:videoGallery$k,dialpad:dialpad$k,holdButton:holdButton$k,videoTile:videoTile$k,CameraAndMicrophoneSitePermissionsRequest:CameraAndMicrophoneSitePermissionsRequest$k,CameraSitePermissionsRequest:CameraSitePermissionsRequest$k,MicrophoneSitePermissionsRequest:MicrophoneSitePermissionsRequest$k,CameraAndMicrophoneSitePermissionsCheck:CameraAndMicrophoneSitePermissionsCheck$k,CameraSitePermissionsCheck:CameraSitePermissionsCheck$k,MicrophoneSitePermissionsCheck:MicrophoneSitePermissionsCheck$k,CameraAndMicrophoneSitePermissionsDenied:CameraAndMicrophoneSitePermissionsDenied$k,CameraAndMicrophoneSitePermissionsDeniedSafari:CameraAndMicrophoneSitePermissionsDeniedSafari$k,CameraSitePermissionsDenied:CameraSitePermissionsDenied$k,MicrophoneSitePermissionsDenied:MicrophoneSitePermissionsDenied$k,CameraSitePermissionsDeniedSafari:CameraSitePermissionsDeniedSafari$k,MicrophoneSitePermissionsDeniedSafari:MicrophoneSitePermissionsDeniedSafari$k,UnsupportedBrowser:UnsupportedBrowser$l,UnsupportedBrowserVersion:UnsupportedBrowserVersion$l,UnsupportedOperatingSystem:UnsupportedOperatingSystem$l,BrowserPermissionDenied:BrowserPermissionDenied$k,BrowserPermissionDeniedIOS:BrowserPermissionDeniedIOS$k,verticalGallery:verticalGallery$k,MeetingConferencePhoneInfo:MeetingConferencePhoneInfo$k};
5754
5899
 
5755
5900
  // Copyright (c) Microsoft Corporation.
5756
5901
  // Licensed under the MIT License.
@@ -6063,6 +6208,61 @@ const dropDismissalsForInactiveErrors = (activeErrorMessages, dismissedErrors) =
6063
6208
  }
6064
6209
  return dismissedErrors;
6065
6210
  };
6211
+ /**
6212
+ * @private
6213
+ * @param dismissedNotifications
6214
+ * @param toDismiss
6215
+ * @returns DismissedNotification[]
6216
+ * Always returns a new Array so that the state variable is updated, trigerring a render.
6217
+ */
6218
+ const dismissNotification = (dismissedNotifications, toDismiss) => {
6219
+ var _a;
6220
+ const now = new Date(Date.now());
6221
+ for (const notification of dismissedNotifications) {
6222
+ if (notification.type === toDismiss.type) {
6223
+ // Bump the timestamp for latest dismissal of this error to now.
6224
+ notification.dismissedAt = now;
6225
+ notification.activeSince = toDismiss.timestamp;
6226
+ return Array.from(dismissedNotifications);
6227
+ }
6228
+ }
6229
+ const toDismissTimestamp = (_a = toDismiss.timestamp) !== null && _a !== void 0 ? _a : now;
6230
+ // Record that this error was dismissed for the first time right now.
6231
+ return [
6232
+ ...dismissedNotifications,
6233
+ {
6234
+ type: toDismiss.type,
6235
+ // the error time could be sometimes later than the button click time, which cause the dismiss not working
6236
+ // so we set the dismiss time to the later one
6237
+ dismissedAt: now > toDismissTimestamp ? now : toDismissTimestamp,
6238
+ activeSince: toDismiss.timestamp
6239
+ }
6240
+ ];
6241
+ };
6242
+ /**
6243
+ * @private
6244
+ * @param activeNotifications
6245
+ * @param dismissedNotifications
6246
+ * @returns DismissedError[]
6247
+ * Returns a new Array if and only if contents change, to avoid re-rendering when nothing was dropped.
6248
+ */
6249
+ const dropDismissalsForInactiveNotifications = (activeNotifications, dismissedNotifications) => {
6250
+ const active = new Map();
6251
+ for (const message of activeNotifications) {
6252
+ active.set(message.type, message);
6253
+ }
6254
+ // For an error such that:
6255
+ // * It was previously active, and dismissed.
6256
+ // * It did not have a timestamp associated with it.
6257
+ // * It is no longer active.
6258
+ //
6259
+ // We remove it from dismissals. When it becomes active again next time, it will be shown again on the UI.
6260
+ const shouldDeleteDismissal = (dismissed) => dismissed.activeSince === undefined && active.get(dismissed.type) === undefined;
6261
+ if (dismissedNotifications.some((dismissed) => shouldDeleteDismissal(dismissed))) {
6262
+ return dismissedNotifications.filter((dismissed) => !shouldDeleteDismissal(dismissed));
6263
+ }
6264
+ return dismissedNotifications;
6265
+ };
6066
6266
  /**
6067
6267
  * @private
6068
6268
  * @param activeErrorMessages
@@ -6092,6 +6292,35 @@ const errorsToShow = (activeErrorMessages, dismissedErrors, mountTimestamp) => {
6092
6292
  return error.timestamp > dismissal.dismissedAt;
6093
6293
  });
6094
6294
  };
6295
+ /**
6296
+ * @private
6297
+ * @param activeNotifications
6298
+ * @param dismissedNotifications
6299
+ * @returns ActiveNotification[]
6300
+ */
6301
+ const notificationsToShow = (activeNotifications, dismissedNotifications, mountTimestamp) => {
6302
+ const dismissed = new Map();
6303
+ for (const notification of dismissedNotifications) {
6304
+ dismissed.set(notification.type, notification);
6305
+ }
6306
+ return activeNotifications.filter((notification) => {
6307
+ if (mountTimestamp && notification.timestamp && mountTimestamp > notification.timestamp) {
6308
+ // Notification has a timestamp and it is older than when the component was mounted.
6309
+ return false;
6310
+ }
6311
+ const dismissal = dismissed.get(notification.type);
6312
+ if (!dismissal) {
6313
+ // This error was never dismissed.
6314
+ return true;
6315
+ }
6316
+ if (!notification.timestamp) {
6317
+ // No timestamp associated with the error. In this case, the existence of a dismissal is enough to suppress the error.
6318
+ return false;
6319
+ }
6320
+ // Error has an associated timestamp, so compare with last dismissal.
6321
+ return notification.timestamp > dismissal.dismissedAt;
6322
+ });
6323
+ };
6095
6324
  /**
6096
6325
  * @private
6097
6326
  * @param errorType
@@ -6258,7 +6487,7 @@ const ErrorBar = (props) => {
6258
6487
  setDismissedErrors(dropDismissalsForInactiveErrors(props.activeErrorMessages, dismissedErrors));
6259
6488
  }, [props.activeErrorMessages, dismissedErrors, trackDismissedErrorsInternally]);
6260
6489
  const toShow = errorsToShow(props.activeErrorMessages, dismissedErrors, props.ignorePremountErrors ? mountTimestamp.current : undefined);
6261
- return (React.createElement(react.Stack, { "data-ui-id": "error-bar-stack" }, toShow.map((error) => (React.createElement(react.MessageBar, Object.assign({}, props, { styles: {
6490
+ return (React.createElement(react.Stack, { "data-ui-id": "notifications-stack" }, toShow.map((error) => (React.createElement(react.MessageBar, Object.assign({}, props, { styles: {
6262
6491
  innerText: {
6263
6492
  alignSelf: 'center'
6264
6493
  },
@@ -6617,12 +6846,7 @@ const lightTheme = {
6617
6846
  errorText: '#a80000'
6618
6847
  }
6619
6848
  };
6620
- /**
6621
- * Preset dark theme for components exported from this library.
6622
- *
6623
- * @public
6624
- */
6625
- const darkTheme = {
6849
+ const partialDarkTheme = {
6626
6850
  palette: {
6627
6851
  themePrimary: '#2899f5',
6628
6852
  themeLighterAlt: '#02060a',
@@ -6648,18 +6872,23 @@ const darkTheme = {
6648
6872
  white: '#252423',
6649
6873
  whiteTranslucent40: 'rgba(0, 0, 0, 0.4)'
6650
6874
  },
6651
- callingPalette: {
6875
+ semanticColors: {
6876
+ errorText: '#f1707b'
6877
+ }
6878
+ };
6879
+ /**
6880
+ * Preset dark theme for components exported from this library.
6881
+ *
6882
+ * @public
6883
+ */
6884
+ const darkTheme = Object.assign(Object.assign({}, react.createTheme(Object.assign(Object.assign({}, partialDarkTheme), { isInverted: true }))), { callingPalette: {
6652
6885
  callRed: '#c4314b',
6653
6886
  callRedDark: '#a42e43',
6654
6887
  callRedDarker: '#8b2c3d',
6655
6888
  iconWhite: '#ffffff',
6656
6889
  raiseHandGold: '#eaa300',
6657
6890
  videoTileLabelBackgroundLight: 'rgba(37,36,35,0.8)'
6658
- },
6659
- semanticColors: {
6660
- errorText: '#f1707b'
6661
- }
6662
- };
6891
+ } });
6663
6892
  /* @conditional-compile-remove(image-overlay-theme) */
6664
6893
  /**
6665
6894
  * Preset dark theme for the ImageOverlay component.
@@ -9583,7 +9812,7 @@ const mapBorderRadiusTokens = (effects) => {
9583
9812
  */
9584
9813
  const createV9Theme = (themeV8, baseThemeV9) => {
9585
9814
  const baseTheme = baseThemeV9 !== null && baseThemeV9 !== void 0 ? baseThemeV9 : reactComponents.webLightTheme;
9586
- return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, baseTheme), mapAliasColors(themeV8.palette, themeV8.isInverted)), mapShadowTokens(themeV8.effects)), mapBorderRadiusTokens(themeV8.effects)), { colorBrandBackground2: themeV8.palette.themeLight, colorBrandBackground2Hover: themeV8.palette.themeLight, colorBrandBackground2Pressed: themeV8.palette.themeLight, colorStatusWarningBackground3: '#D83B01', errorText: themeV8.semanticColors.errorText, colorNeutralStroke1Selected: themeV8.palette.neutralQuaternary, colorNeutralForeground2: themeV8.palette.neutralSecondary, colorBrandForegroundLinkHover: themeV8.palette.themeDarker, colorNeutralBackground1Selected: themeV8.palette.neutralQuaternaryAlt, colorNeutralStroke2: themeV8.palette.neutralTertiaryAlt,
9815
+ return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, baseTheme), mapAliasColors(themeV8.palette, themeV8.isInverted)), mapShadowTokens(themeV8.effects)), mapBorderRadiusTokens(themeV8.effects)), { colorBrandBackground2: themeV8.palette.themeLight, colorBrandBackground2Hover: themeV8.palette.themeLight, colorBrandBackground2Pressed: themeV8.palette.themeLight, colorStatusWarningBackground3: '#D83B01', errorText: themeV8.semanticColors.errorText, colorNeutralStroke1Selected: themeV8.palette.neutralQuaternary, colorNeutralForeground2: themeV8.palette.neutralSecondary, colorBrandForegroundLinkHover: themeV8.palette.themeDarker, colorNeutralBackground1Selected: themeV8.palette.neutralQuaternaryAlt,
9587
9816
  // Fix for an issue with black borders for iOS that are added with 'after' selector
9588
9817
  colorStrokeFocus2: 'transparent' });
9589
9818
  };
@@ -10071,10 +10300,10 @@ const richTextEditorWrapperStyle = (theme, addTopOffset) => {
10071
10300
  tableLayout: 'auto',
10072
10301
  '& tr': {
10073
10302
  background: 'transparent',
10074
- border: `1px solid ${theme.palette.neutralTertiaryAlt}`,
10303
+ border: `1px solid ${theme.palette.neutralSecondary}`,
10075
10304
  '& td': {
10076
10305
  background: 'transparent',
10077
- border: `1px solid ${theme.palette.neutralTertiaryAlt}`,
10306
+ border: `1px solid ${theme.palette.neutralSecondary}`,
10078
10307
  wordBreak: 'normal',
10079
10308
  padding: '0.125rem 0.25rem',
10080
10309
  verticalAlign: 'top'
@@ -10144,16 +10373,26 @@ const ribbonOverflowButtonRootStyles = (theme) => {
10144
10373
  }
10145
10374
  };
10146
10375
  };
10147
- const ribbonButtonRootStyles = (theme) => {
10376
+ const ribbonButtonRootStyles = (iconColor, hoverIconColor) => {
10148
10377
  return {
10149
10378
  backgroundColor: 'transparent',
10150
10379
  selectors: {
10151
- // Icon's color doesn't work here because of the specificity
10380
+ // media query applies only if the device allows real hover interactions
10381
+ // and hover styles are not applied on touch- only devices where the hover state cannot be accurately detected
10382
+ '@media (hover: hover)': {
10383
+ ':hover .ms-Button-icon': {
10384
+ color: hoverIconColor
10385
+ },
10386
+ ':hover .ms-Button-menuIcon': {
10387
+ color: hoverIconColor
10388
+ }
10389
+ },
10390
+ // the classes needs here to apply to styles for icons because of the specificity
10152
10391
  '.ms-Button-icon': {
10153
- color: theme.palette.themePrimary
10392
+ color: iconColor
10154
10393
  },
10155
10394
  '.ms-Button-menuIcon': {
10156
- color: theme.palette.themePrimary
10395
+ color: iconColor
10157
10396
  }
10158
10397
  }
10159
10398
  };
@@ -10166,13 +10405,14 @@ const toolbarButtonStyle = (theme) => {
10166
10405
  icon: { color: theme.palette.neutralPrimary, height: 'auto' },
10167
10406
  menuIcon: { color: theme.palette.neutralPrimary, height: 'auto' },
10168
10407
  root: { minWidth: 'auto', backgroundColor: 'transparent' },
10169
- rootChecked: ribbonButtonRootStyles(theme),
10170
- rootHovered: ribbonButtonRootStyles(theme),
10171
- rootCheckedHovered: ribbonButtonRootStyles(theme),
10172
- rootCheckedPressed: ribbonButtonRootStyles(theme),
10173
- rootPressed: ribbonButtonRootStyles(theme),
10174
- rootExpanded: ribbonButtonRootStyles(theme),
10175
- rootExpandedHovered: ribbonButtonRootStyles(theme)
10408
+ rootChecked: ribbonButtonRootStyles(theme.palette.themePrimary, theme.palette.themePrimary),
10409
+ // there is a bug for Android where the press action is considered hover sometimes
10410
+ rootHovered: ribbonButtonRootStyles(theme.palette.neutralPrimary, theme.palette.themePrimary),
10411
+ rootCheckedHovered: ribbonButtonRootStyles(theme.palette.themePrimary, theme.palette.themePrimary),
10412
+ rootCheckedPressed: ribbonButtonRootStyles(theme.palette.themePrimary, theme.palette.themePrimary),
10413
+ rootPressed: ribbonButtonRootStyles(theme.palette.themePrimary, theme.palette.themePrimary),
10414
+ rootExpanded: ribbonButtonRootStyles(theme.palette.themePrimary, theme.palette.themePrimary),
10415
+ rootExpandedHovered: ribbonButtonRootStyles(theme.palette.themePrimary, theme.palette.themePrimary)
10176
10416
  };
10177
10417
  };
10178
10418
  const rootRibbonTableButtonStyle = (theme) => {
@@ -11158,7 +11398,6 @@ const RichTextEditor = React.forwardRef((props, ref) => {
11158
11398
  const editorDiv = React.useRef(null);
11159
11399
  const theme = useTheme();
11160
11400
  const [contextMenuProps, setContextMenuProps] = React.useState(null);
11161
- const tableCellSelectionLightThemeBackgroundColor = React.useRef(undefined);
11162
11401
  React.useImperativeHandle(ref, () => {
11163
11402
  return {
11164
11403
  focus() {
@@ -11199,19 +11438,15 @@ const RichTextEditor = React.forwardRef((props, ref) => {
11199
11438
  var _a;
11200
11439
  (_a = editor.current) === null || _a === void 0 ? void 0 : _a.setDarkModeState(isDarkThemedValue);
11201
11440
  }, [isDarkThemedValue]);
11202
- // remember light color to correctly set it in the dark theme
11203
- React.useEffect(() => {
11204
- var _a, _b, _c;
11205
- // focus to update selection color for table, otherwise the existing selection color for table won't be updated
11206
- (_a = editor.current) === null || _a === void 0 ? void 0 : _a.focus();
11207
- if (!isDarkThemedValue) {
11208
- tableCellSelectionLightThemeBackgroundColor.current =
11209
- (_c = (_b = lightTheme.palette) === null || _b === void 0 ? void 0 : _b.neutralLight) !== null && _c !== void 0 ? _c : theme.palette.neutralLight;
11210
- }
11211
- }, [theme.palette.neutralLight, isDarkThemedValue]);
11212
11441
  const placeholderPlugin = React.useMemo(() => {
11213
- return new PlaceholderPlugin('');
11214
- }, []);
11442
+ var _a;
11443
+ const textColor = (_a = theme.palette) === null || _a === void 0 ? void 0 : _a.neutralSecondary;
11444
+ return new PlaceholderPlugin('', textColor
11445
+ ? {
11446
+ textColor: textColor
11447
+ }
11448
+ : undefined);
11449
+ }, [theme]);
11215
11450
  React.useEffect(() => {
11216
11451
  if (placeholderText !== undefined) {
11217
11452
  placeholderPlugin.updatePlaceholder(placeholderText);
@@ -11260,13 +11495,6 @@ const RichTextEditor = React.forwardRef((props, ref) => {
11260
11495
  const onContextMenuDismiss = React.useCallback(() => {
11261
11496
  setContextMenuProps(null);
11262
11497
  }, []);
11263
- const getDarkColor = React.useCallback((lightColor, _baseLValue, colorType) => {
11264
- var _a, _b;
11265
- if (lightColor === tableCellSelectionLightThemeBackgroundColor.current && colorType === 'background') {
11266
- return (_b = (_a = darkTheme.palette) === null || _a === void 0 ? void 0 : _a.neutralLight) !== null && _b !== void 0 ? _b : theme.palette.neutralLight;
11267
- }
11268
- return lightColor;
11269
- }, [theme.palette.neutralLight]);
11270
11498
  const copyPastePlugin = React.useMemo(() => {
11271
11499
  return new CopyPastePlugin();
11272
11500
  }, []);
@@ -11306,7 +11534,7 @@ const RichTextEditor = React.forwardRef((props, ref) => {
11306
11534
  tableContextMenuPlugin
11307
11535
  ]);
11308
11536
  React.useEffect(() => {
11309
- var _a, _b;
11537
+ var _a;
11310
11538
  const initialModel = createEditorInitialModel(initialContent, contentModel);
11311
11539
  if (editorDiv.current) {
11312
11540
  editor.current = new roosterjsContentModelCore.Editor(editorDiv.current, {
@@ -11315,7 +11543,7 @@ const RichTextEditor = React.forwardRef((props, ref) => {
11315
11543
  doNotAdjustEditorColor: true,
11316
11544
  // TODO: confirm the color during inline images implementation
11317
11545
  imageSelectionBorderColor: 'blue',
11318
- tableCellSelectionBackgroundColor: ((_a = lightTheme.palette) === null || _a === void 0 ? void 0 : _a.neutralLight) && theme.palette.neutralLight,
11546
+ tableCellSelectionBackgroundColor: theme.palette.neutralLight,
11319
11547
  plugins: plugins,
11320
11548
  initialModel: initialModel,
11321
11549
  defaultModelToDomOptions: {
@@ -11324,12 +11552,11 @@ const RichTextEditor = React.forwardRef((props, ref) => {
11324
11552
  border: borderApplier,
11325
11553
  dataset: dataSetApplier
11326
11554
  }
11327
- },
11328
- getDarkColor: getDarkColor
11555
+ }
11329
11556
  });
11330
11557
  }
11331
11558
  if (autoFocus === 'sendBoxTextField') {
11332
- (_b = editor.current) === null || _b === void 0 ? void 0 : _b.focus();
11559
+ (_a = editor.current) === null || _a === void 0 ? void 0 : _a.focus();
11333
11560
  }
11334
11561
  return () => {
11335
11562
  if (editor.current) {
@@ -11339,11 +11566,11 @@ const RichTextEditor = React.forwardRef((props, ref) => {
11339
11566
  };
11340
11567
  // don't update the editor on deps update as everything is handled in separate hooks or plugins
11341
11568
  // eslint-disable-next-line react-hooks/exhaustive-deps
11342
- }, []);
11569
+ }, [theme, plugins]);
11343
11570
  return (React.createElement("div", { "data-testid": 'rich-text-editor-wrapper' },
11344
11571
  showRichTextEditorFormatting && toolbar,
11345
11572
  React.createElement("div", { className: richTextEditorWrapperStyle(theme, !showRichTextEditorFormatting) },
11346
- React.createElement("div", { id: "richTextSendBox", ref: editorDiv, tabIndex: 0, role: "textbox", "aria-multiline": "true", "data-testid": 'rooster-rich-text-editor', className: richTextEditorStyle(props.styles) })),
11573
+ React.createElement("div", { id: "richTextSendBox", ref: editorDiv, tabIndex: 0, role: "textbox", "aria-multiline": "true", "data-testid": 'rooster-rich-text-editor', className: richTextEditorStyle(props.styles), "aria-label": placeholderText })),
11347
11574
  contextMenuProps && React.createElement(react.ContextualMenu, Object.assign({}, contextMenuProps, { calloutProps: { isBeakVisible: false } }))));
11348
11575
  });
11349
11576
  const createEditorInitialModel = (initialContent, contentModel) => {
@@ -12053,7 +12280,7 @@ const useChatMessageCommonStyles = reactComponents.makeStyles({
12053
12280
  borderCollapse: 'collapse',
12054
12281
  tableLayout: 'auto',
12055
12282
  width: '100%',
12056
- '& tr': Object.assign(Object.assign({}, reactComponents.shorthands.border('1px', 'solid', `${reactComponents.tokens.colorNeutralStroke2}`)), { '& td': Object.assign(Object.assign({}, reactComponents.shorthands.border('1px', 'solid', `${reactComponents.tokens.colorNeutralStroke2}`)), { wordBreak: 'normal', paddingTop: '0px', paddingRight: '5px' }) })
12283
+ '& tr': Object.assign(Object.assign({}, reactComponents.shorthands.border('1px', 'solid', `${reactComponents.tokens.colorNeutralStrokeAccessible}`)), { '& td': Object.assign(Object.assign({}, reactComponents.shorthands.border('1px', 'solid', `${reactComponents.tokens.colorNeutralStrokeAccessible}`)), { wordBreak: 'normal', paddingTop: '0px', paddingRight: '5px' }) })
12057
12284
  }
12058
12285
  },
12059
12286
  failed: {
@@ -13699,7 +13926,7 @@ class _ErrorBoundary extends React.Component {
13699
13926
  // Copyright (c) Microsoft Corporation.
13700
13927
  // Licensed under the MIT License.
13701
13928
  /* @conditional-compile-remove(rich-text-editor) */
13702
- const ChatMessageComponentAsRichTextEditBox = React.lazy(() => Promise.resolve().then(function () { return require('./ChatMessageComponentAsRichTextEditBox-2XnQpAq_.js'); }));
13929
+ const ChatMessageComponentAsRichTextEditBox = React.lazy(() => Promise.resolve().then(function () { return require('./ChatMessageComponentAsRichTextEditBox-HBSSHZ2s.js'); }));
13703
13930
  /**
13704
13931
  * @private
13705
13932
  * Use this function to load RoosterJS dependencies early in the lifecycle.
@@ -13707,7 +13934,7 @@ const ChatMessageComponentAsRichTextEditBox = React.lazy(() => Promise.resolve()
13707
13934
  *
13708
13935
  * @conditional-compile-remove(rich-text-editor)
13709
13936
  */
13710
- const loadChatMessageComponentAsRichTextEditBox = () => Promise.resolve().then(function () { return require('./ChatMessageComponentAsRichTextEditBox-2XnQpAq_.js'); });
13937
+ const loadChatMessageComponentAsRichTextEditBox = () => Promise.resolve().then(function () { return require('./ChatMessageComponentAsRichTextEditBox-HBSSHZ2s.js'); });
13711
13938
  /**
13712
13939
  * @private
13713
13940
  */
@@ -15243,7 +15470,8 @@ const onRenderParticipantDefault = (participant, strings, myUserId, onRenderAvat
15243
15470
  /* @conditional-compile-remove(hide-attendee-name) */
15244
15471
  displayName = formatDisplayName();
15245
15472
  const callingPalette = theme.callingPalette;
15246
- const onRenderIcon = (callingParticipant === null || callingParticipant === void 0 ? void 0 : callingParticipant.isScreenSharing) || (callingParticipant === null || callingParticipant === void 0 ? void 0 : callingParticipant.isMuted) || (callingParticipant === null || callingParticipant === void 0 ? void 0 : callingParticipant.raisedHand)
15473
+ const isPinned = pinnedParticipants && (pinnedParticipants === null || pinnedParticipants === void 0 ? void 0 : pinnedParticipants.includes(participant.userId));
15474
+ const onRenderIcon = (callingParticipant === null || callingParticipant === void 0 ? void 0 : callingParticipant.isScreenSharing) || (callingParticipant === null || callingParticipant === void 0 ? void 0 : callingParticipant.isMuted) || (callingParticipant === null || callingParticipant === void 0 ? void 0 : callingParticipant.raisedHand) || isPinned
15247
15475
  ? () => {
15248
15476
  var _a;
15249
15477
  return (React.createElement(react.Stack, { horizontal: true, tokens: { childrenGap: '0.5rem' } },
@@ -15260,7 +15488,7 @@ const onRenderParticipantDefault = (participant, strings, myUserId, onRenderAvat
15260
15488
  callingParticipant.isScreenSharing && (React.createElement(react.Icon, { iconName: "ParticipantItemScreenShareStart", className: iconStyles$2, ariaLabel: strings.sharingIconLabel })),
15261
15489
  callingParticipant.isMuted && (React.createElement(react.Icon, { iconName: "ParticipantItemMicOff", className: iconStyles$2, ariaLabel: strings.mutedIconLabel })),
15262
15490
  callingParticipant.spotlight && React.createElement(react.Icon, { iconName: "ParticipantItemSpotlighted", className: iconStyles$2 }),
15263
- pinnedParticipants && (pinnedParticipants === null || pinnedParticipants === void 0 ? void 0 : pinnedParticipants.includes(participant.userId)) && (React.createElement(react.Icon, { iconName: "ParticipantItemPinned", className: iconStyles$2 }))));
15491
+ isPinned && React.createElement(react.Icon, { iconName: "ParticipantItemPinned", className: iconStyles$2 })));
15264
15492
  }
15265
15493
  : () => null;
15266
15494
  const onRenderAvatarWithRaiseHand = (callingParticipant === null || callingParticipant === void 0 ? void 0 : callingParticipant.raisedHand) && onRenderAvatar
@@ -15999,17 +16227,17 @@ const useVideoTileContextualMenuProps = (props) => {
15999
16227
  }
16000
16228
  }
16001
16229
  /* @conditional-compile-remove(soft-mute) */
16002
- if (onMuteParticipant) {
16230
+ if (onMuteParticipant && (strings === null || strings === void 0 ? void 0 : strings.muteParticipantMenuItemLabel)) {
16003
16231
  items.push({
16004
16232
  key: 'mute',
16005
- text: 'Mute',
16233
+ text: strings === null || strings === void 0 ? void 0 : strings.muteParticipantMenuItemLabel,
16006
16234
  iconProps: {
16007
16235
  iconName: 'ContextualMenuMicMutedIcon',
16008
16236
  styles: { root: { lineHeight: 0 } }
16009
16237
  },
16010
16238
  onClick: () => onMuteParticipant(participant.userId),
16011
16239
  'data-ui-id': 'video-tile-mute-participant',
16012
- ariaLabel: 'Mute',
16240
+ ariaLabel: strings === null || strings === void 0 ? void 0 : strings.muteParticipantMenuItemLabel,
16013
16241
  disabled: participant.isMuted
16014
16242
  });
16015
16243
  }
@@ -22453,7 +22681,7 @@ const _TroubleshootingGuideErrorBar = (props) => {
22453
22681
  // Without this behaviour, this `useEffect` block would cause a render loop.
22454
22682
  React.useEffect(() => setDismissedErrors(dropDismissalsForInactiveErrors(props.activeErrorMessages, dismissedErrors)), [props.activeErrorMessages, dismissedErrors]);
22455
22683
  const toShow = errorsToShow(props.activeErrorMessages, dismissedErrors);
22456
- return (React.createElement(react.Stack, { "data-ui-id": "error-bar-stack" }, toShow.map((error) => {
22684
+ return (React.createElement(react.Stack, { "data-ui-id": "notifications-stack" }, toShow.map((error) => {
22457
22685
  const devicePermissionErrorBar = (React.createElement("div", null,
22458
22686
  strings[error.type],
22459
22687
  ' ',
@@ -22622,7 +22850,7 @@ const _VideoBackgroundEffectsPicker = (props) => {
22622
22850
  React.createElement(react.Label, { className: react.mergeStyles((_c = props.styles) === null || _c === void 0 ? void 0 : _c.label) }, props.label),
22623
22851
  optionsByRow.map((options, rowIndex) => {
22624
22852
  var _a;
22625
- return (React.createElement(react.Stack, { className: react.mergeStyles((_a = props.styles) === null || _a === void 0 ? void 0 : _a.rowRoot), wrap: props.itemsPerRow === 'wrap', horizontal: true, key: rowIndex, tokens: { childrenGap: '0.5rem' }, "data-ui-id": "video-effects-picker-row" },
22853
+ return (React.createElement(react.Stack, { className: react.mergeStyles((_a = props.styles) === null || _a === void 0 ? void 0 : _a.rowRoot), wrap: props.itemsPerRow === 'wrap', horizontal: true, key: rowIndex, tokens: { childrenGap: '0.5rem' }, "data-ui-id": "video-effects-picker-row", horizontalAlign: "center" },
22626
22854
  options.map((option, i) => {
22627
22855
  if (i === 0 && rowIndex === 0) {
22628
22856
  return (React.createElement(_VideoEffectsItem, Object.assign({}, option, { itemKey: option.itemKey, key: option.itemKey, componentRef: props.componentRef })));
@@ -23386,18 +23614,28 @@ const Notifications = (props) => {
23386
23614
  const localeStrings = useLocale$1().strings.notifications;
23387
23615
  const strings = (_a = props.strings) !== null && _a !== void 0 ? _a : localeStrings;
23388
23616
  const maxNotificationsToShow = (_b = props.maxNotificationsToShow) !== null && _b !== void 0 ? _b : 2;
23389
- const [activeNotifications, setActiveNotifications] = React.useState(props.activeNotifications);
23617
+ const trackDismissedNotificationsInternally = !props.onDismissNotification;
23618
+ // Timestamp for when this comopnent is first mounted.
23619
+ // Never updated through the lifecycle of this component.
23620
+ const mountTimestamp = React.useRef(new Date(Date.now()));
23621
+ const [dismissedNotifications, setDismissedNotifications] = React.useState([]);
23622
+ // dropDismissalsForInactiveNotifications only returns a new object if `dismissedErrors` actually changes.
23623
+ // Without this behaviour, this `useEffect` block would cause a render loop.
23390
23624
  React.useEffect(() => {
23391
- setActiveNotifications(props.activeNotifications);
23392
- }, [props.activeNotifications]);
23625
+ trackDismissedNotificationsInternally &&
23626
+ setDismissedNotifications(dropDismissalsForInactiveNotifications(props.activeNotifications, dismissedNotifications));
23627
+ }, [props.activeNotifications, dismissedNotifications, trackDismissedNotificationsInternally]);
23628
+ const activeNotifications = notificationsToShow(props.activeNotifications, dismissedNotifications, props.ignorePremountNotifications ? mountTimestamp.current : undefined);
23393
23629
  return (React.createElement(react.Stack, { "data-ui-id": "notifications-stack", style: {
23394
23630
  width: 'fit-content'
23395
23631
  } }, activeNotifications.map((notification, index) => {
23396
23632
  if (index < maxNotificationsToShow) {
23397
23633
  return (React.createElement("div", { key: index, style: { marginBottom: `${index === maxNotificationsToShow - 1 ? 0 : '0.25rem'}` } },
23398
23634
  React.createElement(NotificationBar, { notificationBarStrings: strings ? strings[notification.type] : undefined, notificationBarIconProps: NotificationIconProps(notification.type), onClickPrimaryButton: () => { var _a; return (_a = notification.onClickPrimaryButton) === null || _a === void 0 ? void 0 : _a.call(notification); }, onClickSecondaryButton: () => { var _a; return (_a = notification.onClickSecondaryButton) === null || _a === void 0 ? void 0 : _a.call(notification); }, onDismiss: () => {
23399
- activeNotifications.splice(index, 1);
23400
- setActiveNotifications([...activeNotifications]);
23635
+ var _a;
23636
+ trackDismissedNotificationsInternally
23637
+ ? setDismissedNotifications(dismissNotification(dismissedNotifications, notification))
23638
+ : (_a = props.onDismissNotification) === null || _a === void 0 ? void 0 : _a.call(props, notification);
23401
23639
  notification.onDismiss && notification.onDismiss();
23402
23640
  }, showStackedEffect: index === maxNotificationsToShow - 1 && activeNotifications.length > maxNotificationsToShow, autoDismiss: notification.autoDismiss })));
23403
23641
  }
@@ -24402,7 +24640,8 @@ const createDefaultChatHandlers = memoizeOne((chatClient, chatThreadClient) => {
24402
24640
  options.attachments[0] &&
24403
24641
  !options.attachments[0].attachmentType) {
24404
24642
  const chatSDKOptions = {
24405
- metadata: Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.metadata), { fileSharingMetadata: JSON.stringify(options === null || options === void 0 ? void 0 : options.attachments) })
24643
+ metadata: Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.metadata), { fileSharingMetadata: JSON.stringify(options === null || options === void 0 ? void 0 : options.attachments) }),
24644
+ type: options.type
24406
24645
  };
24407
24646
  yield chatThreadClient.sendMessage(sendMessageRequest, chatSDKOptions);
24408
24647
  return;
@@ -27138,7 +27377,7 @@ const isChatError = (e) => {
27138
27377
  return 'target' in e && e['target'] !== undefined && 'innerError' in e && e['innerError'] !== undefined;
27139
27378
  };
27140
27379
 
27141
- var call$k={cameraLabel:"Camera",noCamerasLabel:"No cameras found",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",chatButtonLabel:"Chat",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkButtonActionedLabel:"Link copied",copyInviteLinkActionedAriaLabel:"Invite link copied",defaultPlaceHolder:"Select an option",dismissSidePaneButtonLabel:"Close",videoEffectsPaneTitle:"Effects",videoEffectsPaneBackgroundSelectionTitle:"Background",configurationPageVideoEffectsButtonLabel:"Effects",unableToStartVideoEffect:"Unable to apply video effect.",blurBackgroundEffectButtonLabel:"Blur",blurBackgroundTooltip:"Blur Background",removeBackgroundEffectButtonLabel:"None",removeBackgroundTooltip:"Remove Background",cameraOffBackgroundEffectWarningText:"Your camera is off. Turn on camera to see video effect.",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leavingCallTitle:"Leaving...",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby.",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",notInvitedToRoomDetails:"You are not able to join this room because you do not have an invite.",notInvitedToRoomTitle:"Not invited to room",peopleButtonLabel:"People",selectedPeopleButtonLabel:"People Button Selected",peoplePaneTitle:"People",peoplePaneMoreButtonAriaLabel:"More",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call {numberOfPeople}",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",removeMenuLabel:"Remove",startSpotlightMenuLabel:"Spotlight for everyone",addSpotlightMenuLabel:"Add spotlight",stopSpotlightMenuLabel:"Stop spotlighting",stopSpotlightOnSelfMenuLabel:"Exit spotlight",spotlightLimitReachedMenuTitle:"Spotlight limit reached",stopAllSpotlightMenuLabel:"Stop all spotlights",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",roomNotFoundDetails:"The room ID provided could not be found.",roomNotFoundTitle:"Room not found",roomNotValidDetails:"This room is not valid at this current time.",roomNotValidTitle:"Room not valid",inviteToRoomRemovedDetails:"Your invite to join this room was removed.",inviteToRoomRemovedTitle:"Invite to room removed",soundLabel:"Sound",noMicrophonesLabel:"No microphones found",noSpeakersLabel:"No speakers found",startCallButtonLabel:"Start call",openDialpadButtonLabel:"Dial phone number",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",moreButtonCallingLabel:"More",resumeCallButtonLabel:"Resume",resumingCallButtonLabel:"Resuming...",resumeCallButtonAriaLabel:"Resume call",resumingCallButtonAriaLabel:"Resume call",holdScreenLabel:"You're on hold",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number",outboundCallingNoticeString:"Calling...",participantJoinedNoticeString:"{displayName} joined",twoParticipantJoinedNoticeString:"{displayName1} and {displayName2} have joined",threeParticipantJoinedNoticeString:"{displayName1}, {displayName2} and {displayName3} have joined",participantLeftNoticeString:"{displayName} left",twoParticipantLeftNoticeString:"{displayName1} and {displayName2} have left",threeParticipantLeftNoticeString:"{displayName1}, {displayName2} and {displayName3} have left",unnamedParticipantString:"unnamed participant",manyUnnamedParticipantsJoined:"unnamed participant and {numOfParticipants} other participants joined",manyUnnamedParticipantsLeft:"unnamed participant and {numOfParticipants} other participants left",manyParticipantsJoined:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants joined",manyParticipantsLeft:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants left",liveCaptionsLabel:"Live captions",captionsSettingsLabel:"Caption settings",startCaptionsButtonOnLabel:"Turn on captions",startCaptionsButtonOffLabel:"Turn off captions",startCaptionsButtonTooltipOnContent:"Turn off captions",startCaptionsButtonTooltipOffContent:"Turn on captions",captionsSettingsModalTitle:"Captions Settings",captionsSettingsSpokenLanguageDropdownLabel:"Spoken language",captionsSettingsCaptionLanguageDropdownLabel:"Captions language",captionsSettingsSpokenLanguageDropdownInfoText:"Language that everyone on this call is speaking.",captionsSettingsCaptionLanguageDropdownInfoText:"Captions will appear in this langugage.",captionsSettingsConfirmButtonLabel:"Confirm",captionsSettingsCancelButtonLabel:"Cancel",captionsSettingsModalAriaLabel:"Captions Setting Modal",captionsSettingsCloseModalButtonAriaLabel:"Close Captions Setting",captionsBannerMoreButtonCallingLabel:"More",captionsBannerMoreButtonTooltip:"More options",dismissModalAriaLabel:"Local and remote picture and picture, press enter to return to call",callRejectedTitle:"The call could not be completed",callRejectedMoreDetails:"The person you are trying to reach is unavailable. Please try again later.",callTimeoutTitle:"The call could not be completed",callTimeoutDetails:"The person you are trying to reach is unavailable. Please try again later.",callTimeoutBotTitle:"The call could not be completed",callTimeoutBotDetails:"The service that you are trying to reach is unavailable. Please try again later.",dtmfDialerButtonLabel:"Dialpad",dtmfDialerButtonTooltipOn:"Show dialpad",dtmfDialerButtonTooltipOff:"Hide dialpad",dtmfDialerMoreButtonLabelOn:"Show dialpad",dtmfDialerMoreButtonLabelOff:"Hide dialpad",phoneCallMoreButtonLabel:"Phone Call",spokenLanguageStrings:{"ar-ae":"Arabic - U.A.E.","ar-sa":"Arabic - Saudi Arabia","da-dk":"Danish","de-de":"German - Germany","en-au":"English - Australia","en-ca":"English - Canada","en-gb":"English - United Kingdom","en-in":"English - India","en-nz":"English - New Zealand","en-us":"English - United States","es-es":"Spanish - Spain (Modern Sort)","es-mx":"Spanish - Mexico","fi-fi":"Finnish","fr-ca":"French - Canada","fr-fr":"French - France","hi-in":"Hindi","it-it":"Italian - Italy","ja-jp":"Japanese","ko-kr":"Korean","nb-no":"Norwegian (Bokmål)","nl-be":"Dutch - Belgium","nl-nl":"Dutch - Netherlands","pl-pl":"Polish","pt-br":"Portuguese - Brazil","ru-ru":"Russian","sv-se":"Swedish","zh-cn":"Chinese - People's Republic of China","zh-hk":"Chinese - Hong Kong SAR","cs-cz":"Czech","pt-pt":"Portuguese - Portugal","tr-tr":"Turkish","vi-vn":"Vietnamese","th-th":"Thai","he-il":"Hebrew","cy-gb":"Welsh","uk-ua":"Ukrainian","el-gr":"Greek","hu-hu":"Hungarian","ro-ro":"Romanian","sk-sk":"Slovak","zh-tw":"Chinese - Taiwan"},captionLanguageStrings:{ar:"Arabic",da:"Danish",de:"German",en:"English",es:"Spanish",fi:"Finnish","fr-ca":"French - Canada",fr:"French - France",hi:"Hindi",it:"Italian",ja:"Japanese",ko:"Korean",nb:"Norwegian (Bokmål)",nl:"Dutch",pl:"Polish",pt:"Portuguese - Brazil",ru:"Russian",sv:"Swedish","zh-Hans":"Chinese (Simplified)","zh-Hant":"Chinese (Traditional)",cs:"Czech","pt-pt":"Portuguese - Portugal",tr:"Turkish",vi:"Vietnamese",th:"Thai",he:"Hebrew",cy:"Welsh",uk:"Ukrainian",el:"Greek",hu:"Hungarian",ro:"Romanian",sk:"Slovak"},captionsBannerSpinnerText:"Starting captions...",transferPageTransferorText:"Transferring...",transferPageTransferTargetText:"Connecting...",transferPageUnknownTransferorDisplayName:"Unknown",transferPageUnknownTransferTargetDisplayName:"Unknown",transferPageNoticeString:"You are being transferred",participantCouldNotBeReachedTitle:"Target participant is currently not available",participantCouldNotBeReachedMoreDetails:"Please contact participant when they are available",permissionToReachTargetParticipantNotAllowedTitle:"Permission to reach target participant is not allowed",permissionToReachTargetParticipantNotAllowedMoreDetails:"Please check that the target participant is in the same tenant",unableToResolveTenantTitle:"Unable to resolve tenant id for the target participant",unableToResolveTenantMoreDetails:"Please check the participant id is entered correctly",participantIdIsMalformedTitle:"Participant id is not in the correct format",participantIdIsMalformedMoreDetails:"Please check that the participant id is in the correct format",moreButtonGalleryControlLabel:"View",moreButtonGalleryPositionToggleLabel:"Move gallery to top",moreButtonGallerySpeakerLayoutLabel:"Speaker",moreButtonGalleryFloatingLocalLayoutLabel:"Dynamic",moreButtonGalleryDefaultLayoutLabel:"Gallery view",moreButtonGalleryFocusedContentLayoutLabel:"Focus on content",moreButtonLargeGalleryDefaultLayoutLabel:"Large Gallery",capabilityChangedNotification:{turnVideoOn:{lostDueToMeetingOption:"Your camera has been disabled. You can no longer share video.",grantedDueToMeetingOption:"Your camera has been enabled. Turn it on if you'd like to share video."},unmuteMic:{lostDueToMeetingOption:"Your mic has been disabled. You can no longer unmute.",grantedDueToMeetingOption:"Your mic has been enabled. Unmute if you'd like to speak."},shareScreen:{lostDueToRoleChangeToAttendee:"Your role has been changed. Some actions, like sharing content, won't be available to you.",grantedDueToRoleChangeToPresenter:"You're a presenter. You can share content and facilitate the meeting."},hideAttendeeNames:{hideAttendeeNameAttendee:"Your name is hidden from other attendees. Organizers and presenters can see your real name.",hideAttendeeNamePresenter:"Attendee names are hidden. Only organizers and presenters can see names to protect attendee privacy."}},surveyTitle:"Help us improve",starSurveyHelperText:"How was the quality of the call?",starSurveyOneStarText:"The quality was bad.",starSurveyTwoStarText:"The quality was poor.",starSurveyThreeStarText:"The quality was good.",starSurveyFourStarText:"The quality was great.",starSurveyFiveStarText:"The quality was excellent.",surveyConfirmButtonLabel:"Send Feedback",starRatingAriaLabel:"Select {0} of {1} stars",surveySkipButtonLabel:"Skip",tagsSurveyQuestion:"What could have been better?",tagsSurveyTextFieldDefaultText:"Other, please specify",tagsSurveyHelperText:"Check any issues you experienced",endOfSurveyText:"Thank you for your feedback!",surveyIssues:{overallRating:{callCannotJoin:"I could not join call",callCannotInvite:"I could not invite others into the call",hadToRejoin:"I had to rejoin the call",callEndedUnexpectedly:"Call ended for me unexpectedly",otherIssues:"I was having other issues with the call"},audioRating:{noLocalAudio:"The other side could not hear any sound",noRemoteAudio:"I could not hear any sound",echo:"I heard echos on the call",audioNoise:"I heard noise on the call",lowVolume:"Volume was low",audioStoppedUnexpectedly:"Audio stopped unexpectedly",distortedSpeech:"Audio was distorted",audioInterruption:"Audio was interrupted",otherIssues:"I was having other audio issues in this call"},videoRating:{noVideoReceived:"I could not see any video",noVideoSent:"Others could not see me",lowQuality:"Video quality was low",freezes:"Video frozen",stoppedUnexpectedly:"Video stopped unexpectedly",darkVideoReceived:"I can only see dark screens when others turn on their camera",audioVideoOutOfSync:"Audio and Video was out of sync",otherIssues:"I was having other video issues in this call"},screenshareRating:{noContentLocal:"Other people could not see my screenshare",noContentRemote:"I could not see other people's screenshare",cannotPresent:"I could not present my screen",lowQuality:"Screen share quality was low",freezes:"Screen share frozen",stoppedUnexpectedly:"Screen share stopped unexpectedly",largeDelay:"Screen share has a large delay",otherIssues:"I was having other screen share issues in this call"}},surveyIssuesHeadingStrings:{overallRating:"Overall",audioRating:"Audio",videoRating:"Video",screenshareRating:"Presenting"},spotlightPrompt:{startSpotlightHeading:"Spotlight for everyone?",startSpotlightText:"You'll highlight this video for everyone in the meeting.",startSpotlightOnSelfText:"You'll highlight your video for everyone in the meeting.",startSpotlightConfirmButtonLabel:"Spotlight for everyone",startSpotlightCancelButtonLabel:"Cancel",stopSpotlightHeading:"Stop spotlighting this video?",stopSpotlightOnSelfHeading:"Exit spotlight?",stopAllSpotlightHeading:"Stop spotlighting all videos?",stopSpotlightText:"This video will no longer be highlighted for everyone in the meeting.",stopSpotlightOnSelfText:"Your video will no longer be highlighted for everyone in the meeting.",stopAllSpotlightText:"The videos will no longer be highlighted for everyone in the meeting.",stopSpotlightConfirmButtonLabel:"Stop spotlighting",stopSpotlightOnSelfConfirmButtonLabel:"Exit spotlight",stopSpotlightCancelButtonLabel:"Cancel"},exitSpotlightButtonLabel:"Exit spotlight",exitSpotlightButtonTooltip:"Exit spotlight",leaveConfirmButtonLabel:"Leave",endCallConfirmButtonLabel:"End call",hangUpCancelButtonLabel:"Cancel",leaveConfirmDialogTitle:"Leave the call?",leaveConfirmDialogContent:"Are you sure you want to leave the call?",endCallConfirmDialogTitle:"End the call?",endCallConfirmDialogContent:"You'll end the call for everyone.",invalidMeetingIdentifier:"Invalid meeting ID or passcode",pinParticipantMenuLabel:"Pin for me",pinParticipantLimitReachedMenuLabel:"Pin (limit reached)",unpinParticipantMenuLabel:"Unpin",pinParticipantMenuItemAriaLabel:"Pin",unpinParticipantMenuItemAriaLabel:"Unpin"};var chat$k={chatListHeader:"In this chat",uploadAttachment:"Upload Attachment"};var callWithChat$k={chatButtonLabel:"Chat",chatButtonNewMessageNotificationLabel:"New Message",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipClose:"Hide chat",chatButtonTooltipOpen:"Show chat",chatPaneTitle:"Chat",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkButtonActionedLabel:"Link copied",copyInviteLinkActionedAriaLabel:"Invite link copied",dismissSidePaneButtonLabel:"Close",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",moreDrawerCaptionsMenuTitle:"Live captions",moreDrawerSpokenLanguageMenuTitle:"Spoken language",moreDrawerCaptionLanguageMenuTitle:"Caption language",moreDrawerGalleryOptionsMenuTitle:"Gallery options",peopleButtonLabel:"People",selectedPeopleButtonLabel:"People Button Selected",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peopleButtonTooltipOpenAriaLabel:"People button, Show participants",peopleButtonTooltipCloseAriaLabel:"People button, Hide participants",peoplePaneSubTitle:"In this call",peoplePaneTitle:"People",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",openDialpadButtonLabel:"Dial phone number",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number"};var en_US = {call:call$k,chat:chat$k,callWithChat:callWithChat$k};
27380
+ var call$k={cameraLabel:"Camera",noCamerasLabel:"No cameras found",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",chatButtonLabel:"Chat",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkButtonActionedLabel:"Link copied",copyInviteLinkActionedAriaLabel:"Invite link copied",defaultPlaceHolder:"Select an option",dismissSidePaneButtonLabel:"Close",videoEffectsPaneTitle:"Effects",videoEffectsPaneBackgroundSelectionTitle:"Background",configurationPageVideoEffectsButtonLabel:"Effects",unableToStartVideoEffect:"Unable to apply video effect.",blurBackgroundEffectButtonLabel:"Blur",blurBackgroundTooltip:"Blur Background",removeBackgroundEffectButtonLabel:"None",removeBackgroundTooltip:"Remove Background",cameraOffBackgroundEffectWarningText:"Your camera is off. Turn on camera to see video effect.",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leavingCallTitle:"Leaving...",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby.",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",notInvitedToRoomDetails:"You are not able to join this room because you do not have an invite.",notInvitedToRoomTitle:"Not invited to room",peopleButtonLabel:"People",selectedPeopleButtonLabel:"People Button Selected",peoplePaneTitle:"People",peoplePaneMoreButtonAriaLabel:"More",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call {numberOfPeople}",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",removeMenuLabel:"Remove",startSpotlightMenuLabel:"Spotlight for everyone",addSpotlightMenuLabel:"Add spotlight",stopSpotlightMenuLabel:"Stop spotlighting",stopSpotlightOnSelfMenuLabel:"Exit spotlight",spotlightLimitReachedMenuTitle:"Spotlight limit reached",stopAllSpotlightMenuLabel:"Stop all spotlights",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",roomNotFoundDetails:"The room ID provided could not be found.",roomNotFoundTitle:"Room not found",roomNotValidDetails:"This room is not valid at this current time.",roomNotValidTitle:"Room not valid",inviteToRoomRemovedDetails:"Your invite to join this room was removed.",inviteToRoomRemovedTitle:"Invite to room removed",soundLabel:"Sound",noMicrophonesLabel:"No microphones found",noSpeakersLabel:"No speakers found",startCallButtonLabel:"Start call",openDialpadButtonLabel:"Dial phone number",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",moreButtonCallingLabel:"More",resumeCallButtonLabel:"Resume",resumingCallButtonLabel:"Resuming...",resumeCallButtonAriaLabel:"Resume call",resumingCallButtonAriaLabel:"Resume call",holdScreenLabel:"You're on hold",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number",outboundCallingNoticeString:"Calling...",participantJoinedNoticeString:"{displayName} joined",twoParticipantJoinedNoticeString:"{displayName1} and {displayName2} have joined",threeParticipantJoinedNoticeString:"{displayName1}, {displayName2} and {displayName3} have joined",participantLeftNoticeString:"{displayName} left",twoParticipantLeftNoticeString:"{displayName1} and {displayName2} have left",threeParticipantLeftNoticeString:"{displayName1}, {displayName2} and {displayName3} have left",unnamedParticipantString:"unnamed participant",manyUnnamedParticipantsJoined:"unnamed participant and {numOfParticipants} other participants joined",manyUnnamedParticipantsLeft:"unnamed participant and {numOfParticipants} other participants left",manyParticipantsJoined:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants joined",manyParticipantsLeft:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants left",liveCaptionsLabel:"Live captions",captionsSettingsLabel:"Caption settings",startCaptionsButtonOnLabel:"Turn on captions",startCaptionsButtonOffLabel:"Turn off captions",startCaptionsButtonTooltipOnContent:"Turn off captions",startCaptionsButtonTooltipOffContent:"Turn on captions",captionsSettingsModalTitle:"Captions Settings",captionsSettingsSpokenLanguageDropdownLabel:"Spoken language",captionsSettingsCaptionLanguageDropdownLabel:"Captions language",captionsSettingsSpokenLanguageDropdownInfoText:"Language that everyone on this call is speaking.",captionsSettingsCaptionLanguageDropdownInfoText:"Captions will appear in this langugage.",captionsSettingsConfirmButtonLabel:"Confirm",captionsSettingsCancelButtonLabel:"Cancel",captionsSettingsModalAriaLabel:"Captions Setting Modal",captionsSettingsCloseModalButtonAriaLabel:"Close Captions Setting",captionsBannerMoreButtonCallingLabel:"More",captionsBannerMoreButtonTooltip:"More options",dismissModalAriaLabel:"Local and remote picture and picture, press enter to return to call",callRejectedTitle:"The call could not be completed",callRejectedMoreDetails:"The person you are trying to reach is unavailable. Please try again later.",callTimeoutTitle:"The call could not be completed",callTimeoutDetails:"The person you are trying to reach is unavailable. Please try again later.",callTimeoutBotTitle:"The call could not be completed",callTimeoutBotDetails:"The service that you are trying to reach is unavailable. Please try again later.",dtmfDialerButtonLabel:"Dialpad",dtmfDialerButtonTooltipOn:"Show dialpad",dtmfDialerButtonTooltipOff:"Hide dialpad",dtmfDialerMoreButtonLabelOn:"Show dialpad",dtmfDialerMoreButtonLabelOff:"Hide dialpad",phoneCallMoreButtonLabel:"Phone Call",spokenLanguageStrings:{"ar-ae":"Arabic - U.A.E.","ar-sa":"Arabic - Saudi Arabia","da-dk":"Danish","de-de":"German - Germany","en-au":"English - Australia","en-ca":"English - Canada","en-gb":"English - United Kingdom","en-in":"English - India","en-nz":"English - New Zealand","en-us":"English - United States","es-es":"Spanish - Spain (Modern Sort)","es-mx":"Spanish - Mexico","fi-fi":"Finnish","fr-ca":"French - Canada","fr-fr":"French - France","hi-in":"Hindi","it-it":"Italian - Italy","ja-jp":"Japanese","ko-kr":"Korean","nb-no":"Norwegian (Bokmål)","nl-be":"Dutch - Belgium","nl-nl":"Dutch - Netherlands","pl-pl":"Polish","pt-br":"Portuguese - Brazil","ru-ru":"Russian","sv-se":"Swedish","zh-cn":"Chinese - People's Republic of China","zh-hk":"Chinese - Hong Kong SAR","cs-cz":"Czech","pt-pt":"Portuguese - Portugal","tr-tr":"Turkish","vi-vn":"Vietnamese","th-th":"Thai","he-il":"Hebrew","cy-gb":"Welsh","uk-ua":"Ukrainian","el-gr":"Greek","hu-hu":"Hungarian","ro-ro":"Romanian","sk-sk":"Slovak","zh-tw":"Chinese - Taiwan"},captionLanguageStrings:{ar:"Arabic",da:"Danish",de:"German",en:"English",es:"Spanish",fi:"Finnish","fr-ca":"French - Canada",fr:"French - France",hi:"Hindi",it:"Italian",ja:"Japanese",ko:"Korean",nb:"Norwegian (Bokmål)",nl:"Dutch",pl:"Polish",pt:"Portuguese - Brazil",ru:"Russian",sv:"Swedish","zh-Hans":"Chinese (Simplified)","zh-Hant":"Chinese (Traditional)",cs:"Czech","pt-pt":"Portuguese - Portugal",tr:"Turkish",vi:"Vietnamese",th:"Thai",he:"Hebrew",cy:"Welsh",uk:"Ukrainian",el:"Greek",hu:"Hungarian",ro:"Romanian",sk:"Slovak"},captionsBannerSpinnerText:"Starting captions...",transferPageTransferorText:"Transferring...",transferPageTransferTargetText:"Connecting...",transferPageUnknownTransferorDisplayName:"Unknown",transferPageUnknownTransferTargetDisplayName:"Unknown",transferPageNoticeString:"You are being transferred",participantCouldNotBeReachedTitle:"Target participant is currently not available",participantCouldNotBeReachedMoreDetails:"Please contact participant when they are available",permissionToReachTargetParticipantNotAllowedTitle:"Permission to reach target participant is not allowed",permissionToReachTargetParticipantNotAllowedMoreDetails:"Please check that the target participant is in the same tenant",unableToResolveTenantTitle:"Unable to resolve tenant id for the target participant",unableToResolveTenantMoreDetails:"Please check the participant id is entered correctly",participantIdIsMalformedTitle:"Participant id is not in the correct format",participantIdIsMalformedMoreDetails:"Please check that the participant id is in the correct format",moreButtonGalleryControlLabel:"View",moreButtonGalleryPositionToggleLabel:"Move gallery to top",moreButtonGallerySpeakerLayoutLabel:"Speaker",moreButtonGalleryFloatingLocalLayoutLabel:"Dynamic",moreButtonGalleryDefaultLayoutLabel:"Gallery view",moreButtonGalleryFocusedContentLayoutLabel:"Focus on content",moreButtonLargeGalleryDefaultLayoutLabel:"Large Gallery",capabilityChangedNotification:{turnVideoOn:{lostDueToMeetingOption:"Your camera has been disabled. You can no longer share video.",grantedDueToMeetingOption:"Your camera has been enabled. Turn it on if you'd like to share video."},unmuteMic:{lostDueToMeetingOption:"Your mic has been disabled. You can no longer unmute.",grantedDueToMeetingOption:"Your mic has been enabled. Unmute if you'd like to speak."},shareScreen:{lostDueToRoleChangeToAttendee:"Your role has been changed. Some actions, like sharing content, won't be available to you.",grantedDueToRoleChangeToPresenter:"You're a presenter. You can share content and facilitate the meeting."},hideAttendeeNames:{hideAttendeeNameAttendee:"Your name is hidden from other attendees. Organizers and presenters can see your real name.",hideAttendeeNamePresenter:"Attendee names are hidden. Only organizers and presenters can see names to protect attendee privacy."}},surveyTitle:"Help us improve",starSurveyHelperText:"How was the quality of the call?",starSurveyOneStarText:"The quality was bad.",starSurveyTwoStarText:"The quality was poor.",starSurveyThreeStarText:"The quality was good.",starSurveyFourStarText:"The quality was great.",starSurveyFiveStarText:"The quality was excellent.",surveyConfirmButtonLabel:"Send Feedback",starRatingAriaLabel:"Select {0} of {1} stars",surveySkipButtonLabel:"Skip",tagsSurveyQuestion:"What could have been better?",tagsSurveyTextFieldDefaultText:"Other, please specify",tagsSurveyHelperText:"Check any issues you experienced",endOfSurveyText:"Thank you for your feedback!",surveyIssues:{overallRating:{callCannotJoin:"I could not join call",callCannotInvite:"I could not invite others into the call",hadToRejoin:"I had to rejoin the call",callEndedUnexpectedly:"Call ended for me unexpectedly",otherIssues:"I was having other issues with the call"},audioRating:{noLocalAudio:"The other side could not hear any sound",noRemoteAudio:"I could not hear any sound",echo:"I heard echos on the call",audioNoise:"I heard noise on the call",lowVolume:"Volume was low",audioStoppedUnexpectedly:"Audio stopped unexpectedly",distortedSpeech:"Audio was distorted",audioInterruption:"Audio was interrupted",otherIssues:"I was having other audio issues in this call"},videoRating:{noVideoReceived:"I could not see any video",noVideoSent:"Others could not see me",lowQuality:"Video quality was low",freezes:"Video frozen",stoppedUnexpectedly:"Video stopped unexpectedly",darkVideoReceived:"I can only see dark screens when others turn on their camera",audioVideoOutOfSync:"Audio and Video was out of sync",otherIssues:"I was having other video issues in this call"},screenshareRating:{noContentLocal:"Other people could not see my screenshare",noContentRemote:"I could not see other people's screenshare",cannotPresent:"I could not present my screen",lowQuality:"Screen share quality was low",freezes:"Screen share frozen",stoppedUnexpectedly:"Screen share stopped unexpectedly",largeDelay:"Screen share has a large delay",otherIssues:"I was having other screen share issues in this call"}},surveyIssuesHeadingStrings:{overallRating:"Overall",audioRating:"Audio",videoRating:"Video",screenshareRating:"Presenting"},spotlightPrompt:{startSpotlightHeading:"Spotlight for everyone?",startSpotlightText:"You'll highlight this video for everyone in the meeting.",startSpotlightOnSelfText:"You'll highlight your video for everyone in the meeting.",startSpotlightConfirmButtonLabel:"Spotlight for everyone",startSpotlightCancelButtonLabel:"Cancel",stopSpotlightHeading:"Stop spotlighting this video?",stopSpotlightOnSelfHeading:"Exit spotlight?",stopAllSpotlightHeading:"Stop spotlighting all videos?",stopSpotlightText:"This video will no longer be highlighted for everyone in the meeting.",stopSpotlightOnSelfText:"Your video will no longer be highlighted for everyone in the meeting.",stopAllSpotlightText:"The videos will no longer be highlighted for everyone in the meeting.",stopSpotlightConfirmButtonLabel:"Stop spotlighting",stopSpotlightOnSelfConfirmButtonLabel:"Exit spotlight",stopSpotlightCancelButtonLabel:"Cancel"},exitSpotlightButtonLabel:"Exit spotlight",exitSpotlightButtonTooltip:"Exit spotlight",leaveConfirmButtonLabel:"Leave",endCallConfirmButtonLabel:"End call",hangUpCancelButtonLabel:"Cancel",leaveConfirmDialogTitle:"Leave the call?",leaveConfirmDialogContent:"Are you sure you want to leave the call?",endCallConfirmDialogTitle:"End the call?",endCallConfirmDialogContent:"You'll end the call for everyone.",invalidMeetingIdentifier:"Invalid meeting ID or passcode",pinParticipantMenuLabel:"Pin for me",pinParticipantLimitReachedMenuLabel:"Pin (limit reached)",unpinParticipantMenuLabel:"Unpin",pinParticipantMenuItemAriaLabel:"Pin",unpinParticipantMenuItemAriaLabel:"Unpin",muteAllMenuLabel:"Mute all",muteAllDialogTitle:"Mute everyone?",muteAllDialogContent:"This will mute everyone in the meeting but you.",muteAllConfirmButtonLabel:"Mute all",muteAllCancelButtonLabel:"Cancel"};var chat$k={chatListHeader:"In this chat",uploadAttachment:"Upload Attachment"};var callWithChat$k={chatButtonLabel:"Chat",chatButtonNewMessageNotificationLabel:"New Message",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipClose:"Hide chat",chatButtonTooltipOpen:"Show chat",chatPaneTitle:"Chat",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkButtonActionedLabel:"Link copied",copyInviteLinkActionedAriaLabel:"Invite link copied",dismissSidePaneButtonLabel:"Close",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",moreDrawerCaptionsMenuTitle:"Live captions",moreDrawerSpokenLanguageMenuTitle:"Spoken language",moreDrawerCaptionLanguageMenuTitle:"Caption language",moreDrawerGalleryOptionsMenuTitle:"Gallery options",peopleButtonLabel:"People",selectedPeopleButtonLabel:"People Button Selected",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peopleButtonTooltipOpenAriaLabel:"People button, Show participants",peopleButtonTooltipCloseAriaLabel:"People button, Hide participants",peoplePaneSubTitle:"In this call",peoplePaneTitle:"People",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",openDialpadButtonLabel:"Dial phone number",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number"};var en_US = {call:call$k,chat:chat$k,callWithChat:callWithChat$k};
27142
27381
 
27143
27382
  // Copyright (c) Microsoft Corporation.
27144
27383
  // Licensed under the MIT License.
@@ -28080,7 +28319,7 @@ const AttachmentDownloadErrorBar = (props) => {
28080
28319
  /**
28081
28320
  * Wrapper for RichTextSendBox component to allow us to use usePropsFor with richTextSendBox with lazy loading
28082
28321
  */
28083
- const RichTextSendBoxWrapper = React.lazy(() => Promise.resolve().then(function () { return require('./RichTextSendBoxWrapper-D-f-hDmN.js'); }).then((module) => ({ default: module.RichTextSendBoxWrapper })));
28322
+ const RichTextSendBoxWrapper = React.lazy(() => Promise.resolve().then(function () { return require('./RichTextSendBoxWrapper-DDN8Weyb.js'); }).then((module) => ({ default: module.RichTextSendBoxWrapper })));
28084
28323
  /**
28085
28324
  * @private
28086
28325
  * Use this function to load RoosterJS dependencies early in the lifecycle.
@@ -28088,7 +28327,7 @@ const RichTextSendBoxWrapper = React.lazy(() => Promise.resolve().then(function
28088
28327
  *
28089
28328
  /* @conditional-compile-remove(rich-text-editor-composite-support)
28090
28329
  */
28091
- const loadRichTextSendBox = () => Promise.resolve().then(function () { return require('./RichTextSendBoxWrapper-D-f-hDmN.js'); }).then((module) => ({ default: module.RichTextSendBoxWrapper }));
28330
+ const loadRichTextSendBox = () => Promise.resolve().then(function () { return require('./RichTextSendBoxWrapper-DDN8Weyb.js'); }).then((module) => ({ default: module.RichTextSendBoxWrapper }));
28092
28331
  /**
28093
28332
  * @private
28094
28333
  */
@@ -29317,6 +29556,10 @@ const createCompositeHandlers = memoizeOne((adapter, capabilities) => {
29317
29556
  /* @conditional-compile-remove(soft-mute) */
29318
29557
  onMuteParticipant: (userId) => __awaiter$k(void 0, void 0, void 0, function* () {
29319
29558
  yield adapter.muteParticipant(userId);
29559
+ }),
29560
+ /* @conditional-compile-remove(soft-mute) */
29561
+ onMuteAllRemoteParticipants: () => __awaiter$k(void 0, void 0, void 0, function* () {
29562
+ yield adapter.muteAllRemoteParticipants();
29320
29563
  })
29321
29564
  };
29322
29565
  });
@@ -32866,7 +33109,9 @@ const PEOPLE_SIDE_PANE_ID = 'people';
32866
33109
  const usePeoplePane = (props) => {
32867
33110
  const { updateSidePaneRenderer, inviteLink, onFetchAvatarPersonaData, onFetchParticipantMenuItems, setDrawerMenuItems, mobileView, peopleButtonRef, setParticipantActioned, spotlightedParticipantUserIds, onStartLocalSpotlight, onStopLocalSpotlight, onStartRemoteSpotlight, onStopRemoteSpotlight, onStopAllSpotlight, maxParticipantsToSpotlight,
32868
33111
  /* @conditional-compile-remove(soft-mute) */
32869
- onMuteParticipant, pinnedParticipants, onPinParticipant, onUnpinParticipant, disablePinMenuItem } = props;
33112
+ onMuteParticipant, pinnedParticipants, onPinParticipant, onUnpinParticipant, disablePinMenuItem,
33113
+ /* @conditional-compile-remove(soft-mute) */
33114
+ onMuteAllRemoteParticipants } = props;
32870
33115
  const closePane = React.useCallback(() => {
32871
33116
  var _a;
32872
33117
  updateSidePaneRenderer(undefined);
@@ -32875,6 +33120,25 @@ const usePeoplePane = (props) => {
32875
33120
  const localeStrings = useLocale().strings.call;
32876
33121
  /* @conditional-compile-remove(soft-mute) */
32877
33122
  const remoteParticipants = useSelector$1(getRemoteParticipants);
33123
+ /* @conditional-compile-remove(soft-mute) */
33124
+ const [showMuteAllPrompt, setShowMuteAllPrompt] = React.useState(false);
33125
+ /* @conditional-compile-remove(soft-mute) */
33126
+ const muteAllPromptLabels = React.useMemo(() => ({
33127
+ confirmButtonLabel: localeStrings.muteAllConfirmButtonLabel,
33128
+ heading: localeStrings.muteAllDialogTitle,
33129
+ text: localeStrings.muteAllDialogContent,
33130
+ cancelButtonLabel: localeStrings.muteAllCancelButtonLabel
33131
+ }), [
33132
+ localeStrings.muteAllConfirmButtonLabel,
33133
+ localeStrings.muteAllDialogTitle,
33134
+ localeStrings.muteAllDialogContent,
33135
+ localeStrings.muteAllCancelButtonLabel
33136
+ ]);
33137
+ /* @conditional-compile-remove(soft-mute) */
33138
+ const onMuteAllPromptConfirm = React.useCallback(() => {
33139
+ onMuteAllRemoteParticipants && onMuteAllRemoteParticipants();
33140
+ setShowMuteAllPrompt(false);
33141
+ }, [onMuteAllRemoteParticipants, setShowMuteAllPrompt]);
32878
33142
  const sidePaneHeaderMenuProps = React.useMemo(() => {
32879
33143
  const menuItems = [];
32880
33144
  if (onStopAllSpotlight && spotlightedParticipantUserIds && spotlightedParticipantUserIds.length > 0) {
@@ -32888,10 +33152,44 @@ const usePeoplePane = (props) => {
32888
33152
  ariaLabel: localeStrings.stopAllSpotlightMenuLabel
32889
33153
  });
32890
33154
  }
33155
+ /* @conditional-compile-remove(soft-mute) */
33156
+ if (onMuteAllRemoteParticipants && remoteParticipants) {
33157
+ let isAllMuted = true;
33158
+ if (remoteParticipants) {
33159
+ for (const participant of Object.values(remoteParticipants)) {
33160
+ if (!participant.isMuted) {
33161
+ isAllMuted = false;
33162
+ break;
33163
+ }
33164
+ }
33165
+ }
33166
+ menuItems.push({
33167
+ key: 'muteAllRemoteParticipants',
33168
+ text: localeStrings.muteAllMenuLabel,
33169
+ iconProps: {
33170
+ iconName: 'ContextualMenuMicMutedIcon',
33171
+ styles: { root: { lineHeight: 0 } }
33172
+ },
33173
+ onClick: () => {
33174
+ setShowMuteAllPrompt(true);
33175
+ },
33176
+ 'data-ui-id': 'participant-item-mute-all-remote-participants',
33177
+ ariaLabel: localeStrings.muteAllMenuLabel,
33178
+ disabled: isAllMuted
33179
+ });
33180
+ }
32891
33181
  return {
32892
33182
  items: menuItems
32893
33183
  };
32894
- }, [onStopAllSpotlight, spotlightedParticipantUserIds, localeStrings.stopAllSpotlightMenuLabel]);
33184
+ }, [
33185
+ onStopAllSpotlight,
33186
+ spotlightedParticipantUserIds,
33187
+ localeStrings.stopAllSpotlightMenuLabel,
33188
+ /* @conditional-compile-remove(soft-mute) */ localeStrings.muteAllMenuLabel,
33189
+ /* @conditional-compile-remove(soft-mute) */ onMuteAllRemoteParticipants,
33190
+ /* @conditional-compile-remove(soft-mute) */ remoteParticipants,
33191
+ /* @conditional-compile-remove(soft-mute) */ setShowMuteAllPrompt
33192
+ ]);
32895
33193
  const onRenderHeader = React.useCallback(() => (React.createElement(SidePaneHeader, { onClose: closePane, headingText: localeStrings.peoplePaneTitle, dismissSidePaneButtonAriaLabel: localeStrings.dismissSidePaneButtonLabel, mobileView: mobileView !== null && mobileView !== void 0 ? mobileView : false })), [mobileView, closePane, localeStrings]);
32896
33194
  const onFetchParticipantMenuItemsForCallComposite = React.useCallback((participantId, myUserId, defaultMenuItems) => {
32897
33195
  var _a;
@@ -33039,7 +33337,10 @@ const usePeoplePane = (props) => {
33039
33337
  localeStrings.pinParticipantMenuItemAriaLabel
33040
33338
  ]);
33041
33339
  const onRenderContent = React.useCallback(() => {
33042
- return (React.createElement(PeoplePaneContent, { inviteLink: inviteLink, onFetchAvatarPersonaData: onFetchAvatarPersonaData, onFetchParticipantMenuItems: onFetchParticipantMenuItemsForCallComposite, setDrawerMenuItems: setDrawerMenuItems, mobileView: mobileView, setParticipantActioned: setParticipantActioned, participantListHeadingMoreButtonProps: sidePaneHeaderMenuProps, pinnedParticipants: pinnedParticipants }));
33340
+ return (React.createElement(React.Fragment, null,
33341
+ /* @conditional-compile-remove(soft-mute) */
33342
+ React.createElement(Prompt, Object.assign({}, muteAllPromptLabels, { styles: { main: { minWidth: '22.5rem', padding: '1.5rem' } }, onConfirm: () => onMuteAllPromptConfirm(), isOpen: showMuteAllPrompt, onCancel: () => setShowMuteAllPrompt(false) })),
33343
+ React.createElement(PeoplePaneContent, { inviteLink: inviteLink, onFetchAvatarPersonaData: onFetchAvatarPersonaData, onFetchParticipantMenuItems: onFetchParticipantMenuItemsForCallComposite, setDrawerMenuItems: setDrawerMenuItems, mobileView: mobileView, setParticipantActioned: setParticipantActioned, participantListHeadingMoreButtonProps: sidePaneHeaderMenuProps, pinnedParticipants: pinnedParticipants })));
33043
33344
  }, [
33044
33345
  inviteLink,
33045
33346
  mobileView,
@@ -33048,7 +33349,11 @@ const usePeoplePane = (props) => {
33048
33349
  setDrawerMenuItems,
33049
33350
  setParticipantActioned,
33050
33351
  sidePaneHeaderMenuProps,
33051
- pinnedParticipants
33352
+ pinnedParticipants,
33353
+ /* @conditional-compile-remove(soft-mute) */ showMuteAllPrompt,
33354
+ /* @conditional-compile-remove(soft-mute) */ setShowMuteAllPrompt,
33355
+ /* @conditional-compile-remove(soft-mute) */ muteAllPromptLabels,
33356
+ /* @conditional-compile-remove(soft-mute) */ onMuteAllPromptConfirm
33052
33357
  ]);
33053
33358
  const sidePaneRenderer = React.useMemo(() => ({
33054
33359
  headerRenderer: onRenderHeader,
@@ -33387,13 +33692,40 @@ const VideoEffectsPaneContent = (props) => {
33387
33692
  return VideoEffectsPaneTrampoline(onDismissError, props.updateFocusHandle, activeVideoEffectError, selectableVideoEffects, onEffectChange);
33388
33693
  };
33389
33694
  const VideoEffectsPaneTrampoline = (onDismissError, updateFocusHandle, activeVideoEffectError, selectableVideoEffects, onEffectChange) => {
33695
+ var _a, _b;
33390
33696
  const selectedEffect = useSelector$1(activeVideoBackgroundEffectSelector);
33391
33697
  const isCameraOn = useSelector$1(localVideoSelector).isAvailable;
33392
33698
  const showWarning = !isCameraOn && selectedEffect !== 'none';
33393
33699
  const locale = useLocale();
33700
+ /* @conditional-compile-remove(notifications) */
33701
+ const videoEffectErrorStrings = {
33702
+ title: (_a = locale.strings.call.unableToStartVideoEffect) !== null && _a !== void 0 ? _a : '',
33703
+ closeButtonAriaLabel: locale.strings.call.close
33704
+ };
33705
+ /* @conditional-compile-remove(notifications) */
33706
+ const warningStrings = {
33707
+ title: (_b = locale.strings.call.cameraOffBackgroundEffectWarningText) !== null && _b !== void 0 ? _b : '',
33708
+ closeButtonAriaLabel: locale.strings.call.close
33709
+ };
33710
+ /* @conditional-compile-remove(notifications) */
33711
+ const [errorNotificationDismissed, setErrorNotificationDismissed] = React.useState(false);
33712
+ /* @conditional-compile-remove(notifications) */
33713
+ const [warningNotificationDismissed, setWarningNotificationDismissed] = React.useState(false);
33714
+ const videoEffectErrorTrampoline = () => {
33715
+ /* @conditional-compile-remove(notifications) */
33716
+ return (React.createElement(React.Fragment, null,
33717
+ activeVideoEffectError && isCameraOn && !errorNotificationDismissed && (React.createElement(NotificationBar, { onDismiss: () => {
33718
+ if (activeVideoEffectError) {
33719
+ onDismissError(activeVideoEffectError);
33720
+ }
33721
+ setErrorNotificationDismissed(true);
33722
+ }, notificationBarStrings: videoEffectErrorStrings })),
33723
+ showWarning && !warningNotificationDismissed && (React.createElement(NotificationBar, { onDismiss: () => {
33724
+ setWarningNotificationDismissed(true);
33725
+ }, notificationBarStrings: warningStrings }))));
33726
+ };
33394
33727
  return (React.createElement(react.Stack, { tokens: { childrenGap: '0.75rem' }, className: react.mergeStyles({ paddingLeft: '0.5rem' }) },
33395
- activeVideoEffectError && isCameraOn && (React.createElement(react.MessageBar, { messageBarType: react.MessageBarType.error, onDismiss: () => onDismissError(activeVideoEffectError) }, locale.strings.call.unableToStartVideoEffect)),
33396
- showWarning && (React.createElement(react.MessageBar, { messageBarType: react.MessageBarType.warning }, locale.strings.call.cameraOffBackgroundEffectWarningText)),
33728
+ videoEffectErrorTrampoline(),
33397
33729
  React.createElement(_VideoBackgroundEffectsPicker, { label: locale.strings.call.videoEffectsPaneBackgroundSelectionTitle, styles: backgroundPickerStyles, options: selectableVideoEffects !== null && selectableVideoEffects !== void 0 ? selectableVideoEffects : [], onChange: onEffectChange, selectedEffectKey: selectedEffect, componentRef: updateFocusHandle })));
33398
33730
  };
33399
33731
  const backgroundPickerStyles = {
@@ -33409,7 +33741,7 @@ const backgroundPickerStyles = {
33409
33741
  /** @private */
33410
33742
  const VIDEO_EFFECTS_SIDE_PANE_ID = 'videoeffects';
33411
33743
  /** @private */
33412
- const VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM = 17.5;
33744
+ const VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM = 22;
33413
33745
  /** @private */
33414
33746
  const useVideoEffectsPane = (updateSidePaneRenderer, mobileView, latestErrors, onDismissError, cameraButtonRef) => {
33415
33747
  const closePane = React.useCallback(() => {
@@ -34026,6 +34358,8 @@ const CallArrangement = (props) => {
34026
34358
  const locale = useLocale();
34027
34359
  const role = (_b = adapter.getState().call) === null || _b === void 0 ? void 0 : _b.role;
34028
34360
  const videoGalleryProps = usePropsFor$1(VideoGallery);
34361
+ /* @conditional-compile-remove(soft-mute) */
34362
+ const muteAllHandlers = useHandlers();
34029
34363
  const { setPromptProps, setIsPromptOpen, hideSpotlightButtons } = props;
34030
34364
  const { onStartLocalSpotlight, onStopLocalSpotlight, onStartRemoteSpotlight, onStopRemoteSpotlight,
34031
34365
  /* @conditional-compile-remove(soft-mute) */
@@ -34062,11 +34396,15 @@ const CallArrangement = (props) => {
34062
34396
  return {
34063
34397
  onMuteParticipant: ['Unknown', 'Organizer', 'Presenter', 'Co-organizer'].includes(role !== null && role !== void 0 ? role : '')
34064
34398
  ? onMuteParticipant
34399
+ : undefined,
34400
+ onMuteAllRemoteParticipants: ['Unknown', 'Organizer', 'Presenter', 'Co-organizer'].includes(role !== null && role !== void 0 ? role : '')
34401
+ ? muteAllHandlers.onMuteAllRemoteParticipants
34065
34402
  : undefined
34066
34403
  };
34067
34404
  }, [
34068
34405
  /* @conditional-compile-remove(soft-mute) */ onMuteParticipant,
34069
- /* @conditional-compile-remove(soft-mute) */ role
34406
+ /* @conditional-compile-remove(soft-mute) */ role,
34407
+ /* @conditional-compile-remove(soft-mute) */ muteAllHandlers.onMuteAllRemoteParticipants
34070
34408
  ]);
34071
34409
  const spotlightPeoplePaneProps = React.useMemo(() => {
34072
34410
  return {
@@ -34157,14 +34495,24 @@ const CallArrangement = (props) => {
34157
34495
  const drawerContainerStylesValue = React.useMemo(() => drawerContainerStyles(DRAWER_Z_INDEX), []);
34158
34496
  const canUnmute = role !== 'Consumer' ? true : false;
34159
34497
  let filteredLatestErrors = props.errorBarProps !== false ? props.latestErrors : [];
34498
+ /* @conditional-compile-remove(notifications) */
34499
+ let filteredLatestErrorNotifications = props.showErrorNotifications
34500
+ ? props.latestErrors
34501
+ : [];
34160
34502
  const isCameraOn = useSelector$1(localVideoSelector).isAvailable;
34161
34503
  // TODO: move this logic to the error bar selector once role is plumbed from the headless SDK
34162
- if (role === 'Consumer' && props.errorBarProps) {
34504
+ if (role === 'Consumer' &&
34505
+ (props.errorBarProps || /* @conditional-compile-remove(notifications) */ props.showErrorNotifications)) {
34163
34506
  filteredLatestErrors = filteredLatestErrors.filter((e) => e.type !== 'callCameraAccessDenied' && e.type !== 'callCameraAccessDeniedSafari');
34507
+ /* @conditional-compile-remove(notifications) */
34508
+ filteredLatestErrorNotifications = filteredLatestErrorNotifications.filter((e) => e.type !== 'callCameraAccessDenied' && e.type !== 'callCameraAccessDeniedSafari');
34164
34509
  }
34165
34510
  const isVideoPaneOpen = useIsParticularSidePaneOpen(VIDEO_EFFECTS_SIDE_PANE_ID);
34166
- if ((isVideoPaneOpen || !isCameraOn) && props.errorBarProps) {
34511
+ if ((isVideoPaneOpen || !isCameraOn) &&
34512
+ (props.errorBarProps || /* @conditional-compile-remove(notifications) */ props.showErrorNotifications)) {
34167
34513
  filteredLatestErrors = filteredLatestErrors.filter((e) => e.type !== 'unableToStartVideoEffect');
34514
+ /* @conditional-compile-remove(notifications) */
34515
+ filteredLatestErrorNotifications = filteredLatestErrorNotifications.filter((e) => e.type !== 'unableToStartVideoEffect');
34168
34516
  }
34169
34517
  /* @conditional-compile-remove(acs-close-captions) */
34170
34518
  const isTeamsCaptions = useSelector$1(getCaptionsKind) === 'TeamsCaptions';
@@ -34183,6 +34531,11 @@ const CallArrangement = (props) => {
34183
34531
  const filteredCapabilitesChangedNotifications = props.mobileView
34184
34532
  ? (_e = props.capabilitiesChangedNotificationBarProps) === null || _e === void 0 ? void 0 : _e.capabilitiesChangedNotifications.filter((notification) => notification.capabilityName !== 'shareScreen')
34185
34533
  : (_f = props.capabilitiesChangedNotificationBarProps) === null || _f === void 0 ? void 0 : _f.capabilitiesChangedNotifications;
34534
+ const errorNotificationTrampoline = () => {
34535
+ /* @conditional-compile-remove(notifications) */
34536
+ return (React.createElement(React.Fragment, null, props.showErrorNotifications && (React.createElement(react.Stack, { styles: bannerNotificationStyles, horizontalAlign: "center", verticalAlign: "center" },
34537
+ React.createElement(Notifications, { onDismissNotification: props.onDismissError, activeNotifications: filteredLatestErrorNotifications })))));
34538
+ };
34186
34539
  return (React.createElement("div", { ref: containerRef, className: react.mergeStyles(containerDivStyles), id: props.id },
34187
34540
  React.createElement(react.Stack, { verticalFill: true, horizontalAlign: "stretch", className: containerClassName, "data-ui-id": props.dataUiId },
34188
34541
  React.createElement(react.Stack, { reversed: true, horizontal: verticalControlBar, grow: true, styles: callArrangementContainerStyles(verticalControlBar) },
@@ -34211,8 +34564,7 @@ const CallArrangement = (props) => {
34211
34564
  React.createElement(react.Stack.Item, { styles: notificationsContainerStyles },
34212
34565
  React.createElement(react.Stack, { styles: bannerNotificationStyles },
34213
34566
  React.createElement(_ComplianceBanner, Object.assign({}, props.complianceBannerProps))),
34214
- props.errorBarProps !== false && (React.createElement(react.Stack, { styles: bannerNotificationStyles },
34215
- React.createElement(ErrorBar, Object.assign({}, props.errorBarProps, { onDismissError: props.onDismissError, activeErrorMessages: filteredLatestErrors })))),
34567
+ errorNotificationTrampoline(),
34216
34568
  props.capabilitiesChangedNotificationBarProps &&
34217
34569
  props.capabilitiesChangedNotificationBarProps.capabilitiesChangedNotifications.length > 0 && (React.createElement(react.Stack, { styles: bannerNotificationStyles },
34218
34570
  React.createElement(CapabilitiesChangedNotificationBar, Object.assign({}, props.capabilitiesChangedNotificationBarProps, { capabilitiesChangedNotifications: filteredCapabilitesChangedNotifications !== null && filteredCapabilitesChangedNotifications !== void 0 ? filteredCapabilitesChangedNotifications : [] })))),
@@ -34674,7 +35026,7 @@ const DtmfDialpadPage = (props) => {
34674
35026
  * @private
34675
35027
  */
34676
35028
  const CallPage = (props) => {
34677
- var _a;
35029
+ var _a, _b;
34678
35030
  const { callInvitationURL, onFetchAvatarPersonaData, onFetchParticipantMenuItems, options, mobileView, galleryLayout = 'floatingLocalVideo', onUserSetGalleryLayoutChange, userSetOverflowGalleryPosition = 'Responsive', onSetUserSetOverflowGalleryPosition, onCloseChatPane, pinnedParticipants, setPinnedParticipants, compositeAudioContext, disableAutoShowDtmfDialer = false } = props;
34679
35031
  // To use useProps to get these states, we need to create another file wrapping Call,
34680
35032
  // It seems unnecessary in this case, so we get the updated states using this approach.
@@ -34705,12 +35057,14 @@ const CallPage = (props) => {
34705
35057
  }
34706
35058
  };
34707
35059
  return (React.createElement(React.Fragment, null,
34708
- React.createElement(CallArrangement, { id: drawerMenuHostId, complianceBannerProps: Object.assign(Object.assign({}, complianceBannerProps), { strings }), errorBarProps: (options === null || options === void 0 ? void 0 : options.errorBar) !== false && errorBarProps, mutedNotificationProps: mutedNotificationProps, callControlProps: {
35060
+ React.createElement(CallArrangement, { id: drawerMenuHostId, complianceBannerProps: Object.assign(Object.assign({}, complianceBannerProps), { strings }), errorBarProps: (options === null || options === void 0 ? void 0 : options.errorBar) !== false && errorBarProps,
35061
+ /* @conditional-compile-remove(notifications) */
35062
+ showErrorNotifications: (_a = options === null || options === void 0 ? void 0 : options.errorBar) !== null && _a !== void 0 ? _a : true, mutedNotificationProps: mutedNotificationProps, callControlProps: {
34709
35063
  callInvitationURL: callInvitationURL,
34710
35064
  onFetchParticipantMenuItems: onFetchParticipantMenuItems,
34711
35065
  options: callControlOptions,
34712
35066
  increaseFlyoutItemSize: mobileView
34713
- }, onFetchAvatarPersonaData: onFetchAvatarPersonaData, mobileView: mobileView, modalLayerHostId: props.modalLayerHostId, onRenderGalleryContent: () => _isInCall(callStatus) ? (isNetworkHealthy(networkReconnectTileProps.networkReconnectValue) ? (onRenderGalleryContentTrampoline()) : (React.createElement(NetworkReconnectTile, Object.assign({}, networkReconnectTileProps)))) : (React.createElement(React.Fragment, null)), updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, onCloseChatPane: onCloseChatPane, dataUiId: 'call-page', latestErrors: props.latestErrors, onDismissError: props.onDismissError, onUserSetOverflowGalleryPositionChange: onSetUserSetOverflowGalleryPosition, onUserSetGalleryLayoutChange: onUserSetGalleryLayoutChange, userSetGalleryLayout: galleryLayout, capabilitiesChangedNotificationBarProps: props.capabilitiesChangedNotificationBarProps, onSetDialpadPage: () => setDtmfDialerPresent(!dtmfDialerPresent), dtmfDialerPresent: dtmfDialerPresent, setIsPromptOpen: setIsPromptOpen, setPromptProps: setPromptProps, hideSpotlightButtons: (_a = options === null || options === void 0 ? void 0 : options.spotlight) === null || _a === void 0 ? void 0 : _a.hideSpotlightButtons, pinnedParticipants: pinnedParticipants, setPinnedParticipants: setPinnedParticipants }),
35067
+ }, onFetchAvatarPersonaData: onFetchAvatarPersonaData, mobileView: mobileView, modalLayerHostId: props.modalLayerHostId, onRenderGalleryContent: () => _isInCall(callStatus) ? (isNetworkHealthy(networkReconnectTileProps.networkReconnectValue) ? (onRenderGalleryContentTrampoline()) : (React.createElement(NetworkReconnectTile, Object.assign({}, networkReconnectTileProps)))) : (React.createElement(React.Fragment, null)), updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, onCloseChatPane: onCloseChatPane, dataUiId: 'call-page', latestErrors: props.latestErrors, onDismissError: props.onDismissError, onUserSetOverflowGalleryPositionChange: onSetUserSetOverflowGalleryPosition, onUserSetGalleryLayoutChange: onUserSetGalleryLayoutChange, userSetGalleryLayout: galleryLayout, capabilitiesChangedNotificationBarProps: props.capabilitiesChangedNotificationBarProps, onSetDialpadPage: () => setDtmfDialerPresent(!dtmfDialerPresent), dtmfDialerPresent: dtmfDialerPresent, setIsPromptOpen: setIsPromptOpen, setPromptProps: setPromptProps, hideSpotlightButtons: (_b = options === null || options === void 0 ? void 0 : options.spotlight) === null || _b === void 0 ? void 0 : _b.hideSpotlightButtons, pinnedParticipants: pinnedParticipants, setPinnedParticipants: setPinnedParticipants }),
34714
35068
  React.createElement(Prompt, Object.assign({ isOpen: isPromptOpen, onDismiss: () => setIsPromptOpen(false) }, promptProps))));
34715
35069
  };
34716
35070
  /**
@@ -36104,7 +36458,7 @@ const LobbyTile = (props) => {
36104
36458
  * @private
36105
36459
  */
36106
36460
  const LobbyPage = (props) => {
36107
- var _a, _b, _c, _d;
36461
+ var _a, _b, _c, _d, _e, _f;
36108
36462
  const errorBarProps = usePropsFor$1(ErrorBar);
36109
36463
  const lobbyProps = useSelector$1(lobbySelector);
36110
36464
  const strings = useLocale().strings.call;
@@ -36116,7 +36470,9 @@ const LobbyPage = (props) => {
36116
36470
  ? reduceCallControlsForMobile((_b = props.options) === null || _b === void 0 ? void 0 : _b.callControls)
36117
36471
  : (_c = props.options) === null || _c === void 0 ? void 0 : _c.callControls;
36118
36472
  callControlOptions = disableCallControls(callControlOptions, ['screenShareButton', 'participantsButton']);
36119
- return (React.createElement(CallArrangement, { complianceBannerProps: { strings }, errorBarProps: ((_d = props.options) === null || _d === void 0 ? void 0 : _d.errorBar) !== false && errorBarProps, callControlProps: {
36473
+ return (React.createElement(CallArrangement, { complianceBannerProps: { strings }, errorBarProps: ((_d = props.options) === null || _d === void 0 ? void 0 : _d.errorBar) !== false && errorBarProps,
36474
+ /* @conditional-compile-remove(notifications) */
36475
+ showErrorNotifications: (_f = (_e = props.options) === null || _e === void 0 ? void 0 : _e.errorBar) !== null && _f !== void 0 ? _f : true, callControlProps: {
36120
36476
  options: callControlOptions,
36121
36477
  increaseFlyoutItemSize: props.mobileView
36122
36478
  }, mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, onRenderGalleryContent: () => (React.createElement(LobbyTile, Object.assign({}, lobbyProps, { showLocalVideoCameraCycleButton: props.mobileView, overlayProps: overlayProps(strings, inLobby, Object.values(participants)) }))), dataUiId: 'lobby-page', updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, latestErrors: props.latestErrors, onDismissError: props.onDismissError }));
@@ -36228,7 +36584,7 @@ const statusTextStyles = { textAlign: 'center', fontSize: '1rem' };
36228
36584
  * @private
36229
36585
  */
36230
36586
  const TransferPage = (props) => {
36231
- var _a, _b, _c, _d, _e;
36587
+ var _a, _b, _c, _d, _e, _f, _g;
36232
36588
  const errorBarProps = usePropsFor$1(ErrorBar);
36233
36589
  const strings = useLocale().strings.call;
36234
36590
  const remoteParticipants = useSelector$1(getRemoteParticipants);
@@ -36262,7 +36618,9 @@ const TransferPage = (props) => {
36262
36618
  React.createElement(Announcer$1, { announcementString: announcerString, ariaLive: "polite" }),
36263
36619
  React.createElement(CallArrangement, { complianceBannerProps: { strings },
36264
36620
  // Ignore errors from before current call. This avoids old errors from showing up when a user re-joins a call.
36265
- errorBarProps: ((_e = props.options) === null || _e === void 0 ? void 0 : _e.errorBar) !== false && errorBarProps, callControlProps: {
36621
+ errorBarProps: ((_e = props.options) === null || _e === void 0 ? void 0 : _e.errorBar) !== false && errorBarProps,
36622
+ /* @conditional-compile-remove(notifications) */
36623
+ showErrorNotifications: (_g = (_f = props.options) === null || _f === void 0 ? void 0 : _f.errorBar) !== null && _g !== void 0 ? _g : true, callControlProps: {
36266
36624
  options: callControlOptions,
36267
36625
  increaseFlyoutItemSize: props.mobileView
36268
36626
  }, mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, onRenderGalleryContent: () => (React.createElement(TransferTile, { userId: transferTileParticipant ? toFlatCommunicationIdentifier(transferTileParticipant === null || transferTileParticipant === void 0 ? void 0 : transferTileParticipant.identifier) : undefined, displayName: transferParticipantDisplayName, initialsName: transferParticipantDisplayName, statusText: pageSubject === 'transferTarget'
@@ -36470,7 +36828,7 @@ const stringsTrampoline = (locale) => {
36470
36828
  * @beta
36471
36829
  */
36472
36830
  const HoldPage = (props) => {
36473
- var _a, _b, _c;
36831
+ var _a, _b, _c, _d, _e;
36474
36832
  const errorBarProps = usePropsFor$1(ErrorBar);
36475
36833
  const strings = useLocale().strings.call;
36476
36834
  let callControlOptions = props.mobileView
@@ -36485,7 +36843,9 @@ const HoldPage = (props) => {
36485
36843
  /* @conditional-compile-remove(one-to-n-calling) */
36486
36844
  'holdButton'
36487
36845
  ]);
36488
- return (React.createElement(CallArrangement, { complianceBannerProps: { strings }, errorBarProps: ((_c = props.options) === null || _c === void 0 ? void 0 : _c.errorBar) !== false && errorBarProps, callControlProps: {
36846
+ return (React.createElement(CallArrangement, { complianceBannerProps: { strings }, errorBarProps: ((_c = props.options) === null || _c === void 0 ? void 0 : _c.errorBar) !== false && errorBarProps,
36847
+ /* @conditional-compile-remove(notifications) */
36848
+ showErrorNotifications: (_e = (_d = props.options) === null || _d === void 0 ? void 0 : _d.errorBar) !== null && _e !== void 0 ? _e : true, callControlProps: {
36489
36849
  options: callControlOptions,
36490
36850
  increaseFlyoutItemSize: props.mobileView
36491
36851
  }, mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, onRenderGalleryContent: () => React.createElement(HoldPane, null), dataUiId: 'hold-page', updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, latestErrors: props.latestErrors, onDismissError: props.onDismissError }));
@@ -36981,14 +37341,24 @@ const MainScreen = (props) => {
36981
37341
  // This works by tracking the most recent timestamp of any active error type.
36982
37342
  // And then tracking when that error type was last dismissed.
36983
37343
  const activeErrors = usePropsFor$1(ErrorBar).activeErrorMessages;
37344
+ /* @conditional-compile-remove(notifications) */
37345
+ const activeInCallErrors = useAdaptedSelector(errorNotificationsSelector).activeErrorMessages;
36984
37346
  const [trackedErrors, setTrackedErrors] = React.useState({});
37347
+ /* @conditional-compile-remove(notifications) */
37348
+ const [trackedInCallErrors, setTrackedInCallErrors] = React.useState({});
36985
37349
  React.useEffect(() => {
36986
37350
  setTrackedErrors((prev) => updateTrackedErrorsWithActiveErrors(prev, activeErrors));
36987
- }, [activeErrors]);
37351
+ /* @conditional-compile-remove(notifications) */
37352
+ setTrackedInCallErrors((prev) => updateTrackedErrorsWithActiveErrors(prev, activeInCallErrors));
37353
+ }, [activeErrors, /* @conditional-compile-remove(notifications) */ activeInCallErrors]);
36988
37354
  const onDismissError = React.useCallback((error) => {
36989
37355
  setTrackedErrors((prev) => trackErrorAsDismissed(error.type, prev));
37356
+ /* @conditional-compile-remove(notifications) */
37357
+ setTrackedInCallErrors((prev) => trackErrorAsDismissed(error.type, prev));
36990
37358
  }, []);
36991
37359
  const latestErrors = React.useMemo(() => filterLatestErrors(activeErrors, trackedErrors), [activeErrors, trackedErrors]);
37360
+ /* @conditional-compile-remove(notifications) */
37361
+ const latestInCallErrors = React.useMemo(() => filterLatestErrors(activeInCallErrors, trackedInCallErrors), [activeInCallErrors, trackedInCallErrors]);
36992
37362
  const callees = useSelector$1(getTargetCallees);
36993
37363
  const locale = useLocale();
36994
37364
  const palette = useTheme().palette;
@@ -36997,6 +37367,10 @@ const MainScreen = (props) => {
36997
37367
  const leavePageStyle = React.useMemo(() => leavingPageStyle(palette), [palette]);
36998
37368
  let pageElement;
36999
37369
  const [pinnedParticipants, setPinnedParticipants] = React.useState([]);
37370
+ const getLatestErrorsTrampoline = () => {
37371
+ /* @conditional-compile-remove(notifications) */
37372
+ return latestInCallErrors;
37373
+ };
37000
37374
  switch (page) {
37001
37375
  case 'configuration':
37002
37376
  pageElement = (React.createElement(ConfigurationPage, { mobileView: props.mobileView, startCallHandler: () => {
@@ -37047,17 +37421,17 @@ const MainScreen = (props) => {
37047
37421
  break;
37048
37422
  }
37049
37423
  case 'lobby':
37050
- pageElement = (React.createElement(LobbyPage, { mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, options: props.options, updateSidePaneRenderer: setSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, latestErrors: latestErrors, onDismissError: onDismissError, capabilitiesChangedNotificationBarProps: capabilitiesChangedNotificationBarProps }));
37424
+ pageElement = (React.createElement(LobbyPage, { mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, options: props.options, updateSidePaneRenderer: setSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, latestErrors: getLatestErrorsTrampoline(), onDismissError: onDismissError, capabilitiesChangedNotificationBarProps: capabilitiesChangedNotificationBarProps }));
37051
37425
  break;
37052
37426
  case 'transferring':
37053
- pageElement = (React.createElement(TransferPage, { mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, options: props.options, updateSidePaneRenderer: setSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, onFetchAvatarPersonaData: onFetchAvatarPersonaData, latestErrors: latestErrors, onDismissError: onDismissError, capabilitiesChangedNotificationBarProps: capabilitiesChangedNotificationBarProps }));
37427
+ pageElement = (React.createElement(TransferPage, { mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, options: props.options, updateSidePaneRenderer: setSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, onFetchAvatarPersonaData: onFetchAvatarPersonaData, latestErrors: getLatestErrorsTrampoline(), onDismissError: onDismissError, capabilitiesChangedNotificationBarProps: capabilitiesChangedNotificationBarProps }));
37054
37428
  break;
37055
37429
  case 'call':
37056
- pageElement = (React.createElement(CallPage, { callInvitationURL: callInvitationUrl, onFetchAvatarPersonaData: onFetchAvatarPersonaData, onFetchParticipantMenuItems: onFetchParticipantMenuItems, mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, options: props.options, updateSidePaneRenderer: setSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, onCloseChatPane: props.onCloseChatPane, latestErrors: latestErrors, onDismissError: onDismissError, galleryLayout: userSetGalleryLayout, onUserSetGalleryLayoutChange: setUserSetGalleryLayout, onSetUserSetOverflowGalleryPosition: setUserSetOverflowGalleryPosition, userSetOverflowGalleryPosition: userSetOverflowGalleryPosition, capabilitiesChangedNotificationBarProps: capabilitiesChangedNotificationBarProps, pinnedParticipants: pinnedParticipants, setPinnedParticipants: setPinnedParticipants, compositeAudioContext: compositeAudioContext, disableAutoShowDtmfDialer: (_q = props.options) === null || _q === void 0 ? void 0 : _q.disableAutoShowDtmfDialer }));
37430
+ pageElement = (React.createElement(CallPage, { callInvitationURL: callInvitationUrl, onFetchAvatarPersonaData: onFetchAvatarPersonaData, onFetchParticipantMenuItems: onFetchParticipantMenuItems, mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, options: props.options, updateSidePaneRenderer: setSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, onCloseChatPane: props.onCloseChatPane, latestErrors: getLatestErrorsTrampoline(), onDismissError: onDismissError, galleryLayout: userSetGalleryLayout, onUserSetGalleryLayoutChange: setUserSetGalleryLayout, onSetUserSetOverflowGalleryPosition: setUserSetOverflowGalleryPosition, userSetOverflowGalleryPosition: userSetOverflowGalleryPosition, capabilitiesChangedNotificationBarProps: capabilitiesChangedNotificationBarProps, pinnedParticipants: pinnedParticipants, setPinnedParticipants: setPinnedParticipants, compositeAudioContext: compositeAudioContext, disableAutoShowDtmfDialer: (_q = props.options) === null || _q === void 0 ? void 0 : _q.disableAutoShowDtmfDialer }));
37057
37431
  break;
37058
37432
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
37059
37433
  case 'hold':
37060
- pageElement = (React.createElement(React.Fragment, null, React.createElement(HoldPage, { mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, options: props.options, updateSidePaneRenderer: setSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, latestErrors: latestErrors, onDismissError: onDismissError, capabilitiesChangedNotificationBarProps: capabilitiesChangedNotificationBarProps })));
37434
+ pageElement = (React.createElement(React.Fragment, null, React.createElement(HoldPage, { mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, options: props.options, updateSidePaneRenderer: setSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, latestErrors: getLatestErrorsTrampoline(), onDismissError: onDismissError, capabilitiesChangedNotificationBarProps: capabilitiesChangedNotificationBarProps })));
37061
37435
  break;
37062
37436
  }
37063
37437
  useEndedCallConsoleErrors(endedCall);
@@ -37687,6 +38061,8 @@ class AzureCommunicationCallAdapter {
37687
38061
  this.stopAllSpotlight.bind(this);
37688
38062
  /* @conditional-compile-remove(soft-mute) */
37689
38063
  this.muteParticipant.bind(this);
38064
+ /* @conditional-compile-remove(soft-mute) */
38065
+ this.muteAllRemoteParticipants.bind(this);
37690
38066
  }
37691
38067
  dispose() {
37692
38068
  this.resetDiagnosticsForwarder();
@@ -38149,6 +38525,12 @@ class AzureCommunicationCallAdapter {
38149
38525
  this.handlers.onMuteParticipant(userId);
38150
38526
  });
38151
38527
  }
38528
+ /* @conditional-compile-remove(soft-mute) */
38529
+ muteAllRemoteParticipants() {
38530
+ return __awaiter$5(this, void 0, void 0, function* () {
38531
+ this.handlers.onMuteAllRemoteParticipants();
38532
+ });
38533
+ }
38152
38534
  startSpotlight(userIds) {
38153
38535
  return __awaiter$5(this, void 0, void 0, function* () {
38154
38536
  this.handlers.onStartSpotlight(userIds);
@@ -38966,6 +39348,12 @@ class CallWithChatBackedCallAdapter {
38966
39348
  return this.callWithChatAdapter.muteParticipant(userId);
38967
39349
  });
38968
39350
  }
39351
+ /* @conditional-compile-remove(soft-mute) */
39352
+ muteAllRemoteParticipants() {
39353
+ return __awaiter$4(this, void 0, void 0, function* () {
39354
+ return this.callWithChatAdapter.muteAllRemoteParticipants();
39355
+ });
39356
+ }
38969
39357
  }
38970
39358
  function callAdapterStateFromCallWithChatAdapterState(callWithChatAdapterState) {
38971
39359
  return {
@@ -40040,6 +40428,12 @@ class AzureCommunicationCallWithChatAdapter {
40040
40428
  return this.callAdapter.muteParticipant(userId);
40041
40429
  });
40042
40430
  }
40431
+ /* @conditional-compile-remove(soft-mute) */
40432
+ muteAllRemoteParticipants() {
40433
+ return __awaiter$2(this, void 0, void 0, function* () {
40434
+ return this.callAdapter.muteAllRemoteParticipants();
40435
+ });
40436
+ }
40043
40437
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
40044
40438
  on(event, listener) {
40045
40439
  switch (event) {
@@ -41103,4 +41497,4 @@ exports.useTeamsCall = useTeamsCall;
41103
41497
  exports.useTeamsCallAdapter = useTeamsCallAdapter;
41104
41498
  exports.useTeamsCallAgent = useTeamsCallAgent;
41105
41499
  exports.useTheme = useTheme;
41106
- //# sourceMappingURL=index-DaC5GeKa.js.map
41500
+ //# sourceMappingURL=index-CAm6Qb1t.js.map