@azure/communication-react 1.2.3-alpha-202206140015.0 → 1.2.3-alpha-202206170013.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/dist/communication-react.d.ts +50 -4
  2. package/dist/dist-cjs/communication-react/index.js +198 -103
  3. package/dist/dist-cjs/communication-react/index.js.map +1 -1
  4. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  5. package/dist/dist-esm/calling-stateful-client/src/CallAgentDeclarative.d.ts +17 -1
  6. package/dist/dist-esm/calling-stateful-client/src/CallAgentDeclarative.d.ts.map +1 -1
  7. package/dist/dist-esm/calling-stateful-client/src/CallAgentDeclarative.js +22 -5
  8. package/dist/dist-esm/calling-stateful-client/src/CallAgentDeclarative.js.map +1 -1
  9. package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts +1 -1
  10. package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts.map +1 -1
  11. package/dist/dist-esm/calling-stateful-client/src/IncomingCallDeclarative.d.ts +22 -0
  12. package/dist/dist-esm/calling-stateful-client/src/IncomingCallDeclarative.d.ts.map +1 -0
  13. package/dist/dist-esm/calling-stateful-client/src/IncomingCallDeclarative.js +49 -0
  14. package/dist/dist-esm/calling-stateful-client/src/IncomingCallDeclarative.js.map +1 -0
  15. package/dist/dist-esm/calling-stateful-client/src/StatefulCallClient.d.ts +13 -0
  16. package/dist/dist-esm/calling-stateful-client/src/StatefulCallClient.d.ts.map +1 -1
  17. package/dist/dist-esm/calling-stateful-client/src/StatefulCallClient.js.map +1 -1
  18. package/dist/dist-esm/calling-stateful-client/src/index.d.ts +2 -0
  19. package/dist/dist-esm/calling-stateful-client/src/index.d.ts.map +1 -1
  20. package/dist/dist-esm/communication-react/src/index.d.ts +1 -0
  21. package/dist/dist-esm/communication-react/src/index.d.ts.map +1 -1
  22. package/dist/dist-esm/communication-react/src/index.js.map +1 -1
  23. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageActionsFlyout.d.ts.map +1 -1
  24. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageActionsFlyout.js +1 -0
  25. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageActionsFlyout.js.map +1 -1
  26. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.d.ts +6 -1
  27. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.d.ts.map +1 -1
  28. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.js +13 -3
  29. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.js.map +1 -1
  30. package/dist/dist-esm/react-components/src/components/MessageThread.d.ts.map +1 -1
  31. package/dist/dist-esm/react-components/src/components/MessageThread.js +2 -1
  32. package/dist/dist-esm/react-components/src/components/MessageThread.js.map +1 -1
  33. package/dist/dist-esm/react-components/src/components/ParticipantItem.d.ts +2 -0
  34. package/dist/dist-esm/react-components/src/components/ParticipantItem.d.ts.map +1 -1
  35. package/dist/dist-esm/react-components/src/components/ParticipantItem.js +3 -2
  36. package/dist/dist-esm/react-components/src/components/ParticipantItem.js.map +1 -1
  37. package/dist/dist-esm/react-components/src/components/ParticipantList.d.ts +2 -0
  38. package/dist/dist-esm/react-components/src/components/ParticipantList.d.ts.map +1 -1
  39. package/dist/dist-esm/react-components/src/components/ParticipantList.js +4 -4
  40. package/dist/dist-esm/react-components/src/components/ParticipantList.js.map +1 -1
  41. package/dist/dist-esm/react-components/src/components/ParticipantsButton.d.ts +2 -0
  42. package/dist/dist-esm/react-components/src/components/ParticipantsButton.d.ts.map +1 -1
  43. package/dist/dist-esm/react-components/src/components/ParticipantsButton.js +4 -3
  44. package/dist/dist-esm/react-components/src/components/ParticipantsButton.js.map +1 -1
  45. package/dist/dist-esm/react-components/src/components/VideoTile.d.ts.map +1 -1
  46. package/dist/dist-esm/react-components/src/components/VideoTile.js +1 -1
  47. package/dist/dist-esm/react-components/src/components/VideoTile.js.map +1 -1
  48. package/dist/dist-esm/react-components/src/components/styles/StreamMedia.styles.d.ts.map +1 -1
  49. package/dist/dist-esm/react-components/src/components/styles/StreamMedia.styles.js +11 -5
  50. package/dist/dist-esm/react-components/src/components/styles/StreamMedia.styles.js.map +1 -1
  51. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts +2 -2
  52. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts.map +1 -1
  53. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +12 -3
  54. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  55. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.d.ts +2 -2
  56. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.d.ts.map +1 -1
  57. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.d.ts.map +1 -1
  58. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +1 -1
  59. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
  60. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.d.ts +1 -0
  61. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.d.ts.map +1 -1
  62. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js +1 -1
  63. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js.map +1 -1
  64. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Participants.d.ts +1 -0
  65. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Participants.d.ts.map +1 -1
  66. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Participants.js +1 -1
  67. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Participants.js.map +1 -1
  68. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js +2 -2
  69. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js.map +1 -1
  70. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts +2 -2
  71. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts.map +1 -1
  72. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +2 -2
  73. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
  74. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts +2 -2
  75. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts.map +1 -1
  76. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.d.ts +2 -2
  77. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.d.ts.map +1 -1
  78. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js +2 -2
  79. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js.map +1 -1
  80. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.d.ts.map +1 -1
  81. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js +1 -1
  82. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js.map +1 -1
  83. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreenPeoplePane.d.ts +1 -0
  84. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreenPeoplePane.d.ts.map +1 -1
  85. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreenPeoplePane.js +2 -2
  86. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreenPeoplePane.js.map +1 -1
  87. package/dist/dist-esm/react-composites/src/composites/common/AvatarPersona.d.ts.map +1 -1
  88. package/dist/dist-esm/react-composites/src/composites/common/AvatarPersona.js +4 -2
  89. package/dist/dist-esm/react-composites/src/composites/common/AvatarPersona.js.map +1 -1
  90. package/dist/dist-esm/react-composites/src/composites/common/ParticipantContainer.d.ts.map +1 -1
  91. package/dist/dist-esm/react-composites/src/composites/common/ParticipantContainer.js +1 -1
  92. package/dist/dist-esm/react-composites/src/composites/common/ParticipantContainer.js.map +1 -1
  93. package/package.json +7 -7
@@ -191,7 +191,7 @@ const fromFlatCommunicationIdentifier = (id) => {
191
191
  // Copyright (c) Microsoft Corporation.
192
192
  // Licensed under the MIT license.
193
193
  // GENERATED FILE. DO NOT EDIT MANUALLY.
194
- var telemetryVersion = '1.2.3-alpha-202206140015.0';
194
+ var telemetryVersion = '1.2.3-alpha-202206170013.0';
195
195
 
196
196
  // Copyright (c) Microsoft Corporation.
197
197
  /**
@@ -364,7 +364,7 @@ const getCallState = (state, props) => { var _a; return (_a = state.calls[props.
364
364
 
365
365
  // Copyright (c) Microsoft Corporation.
366
366
  // Licensed under the MIT license.
367
- var __awaiter$r = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
367
+ var __awaiter$s = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
368
368
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
369
369
  return new (P || (P = Promise))(function (resolve, reject) {
370
370
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -402,7 +402,7 @@ const _isPreviewOn = (deviceManager) => {
402
402
  *
403
403
  * @private
404
404
  */
405
- const disposeAllLocalPreviewViews = (callClient) => __awaiter$r(void 0, void 0, void 0, function* () {
405
+ const disposeAllLocalPreviewViews = (callClient) => __awaiter$s(void 0, void 0, void 0, function* () {
406
406
  const unparentedViews = callClient.getState().deviceManager.unparentedViews;
407
407
  for (const view of unparentedViews) {
408
408
  yield callClient.disposeView(undefined, undefined, view);
@@ -506,7 +506,7 @@ const holdButtonSelector = reselect__namespace.createSelector([getCallState], (c
506
506
 
507
507
  // Copyright (c) Microsoft Corporation.
508
508
  // Licensed under the MIT license.
509
- var __awaiter$q = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
509
+ var __awaiter$r = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
510
510
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
511
511
  return new (P || (P = Promise))(function (resolve, reject) {
512
512
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -530,7 +530,7 @@ const areStreamsEqual = (prevStream, newStream) => {
530
530
  * @public
531
531
  */
532
532
  const createDefaultCallingHandlers = memoizeOne__default['default']((callClient, callAgent, deviceManager, call) => {
533
- const onStartLocalVideo = () => __awaiter$q(void 0, void 0, void 0, function* () {
533
+ const onStartLocalVideo = () => __awaiter$r(void 0, void 0, void 0, function* () {
534
534
  // Before the call object creates a stream, dispose of any local preview streams.
535
535
  // @TODO: is there any way to parent the unparented view to the call object instead
536
536
  // of disposing and creating a new stream?
@@ -550,7 +550,7 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
550
550
  yield call.startVideo(stream);
551
551
  }
552
552
  });
553
- const onStopLocalVideo = (stream) => __awaiter$q(void 0, void 0, void 0, function* () {
553
+ const onStopLocalVideo = (stream) => __awaiter$r(void 0, void 0, void 0, function* () {
554
554
  const callId = call === null || call === void 0 ? void 0 : call.id;
555
555
  if (!callId) {
556
556
  return;
@@ -563,7 +563,7 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
563
563
  });
564
564
  }
565
565
  });
566
- const onToggleCamera = (options) => __awaiter$q(void 0, void 0, void 0, function* () {
566
+ const onToggleCamera = (options) => __awaiter$r(void 0, void 0, void 0, function* () {
567
567
  if (call && _isInCall(call.state)) {
568
568
  const stream = call.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video');
569
569
  if (stream) {
@@ -593,19 +593,19 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
593
593
  const onStartCall = (participants, options) => {
594
594
  return callAgent ? callAgent.startCall(participants, options) : undefined;
595
595
  };
596
- const onSelectMicrophone = (device) => __awaiter$q(void 0, void 0, void 0, function* () {
596
+ const onSelectMicrophone = (device) => __awaiter$r(void 0, void 0, void 0, function* () {
597
597
  if (!deviceManager) {
598
598
  return;
599
599
  }
600
600
  return deviceManager.selectMicrophone(device);
601
601
  });
602
- const onSelectSpeaker = (device) => __awaiter$q(void 0, void 0, void 0, function* () {
602
+ const onSelectSpeaker = (device) => __awaiter$r(void 0, void 0, void 0, function* () {
603
603
  if (!deviceManager) {
604
604
  return;
605
605
  }
606
606
  return deviceManager.selectSpeaker(device);
607
607
  });
608
- const onSelectCamera = (device, options) => __awaiter$q(void 0, void 0, void 0, function* () {
608
+ const onSelectCamera = (device, options) => __awaiter$r(void 0, void 0, void 0, function* () {
609
609
  if (!deviceManager) {
610
610
  return;
611
611
  }
@@ -628,19 +628,19 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
628
628
  }, options);
629
629
  }
630
630
  });
631
- const onToggleMicrophone = () => __awaiter$q(void 0, void 0, void 0, function* () {
631
+ const onToggleMicrophone = () => __awaiter$r(void 0, void 0, void 0, function* () {
632
632
  if (!call || !_isInCall(call.state)) {
633
633
  throw new Error(`Please invoke onToggleMicrophone after call is started`);
634
634
  }
635
635
  return call.isMuted ? yield call.unmute() : yield call.mute();
636
636
  });
637
- const onStartScreenShare = () => __awaiter$q(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.startScreenSharing()); });
638
- const onStopScreenShare = () => __awaiter$q(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.stopScreenSharing()); });
639
- const onToggleScreenShare = () => __awaiter$q(void 0, void 0, void 0, function* () { return (call === null || call === void 0 ? void 0 : call.isScreenSharingOn) ? yield onStopScreenShare() : yield onStartScreenShare(); });
640
- const onHangUp = () => __awaiter$q(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.hangUp()); });
637
+ const onStartScreenShare = () => __awaiter$r(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.startScreenSharing()); });
638
+ const onStopScreenShare = () => __awaiter$r(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.stopScreenSharing()); });
639
+ const onToggleScreenShare = () => __awaiter$r(void 0, void 0, void 0, function* () { return (call === null || call === void 0 ? void 0 : call.isScreenSharingOn) ? yield onStopScreenShare() : yield onStartScreenShare(); });
640
+ const onHangUp = () => __awaiter$r(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.hangUp()); });
641
641
  /* @conditional-compile-remove(PSTN-calls) */
642
- const onToggleHold = () => __awaiter$q(void 0, void 0, void 0, function* () { return (call === null || call === void 0 ? void 0 : call.state) === 'LocalHold' ? yield (call === null || call === void 0 ? void 0 : call.resume()) : yield (call === null || call === void 0 ? void 0 : call.hold()); });
643
- const onCreateLocalStreamView = (options = { scalingMode: 'Crop', isMirrored: true }) => __awaiter$q(void 0, void 0, void 0, function* () {
642
+ const onToggleHold = () => __awaiter$r(void 0, void 0, void 0, function* () { return (call === null || call === void 0 ? void 0 : call.state) === 'LocalHold' ? yield (call === null || call === void 0 ? void 0 : call.resume()) : yield (call === null || call === void 0 ? void 0 : call.hold()); });
643
+ const onCreateLocalStreamView = (options = { scalingMode: 'Crop', isMirrored: true }) => __awaiter$r(void 0, void 0, void 0, function* () {
644
644
  var _a;
645
645
  if (!call || call.localVideoStreams.length === 0) {
646
646
  return;
@@ -656,7 +656,7 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
656
656
  const { view } = (_a = (yield callClient.createView(call.id, undefined, localStream, options))) !== null && _a !== void 0 ? _a : {};
657
657
  return view ? { view } : undefined;
658
658
  });
659
- const onCreateRemoteStreamView = (userId, options = { scalingMode: 'Crop' }) => __awaiter$q(void 0, void 0, void 0, function* () {
659
+ const onCreateRemoteStreamView = (userId, options = { scalingMode: 'Crop' }) => __awaiter$r(void 0, void 0, void 0, function* () {
660
660
  if (!call) {
661
661
  return;
662
662
  }
@@ -684,7 +684,7 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
684
684
  }
685
685
  return (createViewResult === null || createViewResult === void 0 ? void 0 : createViewResult.view) ? { view: createViewResult === null || createViewResult === void 0 ? void 0 : createViewResult.view } : undefined;
686
686
  });
687
- const onDisposeRemoteStreamView = (userId) => __awaiter$q(void 0, void 0, void 0, function* () {
687
+ const onDisposeRemoteStreamView = (userId) => __awaiter$r(void 0, void 0, void 0, function* () {
688
688
  if (!call) {
689
689
  return;
690
690
  }
@@ -705,7 +705,7 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
705
705
  callClient.disposeView(call.id, participant.identifier, screenShareStream);
706
706
  }
707
707
  });
708
- const onDisposeLocalStreamView = () => __awaiter$q(void 0, void 0, void 0, function* () {
708
+ const onDisposeLocalStreamView = () => __awaiter$r(void 0, void 0, void 0, function* () {
709
709
  // If the user is currently in a call, dispose of the local stream view attached to that call.
710
710
  const callState = call && callClient.getState().calls[call.id];
711
711
  const localStream = callState === null || callState === void 0 ? void 0 : callState.localVideoStreams.find((item) => item.mediaStreamType === 'Video');
@@ -717,11 +717,11 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
717
717
  // TODO: we need to remember which LocalVideoStream was used for LocalPreview and dispose that one.
718
718
  yield disposeAllLocalPreviewViews(callClient);
719
719
  });
720
- const onRemoveParticipant = (userId) => __awaiter$q(void 0, void 0, void 0, function* () {
720
+ const onRemoveParticipant = (userId) => __awaiter$r(void 0, void 0, void 0, function* () {
721
721
  yield (call === null || call === void 0 ? void 0 : call.removeParticipant(fromFlatCommunicationIdentifier(userId)));
722
722
  });
723
723
  /* @conditional-compile-remove(PSTN-calls) */
724
- const onAddParticipant = (participant, options) => __awaiter$q(void 0, void 0, void 0, function* () {
724
+ const onAddParticipant = (participant, options) => __awaiter$r(void 0, void 0, void 0, function* () {
725
725
  if (communicationCommon.isPhoneNumberIdentifier(participant)) {
726
726
  yield (call === null || call === void 0 ? void 0 : call.addParticipant(participant, options));
727
727
  }
@@ -730,7 +730,7 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
730
730
  }
731
731
  });
732
732
  /* @conditional-compile-remove(dialpad) */
733
- const onSendDtmfTone = (dtmfTone) => __awaiter$q(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.sendDtmf(dtmfTone)); });
733
+ const onSendDtmfTone = (dtmfTone) => __awaiter$r(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.sendDtmf(dtmfTone)); });
734
734
  return {
735
735
  onHangUp,
736
736
  /* @conditional-compile-remove(PSTN-calls) */
@@ -2990,6 +2990,7 @@ const ChatMessageActionFlyout = (props) => {
2990
2990
  hidePersonaDetails: true,
2991
2991
  size: react.PersonaSize.size24,
2992
2992
  text: person.displayName,
2993
+ showOverflowTooltip: false,
2993
2994
  styles: {
2994
2995
  root: {
2995
2996
  margin: '0.25rem'
@@ -3209,7 +3210,7 @@ const chatMessageActionMenuProps = (menuProps) => {
3209
3210
  return actionMenuProps;
3210
3211
  };
3211
3212
 
3212
- var __awaiter$p = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3213
+ var __awaiter$q = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3213
3214
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3214
3215
  return new (P || (P = Promise))(function (resolve, reject) {
3215
3216
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3228,7 +3229,7 @@ const actionIconStyle = { height: '1rem' };
3228
3229
  const _FileDownloadCards = (props) => {
3229
3230
  const { userId, fileMetadata } = props;
3230
3231
  const [showSpinner, setShowSpinner] = React.useState(false);
3231
- const fileDownloadHandler = React.useCallback((userId, file) => __awaiter$p(void 0, void 0, void 0, function* () {
3232
+ const fileDownloadHandler = React.useCallback((userId, file) => __awaiter$q(void 0, void 0, void 0, function* () {
3232
3233
  if (!props.downloadHandler) {
3233
3234
  window.open(file.url, '_blank', 'noopener,noreferrer');
3234
3235
  }
@@ -3348,7 +3349,7 @@ const ChatMessageComponentAsMessageBubble = React__default['default'].memo(Messa
3348
3349
 
3349
3350
  // Copyright (c) Microsoft Corporation.
3350
3351
  // Licensed under the MIT license.
3351
- var __awaiter$o = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3352
+ var __awaiter$p = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3352
3353
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3353
3354
  return new (P || (P = Promise))(function (resolve, reject) {
3354
3355
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3382,7 +3383,7 @@ const ChatMessageComponent = (props) => {
3382
3383
  return React__default['default'].createElement(React__default['default'].Fragment, null);
3383
3384
  }
3384
3385
  else if (isEditing) {
3385
- return (React__default['default'].createElement(ChatMessageComponentAsEditBox, { message: message, inlineEditButtons: props.inlineAcceptRejectEditButtons, strings: props.strings, onSubmit: (text, metadata, options) => __awaiter$o(void 0, void 0, void 0, function* () {
3386
+ return (React__default['default'].createElement(ChatMessageComponentAsEditBox, { message: message, inlineEditButtons: props.inlineAcceptRejectEditButtons, strings: props.strings, onSubmit: (text, metadata, options) => __awaiter$p(void 0, void 0, void 0, function* () {
3386
3387
  props.onUpdateMessage &&
3387
3388
  props.message.messageId &&
3388
3389
  (yield props.onUpdateMessage(props.message.messageId, text, metadata, options));
@@ -3492,7 +3493,7 @@ const getParticipantsWhoHaveReadMessage = (message, readReceiptsBySenderId) => {
3492
3493
 
3493
3494
  // Copyright (c) Microsoft Corporation.
3494
3495
  // Licensed under the MIT license.
3495
- var __awaiter$n = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3496
+ var __awaiter$o = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3496
3497
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3497
3498
  return new (P || (P = Promise))(function (resolve, reject) {
3498
3499
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3610,7 +3611,8 @@ const memoizeAllMessages = memoizeFnAll((_messageKey, message, showMessageDate,
3610
3611
  const personaOptions = {
3611
3612
  hidePersonaDetails: true,
3612
3613
  size: react.PersonaSize.size32,
3613
- text: message.senderDisplayName
3614
+ text: message.senderDisplayName,
3615
+ showOverflowTooltip: false
3614
3616
  };
3615
3617
  const chatItemMessageStyle = (message.mine ? styles === null || styles === void 0 ? void 0 : styles.myChatItemMessageContainer : styles === null || styles === void 0 ? void 0 : styles.chatItemMessageContainer) ||
3616
3618
  defaultChatItemMessageContainer(shouldOverlapAvatarAndMessage);
@@ -3718,7 +3720,7 @@ const MessageThread = (props) => {
3718
3720
  setChatMessagesInitialized(chatMessagesInitialized);
3719
3721
  };
3720
3722
  // we try to only send those message status if user is scrolled to the bottom.
3721
- const sendMessageStatusIfAtBottom = React.useCallback(() => __awaiter$n(void 0, void 0, void 0, function* () {
3723
+ const sendMessageStatusIfAtBottom = React.useCallback(() => __awaiter$o(void 0, void 0, void 0, function* () {
3722
3724
  if (!isAtBottomOfScrollRef.current ||
3723
3725
  !document.hasFocus() ||
3724
3726
  !messagesRef.current ||
@@ -3769,7 +3771,7 @@ const MessageThread = (props) => {
3769
3771
  setIsAtBottomOfScrollRef(atBottom);
3770
3772
  }, [scrollToBottom, sendMessageStatusIfAtBottom]);
3771
3773
  // Infinite scrolling + threadInitialize function
3772
- const fetchNewMessageWhenAtTop = React.useCallback(() => __awaiter$n(void 0, void 0, void 0, function* () {
3774
+ const fetchNewMessageWhenAtTop = React.useCallback(() => __awaiter$o(void 0, void 0, void 0, function* () {
3773
3775
  if (chatScrollDivRef.current && !isLoadingChatMessagesRef.current) {
3774
3776
  if (onLoadPreviousChatMessages) {
3775
3777
  isLoadingChatMessagesRef.current = true;
@@ -4009,8 +4011,6 @@ const linkStyles = (theme) => {
4009
4011
  };
4010
4012
 
4011
4013
  // Copyright (c) Microsoft Corporation.
4012
- // Height and width of the loading spinner
4013
- const LOADING_SPINNER_SIZE_REM = 5;
4014
4014
  /**
4015
4015
  * @private
4016
4016
  */
@@ -4022,8 +4022,7 @@ const container = () => react.mergeStyles({
4022
4022
  * @private
4023
4023
  */
4024
4024
  const loadingSpinnerContainer = () => react.mergeStyles({
4025
- width: `${LOADING_SPINNER_SIZE_REM}rem`,
4026
- height: `${LOADING_SPINNER_SIZE_REM}rem`,
4025
+ // Position centrally on top of content. Parent must have position: relative.
4027
4026
  position: 'absolute',
4028
4027
  top: '50%',
4029
4028
  bottom: '0',
@@ -4035,7 +4034,16 @@ const loadingSpinnerContainer = () => react.mergeStyles({
4035
4034
  * @private
4036
4035
  */
4037
4036
  const loadSpinnerStyles = {
4038
- circle: { height: `${LOADING_SPINNER_SIZE_REM}rem`, width: `${LOADING_SPINNER_SIZE_REM}rem`, borderWidth: '0.25em' }
4037
+ root: {
4038
+ height: '100%' // ensure height fills container
4039
+ },
4040
+ circle: {
4041
+ maxHeight: '5rem',
4042
+ height: '50%',
4043
+ width: 'unset',
4044
+ aspectRatio: '1 / 1',
4045
+ borderWidth: '0.25em'
4046
+ }
4039
4047
  };
4040
4048
  /**
4041
4049
  * @private
@@ -4166,7 +4174,7 @@ const meContainerStyle = {
4166
4174
  */
4167
4175
  const ParticipantItem = (props) => {
4168
4176
  var _a, _b, _c, _d;
4169
- const { userId, displayName, onRenderAvatar, menuItems, onRenderIcon, presence, styles, me, onClick } = props;
4177
+ const { userId, displayName, onRenderAvatar, menuItems, onRenderIcon, presence, styles, me, onClick, showParticipantOverflowTooltip } = props;
4170
4178
  const [itemHovered, setItemHovered] = React.useState(false);
4171
4179
  const [menuHidden, setMenuHidden] = React.useState(true);
4172
4180
  const containerRef = React.useRef(null);
@@ -4179,7 +4187,8 @@ const ParticipantItem = (props) => {
4179
4187
  text: displayName,
4180
4188
  size: react.PersonaSize.size32,
4181
4189
  presence: presence,
4182
- initialsTextColor: 'white'
4190
+ initialsTextColor: 'white',
4191
+ showOverflowTooltip: showParticipantOverflowTooltip
4183
4192
  };
4184
4193
  const avatar = onRenderAvatar ? (onRenderAvatar(userId !== null && userId !== void 0 ? userId : '', avatarOptions)) : (React__default['default'].createElement(react.Persona, Object.assign({ className: react.mergeStyles({
4185
4194
  // Prevents persona text from being vertically truncated if a global line height is less than 1.15.
@@ -4248,7 +4257,7 @@ const iconStyles$1 = react.mergeStyles({
4248
4257
  });
4249
4258
 
4250
4259
  // Copyright (c) Microsoft Corporation.
4251
- const onRenderParticipantDefault = (participant, strings, myUserId, onRenderAvatar, createParticipantMenuItems, styles, onParticipantClick) => {
4260
+ const onRenderParticipantDefault = (participant, strings, myUserId, onRenderAvatar, createParticipantMenuItems, styles, onParticipantClick, showParticipantOverflowTooltip) => {
4252
4261
  const callingParticipant = participant;
4253
4262
  let presence = undefined;
4254
4263
  if (callingParticipant) {
@@ -4266,7 +4275,7 @@ const onRenderParticipantDefault = (participant, strings, myUserId, onRenderAvat
4266
4275
  callingParticipant.isMuted && (React__default['default'].createElement(react.Icon, { iconName: "ParticipantItemMicOff", className: iconStyles$1, ariaLabel: strings.mutedIconLabel }))))
4267
4276
  : () => null;
4268
4277
  const displayName = !participant.displayName ? strings.displayNamePlaceholder : participant.displayName;
4269
- return (React__default['default'].createElement(ParticipantItem, { styles: styles, key: participant.userId, userId: participant.userId, displayName: displayName, me: myUserId ? participant.userId === myUserId : false, menuItems: menuItems, presence: presence, onRenderIcon: onRenderIcon, onRenderAvatar: onRenderAvatar, onClick: () => onParticipantClick === null || onParticipantClick === void 0 ? void 0 : onParticipantClick(participant) }));
4278
+ return (React__default['default'].createElement(ParticipantItem, { styles: styles, key: participant.userId, userId: participant.userId, displayName: displayName, me: myUserId ? participant.userId === myUserId : false, menuItems: menuItems, presence: presence, onRenderIcon: onRenderIcon, onRenderAvatar: onRenderAvatar, onClick: () => onParticipantClick === null || onParticipantClick === void 0 ? void 0 : onParticipantClick(participant), showParticipantOverflowTooltip: showParticipantOverflowTooltip }));
4270
4279
  };
4271
4280
  const getParticipantsForDefaultRender = (participants, excludeMe, myUserId) => {
4272
4281
  if (!excludeMe || !myUserId) {
@@ -4289,7 +4298,7 @@ const getParticipantsForDefaultRender = (participants, excludeMe, myUserId) => {
4289
4298
  */
4290
4299
  const ParticipantList = (props) => {
4291
4300
  var _a, _b;
4292
- const { excludeMe = false, myUserId, participants, onRemoveParticipant, onRenderAvatar, onRenderParticipant, onFetchParticipantMenuItems } = props;
4301
+ const { excludeMe = false, myUserId, participants, onRemoveParticipant, onRenderAvatar, onRenderParticipant, onFetchParticipantMenuItems, showParticipantOverflowTooltip } = props;
4293
4302
  const ids = useIdentifiers();
4294
4303
  const strings = useLocale$1().strings.participantItem;
4295
4304
  const displayedParticipants = React.useMemo(() => {
@@ -4318,7 +4327,7 @@ const ParticipantList = (props) => {
4318
4327
  const participantItemStyles = react.merge(participantListItemStyle, (_a = props.styles) === null || _a === void 0 ? void 0 : _a.participantItemStyles);
4319
4328
  return (React__default['default'].createElement(react.Stack, { "data-ui-id": ids.participantList, className: react.mergeStyles(participantListStyle$1, (_b = props.styles) === null || _b === void 0 ? void 0 : _b.root) }, displayedParticipants.map((participant) => onRenderParticipant
4320
4329
  ? onRenderParticipant(participant)
4321
- : onRenderParticipantDefault(participant, strings, myUserId, onRenderAvatar, createParticipantMenuItems, participantItemStyles, props.onParticipantClick))));
4330
+ : onRenderParticipantDefault(participant, strings, myUserId, onRenderAvatar, createParticipantMenuItems, participantItemStyles, props.onParticipantClick, showParticipantOverflowTooltip))));
4322
4331
  };
4323
4332
 
4324
4333
  /**
@@ -4574,7 +4583,7 @@ const DEFAULT_PERSONA_MIN_SIZE_PX = 32;
4574
4583
  const DefaultPlaceholder = (props) => {
4575
4584
  const { text, noVideoAvailableAriaLabel, coinSize, styles, hidePersonaDetails } = props;
4576
4585
  return (React__default['default'].createElement(react.Stack, { className: react.mergeStyles({ position: 'absolute', height: '100%', width: '100%' }) },
4577
- React__default['default'].createElement(react.Persona, { styles: styles, coinSize: coinSize, hidePersonaDetails: hidePersonaDetails, text: text !== null && text !== void 0 ? text : '', initialsTextColor: "white", "aria-label": noVideoAvailableAriaLabel !== null && noVideoAvailableAriaLabel !== void 0 ? noVideoAvailableAriaLabel : '' })));
4586
+ React__default['default'].createElement(react.Persona, { styles: styles, coinSize: coinSize, hidePersonaDetails: hidePersonaDetails, text: text !== null && text !== void 0 ? text : '', initialsTextColor: "white", "aria-label": noVideoAvailableAriaLabel !== null && noVideoAvailableAriaLabel !== void 0 ? noVideoAvailableAriaLabel : '', showOverflowTooltip: false })));
4578
4587
  };
4579
4588
  const defaultPersonaStyles = { root: { margin: 'auto', maxHeight: '100%' } };
4580
4589
  /**
@@ -6418,7 +6427,7 @@ const announcerStyles = {
6418
6427
 
6419
6428
  // Copyright (c) Microsoft Corporation.
6420
6429
  // Licensed under the MIT license.
6421
- var __awaiter$m = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
6430
+ var __awaiter$n = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
6422
6431
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
6423
6432
  return new (P || (P = Promise))(function (resolve, reject) {
6424
6433
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -6455,7 +6464,7 @@ const CameraButton = (props) => {
6455
6464
  const toggleAnnouncerString = React.useCallback((isCameraOn) => {
6456
6465
  setAnnouncerString(!isCameraOn ? strings.cameraActionTurnedOffAnnouncement : strings.cameraActionTurnedOnAnnouncement);
6457
6466
  }, [strings.cameraActionTurnedOffAnnouncement, strings.cameraActionTurnedOnAnnouncement]);
6458
- const onToggleClick = React.useCallback(() => __awaiter$m(void 0, void 0, void 0, function* () {
6467
+ const onToggleClick = React.useCallback(() => __awaiter$n(void 0, void 0, void 0, function* () {
6459
6468
  // Throttle click on camera, need to await onToggleCamera then allow another click
6460
6469
  if (onToggleCamera) {
6461
6470
  setWaitForCamera(true);
@@ -6587,7 +6596,7 @@ const lightThemeCallButtonStyles = {
6587
6596
 
6588
6597
  // Copyright (c) Microsoft Corporation.
6589
6598
  // Licensed under the MIT license.
6590
- var __awaiter$l = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
6599
+ var __awaiter$m = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
6591
6600
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
6592
6601
  return new (P || (P = Promise))(function (resolve, reject) {
6593
6602
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -6620,7 +6629,7 @@ const MicrophoneButton = (props) => {
6620
6629
  const toggleAnnouncerString = React.useCallback((isMicOn) => {
6621
6630
  setAnnouncerString(!isMicOn ? strings.microphoneActionTurnedOffAnnouncement : strings.microphoneActionTurnedOnAnnouncement);
6622
6631
  }, [strings.microphoneActionTurnedOffAnnouncement, strings.microphoneActionTurnedOnAnnouncement]);
6623
- const onToggleClick = React.useCallback(() => __awaiter$l(void 0, void 0, void 0, function* () {
6632
+ const onToggleClick = React.useCallback(() => __awaiter$m(void 0, void 0, void 0, function* () {
6624
6633
  if (onToggleMicrophone) {
6625
6634
  try {
6626
6635
  yield onToggleMicrophone();
@@ -6653,7 +6662,7 @@ const MicrophoneButton = (props) => {
6653
6662
  */
6654
6663
  const ParticipantsButton = (props) => {
6655
6664
  var _a, _b, _c, _d;
6656
- const { callInvitationURL, styles, onMuteAll, onRenderIcon, onRenderParticipantList, participants, myUserId, excludeMe, onRenderParticipant, onRenderAvatar, onRemoveParticipant, onFetchParticipantMenuItems } = props;
6665
+ const { callInvitationURL, styles, onMuteAll, onRenderIcon, onRenderParticipantList, participants, myUserId, excludeMe, onRenderParticipant, onRenderAvatar, onRemoveParticipant, onFetchParticipantMenuItems, showParticipantOverflowTooltip } = props;
6657
6666
  const onRenderPeopleIcon = () => (React__default['default'].createElement(HighContrastAwareIcon, { disabled: props.disabled, iconName: "ControlButtonParticipants" }));
6658
6667
  const ids = useIdentifiers();
6659
6668
  const onMuteAllCallback = React.useCallback(() => {
@@ -6663,7 +6672,7 @@ const ParticipantsButton = (props) => {
6663
6672
  }, [onMuteAll]);
6664
6673
  const defaultParticipantList = React.useCallback(() => {
6665
6674
  var _a;
6666
- return (React__default['default'].createElement(ParticipantList, { participants: participants, myUserId: myUserId, excludeMe: excludeMe, onRenderParticipant: onRenderParticipant, onRenderAvatar: onRenderAvatar, onRemoveParticipant: onRemoveParticipant, onFetchParticipantMenuItems: onFetchParticipantMenuItems, styles: react.merge(defaultParticipantListContainerStyle, (_a = styles === null || styles === void 0 ? void 0 : styles.menuStyles) === null || _a === void 0 ? void 0 : _a.participantListStyles) }));
6675
+ return (React__default['default'].createElement(ParticipantList, { participants: participants, myUserId: myUserId, excludeMe: excludeMe, onRenderParticipant: onRenderParticipant, onRenderAvatar: onRenderAvatar, onRemoveParticipant: onRemoveParticipant, onFetchParticipantMenuItems: onFetchParticipantMenuItems, styles: react.merge(defaultParticipantListContainerStyle, (_a = styles === null || styles === void 0 ? void 0 : styles.menuStyles) === null || _a === void 0 ? void 0 : _a.participantListStyles), showParticipantOverflowTooltip: showParticipantOverflowTooltip }));
6667
6676
  }, [
6668
6677
  excludeMe,
6669
6678
  myUserId,
@@ -6672,7 +6681,8 @@ const ParticipantsButton = (props) => {
6672
6681
  onRenderParticipant,
6673
6682
  participants,
6674
6683
  (_a = styles === null || styles === void 0 ? void 0 : styles.menuStyles) === null || _a === void 0 ? void 0 : _a.participantListStyles,
6675
- onFetchParticipantMenuItems
6684
+ onFetchParticipantMenuItems,
6685
+ showParticipantOverflowTooltip
6676
6686
  ]);
6677
6687
  const onCopyCallback = React.useCallback(() => {
6678
6688
  if (callInvitationURL) {
@@ -7472,14 +7482,17 @@ const DialpadContainer = (props) => {
7472
7482
  var _a, _b;
7473
7483
  const theme = react.useTheme();
7474
7484
  const [textValue, setTextValue] = React.useState('');
7475
- const { onSendDtmfTone, onClickDialpadButton, onDisplayDialpadInput } = props;
7485
+ const { onSendDtmfTone, onClickDialpadButton, onDisplayDialpadInput, onChange } = props;
7476
7486
  const onClickDialpad = (input, index) => {
7477
7487
  setTextValue(textValue + input);
7478
7488
  if (onSendDtmfTone) {
7479
7489
  onSendDtmfTone(DtmfTones[index]);
7480
7490
  }
7481
7491
  if (onClickDialpadButton) {
7482
- onClickDialpadButton();
7492
+ onClickDialpadButton(input, index);
7493
+ }
7494
+ if (onChange) {
7495
+ onChange(onDisplayDialpadInput ? onDisplayDialpadInput(textValue + input) : formatPhoneNumber(textValue + input));
7483
7496
  }
7484
7497
  };
7485
7498
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -7489,7 +7502,14 @@ const DialpadContainer = (props) => {
7489
7502
  // comment out the following line for now to disable customization for dialpad content
7490
7503
  // const dialpadButtonsContent = props.dialpadButtons ?? dialPadButtonsDefault;
7491
7504
  return (React__default['default'].createElement("div", { className: react.mergeStyles(containerStyles$1(theme), (_a = props.styles) === null || _a === void 0 ? void 0 : _a.root), "data-test-id": "dialpadContainer" },
7492
- React__default['default'].createElement(react.TextField, { styles: react.concatStyleSets(textFieldStyles(theme), (_b = props.styles) === null || _b === void 0 ? void 0 : _b.textField), value: onDisplayDialpadInput ? onDisplayDialpadInput(textValue) : formatPhoneNumber(textValue), onChange: setText, placeholder: props.placeholderText, "data-test-id": "dialpad-input" }),
7505
+ React__default['default'].createElement(react.TextField, { styles: react.concatStyleSets(textFieldStyles(theme), (_b = props.styles) === null || _b === void 0 ? void 0 : _b.textField), value: onDisplayDialpadInput ? onDisplayDialpadInput(textValue) : formatPhoneNumber(textValue),
7506
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7507
+ onChange: (e) => {
7508
+ setText(e);
7509
+ if (onChange) {
7510
+ onChange(onDisplayDialpadInput ? onDisplayDialpadInput(e.target.value) : formatPhoneNumber(e.target.value));
7511
+ }
7512
+ }, placeholder: props.placeholderText, "data-test-id": "dialpad-input" }),
7493
7513
  React__default['default'].createElement(react.FocusZone, null, dialPadButtonsDefault.map((rows, rowIndex) => {
7494
7514
  return (React__default['default'].createElement(react.Stack, { horizontal: true, key: `row_${rowIndex}`, horizontalAlign: "stretch" }, rows.map((button, columnIndex) => (React__default['default'].createElement(DialpadButton, { key: `button_${columnIndex}`,
7495
7515
  /* row index = 0
@@ -7969,7 +7989,7 @@ const findConditionalCompiledSelector = (component) => {
7969
7989
 
7970
7990
  // Copyright (c) Microsoft Corporation.
7971
7991
  // Licensed under the MIT license.
7972
- var __awaiter$k = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
7992
+ var __awaiter$l = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
7973
7993
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
7974
7994
  return new (P || (P = Promise))(function (resolve, reject) {
7975
7995
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -7992,35 +8012,35 @@ const createDefaultChatHandlers = memoizeOne__default['default']((chatClient, ch
7992
8012
  let messageIterator = undefined;
7993
8013
  let readReceiptIterator = undefined;
7994
8014
  return {
7995
- onSendMessage: (content, options) => __awaiter$k(void 0, void 0, void 0, function* () {
8015
+ onSendMessage: (content, options) => __awaiter$l(void 0, void 0, void 0, function* () {
7996
8016
  const sendMessageRequest = {
7997
8017
  content,
7998
8018
  senderDisplayName: chatClient.getState().displayName
7999
8019
  };
8000
8020
  yield chatThreadClient.sendMessage(sendMessageRequest, options);
8001
8021
  }),
8002
- onUpdateMessage: (messageId, content, metadata, options) => __awaiter$k(void 0, void 0, void 0, function* () {
8022
+ onUpdateMessage: (messageId, content, metadata, options) => __awaiter$l(void 0, void 0, void 0, function* () {
8003
8023
  const updatedMetadata = metadata ? Object.assign({}, metadata) : {};
8004
8024
  updatedMetadata['fileSharingMetadata'] = JSON.stringify((options === null || options === void 0 ? void 0 : options.attachedFilesMetadata) || []);
8005
8025
  yield chatThreadClient.updateMessage(messageId, { content, metadata: updatedMetadata });
8006
8026
  }),
8007
- onDeleteMessage: (messageId) => __awaiter$k(void 0, void 0, void 0, function* () {
8027
+ onDeleteMessage: (messageId) => __awaiter$l(void 0, void 0, void 0, function* () {
8008
8028
  yield chatThreadClient.deleteMessage(messageId);
8009
8029
  }),
8010
8030
  // This handler is designed for chatThread to consume
8011
- onMessageSeen: (chatMessageId) => __awaiter$k(void 0, void 0, void 0, function* () {
8031
+ onMessageSeen: (chatMessageId) => __awaiter$l(void 0, void 0, void 0, function* () {
8012
8032
  yield chatThreadClient.sendReadReceipt({ chatMessageId });
8013
8033
  }),
8014
- onTyping: () => __awaiter$k(void 0, void 0, void 0, function* () {
8034
+ onTyping: () => __awaiter$l(void 0, void 0, void 0, function* () {
8015
8035
  yield chatThreadClient.sendTypingNotification();
8016
8036
  }),
8017
- onRemoveParticipant: (userId) => __awaiter$k(void 0, void 0, void 0, function* () {
8037
+ onRemoveParticipant: (userId) => __awaiter$l(void 0, void 0, void 0, function* () {
8018
8038
  yield chatThreadClient.removeParticipant(fromFlatCommunicationIdentifier(userId));
8019
8039
  }),
8020
- updateThreadTopicName: (topicName) => __awaiter$k(void 0, void 0, void 0, function* () {
8040
+ updateThreadTopicName: (topicName) => __awaiter$l(void 0, void 0, void 0, function* () {
8021
8041
  yield chatThreadClient.updateTopic(topicName);
8022
8042
  }),
8023
- onLoadPreviousChatMessages: (messagesToLoad) => __awaiter$k(void 0, void 0, void 0, function* () {
8043
+ onLoadPreviousChatMessages: (messagesToLoad) => __awaiter$l(void 0, void 0, void 0, function* () {
8024
8044
  var _a, _b, _c;
8025
8045
  if (messageIterator === undefined) {
8026
8046
  // Lazy definition so that errors in the method call are reported correctly.
@@ -8711,7 +8731,7 @@ const findSelector = (component) => {
8711
8731
 
8712
8732
  // Copyright (c) Microsoft Corporation.
8713
8733
  // Licensed under the MIT license.
8714
- var __awaiter$j = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
8734
+ var __awaiter$k = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
8715
8735
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
8716
8736
  return new (P || (P = Promise))(function (resolve, reject) {
8717
8737
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -8760,10 +8780,10 @@ class ProxyDeviceManager {
8760
8780
  this.selectCamera = (videoDeviceInfo) => {
8761
8781
  this._context.setDeviceManagerSelectedCamera(videoDeviceInfo);
8762
8782
  };
8763
- this.videoDevicesUpdated = () => __awaiter$j(this, void 0, void 0, function* () {
8783
+ this.videoDevicesUpdated = () => __awaiter$k(this, void 0, void 0, function* () {
8764
8784
  this._context.setDeviceManagerCameras(dedupeById(yield this._deviceManager.getCameras()));
8765
8785
  });
8766
- this.audioDevicesUpdated = () => __awaiter$j(this, void 0, void 0, function* () {
8786
+ this.audioDevicesUpdated = () => __awaiter$k(this, void 0, void 0, function* () {
8767
8787
  this._context.setDeviceManagerMicrophones(dedupeById(yield this._deviceManager.getMicrophones()));
8768
8788
  this._context.setDeviceManagerSpeakers(dedupeById(yield this._deviceManager.getSpeakers()));
8769
8789
  });
@@ -8960,7 +8980,7 @@ class CallIdHistory {
8960
8980
 
8961
8981
  // Copyright (c) Microsoft Corporation.
8962
8982
  // Licensed under the MIT license.
8963
- var __awaiter$i = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
8983
+ var __awaiter$j = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
8964
8984
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
8965
8985
  return new (P || (P = Promise))(function (resolve, reject) {
8966
8986
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -9443,7 +9463,7 @@ class CallContext$1 {
9443
9463
  * @throws CallError. Exceptions thrown from `f` are tagged with the failed `target.
9444
9464
  */
9445
9465
  withAsyncErrorTeedToState(action, target) {
9446
- return (...args) => __awaiter$i(this, void 0, void 0, function* () {
9466
+ return (...args) => __awaiter$j(this, void 0, void 0, function* () {
9447
9467
  try {
9448
9468
  return yield action(...args);
9449
9469
  }
@@ -9507,7 +9527,7 @@ const findOldestCallEnded = (calls) => {
9507
9527
 
9508
9528
  // Copyright (c) Microsoft Corporation.
9509
9529
  // Licensed under the MIT license.
9510
- var __awaiter$h = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
9530
+ var __awaiter$i = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
9511
9531
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
9512
9532
  return new (P || (P = Promise))(function (resolve, reject) {
9513
9533
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -9527,63 +9547,63 @@ class ProxyCall {
9527
9547
  switch (prop) {
9528
9548
  case 'mute': {
9529
9549
  return this._context.withAsyncErrorTeedToState(function (...args) {
9530
- return __awaiter$h(this, void 0, void 0, function* () {
9550
+ return __awaiter$i(this, void 0, void 0, function* () {
9531
9551
  return yield target.mute(...args);
9532
9552
  });
9533
9553
  }, 'Call.mute');
9534
9554
  }
9535
9555
  case 'unmute': {
9536
9556
  return this._context.withAsyncErrorTeedToState(function (...args) {
9537
- return __awaiter$h(this, void 0, void 0, function* () {
9557
+ return __awaiter$i(this, void 0, void 0, function* () {
9538
9558
  return yield target.unmute(...args);
9539
9559
  });
9540
9560
  }, 'Call.unmute');
9541
9561
  }
9542
9562
  case 'startVideo': {
9543
9563
  return this._context.withAsyncErrorTeedToState(function (...args) {
9544
- return __awaiter$h(this, void 0, void 0, function* () {
9564
+ return __awaiter$i(this, void 0, void 0, function* () {
9545
9565
  return yield target.startVideo(...args);
9546
9566
  });
9547
9567
  }, 'Call.startVideo');
9548
9568
  }
9549
9569
  case 'stopVideo': {
9550
9570
  return this._context.withAsyncErrorTeedToState(function (...args) {
9551
- return __awaiter$h(this, void 0, void 0, function* () {
9571
+ return __awaiter$i(this, void 0, void 0, function* () {
9552
9572
  return yield target.stopVideo(...args);
9553
9573
  });
9554
9574
  }, 'Call.stopVideo');
9555
9575
  }
9556
9576
  case 'startScreenSharing': {
9557
9577
  return this._context.withAsyncErrorTeedToState(function (...args) {
9558
- return __awaiter$h(this, void 0, void 0, function* () {
9578
+ return __awaiter$i(this, void 0, void 0, function* () {
9559
9579
  return yield target.startScreenSharing(...args);
9560
9580
  });
9561
9581
  }, 'Call.startScreenSharing');
9562
9582
  }
9563
9583
  case 'stopScreenSharing': {
9564
9584
  return this._context.withAsyncErrorTeedToState(function (...args) {
9565
- return __awaiter$h(this, void 0, void 0, function* () {
9585
+ return __awaiter$i(this, void 0, void 0, function* () {
9566
9586
  return yield target.stopScreenSharing(...args);
9567
9587
  });
9568
9588
  }, 'Call.stopScreenSharing');
9569
9589
  }
9570
9590
  case 'hold': {
9571
9591
  return this._context.withAsyncErrorTeedToState(function (...args) {
9572
- return __awaiter$h(this, void 0, void 0, function* () {
9592
+ return __awaiter$i(this, void 0, void 0, function* () {
9573
9593
  return yield target.hold(...args);
9574
9594
  });
9575
9595
  }, 'Call.hold');
9576
9596
  }
9577
9597
  case 'resume': {
9578
9598
  return this._context.withAsyncErrorTeedToState(function (...args) {
9579
- return __awaiter$h(this, void 0, void 0, function* () {
9599
+ return __awaiter$i(this, void 0, void 0, function* () {
9580
9600
  return yield target.resume(...args);
9581
9601
  });
9582
9602
  }, 'Call.resume');
9583
9603
  }
9584
9604
  case 'addParticipant': {
9585
9605
  return this._context.withAsyncErrorTeedToState(function (...args) {
9586
- return __awaiter$h(this, void 0, void 0, function* () {
9606
+ return __awaiter$i(this, void 0, void 0, function* () {
9587
9607
  return yield target.addParticipant(...args);
9588
9608
  });
9589
9609
  }, 'Call.addParticipant');
@@ -9791,7 +9811,7 @@ class RemoteVideoStreamSubscriber {
9791
9811
 
9792
9812
  // Copyright (c) Microsoft Corporation.
9793
9813
  // Licensed under the MIT license.
9794
- var __awaiter$g = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
9814
+ var __awaiter$h = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
9795
9815
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
9796
9816
  return new (P || (P = Promise))(function (resolve, reject) {
9797
9817
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -9801,7 +9821,7 @@ var __awaiter$g = (window && window.__awaiter) || function (thisArg, _arguments,
9801
9821
  });
9802
9822
  };
9803
9823
  function createViewRemoteVideo(context, internalContext, callId, participantId, stream, options) {
9804
- return __awaiter$g(this, void 0, void 0, function* () {
9824
+ return __awaiter$h(this, void 0, void 0, function* () {
9805
9825
  // Render RemoteVideoStream that is part of a Call
9806
9826
  const streamId = stream.id;
9807
9827
  let participantKey;
@@ -9909,7 +9929,7 @@ function createViewRemoteVideo(context, internalContext, callId, participantId,
9909
9929
  });
9910
9930
  }
9911
9931
  function createViewLocalVideo(context, internalContext, callId, options) {
9912
- return __awaiter$g(this, void 0, void 0, function* () {
9932
+ return __awaiter$h(this, void 0, void 0, function* () {
9913
9933
  _logEvent(callingStatefulLogger, {
9914
9934
  name: EventNames.START_LOCAL_STREAM_RENDERING,
9915
9935
  level: 'info',
@@ -10025,7 +10045,7 @@ function createViewLocalVideo(context, internalContext, callId, options) {
10025
10045
  });
10026
10046
  }
10027
10047
  function createViewUnparentedVideo(context, internalContext, stream, options) {
10028
- return __awaiter$g(this, void 0, void 0, function* () {
10048
+ return __awaiter$h(this, void 0, void 0, function* () {
10029
10049
  const renderInfo = internalContext.getUnparentedRenderInfo(stream);
10030
10050
  if (renderInfo && renderInfo.status === 'Rendered') {
10031
10051
  console.warn('Unparented LocalVideoStream is already rendered');
@@ -10583,6 +10603,55 @@ class CallSubscriber {
10583
10603
  }
10584
10604
  }
10585
10605
 
10606
+ // Copyright (c) Microsoft Corporation.
10607
+ // Licensed under the MIT license.
10608
+ var __awaiter$g = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
10609
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10610
+ return new (P || (P = Promise))(function (resolve, reject) {
10611
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
10612
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
10613
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
10614
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
10615
+ });
10616
+ };
10617
+ /**
10618
+ * @private
10619
+ */
10620
+ class ProxyIncomingCall {
10621
+ constructor(context) {
10622
+ this._context = context;
10623
+ }
10624
+ get(target, prop) {
10625
+ switch (prop) {
10626
+ case 'accept': {
10627
+ return this._context.withAsyncErrorTeedToState(function (...args) {
10628
+ return __awaiter$g(this, void 0, void 0, function* () {
10629
+ return yield target.accept(...args);
10630
+ });
10631
+ }, 'IncomingCall.accept');
10632
+ }
10633
+ case 'reject': {
10634
+ return this._context.withAsyncErrorTeedToState(function (...args) {
10635
+ return __awaiter$g(this, void 0, void 0, function* () {
10636
+ return yield target.reject(...args);
10637
+ });
10638
+ }, 'IncomingCall.reject');
10639
+ }
10640
+ default:
10641
+ return Reflect.get(target, prop);
10642
+ }
10643
+ }
10644
+ }
10645
+ /**
10646
+ * Creates a declarative Incoming Call by proxying IncomingCall using ProxyIncomingCall.
10647
+ * @param incomingCall - IncomingCall from SDK
10648
+ * @returns proxied IncomingCall
10649
+ */
10650
+ const incomingCallDeclaratify = (incomingCall, context) => {
10651
+ const proxyIncomingCall = new ProxyIncomingCall(context);
10652
+ return new Proxy(incomingCall, proxyIncomingCall);
10653
+ };
10654
+
10586
10655
  // Copyright (c) Microsoft Corporation.
10587
10656
  // Licensed under the MIT license.
10588
10657
  /**
@@ -10640,6 +10709,7 @@ class ProxyCallAgent {
10640
10709
  incomingCallSubscriber.unsubscribe();
10641
10710
  }
10642
10711
  this._incomingCallSubscribers.clear();
10712
+ this._declarativeIncomingCalls.clear();
10643
10713
  for (const [_, declarativeCall] of this._declarativeCalls.entries()) {
10644
10714
  declarativeCall.unsubscribe();
10645
10715
  }
@@ -10680,14 +10750,16 @@ class ProxyCallAgent {
10680
10750
  incomingCallSubscriber.unsubscribe();
10681
10751
  this._incomingCallSubscribers.delete(incomingCallId);
10682
10752
  }
10753
+ this._declarativeIncomingCalls.delete(incomingCallId);
10683
10754
  this._context.setIncomingCallEnded(incomingCallId, callEndReason);
10684
10755
  };
10685
- this.incomingCall = (event) => {
10756
+ this.incomingCall = ({ incomingCall }) => {
10686
10757
  // Make sure to not subscribe to the incoming call if we are already subscribed to it.
10687
- if (!this._incomingCallSubscribers.has(event.incomingCall.id)) {
10688
- this._incomingCallSubscribers.set(event.incomingCall.id, new IncomingCallSubscriber(event.incomingCall, this.setIncomingCallEnded));
10758
+ if (!this._incomingCallSubscribers.has(incomingCall.id)) {
10759
+ this._incomingCallSubscribers.set(incomingCall.id, new IncomingCallSubscriber(incomingCall, this.setIncomingCallEnded));
10689
10760
  }
10690
- this._context.setIncomingCall(convertSdkIncomingCallToDeclarativeIncomingCall(event.incomingCall));
10761
+ this._declarativeIncomingCalls.set(incomingCall.id, incomingCallDeclaratify(incomingCall, this._context));
10762
+ this._context.setIncomingCall(convertSdkIncomingCallToDeclarativeIncomingCall(incomingCall));
10691
10763
  };
10692
10764
  this.addCall = (call) => {
10693
10765
  var _a;
@@ -10712,6 +10784,7 @@ class ProxyCallAgent {
10712
10784
  this._internalContext = internalContext;
10713
10785
  this._callSubscribers = new Map();
10714
10786
  this._incomingCallSubscribers = new Map();
10787
+ this._declarativeIncomingCalls = new Map();
10715
10788
  this._declarativeCalls = new Map();
10716
10789
  this._externalCallsUpdatedListeners = new Set();
10717
10790
  this.subscribe();
@@ -10766,6 +10839,18 @@ class ProxyCallAgent {
10766
10839
  });
10767
10840
  };
10768
10841
  }
10842
+ /**
10843
+ * This attribute is a special case and doesn't exist on the CallAgent interface.
10844
+ * We need this to be able to return a declarative incoming call object using the call agent.
10845
+ * In a standard headless SDK usage, the right way to get an incoming call is to use the `incomingCall` event.
10846
+ * However, using the declarative layer, the ideal usage would be to:
10847
+ * 1. subscribe to the `onStateChange` event
10848
+ * 2. Get the incoming call from the new state and it's ID
10849
+ * 3. Use `callAgent.incomingCalls` and filter an incoming call ID to get a declarative incoming call object
10850
+ */
10851
+ case 'incomingCalls': {
10852
+ return this._declarativeIncomingCalls;
10853
+ }
10769
10854
  default:
10770
10855
  return Reflect.get(target, prop);
10771
10856
  }
@@ -13209,12 +13294,14 @@ const avatarDeepDifferenceCheck = (currentData, newData) => {
13209
13294
  */
13210
13295
  const AvatarPersona = (props) => {
13211
13296
  var _a, _b, _c, _d, _e, _f;
13212
- const { userId, dataProvider, text, imageUrl, imageInitials, initialsColor, initialsTextColor } = props;
13297
+ const { userId, dataProvider, text, imageUrl, imageInitials, initialsColor, initialsTextColor, showOverflowTooltip } = props;
13213
13298
  const userIds = React.useMemo(() => {
13214
13299
  return [userId];
13215
13300
  }, [userId]);
13216
13301
  const [data] = useCustomAvatarPersonaData(userIds, dataProvider);
13217
- return (React__default['default'].createElement(react.Persona, Object.assign({}, props, { text: (_a = data === null || data === void 0 ? void 0 : data.text) !== null && _a !== void 0 ? _a : text, imageUrl: (_b = data === null || data === void 0 ? void 0 : data.imageUrl) !== null && _b !== void 0 ? _b : imageUrl, imageInitials: (_c = data === null || data === void 0 ? void 0 : data.imageInitials) !== null && _c !== void 0 ? _c : imageInitials, initialsColor: (_d = data === null || data === void 0 ? void 0 : data.initialsColor) !== null && _d !== void 0 ? _d : initialsColor, initialsTextColor: (_f = (_e = data === null || data === void 0 ? void 0 : data.initialsTextColor) !== null && _e !== void 0 ? _e : initialsTextColor) !== null && _f !== void 0 ? _f : 'white' })));
13302
+ return (React__default['default'].createElement(react.Persona, Object.assign({}, props, { text: (_a = data === null || data === void 0 ? void 0 : data.text) !== null && _a !== void 0 ? _a : text, imageUrl: (_b = data === null || data === void 0 ? void 0 : data.imageUrl) !== null && _b !== void 0 ? _b : imageUrl, imageInitials: (_c = data === null || data === void 0 ? void 0 : data.imageInitials) !== null && _c !== void 0 ? _c : imageInitials, initialsColor: (_d = data === null || data === void 0 ? void 0 : data.initialsColor) !== null && _d !== void 0 ? _d : initialsColor, initialsTextColor: (_f = (_e = data === null || data === void 0 ? void 0 : data.initialsTextColor) !== null && _e !== void 0 ? _e : initialsTextColor) !== null && _f !== void 0 ? _f : 'white',
13303
+ // default disable tooltip unless specified
13304
+ showOverflowTooltip: showOverflowTooltip !== null && showOverflowTooltip !== void 0 ? showOverflowTooltip : false })));
13218
13305
  };
13219
13306
 
13220
13307
  // Copyright (c) Microsoft Corporation.
@@ -13475,7 +13562,7 @@ const ParticipantListWithHeading = (props) => {
13475
13562
  return (React__default['default'].createElement(react.Stack, { className: participantListStack },
13476
13563
  React__default['default'].createElement(react.Stack.Item, { styles: subheadingStyleThemed }, title),
13477
13564
  React__default['default'].createElement(react.FocusZone, { className: participantListContainerStyle },
13478
- React__default['default'].createElement(ParticipantList, Object.assign({}, participantListProps, { styles: props.isMobile ? participantListMobileStyle : participantListStyle, onRenderAvatar: (userId, options) => (React__default['default'].createElement(AvatarPersona, Object.assign({ "data-ui-id": "chat-composite-participant-custom-avatar", userId: userId }, options, { dataProvider: onFetchAvatarPersonaData }))), onFetchParticipantMenuItems: onFetchParticipantMenuItems })))));
13565
+ React__default['default'].createElement(ParticipantList, Object.assign({}, participantListProps, { styles: props.isMobile ? participantListMobileStyle : participantListStyle, onRenderAvatar: (userId, options) => (React__default['default'].createElement(AvatarPersona, Object.assign({ "data-ui-id": "chat-composite-participant-custom-avatar", userId: userId }, options, { dataProvider: onFetchAvatarPersonaData }))), onFetchParticipantMenuItems: onFetchParticipantMenuItems, showParticipantOverflowTooltip: !props.isMobile })))));
13479
13566
  };
13480
13567
 
13481
13568
  // Copyright (c) Microsoft Corporation.
@@ -13483,11 +13570,11 @@ const ParticipantListWithHeading = (props) => {
13483
13570
  * @private
13484
13571
  */
13485
13572
  const ChatScreenPeoplePane = (props) => {
13486
- const { onFetchAvatarPersonaData, onFetchParticipantMenuItems } = props;
13573
+ const { onFetchAvatarPersonaData, onFetchParticipantMenuItems, isMobile } = props;
13487
13574
  const locale = useLocale();
13488
13575
  const chatListHeader = locale.strings.chat.chatListHeader;
13489
13576
  const participantListProps = usePropsFor$2(ParticipantList);
13490
- return (React__default['default'].createElement(ParticipantContainer, { participantListProps: participantListProps, title: chatListHeader, onFetchAvatarPersonaData: onFetchAvatarPersonaData, onFetchParticipantMenuItems: onFetchParticipantMenuItems }));
13577
+ return (React__default['default'].createElement(ParticipantContainer, { participantListProps: participantListProps, title: chatListHeader, onFetchAvatarPersonaData: onFetchAvatarPersonaData, onFetchParticipantMenuItems: onFetchParticipantMenuItems, isMobile: isMobile }));
13491
13578
  };
13492
13579
 
13493
13580
  /**
@@ -13607,7 +13694,7 @@ const ChatScreen = (props) => {
13607
13694
  onCancelFileUpload: adapter.cancelFileUpload }))),
13608
13695
  formFactor !== 'mobile' && React__default['default'].createElement(AttachFileButton, null)))),
13609
13696
  /* @conditional-compile-remove(chat-composite-participant-pane) */
13610
- (options === null || options === void 0 ? void 0 : options.participantPane) === true && (React__default['default'].createElement(ChatScreenPeoplePane, { onFetchAvatarPersonaData: onFetchAvatarPersonaData, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems })))));
13697
+ (options === null || options === void 0 ? void 0 : options.participantPane) === true && (React__default['default'].createElement(ChatScreenPeoplePane, { onFetchAvatarPersonaData: onFetchAvatarPersonaData, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, isMobile: formFactor === 'mobile' })))));
13611
13698
  };
13612
13699
 
13613
13700
  // Copyright (c) Microsoft Corporation.
@@ -13901,9 +13988,9 @@ const createCompositeHandlers = memoizeOne__default['default']((adapter) => ({
13901
13988
  onSelectSpeaker: (deviceInfo) => __awaiter$7(void 0, void 0, void 0, function* () {
13902
13989
  yield adapter.setSpeaker(deviceInfo);
13903
13990
  }),
13904
- onStartCall: (participants) => {
13991
+ onStartCall: (participants, options) => {
13905
13992
  const rawIds = participants.map((participant) => toFlatCommunicationIdentifier(participant));
13906
- return adapter.startCall(rawIds);
13993
+ return adapter.startCall(rawIds, options);
13907
13994
  },
13908
13995
  onStartScreenShare: () => __awaiter$7(void 0, void 0, void 0, function* () {
13909
13996
  yield adapter.startScreenShare();
@@ -14212,7 +14299,7 @@ const Participants = (props) => {
14212
14299
  var _a;
14213
14300
  return concatButtonBaseStyles(props.increaseFlyoutItemSize ? participantButtonWithIncreasedTouchTargets : {}, (_a = props.styles) !== null && _a !== void 0 ? _a : {});
14214
14301
  }, [props.increaseFlyoutItemSize, props.styles]);
14215
- return (React__default['default'].createElement(ParticipantsButton, Object.assign({ "data-ui-id": "call-composite-participants-button" }, participantsButtonProps, { showLabel: props.displayType !== 'compact', callInvitationURL: props.callInvitationURL, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, disabled: isDisabled$1(props.option), styles: participantsButtonStyles })));
14302
+ return (React__default['default'].createElement(ParticipantsButton, Object.assign({ "data-ui-id": "call-composite-participants-button" }, participantsButtonProps, { showLabel: props.displayType !== 'compact', callInvitationURL: props.callInvitationURL, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, disabled: isDisabled$1(props.option), styles: participantsButtonStyles, showParticipantOverflowTooltip: !props.isMobile })));
14216
14303
  };
14217
14304
  const isDisabled$1 = (option) => {
14218
14305
  if (option === undefined || option === true || option === false) {
@@ -14253,7 +14340,7 @@ const CallControls = (props) => {
14253
14340
  isEnabled$2(options === null || options === void 0 ? void 0 : options.microphoneButton) && React__default['default'].createElement(Microphone, { displayType: options === null || options === void 0 ? void 0 : options.displayType }),
14254
14341
  isEnabled$2(options === null || options === void 0 ? void 0 : options.cameraButton) && React__default['default'].createElement(Camera, { displayType: options === null || options === void 0 ? void 0 : options.displayType }),
14255
14342
  isEnabled$2(options === null || options === void 0 ? void 0 : options.screenShareButton) && (React__default['default'].createElement(ScreenShare, { option: options === null || options === void 0 ? void 0 : options.screenShareButton, displayType: options === null || options === void 0 ? void 0 : options.displayType })),
14256
- isEnabled$2(options === null || options === void 0 ? void 0 : options.participantsButton) && (React__default['default'].createElement(Participants, { option: options === null || options === void 0 ? void 0 : options.participantsButton, callInvitationURL: props.callInvitationURL, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, displayType: options === null || options === void 0 ? void 0 : options.displayType, increaseFlyoutItemSize: props.increaseFlyoutItemSize })),
14343
+ isEnabled$2(options === null || options === void 0 ? void 0 : options.participantsButton) && (React__default['default'].createElement(Participants, { option: options === null || options === void 0 ? void 0 : options.participantsButton, callInvitationURL: props.callInvitationURL, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, displayType: options === null || options === void 0 ? void 0 : options.displayType, increaseFlyoutItemSize: props.increaseFlyoutItemSize, isMobile: props.isMobile })),
14257
14344
  isEnabled$2(options === null || options === void 0 ? void 0 : options.devicesButton) && (React__default['default'].createElement(Devices, { displayType: options === null || options === void 0 ? void 0 : options.displayType, increaseFlyoutItemSize: props.increaseFlyoutItemSize })),
14258
14345
  customButtons['primary'],
14259
14346
  isEnabled$2(options === null || options === void 0 ? void 0 : options.endCallButton) && React__default['default'].createElement(EndCall, { displayType: options === null || options === void 0 ? void 0 : options.displayType })))));
@@ -14401,7 +14488,7 @@ const CallArrangement = (props) => {
14401
14488
  !!props.mutedNotificationProps && React__default['default'].createElement(MutedNotification, Object.assign({}, props.mutedNotificationProps))),
14402
14489
  React__default['default'].createElement(react.Stack.Item, { styles: callGalleryStyles, grow: true }, props.onRenderGalleryContent && (React__default['default'].createElement(react.Stack, { verticalFill: true, styles: mediaGalleryContainerStyles }, props.onRenderGalleryContent()))),
14403
14490
  ((_a = props.callControlProps) === null || _a === void 0 ? void 0 : _a.options) !== false && (React__default['default'].createElement(react.Stack.Item, { className: callControlsContainerStyles },
14404
- React__default['default'].createElement(CallControls, Object.assign({}, props.callControlProps, { containerWidth: containerWidth, containerHeight: containerHeight })))))));
14491
+ React__default['default'].createElement(CallControls, Object.assign({}, props.callControlProps, { containerWidth: containerWidth, containerHeight: containerHeight, isMobile: props.mobileView })))))));
14405
14492
  };
14406
14493
 
14407
14494
  // Copyright (c) Microsoft Corporation.
@@ -15801,8 +15888,7 @@ class AzureCommunicationCallAdapter {
15801
15888
  }));
15802
15889
  });
15803
15890
  }
15804
- //TODO: a better way to expose option parameter
15805
- startCall(participants) {
15891
+ startCall(participants, options) {
15806
15892
  var _a, _b;
15807
15893
  if (_isInCall((_b = (_a = this.getState().call) === null || _a === void 0 ? void 0 : _a.state) !== null && _b !== void 0 ? _b : 'None')) {
15808
15894
  throw new Error('You are already in the call.');
@@ -15811,9 +15897,18 @@ class AzureCommunicationCallAdapter {
15811
15897
  // FIXME: `onStartCall` does not allow a Teams user.
15812
15898
  // Need some way to return an error if a Teams user is provided.
15813
15899
  const backendId = fromFlatCommunicationIdentifier(participant);
15900
+ if (communicationCommon.isPhoneNumberIdentifier(backendId)) {
15901
+ if ((options === null || options === void 0 ? void 0 : options.alternateCallerId) === undefined) {
15902
+ throw new Error('unable to start call, PSTN user present with no alternativeCallerID.');
15903
+ }
15904
+ return backendId;
15905
+ }
15906
+ else if (communicationCommon.isCommunicationUserIdentifier(backendId)) {
15907
+ return backendId;
15908
+ }
15814
15909
  return backendId;
15815
15910
  });
15816
- const call = this.handlers.onStartCall(idsToAdd);
15911
+ const call = this.handlers.onStartCall(idsToAdd, options);
15817
15912
  if (!call) {
15818
15913
  throw new Error('Unable to start call.');
15819
15914
  }
@@ -16577,8 +16672,8 @@ class CallWithChatBackedCallAdapter {
16577
16672
  return this.callWithChatAdapter.joinCall(microphoneOn);
16578
16673
  };
16579
16674
  this.leaveCall = () => __awaiter$3(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.leaveCall(); });
16580
- this.startCall = (participants) => {
16581
- return this.callWithChatAdapter.startCall(participants);
16675
+ this.startCall = (participants, options) => {
16676
+ return this.callWithChatAdapter.startCall(participants, options);
16582
16677
  };
16583
16678
  this.setCamera = (sourceId, options) => __awaiter$3(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.setCamera(sourceId, options); });
16584
16679
  this.setMicrophone = (sourceId) => __awaiter$3(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.setMicrophone(sourceId); });
@@ -17726,8 +17821,8 @@ class AzureCommunicationCallWithChatAdapter {
17726
17821
  });
17727
17822
  }
17728
17823
  /** Start a new Call. */
17729
- startCall(participants) {
17730
- return this.callAdapter.startCall(participants);
17824
+ startCall(participants, options) {
17825
+ return this.callAdapter.startCall(participants, options);
17731
17826
  }
17732
17827
  /**
17733
17828
  * Subscribe to state change events.