@azure/communication-react 1.5.1-alpha-202304010014 → 1.5.1-alpha-202304020014

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 (26) hide show
  1. package/dist/dist-cjs/communication-react/index.js +141 -79
  2. package/dist/dist-cjs/communication-react/index.js.map +1 -1
  3. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  4. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  5. package/dist/dist-esm/react-components/src/components/CameraButton.js +28 -25
  6. package/dist/dist-esm/react-components/src/components/CameraButton.js.map +1 -1
  7. package/dist/dist-esm/react-components/src/components/Caption.d.ts +21 -0
  8. package/dist/dist-esm/react-components/src/components/Caption.js +32 -0
  9. package/dist/dist-esm/react-components/src/components/Caption.js.map +1 -0
  10. package/dist/dist-esm/react-components/src/components/CaptionsBanner.js +31 -29
  11. package/dist/dist-esm/react-components/src/components/CaptionsBanner.js.map +1 -1
  12. package/dist/dist-esm/react-components/src/components/index.d.ts +1 -0
  13. package/dist/dist-esm/react-components/src/components/index.js +1 -0
  14. package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
  15. package/dist/dist-esm/react-components/src/components/styles/Captions.style.d.ts +21 -0
  16. package/dist/dist-esm/react-components/src/components/styles/Captions.style.js +41 -0
  17. package/dist/dist-esm/react-components/src/components/styles/Captions.style.js.map +1 -0
  18. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +1 -1
  19. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
  20. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.d.ts +1 -0
  21. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js +100 -41
  22. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js.map +1 -1
  23. package/package.json +8 -8
  24. package/dist/dist-esm/react-components/src/components/styles/CaptionsBanner.style.d.ts +0 -13
  25. package/dist/dist-esm/react-components/src/components/styles/CaptionsBanner.style.js +0 -35
  26. package/dist/dist-esm/react-components/src/components/styles/CaptionsBanner.style.js.map +0 -1
@@ -162,7 +162,7 @@ const _toCommunicationIdentifier = (id) => {
162
162
  // Copyright (c) Microsoft Corporation.
163
163
  // Licensed under the MIT license.
164
164
  // GENERATED FILE. DO NOT EDIT MANUALLY.
165
- var telemetryVersion = '1.5.1-alpha-202304010014';
165
+ var telemetryVersion = '1.5.1-alpha-202304020014';
166
166
 
167
167
  // Copyright (c) Microsoft Corporation.
168
168
  /**
@@ -11886,37 +11886,40 @@ const CameraButton = (props) => {
11886
11886
  }
11887
11887
  }
11888
11888
  }), [cameraOn, localVideoViewOptions, onToggleCamera, toggleAnnouncerString]);
11889
+ const splitButtonMenuItems = [
11890
+ {
11891
+ key: 'cameraPrimaryAction',
11892
+ text: props.checked ? strings.onSplitButtonPrimaryActionCamera : strings.offSplitButtonPrimaryActionCamera,
11893
+ onClick: () => {
11894
+ onToggleClick();
11895
+ },
11896
+ iconProps: {
11897
+ iconName: props.checked ? 'SplitButtonPrimaryActionCameraOn' : 'SplitButtonPrimaryActionCameraOff',
11898
+ styles: { root: { lineHeight: 0 } }
11899
+ }
11900
+ }
11901
+ ];
11902
+ /* @conditional-compile-remove(video-background-effects) */
11903
+ if (props.onShowVideoEffectsPicker) {
11904
+ splitButtonMenuItems.push({
11905
+ key: 'effects',
11906
+ text: 'Effects',
11907
+ title: 'Video Effects',
11908
+ iconProps: { iconName: 'OptionsVideoBackgroundEffect', styles: { root: { lineHeight: 0 } } },
11909
+ onClick: () => {
11910
+ if (props.onShowVideoEffectsPicker) {
11911
+ props.onShowVideoEffectsPicker(true);
11912
+ }
11913
+ }
11914
+ });
11915
+ }
11889
11916
  const splitButtonPrimaryAction = {
11890
11917
  key: 'primaryAction',
11891
11918
  title: 'toggle camera',
11892
11919
  itemType: react.ContextualMenuItemType.Section,
11893
11920
  sectionProps: {
11894
11921
  topDivider: true,
11895
- items: [
11896
- {
11897
- key: 'cameraPrimaryAction',
11898
- text: props.checked ? strings.onSplitButtonPrimaryActionCamera : strings.offSplitButtonPrimaryActionCamera,
11899
- onClick: () => {
11900
- onToggleClick();
11901
- },
11902
- iconProps: {
11903
- iconName: props.checked ? 'SplitButtonPrimaryActionCameraOn' : 'SplitButtonPrimaryActionCameraOff',
11904
- styles: { root: { lineHeight: 0 } }
11905
- }
11906
- },
11907
- /* @conditional-compile-remove(video-background-effects) */
11908
- {
11909
- key: 'effects',
11910
- text: 'Effects',
11911
- title: 'Video Effects',
11912
- iconProps: { iconName: 'OptionsVideoBackgroundEffect', styles: { root: { lineHeight: 0 } } },
11913
- onClick: () => {
11914
- if (props.onShowVideoEffectsPicker) {
11915
- props.onShowVideoEffectsPicker(true);
11916
- }
11917
- }
11918
- }
11919
- ]
11922
+ items: splitButtonMenuItems
11920
11923
  }
11921
11924
  };
11922
11925
  return (React__default['default'].createElement(React__default['default'].Fragment, null,
@@ -13516,23 +13519,15 @@ const _VideoBackgroundEffectsPicker = (props) => {
13516
13519
  * @private
13517
13520
  */
13518
13521
  react.mergeStyles({
13519
- overflowY: 'scroll',
13520
- overflowX: 'hidden',
13521
- width: '100%',
13522
- height: _pxToRem(60),
13523
- display: 'grid',
13524
- gridTemplateColumns: 'auto 1fr',
13525
- alignItems: 'stretch',
13526
- columnGap: _pxToRem(16),
13527
- padding: _pxToRem(8)
13522
+ marginRight: _pxToRem(8)
13528
13523
  });
13529
13524
  /**
13530
13525
  * @private
13531
13526
  */
13532
13527
  react.mergeStyles({
13533
- fontWeight: 600,
13528
+ fontWeight: 400,
13534
13529
  fontSize: _pxToRem(12),
13535
- lineHeight: _pxToRem(30)
13530
+ lineHeight: _pxToRem(16)
13536
13531
  });
13537
13532
  /**
13538
13533
  * @private
@@ -13540,7 +13535,21 @@ react.mergeStyles({
13540
13535
  react.mergeStyles({
13541
13536
  fontWeight: 400,
13542
13537
  fontSize: _pxToRem(16),
13543
- lineHeight: _pxToRem(30)
13538
+ lineHeight: _pxToRem(22)
13539
+ });
13540
+ /**
13541
+ * @private
13542
+ */
13543
+ react.mergeStyles({
13544
+ marginTop: _pxToRem(6),
13545
+ marginBottom: _pxToRem(6)
13546
+ });
13547
+ /**
13548
+ * @private
13549
+ */
13550
+ react.mergeStyles({
13551
+ height: _pxToRem(100),
13552
+ overflow: 'scroll'
13544
13553
  });
13545
13554
 
13546
13555
  // Copyright (c) Microsoft Corporation.
@@ -19253,8 +19262,42 @@ const inferCommonCallControlOptions = (mobileView, commonCallControlOptions) =>
19253
19262
  const CommonCallControlBar = (props) => {
19254
19263
  var _a, _b, _c;
19255
19264
  const theme = react.useTheme();
19265
+ const controlBarContainerRef = React.useRef(null);
19266
+ const sidepaneControlsRef = React.useRef(null);
19267
+ const controlBarSizeRef = React.useRef(null);
19268
+ const [controlBarButtonsWidth, setControlBarButtonsWidth] = React.useState(0);
19269
+ const [panelsButtonsWidth, setPanelsButtonsWidth] = React.useState(0);
19270
+ const [controlBarContainerWidth, setControlBarContainerWidth] = React.useState(0);
19271
+ const [totalButtonsWidth, setTotalButtonsWidth] = React.useState(0);
19272
+ const [isOutOfSpace, setIsOutOfSpace] = React.useState(false);
19256
19273
  const callWithChatStrings = useCallWithChatCompositeStrings();
19257
19274
  const options = inferCommonCallControlOptions(props.mobileView, props.callControls);
19275
+ const handleResize = React.useCallback(() => {
19276
+ setControlBarButtonsWidth(controlBarContainerRef.current ? controlBarContainerRef.current.offsetWidth : 0);
19277
+ setPanelsButtonsWidth(sidepaneControlsRef.current ? sidepaneControlsRef.current.offsetWidth : 0);
19278
+ setControlBarContainerWidth(controlBarSizeRef.current ? controlBarSizeRef.current.offsetWidth : 0);
19279
+ }, []);
19280
+ // on load set inital width
19281
+ React.useEffect(() => {
19282
+ setControlBarButtonsWidth(controlBarContainerRef.current ? controlBarContainerRef.current.offsetWidth : 0);
19283
+ setPanelsButtonsWidth(sidepaneControlsRef.current ? sidepaneControlsRef.current.offsetWidth : 0);
19284
+ setControlBarContainerWidth(controlBarSizeRef.current ? controlBarSizeRef.current.offsetWidth : 0);
19285
+ }, []);
19286
+ // get the current width of control bar buttons and panel control buttons when browser size change
19287
+ React.useEffect(() => {
19288
+ window.addEventListener('resize', handleResize);
19289
+ return () => window.removeEventListener('resize', handleResize);
19290
+ }, [handleResize]);
19291
+ /* when size change, reset total buttons width and compare with the control bar container width
19292
+ if the total width of those buttons exceed container width, do not center the control bar buttons based on parent container width
19293
+ Instead let them take up the remaining white space on the left */
19294
+ React.useEffect(() => {
19295
+ // white space on the left when control bar buttons are centered based on container width + control bar buttons width + panel control buttons width
19296
+ setTotalButtonsWidth((controlBarContainerWidth - controlBarButtonsWidth) / 2 + controlBarButtonsWidth + panelsButtonsWidth);
19297
+ }, [controlBarButtonsWidth, panelsButtonsWidth, controlBarContainerWidth]);
19298
+ React.useEffect(() => {
19299
+ setIsOutOfSpace(totalButtonsWidth > controlBarContainerWidth);
19300
+ }, [totalButtonsWidth, controlBarContainerWidth]);
19258
19301
  const chatButtonStrings = React.useMemo(() => ({
19259
19302
  label: callWithChatStrings.chatButtonLabel,
19260
19303
  tooltipOffContent: callWithChatStrings.chatButtonTooltipOpen,
@@ -19281,6 +19324,11 @@ const CommonCallControlBar = (props) => {
19281
19324
  const screenShareButtonStyles = React.useMemo(() => (!props.mobileView ? getDesktopScreenShareButtonStyles(theme) : undefined), [props.mobileView, theme]);
19282
19325
  const commonButtonStyles = React.useMemo(() => (!props.mobileView ? getDesktopCommonButtonStyles(theme) : undefined), [props.mobileView, theme]);
19283
19326
  const endCallButtonStyles = React.useMemo(() => (!props.mobileView ? getDesktopEndCallButtonStyles(theme) : undefined), [props.mobileView, theme]);
19327
+ const controlBarWrapperDesktopStyles = React.useMemo(
19328
+ // only center control bar buttons based on parent container if there are enough space on the screen and not mobile
19329
+ () => (!props.mobileView && !isOutOfSpace ? (props.rtl ? wrapperDesktopRtlStyles : wrapperDesktopStyles) : {}), [props.mobileView, props.rtl, isOutOfSpace]);
19330
+ // only center control bar buttons based on parent container if there are enough space on the screen and not mobile
19331
+ const controlBarDesktopContainerStyles = React.useMemo(() => (!props.mobileView && !isOutOfSpace ? { position: 'relative' } : {}), [props.mobileView, isOutOfSpace]);
19284
19332
  /* @conditional-compile-remove(control-bar-button-injection) */
19285
19333
  const customButtons = React.useMemo(() => generateCustomCallControlBarButton(onFetchCustomButtonPropsTrampoline(options !== false ? options : undefined), options !== false ? options === null || options === void 0 ? void 0 : options.displayType : undefined), [options]);
19286
19334
  // when options is false then we want to hide the whole control bar.
@@ -19288,47 +19336,51 @@ const CommonCallControlBar = (props) => {
19288
19336
  return React__default['default'].createElement(React__default['default'].Fragment, null);
19289
19337
  }
19290
19338
  const chatButton = props.chatAdapter ? (React__default['default'].createElement(ChatButtonWithUnreadMessagesBadge, { chatAdapter: props.chatAdapter, checked: props.chatButtonChecked, showLabel: options.displayType !== 'compact', isChatPaneVisible: (_a = props.chatButtonChecked) !== null && _a !== void 0 ? _a : false, onClick: props.onChatButtonClicked, disabled: props.disableButtonsForLobbyPage || isDisabled$2(options.chatButton), strings: chatButtonStrings, styles: commonButtonStyles, newMessageLabel: callWithChatStrings.chatButtonNewMessageNotificationLabel })) : (React__default['default'].createElement(React__default['default'].Fragment, null));
19291
- return (React__default['default'].createElement(react.Stack, { horizontal: true, className: react.mergeStyles(callControlsContainerStyles, controlBarContainerStyles$1) },
19292
- React__default['default'].createElement(react.Stack.Item, { grow: true },
19293
- React__default['default'].createElement(CallAdapterProvider, { adapter: props.callAdapter },
19294
- React__default['default'].createElement(react.Stack, { horizontalAlign: "center" },
19295
- React__default['default'].createElement(HiddenFocusStartPoint, null),
19296
- React__default['default'].createElement(react.Stack.Item, null,
19297
- React__default['default'].createElement(ControlBar, { layout: "horizontal", styles: centerContainerStyles },
19298
- isEnabled$1(options.microphoneButton) && (React__default['default'].createElement(Microphone, { displayType: options.displayType, styles: commonButtonStyles, splitButtonsForDeviceSelection: !props.mobileView,
19299
- /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
19300
- disabled: props.disableButtonsForHoldScreen || isDisabled$2(options.microphoneButton) })),
19301
- isEnabled$1(options.cameraButton) && (React__default['default'].createElement(Camera, { displayType: options.displayType, styles: commonButtonStyles, splitButtonsForDeviceSelection: !props.mobileView,
19302
- /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
19303
- disabled: props.disableButtonsForHoldScreen || isDisabled$2(options.cameraButton),
19304
- /* @conditional-compile-remove(video-background-effects) */
19305
- onShowVideoEffectsPicker: props.onShowVideoEffectsPicker })),
19306
- props.mobileView && isEnabled$1(options === null || options === void 0 ? void 0 : options.chatButton) && chatButton,
19307
- isEnabled$1(options.screenShareButton) && (React__default['default'].createElement(ScreenShare, { option: options.screenShareButton, displayType: options.displayType, styles: screenShareButtonStyles,
19308
- /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
19309
- disabled: props.disableButtonsForHoldScreen || isDisabled$2(options.screenShareButton) })),
19310
- /* @conditional-compile-remove(control-bar-button-injection) */
19311
- (_b = customButtons['primary']) === null || _b === void 0 ? void 0 :
19312
- _b.slice(0, props.mobileView
19313
- ? CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_MOBILE_CUSTOM_BUTTONS
19314
- : CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_DESKTOP_CUSTOM_BUTTONS).map((CustomButton, i) => {
19315
- return (React__default['default'].createElement(CustomButton, { key: `primary-custom-button-${i}`, styles: commonButtonStyles, showLabel: options.displayType !== 'compact' }));
19316
- }),
19317
- props.mobileView && (React__default['default'].createElement(MoreButton, { "data-ui-id": "call-with-chat-composite-more-button", strings: moreButtonStrings, onClick: props.onMoreButtonClicked, disabled: props.disableButtonsForLobbyPage })),
19318
- /*@conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ isEnabled$1(options === null || options === void 0 ? void 0 : options.moreButton) &&
19319
- /*@conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ isEnabled$1(options === null || options === void 0 ? void 0 : options.holdButton) &&
19320
- !props.mobileView && (React__default['default'].createElement(DesktopMoreButton, { disableButtonsForHoldScreen: props.disableButtonsForHoldScreen, styles: commonButtonStyles, onClickShowDialpad: props.onClickShowDialpad,
19339
+ return (React__default['default'].createElement("div", { ref: controlBarSizeRef },
19340
+ React__default['default'].createElement(react.Stack, { horizontal: true, reversed: !props.mobileView && !isOutOfSpace, horizontalAlign: "space-between", className: react.mergeStyles(callControlsContainerStyles, controlBarContainerStyles$1, controlBarDesktopContainerStyles) },
19341
+ React__default['default'].createElement(react.Stack.Item, { grow: true, className: react.mergeStyles(controlBarWrapperDesktopStyles) },
19342
+ React__default['default'].createElement(CallAdapterProvider, { adapter: props.callAdapter },
19343
+ React__default['default'].createElement(react.Stack, { horizontalAlign: "center" },
19344
+ React__default['default'].createElement(HiddenFocusStartPoint, null),
19345
+ React__default['default'].createElement(react.Stack.Item, null,
19346
+ React__default['default'].createElement("div", { ref: controlBarContainerRef },
19347
+ React__default['default'].createElement(ControlBar, { layout: "horizontal", styles: centerContainerStyles },
19348
+ isEnabled$1(options.microphoneButton) && (React__default['default'].createElement(Microphone, { displayType: options.displayType, styles: commonButtonStyles, splitButtonsForDeviceSelection: !props.mobileView,
19349
+ /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
19350
+ disabled: props.disableButtonsForHoldScreen || isDisabled$2(options.microphoneButton) })),
19351
+ isEnabled$1(options.cameraButton) && (React__default['default'].createElement(Camera, { displayType: options.displayType, styles: commonButtonStyles, splitButtonsForDeviceSelection: !props.mobileView,
19352
+ /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
19353
+ disabled: props.disableButtonsForHoldScreen || isDisabled$2(options.cameraButton),
19354
+ /* @conditional-compile-remove(video-background-effects) */
19355
+ onShowVideoEffectsPicker: props.onShowVideoEffectsPicker })),
19356
+ props.mobileView && isEnabled$1(options === null || options === void 0 ? void 0 : options.chatButton) && chatButton,
19357
+ isEnabled$1(options.screenShareButton) && (React__default['default'].createElement(ScreenShare, { option: options.screenShareButton, displayType: options.displayType, styles: screenShareButtonStyles,
19358
+ /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
19359
+ disabled: props.disableButtonsForHoldScreen || isDisabled$2(options.screenShareButton) })),
19321
19360
  /* @conditional-compile-remove(control-bar-button-injection) */
19322
- callControls: props.callControls })),
19323
- React__default['default'].createElement(EndCall, { displayType: "compact", styles: endCallButtonStyles })))))),
19324
- !props.mobileView && (React__default['default'].createElement(react.Stack, { horizontal: true, className: !props.mobileView ? react.mergeStyles(desktopButtonContainerStyle) : undefined },
19325
- /* @conditional-compile-remove(control-bar-button-injection) */
19326
- (_c = customButtons['secondary']) === null || _c === void 0 ? void 0 :
19327
- _c.slice(0, CUSTOM_BUTTON_OPTIONS.MAX_SECONDARY_DESKTOP_CUSTOM_BUTTONS).map((CustomButton, i) => {
19328
- return (React__default['default'].createElement(CustomButton, { key: `secondary-custom-button-${i}`, styles: commonButtonStyles, showLabel: options.displayType !== 'compact' }));
19329
- }),
19330
- isEnabled$1(options === null || options === void 0 ? void 0 : options.peopleButton) && (React__default['default'].createElement(PeopleButton, { checked: props.peopleButtonChecked, ariaLabel: peopleButtonStrings === null || peopleButtonStrings === void 0 ? void 0 : peopleButtonStrings.label, showLabel: options.displayType !== 'compact', onClick: props.onPeopleButtonClicked, "data-ui-id": "call-with-chat-composite-people-button", disabled: props.disableButtonsForLobbyPage || isDisabled$2(options.peopleButton), strings: peopleButtonStrings, styles: commonButtonStyles })),
19331
- isEnabled$1(options === null || options === void 0 ? void 0 : options.chatButton) && chatButton))));
19361
+ (_b = customButtons['primary']) === null || _b === void 0 ? void 0 :
19362
+ _b.slice(0, props.mobileView
19363
+ ? CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_MOBILE_CUSTOM_BUTTONS
19364
+ : CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_DESKTOP_CUSTOM_BUTTONS).map((CustomButton, i) => {
19365
+ return (React__default['default'].createElement(CustomButton, { key: `primary-custom-button-${i}`, styles: commonButtonStyles, showLabel: options.displayType !== 'compact' }));
19366
+ }),
19367
+ props.mobileView && (React__default['default'].createElement(MoreButton, { "data-ui-id": "call-with-chat-composite-more-button", strings: moreButtonStrings, onClick: props.onMoreButtonClicked, disabled: props.disableButtonsForLobbyPage })),
19368
+ /*@conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ isEnabled$1(options === null || options === void 0 ? void 0 : options.moreButton) &&
19369
+ /*@conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ isEnabled$1(options === null || options === void 0 ? void 0 : options.holdButton) &&
19370
+ !props.mobileView && (React__default['default'].createElement(DesktopMoreButton, { disableButtonsForHoldScreen: props.disableButtonsForHoldScreen, styles: commonButtonStyles, onClickShowDialpad: props.onClickShowDialpad,
19371
+ /* @conditional-compile-remove(control-bar-button-injection) */
19372
+ callControls: props.callControls })),
19373
+ React__default['default'].createElement(EndCall, { displayType: "compact", styles: endCallButtonStyles }))))))),
19374
+ !props.mobileView && (React__default['default'].createElement(react.Stack.Item, null,
19375
+ React__default['default'].createElement("div", { ref: sidepaneControlsRef },
19376
+ React__default['default'].createElement(react.Stack, { horizontal: true, className: !props.mobileView ? react.mergeStyles(desktopButtonContainerStyle) : undefined },
19377
+ /* @conditional-compile-remove(control-bar-button-injection) */
19378
+ (_c = customButtons['secondary']) === null || _c === void 0 ? void 0 :
19379
+ _c.slice(0, CUSTOM_BUTTON_OPTIONS.MAX_SECONDARY_DESKTOP_CUSTOM_BUTTONS).map((CustomButton, i) => {
19380
+ return (React__default['default'].createElement(CustomButton, { key: `secondary-custom-button-${i}`, styles: commonButtonStyles, showLabel: options.displayType !== 'compact' }));
19381
+ }),
19382
+ isEnabled$1(options === null || options === void 0 ? void 0 : options.peopleButton) && (React__default['default'].createElement(PeopleButton, { checked: props.peopleButtonChecked, ariaLabel: peopleButtonStrings === null || peopleButtonStrings === void 0 ? void 0 : peopleButtonStrings.label, showLabel: options.displayType !== 'compact', onClick: props.onPeopleButtonClicked, "data-ui-id": "call-with-chat-composite-people-button", disabled: props.disableButtonsForLobbyPage || isDisabled$2(options.peopleButton), strings: peopleButtonStrings, styles: commonButtonStyles })),
19383
+ isEnabled$1(options === null || options === void 0 ? void 0 : options.chatButton) && chatButton)))))));
19332
19384
  };
19333
19385
  const desktopButtonContainerStyle = {
19334
19386
  padding: '0.75rem',
@@ -19337,6 +19389,16 @@ const desktopButtonContainerStyle = {
19337
19389
  const desktopControlBarStyles = {
19338
19390
  root: desktopButtonContainerStyle
19339
19391
  };
19392
+ const wrapperDesktopStyles = {
19393
+ position: 'absolute',
19394
+ left: '50%',
19395
+ transform: 'translate(-50%, 0)'
19396
+ };
19397
+ const wrapperDesktopRtlStyles = {
19398
+ position: 'absolute',
19399
+ right: '50%',
19400
+ transform: 'translate(-50%, 0)'
19401
+ };
19340
19402
  const getDesktopCommonButtonStyles = (theme) => ({
19341
19403
  root: {
19342
19404
  border: `solid 1px ${theme.palette.neutralQuaternaryAlt}`,
@@ -24273,7 +24335,7 @@ const CallWithChatScreen = (props) => {
24273
24335
  /* @conditional-compile-remove(PSTN-calls) */
24274
24336
  onClickShowDialpad: alternateCallerId ? onClickShowDialpad : undefined,
24275
24337
  /* @conditional-compile-remove(video-background-effects) */
24276
- onShowVideoEffectsPicker: setShowVideoEffectsPane })))),
24338
+ onShowVideoEffectsPicker: setShowVideoEffectsPane, rtl: props.rtl })))),
24277
24339
  showControlBar && showDrawer && (React__default['default'].createElement(ChatAdapterProvider, { adapter: chatProps.adapter },
24278
24340
  React__default['default'].createElement(CallAdapterProvider, { adapter: callAdapter },
24279
24341
  React__default['default'].createElement(react.Stack, { styles: drawerContainerStyles() },