@azure/communication-react 1.15.0-alpha-202404090013 → 1.15.0-alpha-202404110013

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 (56) hide show
  1. package/dist/communication-react.d.ts +10 -1
  2. package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-CkXr0tIb.js → ChatMessageComponentAsRichTextEditBox-BXHOj2Z6.js} +2 -2
  3. package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-CkXr0tIb.js.map → ChatMessageComponentAsRichTextEditBox-BXHOj2Z6.js.map} +1 -1
  4. package/dist/dist-cjs/communication-react/{index-BcyLWrGT.js → index-D5L3GDY8.js} +126 -141
  5. package/dist/dist-cjs/communication-react/index-D5L3GDY8.js.map +1 -0
  6. package/dist/dist-cjs/communication-react/index.js +1 -1
  7. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  8. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  9. package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
  10. package/dist/dist-esm/calling-stateful-client/src/CallContext.js +0 -1
  11. package/dist/dist-esm/calling-stateful-client/src/CallContext.js.map +1 -1
  12. package/dist/dist-esm/calling-stateful-client/src/CallDeclarativeCommon.js +0 -3
  13. package/dist/dist-esm/calling-stateful-client/src/CallDeclarativeCommon.js.map +1 -1
  14. package/dist/dist-esm/calling-stateful-client/src/Converter.js +0 -1
  15. package/dist/dist-esm/calling-stateful-client/src/Converter.js.map +1 -1
  16. package/dist/dist-esm/calling-stateful-client/src/index-public.js.map +1 -1
  17. package/dist/dist-esm/react-components/src/components/AttachmentDownloadCards.js +6 -10
  18. package/dist/dist-esm/react-components/src/components/AttachmentDownloadCards.js.map +1 -1
  19. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageContent.d.ts +5 -0
  20. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageContent.js +33 -2
  21. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageContent.js.map +1 -1
  22. package/dist/dist-esm/react-components/src/components/MeetingReactionOverlay.js +2 -2
  23. package/dist/dist-esm/react-components/src/components/MeetingReactionOverlay.js.map +1 -1
  24. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.d.ts +1 -0
  25. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.js +2 -2
  26. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.js.map +1 -1
  27. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextInputBoxComponent.d.ts +2 -0
  28. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextInputBoxComponent.js +6 -3
  29. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextInputBoxComponent.js.map +1 -1
  30. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.d.ts +9 -0
  31. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js +2 -2
  32. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js.map +1 -1
  33. package/dist/dist-esm/react-components/src/components/VideoTile.js +0 -5
  34. package/dist/dist-esm/react-components/src/components/VideoTile.js.map +1 -1
  35. package/dist/dist-esm/react-components/src/components/styles/VideoGallery.styles.d.ts +0 -4
  36. package/dist/dist-esm/react-components/src/components/styles/VideoGallery.styles.js +0 -16
  37. package/dist/dist-esm/react-components/src/components/styles/VideoGallery.styles.js.map +1 -1
  38. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js +0 -2
  39. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js.map +1 -1
  40. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.js.map +1 -1
  41. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +2 -11
  42. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  43. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.d.ts +1 -1
  44. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.js.map +1 -1
  45. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/index.js.map +1 -1
  46. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.js.map +1 -1
  47. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/TransferPage.js +2 -16
  48. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/TransferPage.js.map +1 -1
  49. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/baseSelectors.js +0 -1
  50. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/baseSelectors.js.map +1 -1
  51. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js +0 -1
  52. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js.map +1 -1
  53. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js +23 -22
  54. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js.map +1 -1
  55. package/package.json +3 -3
  56. package/dist/dist-cjs/communication-react/index-BcyLWrGT.js.map +0 -1
@@ -176,7 +176,7 @@ function getDefaultExportFromCjs (x) {
176
176
  // Copyright (c) Microsoft Corporation.
177
177
  // Licensed under the MIT License.
178
178
  // GENERATED FILE. DO NOT EDIT MANUALLY.
179
- var telemetryVersion = '1.15.0-alpha-202404090013';
179
+ var telemetryVersion = '1.15.0-alpha-202404110013';
180
180
 
181
181
 
182
182
  var telemetryVersion$1 = /*@__PURE__*/getDefaultExportFromCjs(telemetryVersion);
@@ -1807,7 +1807,6 @@ function convertSdkCallToDeclarativeCall(call) {
1807
1807
  /* @conditional-compile-remove(acs-close-captions) */
1808
1808
  captionsKind: _isTeamsCall(call) ? 'TeamsCaptions' : 'Captions'
1809
1809
  },
1810
- /* @conditional-compile-remove(call-transfer) */
1811
1810
  transfer: {
1812
1811
  acceptedTransfers: {}
1813
1812
  },
@@ -2766,7 +2765,6 @@ let CallContext$2 = class CallContext {
2766
2765
  }
2767
2766
  });
2768
2767
  }
2769
- /* @conditional-compile-remove(call-transfer) */
2770
2768
  setAcceptedTransfer(callId, acceptedTransfer) {
2771
2769
  this.modifyState((draft) => {
2772
2770
  const call = draft.calls[this._callIdHistory.latestCallId(callId)];
@@ -4688,7 +4686,6 @@ class ProxyCallCommon {
4688
4686
  proxyFeature = new ProxyTeamsCaptions(this._context, target);
4689
4687
  return { captions: new Proxy(captionsFeature, proxyFeature) };
4690
4688
  }
4691
- /* @conditional-compile-remove(call-transfer) */
4692
4689
  if (args[0] === communicationCalling.Features.Transfer) {
4693
4690
  const transferFeature = target.feature(communicationCalling.Features.Transfer);
4694
4691
  const proxyFeature = new ProxyTransferCallFeature(this._context, target);
@@ -4815,7 +4812,6 @@ class ProxySpotlightCallFeature {
4815
4812
  }
4816
4813
  }
4817
4814
  }
4818
- /* @conditional-compile-remove(call-transfer) */
4819
4815
  /**
4820
4816
  * @private
4821
4817
  */
@@ -10437,7 +10433,7 @@ const removeImageElement = (event) => {
10437
10433
  * @beta
10438
10434
  */
10439
10435
  const RichTextEditor = React.forwardRef((props, ref) => {
10440
- const { initialContent, onChange, placeholderText, strings, showRichTextEditorFormatting, content } = props;
10436
+ const { initialContent, onChange, placeholderText, strings, showRichTextEditorFormatting, content, autoFocus } = props;
10441
10437
  const editor = React.useRef(null);
10442
10438
  const contentValue = React.useRef(content);
10443
10439
  const theme = useTheme();
@@ -10534,7 +10530,7 @@ const RichTextEditor = React.forwardRef((props, ref) => {
10534
10530
  // doNotAdjustEditorColor is used to fix the default background color for Rooster component
10535
10531
  doNotAdjustEditorColor: true, "data-testid": 'rooster-rich-text-editor',
10536
10532
  // if we don't use 'allowKeyboardEventPropagation' only the enter key is caught
10537
- onKeyDown: props.onKeyDown }))));
10533
+ onKeyDown: props.onKeyDown, focusOnInit: autoFocus === 'sendBoxTextField' }))));
10538
10534
  });
10539
10535
  const focusAndUpdateContent = (editor, content) => {
10540
10536
  // focus the editor to set correct selection position
@@ -10585,7 +10581,7 @@ const RichTextInputBoxComponent = (props) => {
10585
10581
  /* @conditional-compile-remove(attachment-upload) */
10586
10582
  onRenderAttachmentUploads,
10587
10583
  /* @conditional-compile-remove(attachment-upload) */
10588
- hasAttachments, richTextEditorStyleProps, isHorizontalLayoutDisabled = false, content } = props;
10584
+ hasAttachments, richTextEditorStyleProps, isHorizontalLayoutDisabled = false, content, autoFocus, onTyping } = props;
10589
10585
  const theme = useTheme();
10590
10586
  const [showRichTextEditorFormatting, setShowRichTextEditorFormatting] = React.useState(false);
10591
10587
  const onRenderRichTextEditorIcon = React.useCallback((isHover) => (React.createElement(react.Icon, { iconName: isHover || showRichTextEditorFormatting ? 'RichTextEditorButtonIconFilled' : 'RichTextEditorButtonIcon', className: richTextFormatButtonIconStyle(theme, !disabled && (isHover || showRichTextEditorFormatting)) })), [disabled, showRichTextEditorFormatting, theme]);
@@ -10619,7 +10615,10 @@ const RichTextInputBoxComponent = (props) => {
10619
10615
  ev.preventDefault();
10620
10616
  onEnterKeyDown && onEnterKeyDown();
10621
10617
  }
10622
- }, [onEnterKeyDown, showRichTextEditorFormatting]);
10618
+ else {
10619
+ onTyping === null || onTyping === void 0 ? void 0 : onTyping();
10620
+ }
10621
+ }, [onEnterKeyDown, showRichTextEditorFormatting, onTyping]);
10623
10622
  const useHorizontalLayout = React.useMemo(() => {
10624
10623
  return (!isHorizontalLayoutDisabled &&
10625
10624
  !showRichTextEditorFormatting &&
@@ -10636,7 +10635,7 @@ const RichTextInputBoxComponent = (props) => {
10636
10635
  React.createElement(react.Stack, { grow: true, horizontal: useHorizontalLayout, horizontalAlign: useHorizontalLayout ? 'end' : 'space-between', className: inputBoxContentStackStyle, wrap: useHorizontalLayout },
10637
10636
  React.createElement(react.Stack, { grow: true, className: inputBoxRichTextStackStyle },
10638
10637
  React.createElement(react.Stack.Item, { className: inputBoxRichTextStackItemStyle },
10639
- React.createElement(RichTextEditor, { content: content, initialContent: initialContent, placeholderText: placeholderText, onChange: onChange, onKeyDown: onKeyDown, ref: editorComponentRef, strings: strings, showRichTextEditorFormatting: showRichTextEditorFormatting, styles: richTextEditorStyle })),
10638
+ React.createElement(RichTextEditor, { content: content, initialContent: initialContent, placeholderText: placeholderText, onChange: onChange, onKeyDown: onKeyDown, ref: editorComponentRef, strings: strings, showRichTextEditorFormatting: showRichTextEditorFormatting, styles: richTextEditorStyle, autoFocus: autoFocus })),
10640
10639
  /* @conditional-compile-remove(attachment-upload) */ onRenderAttachmentUploads &&
10641
10640
  onRenderAttachmentUploads()),
10642
10641
  actionButtons)));
@@ -10716,7 +10715,7 @@ const isMessageEmpty$1 = (message) => {
10716
10715
  * @beta
10717
10716
  */
10718
10717
  const RichTextSendBox = (props) => {
10719
- const { disabled = false, systemMessage, onSendMessage,
10718
+ const { disabled = false, systemMessage, autoFocus, onSendMessage, onTyping,
10720
10719
  /* @conditional-compile-remove(attachment-upload) */
10721
10720
  activeAttachmentUploads,
10722
10721
  /* @conditional-compile-remove(attachment-upload) */
@@ -10854,7 +10853,7 @@ const RichTextSendBox = (props) => {
10854
10853
  , {
10855
10854
  // in case when format bar is shown, the editor is re-rendered that causes the content to be lost
10856
10855
  // setting the content will ensure that the latest content is used when editor is re-rendered
10857
- content: contentValue, placeholderText: strings.placeholderText, onChange: setContent, onEnterKeyDown: sendMessageOnClick, editorComponentRef: editorComponentRef, strings: strings, disabled: disabled, actionComponents: sendButton, richTextEditorStyleProps: sendBoxRichTextEditorStyle,
10856
+ content: contentValue, placeholderText: strings.placeholderText, autoFocus: autoFocus, onChange: setContent, onEnterKeyDown: sendMessageOnClick, onTyping: onTyping, editorComponentRef: editorComponentRef, strings: strings, disabled: disabled, actionComponents: sendButton, richTextEditorStyleProps: sendBoxRichTextEditorStyle,
10858
10857
  /* @conditional-compile-remove(attachment-upload) */
10859
10858
  onRenderAttachmentUploads: onRenderAttachmentUploads,
10860
10859
  /* @conditional-compile-remove(attachment-upload) */
@@ -12048,9 +12047,13 @@ const BlockedMessageContent = (props) => {
12048
12047
  blockedMessageLink && (React.createElement(react.Link, { target: '_blank', href: blockedMessageLink }, blockedMessageLinkText))) }));
12049
12048
  };
12050
12049
  const extractContentForAllyMessage = (props) => {
12051
- if (props.message.content) {
12050
+ var _a;
12051
+ let attachments = undefined;
12052
+ /* @conditional-compile-remove(attachment-download) */
12053
+ attachments = props.message.attachments;
12054
+ if (props.message.content || attachments) {
12052
12055
  // Replace all <img> tags with 'image' for aria.
12053
- const parsedContent = DOMPurify.sanitize(props.message.content, {
12056
+ const parsedContent = DOMPurify.sanitize((_a = props.message.content) !== null && _a !== void 0 ? _a : '', {
12054
12057
  ALLOWED_TAGS: ['img'],
12055
12058
  RETURN_DOM_FRAGMENT: true
12056
12059
  });
@@ -12062,6 +12065,15 @@ const extractContentForAllyMessage = (props) => {
12062
12065
  imageTextNode.innerHTML = 'image ';
12063
12066
  parsedContent.replaceChild(imageTextNode, child);
12064
12067
  });
12068
+ // Inject attachment names for aria.
12069
+ if (attachments) {
12070
+ let attachmentList = '';
12071
+ /* @conditional-compile-remove(attachment-download) */
12072
+ attachmentList = attachmentCardGroupDescription(props);
12073
+ const attachmentTextNode = document.createElement('div');
12074
+ attachmentTextNode.innerHTML = ` ${attachmentList} `;
12075
+ parsedContent.appendChild(attachmentTextNode);
12076
+ }
12065
12077
  // Strip all html tags from the content for aria.
12066
12078
  const message = DOMPurify.sanitize(parsedContent, { ALLOWED_TAGS: [] });
12067
12079
  return message;
@@ -12083,6 +12095,23 @@ const messageContentAriaText = (props) => {
12083
12095
  message: message
12084
12096
  });
12085
12097
  };
12098
+ /* @conditional-compile-remove(attachment-download) */
12099
+ const attachmentCardGroupDescription = (props) => {
12100
+ const attachments = props.message.attachments;
12101
+ return getAttachmentCountLiveMessage(attachments !== null && attachments !== void 0 ? attachments : [], props.strings.attachmentCardGroupMessage);
12102
+ };
12103
+ /* @conditional-compile-remove(attachment-download) */
12104
+ /**
12105
+ * @private
12106
+ */
12107
+ const getAttachmentCountLiveMessage = (attachments, attachmentCardGroupMessage) => {
12108
+ if (attachments.length === 0) {
12109
+ return '';
12110
+ }
12111
+ return _formatString(attachmentCardGroupMessage, {
12112
+ attachmentCount: `${attachments.length}`
12113
+ });
12114
+ };
12086
12115
  const defaultOnRenderInlineImage = (inlineImage) => {
12087
12116
  return (React.createElement("img", Object.assign({ key: inlineImage.imageAttributes.id, tabIndex: 0, "data-ui-id": inlineImage.imageAttributes.id }, inlineImage.imageAttributes)));
12088
12117
  };
@@ -12154,12 +12183,9 @@ const _AttachmentDownloadCards = (props) => {
12154
12183
  return (_b = (_a = props.strings) === null || _a === void 0 ? void 0 : _a.downloadAttachment) !== null && _b !== void 0 ? _b : localeStrings.downloadAttachment;
12155
12184
  }, [(_a = props.strings) === null || _a === void 0 ? void 0 : _a.downloadAttachment, localeStrings.downloadAttachment]);
12156
12185
  const attachmentCardGroupDescription = React.useMemo(() => () => {
12157
- var _a, _b, _c;
12158
- const attachmentGroupLocaleString = (_b = (_a = props.strings) === null || _a === void 0 ? void 0 : _a.attachmentCardGroupMessage) !== null && _b !== void 0 ? _b : localeStrings.attachmentCardGroupMessage;
12159
- /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
12160
- return _formatString(attachmentGroupLocaleString, {
12161
- attachmentCount: `${(_c = attachments === null || attachments === void 0 ? void 0 : attachments.length) !== null && _c !== void 0 ? _c : 0}`
12162
- });
12186
+ var _a, _b;
12187
+ /* @conditional-compile-remove(attachment-download) */
12188
+ return getAttachmentCountLiveMessage(attachments !== null && attachments !== void 0 ? attachments : [], (_b = (_a = props.strings) === null || _a === void 0 ? void 0 : _a.attachmentCardGroupMessage) !== null && _b !== void 0 ? _b : localeStrings.attachmentCardGroupMessage);
12163
12189
  }, [(_b = props.strings) === null || _b === void 0 ? void 0 : _b.attachmentCardGroupMessage, localeStrings.attachmentCardGroupMessage, attachments]);
12164
12190
  if (!attachments || attachments.length === 0 || !attachments) {
12165
12191
  return React.createElement(React.Fragment, null);
@@ -12628,7 +12654,7 @@ const ChatMessageComponentAsEditBox = (props) => {
12628
12654
  // Copyright (c) Microsoft Corporation.
12629
12655
  // Licensed under the MIT License.
12630
12656
  /* @conditional-compile-remove(rich-text-editor) */
12631
- const ChatMessageComponentAsRichTextEditBox = React.lazy(() => Promise.resolve().then(function () { return require('./ChatMessageComponentAsRichTextEditBox-CkXr0tIb.js'); }).then((module) => ({
12657
+ const ChatMessageComponentAsRichTextEditBox = React.lazy(() => Promise.resolve().then(function () { return require('./ChatMessageComponentAsRichTextEditBox-BXHOj2Z6.js'); }).then((module) => ({
12632
12658
  default: module.ChatMessageComponentAsRichTextEditBox
12633
12659
  })));
12634
12660
  /**
@@ -15254,71 +15280,6 @@ function useLongPress(props) {
15254
15280
  ]);
15255
15281
  }
15256
15282
 
15257
- // Copyright (c) Microsoft Corporation.
15258
- // Licensed under the MIT License.
15259
- /**
15260
- * @private
15261
- */
15262
- const videoGalleryOuterDivStyle = react.mergeStyles({ position: 'relative', width: '100%', height: '100%' });
15263
- /**
15264
- * @private
15265
- */
15266
- const localVideoCameraCycleButtonStyles = (theme, size) => {
15267
- return {
15268
- root: {
15269
- position: 'absolute',
15270
- width: size === 'large' ? _pxToRem(40) : _pxToRem(32),
15271
- height: size === 'large' ? _pxToRem(40) : _pxToRem(32),
15272
- right: '0rem',
15273
- top: '0rem',
15274
- color: '#FFFFFF', // only shows up on running video feed to we want to force specific colours.
15275
- zIndex: 2, // shows the button directly over the local video feed.
15276
- background: 'rgba(0,0,0,0.4)',
15277
- borderRadius: theme.effects.roundedCorner2
15278
- },
15279
- rootFocused: {
15280
- // styles to remove the unwanted white highlight and blue colour after tapping on button.
15281
- color: '#FFFFFF',
15282
- background: 'rgba(0,0,0,0.4)' // sets opacity of background to be visible on all backdrops in video stream.
15283
- },
15284
- rootDisabled: {
15285
- // In the disabled state, FluentUI sets the position to relative. We need to override this to keep the button correctly positioned.
15286
- position: 'absolute'
15287
- },
15288
- icon: {
15289
- paddingLeft: _pxToRem(3),
15290
- paddingRight: _pxToRem(3),
15291
- margin: 0
15292
- },
15293
- flexContainer: {
15294
- paddingBottom: _pxToRem(8),
15295
- height: 'unset'
15296
- }
15297
- };
15298
- };
15299
- /**
15300
- * @private
15301
- */
15302
- const localVideoTileContainerStyles = {
15303
- root: { width: '100%', height: '100%' }
15304
- };
15305
- /**
15306
- * @private
15307
- */
15308
- //TODO Can be removed once the overlay mitigation has been implemented at the SDK layer
15309
- const pptLiveOverlayStyles = {
15310
- root: {
15311
- position: 'absolute',
15312
- top: 0,
15313
- left: 0,
15314
- width: '100%',
15315
- height: '100%',
15316
- backgroundColor: 'transparent',
15317
- pointerEvents: 'none',
15318
- zIndex: 0
15319
- }
15320
- };
15321
-
15322
15283
  // Copyright (c) Microsoft Corporation.
15323
15284
  // Licensed under the MIT License.
15324
15285
  // Coin max size is set to PersonaSize.size100
@@ -15440,9 +15401,6 @@ const VideoTile = (props) => {
15440
15401
  }) }, onRenderPlaceholder ? (onRenderPlaceholder(userId !== null && userId !== void 0 ? userId : '', placeholderOptions, DefaultPlaceholder)) : (React.createElement(DefaultPlaceholder, Object.assign({}, placeholderOptions))))),
15441
15402
  /* @conditional-compile-remove(reaction) */
15442
15403
  reactionOverlay,
15443
- /* @conditional-compile-remove(ppt-live) */
15444
- // TODO Can be removed once the overlay mitigation has been implemented at the SDK layer
15445
- React.createElement(react.Stack, { className: react.mergeStyles(videoContainerStyles, pptLiveOverlayStyles) }),
15446
15404
  (canShowLabel || participantStateString) && (React.createElement(react.Stack, { horizontal: true, className: tileInfoContainerStyle, tokens: tileInfoContainerTokens },
15447
15405
  React.createElement(react.Stack, { horizontal: true, className: tileInfoStyle },
15448
15406
  canShowLabel && (React.createElement(react.Text, { className: react.mergeStyles(displayNameStyle), title: displayName, style: { color: participantStateString ? theme.palette.neutralSecondary : 'inherit' }, "data-ui-id": "video-tile-display-name" }, displayName)),
@@ -16175,11 +16133,11 @@ const MeetingReactionOverlay = (props) => {
16175
16133
  return () => currentObserver.disconnect();
16176
16134
  }, [videoTileRef]);
16177
16135
  if (overlayMode === 'grid-tiles') {
16178
- return (React.createElement("div", { ref: videoTileRef, style: { width: '100%', height: '100%' } },
16136
+ return (React.createElement("div", { ref: videoTileRef, style: { width: '100%', height: '100%', pointerEvents: 'none' } },
16179
16137
  React.createElement(ParticipantVideoTileOverlay, { emojiSize: emojiSizePx, reaction: reaction, reactionResources: reactionResources })));
16180
16138
  }
16181
16139
  else if (props.overlayMode === 'screen-share' || props.overlayMode === 'content-share') {
16182
- return (React.createElement("div", { ref: videoTileRef, style: { width: '100%', height: '100%' } },
16140
+ return (React.createElement("div", { ref: videoTileRef, style: { width: '100%', height: '100%', pointerEvents: 'none' } },
16183
16141
  React.createElement(RemoteContentShareReactionOverlay, { hostDivHeight: divHeight, hostDivWidth: divWidth, reactionResources: reactionResources, localParticipant: localParticipant, remoteParticipants: remoteParticipants })));
16184
16142
  }
16185
16143
  else {
@@ -16448,6 +16406,55 @@ const LoadingSpinner = (props) => {
16448
16406
  React.createElement(react.Spinner, { label: props.loadingMessage, size: react.SpinnerSize.xSmall, "aria-live": 'assertive' })));
16449
16407
  };
16450
16408
 
16409
+ // Copyright (c) Microsoft Corporation.
16410
+ // Licensed under the MIT License.
16411
+ /**
16412
+ * @private
16413
+ */
16414
+ const videoGalleryOuterDivStyle = react.mergeStyles({ position: 'relative', width: '100%', height: '100%' });
16415
+ /**
16416
+ * @private
16417
+ */
16418
+ const localVideoCameraCycleButtonStyles = (theme, size) => {
16419
+ return {
16420
+ root: {
16421
+ position: 'absolute',
16422
+ width: size === 'large' ? _pxToRem(40) : _pxToRem(32),
16423
+ height: size === 'large' ? _pxToRem(40) : _pxToRem(32),
16424
+ right: '0rem',
16425
+ top: '0rem',
16426
+ color: '#FFFFFF', // only shows up on running video feed to we want to force specific colours.
16427
+ zIndex: 2, // shows the button directly over the local video feed.
16428
+ background: 'rgba(0,0,0,0.4)',
16429
+ borderRadius: theme.effects.roundedCorner2
16430
+ },
16431
+ rootFocused: {
16432
+ // styles to remove the unwanted white highlight and blue colour after tapping on button.
16433
+ color: '#FFFFFF',
16434
+ background: 'rgba(0,0,0,0.4)' // sets opacity of background to be visible on all backdrops in video stream.
16435
+ },
16436
+ rootDisabled: {
16437
+ // In the disabled state, FluentUI sets the position to relative. We need to override this to keep the button correctly positioned.
16438
+ position: 'absolute'
16439
+ },
16440
+ icon: {
16441
+ paddingLeft: _pxToRem(3),
16442
+ paddingRight: _pxToRem(3),
16443
+ margin: 0
16444
+ },
16445
+ flexContainer: {
16446
+ paddingBottom: _pxToRem(8),
16447
+ height: 'unset'
16448
+ }
16449
+ };
16450
+ };
16451
+ /**
16452
+ * @private
16453
+ */
16454
+ const localVideoTileContainerStyles = {
16455
+ root: { width: '100%', height: '100%' }
16456
+ };
16457
+
16451
16458
  // Copyright (c) Microsoft Corporation.
16452
16459
  // Licensed under the MIT License.
16453
16460
  var __awaiter$A = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -27107,29 +27114,30 @@ const ChatScreen = (props) => {
27107
27114
  setIsImageOverlayOpen(true);
27108
27115
  setOverlayImageItem(overlayImage);
27109
27116
  }, [adapter, onRenderAvatarCallback, userId]);
27110
- const inlineImageOptions = {
27111
- onRenderInlineImage: (inlineImage, defaultOnRender) => {
27112
- var _a, _b;
27113
- const message = adapter.getState().thread.chatMessages[inlineImage.messageId];
27114
- const attachment = (_b = (_a = message === null || message === void 0 ? void 0 : message.content) === null || _a === void 0 ? void 0 : _a.attachments) === null || _b === void 0 ? void 0 : _b.find((attachment) => attachment.id === inlineImage.imageAttributes.id);
27115
- if (attachment === undefined) {
27116
- return defaultOnRender(inlineImage);
27117
- }
27118
- let pointerEvents = inlineImage.imageAttributes.src === '' ? 'none' : 'auto';
27119
- const resourceCache = message.resourceCache;
27120
- if (resourceCache &&
27121
- attachment.previewUrl &&
27122
- resourceCache[attachment.previewUrl] &&
27123
- resourceCache[attachment.previewUrl].error) {
27124
- pointerEvents = 'none';
27125
- }
27126
- return (React.createElement("span", { key: inlineImage.imageAttributes.id, onClick: () => onInlineImageClicked(inlineImage.imageAttributes.id || '', inlineImage.messageId), tabIndex: 0, role: "button", onKeyDown: (e) => {
27127
- if (e.key === 'Enter') {
27128
- onInlineImageClicked(inlineImage.imageAttributes.id || '', inlineImage.messageId);
27129
- }
27130
- }, style: { cursor: 'pointer', pointerEvents } }, defaultOnRender(inlineImage)));
27117
+ const onRenderInlineImage = React.useCallback((inlineImage, defaultOnRender) => {
27118
+ var _a, _b;
27119
+ const message = adapter.getState().thread.chatMessages[inlineImage.messageId];
27120
+ const attachment = (_b = (_a = message === null || message === void 0 ? void 0 : message.content) === null || _a === void 0 ? void 0 : _a.attachments) === null || _b === void 0 ? void 0 : _b.find((attachment) => attachment.id === inlineImage.imageAttributes.id);
27121
+ if (attachment === undefined) {
27122
+ return defaultOnRender(inlineImage);
27131
27123
  }
27132
- };
27124
+ let pointerEvents = inlineImage.imageAttributes.src === '' ? 'none' : 'auto';
27125
+ const resourceCache = message.resourceCache;
27126
+ if (resourceCache &&
27127
+ attachment.previewUrl &&
27128
+ resourceCache[attachment.previewUrl] &&
27129
+ resourceCache[attachment.previewUrl].error) {
27130
+ pointerEvents = 'none';
27131
+ }
27132
+ return (React.createElement("span", { key: inlineImage.imageAttributes.id, onClick: () => onInlineImageClicked(inlineImage.imageAttributes.id || '', inlineImage.messageId), tabIndex: 0, role: "button", onKeyDown: (e) => {
27133
+ if (e.key === 'Enter') {
27134
+ onInlineImageClicked(inlineImage.imageAttributes.id || '', inlineImage.messageId);
27135
+ }
27136
+ }, style: { cursor: 'pointer', pointerEvents } }, defaultOnRender(inlineImage)));
27137
+ }, [adapter, onInlineImageClicked]);
27138
+ const inlineImageOptions = React.useMemo(() => {
27139
+ return { onRenderInlineImage: onRenderInlineImage };
27140
+ }, [onRenderInlineImage]);
27133
27141
  const onDownloadButtonClicked = React.useCallback((imageSrc) => {
27134
27142
  if (imageSrc === '') {
27135
27143
  return;
@@ -27624,7 +27632,6 @@ const getCallCompositePage = (call, previousCall, transferCall, unsupportedBrows
27624
27632
  if (isUnsupportedEnvironment(unsupportedBrowserInfo === null || unsupportedBrowserInfo === void 0 ? void 0 : unsupportedBrowserInfo.environmentInfo, unsupportedBrowserInfo === null || unsupportedBrowserInfo === void 0 ? void 0 : unsupportedBrowserInfo.unsupportedBrowserVersionOptedIn)) {
27625
27633
  return 'unsupportedEnvironment';
27626
27634
  }
27627
- /* @conditional-compile-remove(call-transfer) */
27628
27635
  if (transferCall !== undefined) {
27629
27636
  return 'transferring';
27630
27637
  }
@@ -28577,7 +28584,6 @@ const getRole = (state) => { var _a; return (_a = state.call) === null || _a ===
28577
28584
  * @private
28578
28585
  */
28579
28586
  const getPage = (state) => state.page;
28580
- /* @conditional-compile-remove(call-transfer) */
28581
28587
  /**
28582
28588
  * @private
28583
28589
  */
@@ -34699,51 +34705,40 @@ const TransferPage = (props) => {
34699
34705
  const errorBarProps = usePropsFor$1(ErrorBar);
34700
34706
  const strings = useLocale().strings.call;
34701
34707
  const remoteParticipants = useSelector$1(getRemoteParticipants);
34702
- /* @conditional-compile-remove(call-transfer) */
34703
34708
  const transferCall = useSelector$1(getTransferCall);
34704
- /* @conditional-compile-remove(call-transfer) */
34705
34709
  const [announcerString, setAnnouncerString] = React.useState(undefined);
34706
34710
  // Reduce the controls shown when mobile view is enabled.
34707
34711
  const callControlOptions = props.mobileView
34708
34712
  ? reduceCallControlsForMobile((_a = props.options) === null || _a === void 0 ? void 0 : _a.callControls)
34709
34713
  : (_b = props.options) === null || _b === void 0 ? void 0 : _b.callControls;
34710
34714
  const transferor = React.useMemo(() => { var _a; return (remoteParticipants ? (_a = Object.values(remoteParticipants)) === null || _a === void 0 ? void 0 : _a[0] : undefined); }, [remoteParticipants]);
34711
- /* @conditional-compile-remove(call-transfer) */
34712
34715
  const transferTarget = React.useMemo(() => { var _a; return ((transferCall === null || transferCall === void 0 ? void 0 : transferCall.remoteParticipants) ? (_a = Object.values(transferCall.remoteParticipants)) === null || _a === void 0 ? void 0 : _a[0] : undefined); }, [transferCall]);
34713
- /* @conditional-compile-remove(call-transfer) */
34714
34716
  const pageSubject = React.useMemo(() => {
34715
34717
  if (transferCall && (transferTarget === null || transferTarget === void 0 ? void 0 : transferTarget.displayName)) {
34716
34718
  return 'transferTarget';
34717
34719
  }
34718
34720
  return 'transferor';
34719
34721
  }, [transferCall, transferTarget === null || transferTarget === void 0 ? void 0 : transferTarget.displayName]);
34720
- /* @conditional-compile-remove(call-transfer) */
34721
34722
  React.useEffect(() => {
34722
34723
  setAnnouncerString(strings.transferPageNoticeString);
34723
34724
  }, [strings.transferPageNoticeString]);
34724
34725
  let transferTileParticipant = transferor;
34725
- /* @conditional-compile-remove(call-transfer) */
34726
34726
  if (pageSubject === 'transferTarget') {
34727
34727
  transferTileParticipant = transferTarget;
34728
34728
  }
34729
- let transferParticipantDisplayName = (_c = transferor === null || transferor === void 0 ? void 0 : transferor.displayName) !== null && _c !== void 0 ? _c :
34730
- /* @conditional-compile-remove(call-transfer) */ strings.transferPageUnknownTransferorDisplayName;
34731
- /* @conditional-compile-remove(call-transfer) */
34729
+ let transferParticipantDisplayName = (_c = transferor === null || transferor === void 0 ? void 0 : transferor.displayName) !== null && _c !== void 0 ? _c : strings.transferPageUnknownTransferorDisplayName;
34732
34730
  if (pageSubject === 'transferTarget') {
34733
34731
  transferParticipantDisplayName =
34734
34732
  (_d = transferTarget === null || transferTarget === void 0 ? void 0 : transferTarget.displayName) !== null && _d !== void 0 ? _d : strings.transferPageUnknownTransferTargetDisplayName;
34735
34733
  }
34736
34734
  return (React.createElement(react.Stack, { className: react.mergeStyles(pageContainer) },
34737
- /* @conditional-compile-remove(call-transfer) */
34738
34735
  React.createElement(Announcer$1, { announcementString: announcerString, ariaLive: "polite" }),
34739
34736
  React.createElement(CallArrangement, { complianceBannerProps: { strings },
34740
34737
  // Ignore errors from before current call. This avoids old errors from showing up when a user re-joins a call.
34741
34738
  errorBarProps: ((_e = props.options) === null || _e === void 0 ? void 0 : _e.errorBar) !== false && errorBarProps, callControlProps: {
34742
34739
  options: callControlOptions,
34743
34740
  increaseFlyoutItemSize: props.mobileView
34744
- }, 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,
34745
- /* @conditional-compile-remove(call-transfer) */
34746
- statusText: pageSubject === 'transferTarget'
34741
+ }, 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'
34747
34742
  ? strings.transferPageTransferTargetText
34748
34743
  : strings.transferPageTransferorText, onFetchAvatarPersonaData: props.onFetchAvatarPersonaData })), dataUiId: 'transfer-page', updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, latestErrors: props.latestErrors, onDismissError: props.onDismissError })));
34749
34744
  };
@@ -35556,7 +35551,6 @@ const MainScreen = (props) => {
35556
35551
  case 'lobby':
35557
35552
  pageElement = (React.createElement(LobbyPage, { mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, options: props.options, updateSidePaneRenderer: setSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, latestErrors: latestErrors, onDismissError: onDismissError, capabilitiesChangedNotificationBarProps: capabilitiesChangedNotificationBarProps }));
35558
35553
  break;
35559
- /* @conditional-compile-remove(call-transfer) */
35560
35554
  case 'transferring':
35561
35555
  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 }));
35562
35556
  break;
@@ -35953,14 +35947,11 @@ class CallContext {
35953
35947
  environmentInfo: this.state.environmentInfo,
35954
35948
  unsupportedBrowserVersionOptedIn: this.state.unsupportedBrowserVersionsAllowed
35955
35949
  };
35956
- /* @conditional-compile-remove(call-transfer) */
35957
35950
  const latestAcceptedTransfer = (call === null || call === void 0 ? void 0 : call.transfer.acceptedTransfers)
35958
35951
  ? findLatestAcceptedTransfer(call.transfer.acceptedTransfers)
35959
35952
  : undefined;
35960
- /* @conditional-compile-remove(call-transfer) */
35961
35953
  const transferCall = latestAcceptedTransfer ? clientState.calls[latestAcceptedTransfer.callId] : undefined;
35962
- const newPage = getCallCompositePage(call, latestEndedCall,
35963
- /* @conditional-compile-remove(call-transfer) */ transferCall,
35954
+ const newPage = getCallCompositePage(call, latestEndedCall, transferCall,
35964
35955
  /* @conditional-compile-remove(unsupported-browser) */ environmentInfo);
35965
35956
  if (!IsCallEndedPage(oldPage) && IsCallEndedPage(newPage)) {
35966
35957
  this.emitter.emit('callEnded', { callId: this.callId });
@@ -35973,8 +35964,7 @@ class CallContext {
35973
35964
  this.setState(Object.assign(Object.assign({}, this.state), { userId: clientState.userId, displayName: (_a = clientState.callAgent) === null || _a === void 0 ? void 0 : _a.displayName, call, page: newPage, endedCall: latestEndedCall, devices: clientState.deviceManager, latestErrors: clientState.latestErrors, cameraStatus: (call === null || call === void 0 ? void 0 : call.localVideoStreams.find((s) => s.mediaStreamType === 'Video')) ||
35974
35965
  clientState.deviceManager.unparentedViews.find((s) => s.mediaStreamType === 'Video')
35975
35966
  ? 'On'
35976
- : 'Off',
35977
- /* @conditional-compile-remove(call-transfer) */ acceptedTransferCallState: transferCall }));
35967
+ : 'Off', acceptedTransferCallState: transferCall }));
35978
35968
  }
35979
35969
  }
35980
35970
  /* @conditional-compile-remove(unsupported-browser) */
@@ -35987,7 +35977,6 @@ class CallContext {
35987
35977
  setSelectedVideoBackgroundEffect(selectedVideoBackgroundEffect) {
35988
35978
  this.setState(Object.assign(Object.assign({}, this.state), { selectedVideoBackgroundEffect }));
35989
35979
  }
35990
- /* @conditional-compile-remove(call-transfer) */
35991
35980
  setAcceptedTransferCall(call) {
35992
35981
  this.setState(Object.assign(Object.assign({}, this.state), { acceptedTransferCallState: call }));
35993
35982
  }
@@ -36006,7 +35995,6 @@ const findLatestEndedCall = (calls) => {
36006
35995
  }
36007
35996
  return latestCall;
36008
35997
  };
36009
- /* @conditional-compile-remove(call-transfer) */
36010
35998
  const findLatestAcceptedTransfer = (acceptedTransfers) => {
36011
35999
  var _a, _b, _c, _d;
36012
36000
  const acceptedTransferValues = Object.values(acceptedTransfers);
@@ -36092,7 +36080,6 @@ class AzureCommunicationCallAdapter {
36092
36080
  this.onClientStateChange = onStateChange;
36093
36081
  this.subscribeDeviceManagerEvents();
36094
36082
  this.callClient.onStateChange(onStateChange);
36095
- /* @conditional-compile-remove(call-transfer) */
36096
36083
  if (this.callAgent.kind === 'CallAgent') {
36097
36084
  const onCallsUpdated = (args) => {
36098
36085
  var _a;
@@ -36753,7 +36740,6 @@ class AzureCommunicationCallAdapter {
36753
36740
  /* @conditional-compile-remove(close-captions) */
36754
36741
  (_e = this.call) === null || _e === void 0 ? void 0 : _e.on('stateChanged', this.subscribeToCaptionEvents.bind(this));
36755
36742
  (_f = this.call) === null || _f === void 0 ? void 0 : _f.on('roleChanged', this.roleChanged.bind(this));
36756
- /* @conditional-compile-remove(call-transfer) */
36757
36743
  (_g = this.call) === null || _g === void 0 ? void 0 : _g.feature(communicationCalling.Features.Transfer).on('transferAccepted', this.transferAccepted.bind(this));
36758
36744
  (_h = this.call) === null || _h === void 0 ? void 0 : _h.feature(communicationCalling.Features.Capabilities).on('capabilitiesChanged', this.capabilitiesChanged.bind(this));
36759
36745
  /* @conditional-compile-remove(spotlight) */
@@ -36828,7 +36814,6 @@ class AzureCommunicationCallAdapter {
36828
36814
  activeCaptionLanguage: captionsFeature.activeCaptionLanguage
36829
36815
  });
36830
36816
  }
36831
- /* @conditional-compile-remove(call-transfer) */
36832
36817
  transferAccepted(args) {
36833
36818
  this.emitter.emit('transferAccepted', args);
36834
36819
  }
@@ -39599,4 +39584,4 @@ exports.useTeamsCall = useTeamsCall;
39599
39584
  exports.useTeamsCallAdapter = useTeamsCallAdapter;
39600
39585
  exports.useTeamsCallAgent = useTeamsCallAgent;
39601
39586
  exports.useTheme = useTheme;
39602
- //# sourceMappingURL=index-BcyLWrGT.js.map
39587
+ //# sourceMappingURL=index-D5L3GDY8.js.map