@azure/communication-react 1.13.0-alpha-202402150012 → 1.13.0-alpha-202402161702

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 (45) hide show
  1. package/dist/communication-react.d.ts +17 -33
  2. package/dist/dist-cjs/communication-react/index.js +133 -115
  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/acs-ui-common/src/telemetryVersion.js.map +1 -1
  6. package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts +2 -2
  7. package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
  8. package/dist/dist-esm/react-components/src/components/ImageOverlay.d.ts +3 -7
  9. package/dist/dist-esm/react-components/src/components/ImageOverlay.js +16 -15
  10. package/dist/dist-esm/react-components/src/components/ImageOverlay.js.map +1 -1
  11. package/dist/dist-esm/react-components/src/components/styles/ImageOverlay.style.d.ts +12 -8
  12. package/dist/dist-esm/react-components/src/components/styles/ImageOverlay.style.js +34 -43
  13. package/dist/dist-esm/react-components/src/components/styles/ImageOverlay.style.js.map +1 -1
  14. package/dist/dist-esm/react-components/src/theming/FluentThemeProvider.d.ts +2 -0
  15. package/dist/dist-esm/react-components/src/theming/FluentThemeProvider.js +3 -2
  16. package/dist/dist-esm/react-components/src/theming/FluentThemeProvider.js.map +1 -1
  17. package/dist/dist-esm/react-components/src/theming/themes.d.ts +8 -21
  18. package/dist/dist-esm/react-components/src/theming/themes.js +10 -16
  19. package/dist/dist-esm/react-components/src/theming/themes.js.map +1 -1
  20. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js +1 -1
  21. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js.map +1 -1
  22. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.d.ts +1 -1
  23. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.js.map +1 -1
  24. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +4 -3
  25. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  26. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.d.ts +1 -1
  27. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.js.map +1 -1
  28. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js +1 -16
  29. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js.map +1 -1
  30. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/LobbyPage.js +3 -7
  31. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/LobbyPage.js.map +1 -1
  32. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/NoticePage.js +11 -1
  33. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/NoticePage.js.map +1 -1
  34. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/MediaGalleryUtils.d.ts +3 -1
  35. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/MediaGalleryUtils.js +17 -4
  36. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/MediaGalleryUtils.js.map +1 -1
  37. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.d.ts +2 -2
  38. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js +1 -1
  39. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js.map +1 -1
  40. package/dist/dist-esm/react-composites/src/composites/common/Survey.js +4 -11
  41. package/dist/dist-esm/react-composites/src/composites/common/Survey.js.map +1 -1
  42. package/dist/dist-esm/react-composites/src/composites/common/styles/Survey.styles.d.ts +10 -0
  43. package/dist/dist-esm/react-composites/src/composites/common/styles/Survey.styles.js +36 -0
  44. package/dist/dist-esm/react-composites/src/composites/common/styles/Survey.styles.js.map +1 -0
  45. package/package.json +1 -1
@@ -98,7 +98,6 @@ import { SendMessageOptions } from '@azure/communication-chat';
98
98
  import { SpotlightedParticipant } from '@azure/communication-calling';
99
99
  import { StartCallOptions } from '@azure/communication-calling';
100
100
  import { StartCaptionsOptions } from '@azure/communication-calling';
101
- import { SyntheticEvent } from 'react';
102
101
  import { TeamsCall } from '@azure/communication-calling';
103
102
  import { TeamsCallAgent } from '@azure/communication-calling';
104
103
  import { TeamsMeetingLinkLocator } from '@azure/communication-calling';
@@ -114,7 +113,7 @@ import { VideoStreamRendererView } from '@azure/communication-calling';
114
113
  /**
115
114
  * Transfer feature state
116
115
  *
117
- * @beta
116
+ * @public
118
117
  */
119
118
  export declare interface AcceptedTransfer {
120
119
  /**
@@ -2102,7 +2101,7 @@ export declare interface CallCompositeStrings {
2102
2101
  /**
2103
2102
  * Label disaplayed on the lobby screen during a 1:1 outbound call.
2104
2103
  */
2105
- outboundCallingNoticeString: string;
2104
+ outboundCallingNoticeString?: string;
2106
2105
  /**
2107
2106
  * Notice to be announced by narrator when a participant joins a call
2108
2107
  */
@@ -4756,26 +4755,6 @@ export declare type ChatParticipantListSelector = (state: ChatClientState, props
4756
4755
  */
4757
4756
  export declare type ChatReturnProps<Component extends (props: any) => JSX.Element> = GetChatSelector<Component> extends (state: ChatClientState, props: any) => any ? ReturnType<GetChatSelector<Component>> & Common<ChatHandlers, Parameters<Component>[0]> : never;
4758
4757
 
4759
- /**
4760
- * Custom Fluent theme palette used by chat related components in this library.
4761
- *
4762
- * @beta
4763
- */
4764
- export declare interface ChatTheme {
4765
- /**
4766
- * Custom Fluent theme palette used by chat related components in this library.
4767
- *
4768
- * @beta
4769
- */
4770
- chatPalette: {
4771
- modalOverlayBlack: string;
4772
- modalTitleWhite: string;
4773
- modalButtonBackground: string;
4774
- modalButtonBackgroundHover: string;
4775
- modalButtonBackgroundActive: string;
4776
- };
4777
- }
4778
-
4779
4758
  /**
4780
4759
  * A {@link React.Context} that stores a {@link @azure/communication-chat#ChatThreadClient}.
4781
4760
  *
@@ -6120,7 +6099,7 @@ export declare interface CustomMessage extends MessageCommon {
6120
6099
  *
6121
6100
  * @public
6122
6101
  */
6123
- export declare const darkTheme: PartialTheme & CallingTheme & /* @conditional-compile-remove(image-overlay) */ ChatTheme;
6102
+ export declare const darkTheme: PartialTheme & CallingTheme;
6124
6103
 
6125
6104
  /**
6126
6105
  * @beta
@@ -7223,6 +7202,8 @@ export declare interface FluentThemeProviderProps {
7223
7202
  * @defaultValue `false`
7224
7203
  */
7225
7204
  rtl?: boolean;
7205
+ /** Optional style to change the root style of the ThemeProvider */
7206
+ rootStyle?: React_2.CSSProperties | undefined;
7226
7207
  }
7227
7208
 
7228
7209
  /**
@@ -7484,13 +7465,9 @@ export declare interface ImageOverlayProps {
7484
7465
  */
7485
7466
  onDismiss: () => void;
7486
7467
  /**
7487
- * Callback called when the download button is clicked.
7488
- */
7489
- onDownloadButtonClicked: (imageSrc: string) => void;
7490
- /**
7491
- * Callback called when there's an error loading the image.
7468
+ * Optional callback called when the download button is clicked. If not provided, the download button will not be rendered.
7492
7469
  */
7493
- onError?: (event: SyntheticEvent<HTMLImageElement, Event>) => void;
7470
+ onDownloadButtonClicked?: (imageSrc: string) => void;
7494
7471
  }
7495
7472
 
7496
7473
  /**
@@ -7509,6 +7486,13 @@ export declare interface ImageOverlayStrings {
7509
7486
  dismissButtonAriaLabel: string;
7510
7487
  }
7511
7488
 
7489
+ /**
7490
+ * Preset dark theme for the ImageOverlay component.
7491
+ *
7492
+ * @beta
7493
+ */
7494
+ export declare const imageOverlayTheme: PartialTheme;
7495
+
7512
7496
  /**
7513
7497
  * @beta
7514
7498
  * This contains a readonly array that returns all the active `incomingCalls`.
@@ -7695,7 +7679,7 @@ export declare interface JumpToNewMessageButtonProps {
7695
7679
  *
7696
7680
  * @public
7697
7681
  */
7698
- export declare const lightTheme: PartialTheme & CallingTheme & /* @conditional-compile-remove(image-overlay) */ ChatTheme;
7682
+ export declare const lightTheme: PartialTheme & CallingTheme;
7699
7683
 
7700
7684
  /**
7701
7685
  * Whether the stream is loading or not.
@@ -10399,14 +10383,14 @@ export declare interface TranscriptionCallFeature {
10399
10383
  /**
10400
10384
  * Callback for {@link CallAdapterSubscribers} 'transferRequested' event.
10401
10385
  *
10402
- * @beta
10386
+ * @public
10403
10387
  */
10404
10388
  export declare type TransferAcceptedListener = (event: TransferEventArgs) => void;
10405
10389
 
10406
10390
  /**
10407
10391
  * Transfer feature state
10408
10392
  *
10409
- * @beta
10393
+ * @public
10410
10394
  */
10411
10395
  export declare interface TransferFeature {
10412
10396
  /**
@@ -173,7 +173,7 @@ function getDefaultExportFromCjs (x) {
173
173
  // Copyright (c) Microsoft Corporation.
174
174
  // Licensed under the MIT License.
175
175
  // GENERATED FILE. DO NOT EDIT MANUALLY.
176
- var telemetryVersion = '1.13.0-alpha-202402150012';
176
+ var telemetryVersion = '1.13.0-alpha-202402161702';
177
177
 
178
178
 
179
179
  var telemetryVersion$1 = /*@__PURE__*/getDefaultExportFromCjs(telemetryVersion);
@@ -6174,14 +6174,6 @@ const lightTheme = {
6174
6174
  /* @conditional-compile-remove(raise-hand) */
6175
6175
  raiseHandGold: '#eaa300'
6176
6176
  },
6177
- /* @conditional-compile-remove(image-overlay) */
6178
- chatPalette: {
6179
- modalOverlayBlack: '#000000',
6180
- modalTitleWhite: '#ffffff',
6181
- modalButtonBackground: '#1b1a19',
6182
- modalButtonBackgroundHover: '#252423',
6183
- modalButtonBackgroundActive: '#292827'
6184
- },
6185
6177
  semanticColors: {
6186
6178
  errorText: '#a80000'
6187
6179
  }
@@ -6225,18 +6217,20 @@ const darkTheme = {
6225
6217
  /* @conditional-compile-remove(raise-hand) */
6226
6218
  raiseHandGold: '#eaa300'
6227
6219
  },
6228
- /* @conditional-compile-remove(image-overlay) */
6229
- chatPalette: {
6230
- modalOverlayBlack: '#000000',
6231
- modalTitleWhite: '#ffffff',
6232
- modalButtonBackground: '#1b1a19',
6233
- modalButtonBackgroundHover: '#252423',
6234
- modalButtonBackgroundActive: '#292827'
6235
- },
6236
6220
  semanticColors: {
6237
6221
  errorText: '#f1707b'
6238
6222
  }
6239
6223
  };
6224
+ /* @conditional-compile-remove(image-overlay) */
6225
+ /**
6226
+ * Preset dark theme for the ImageOverlay component.
6227
+ *
6228
+ * @beta
6229
+ */
6230
+ const imageOverlayTheme = {
6231
+ palette: darkTheme.palette,
6232
+ semanticColors: Object.assign(Object.assign({}, darkTheme.semanticColors), { bodyBackground: 'rgba(0, 0, 0, 0.85)' })
6233
+ };
6240
6234
 
6241
6235
  // Copyright (c) Microsoft Corporation.
6242
6236
  // Licensed under the MIT License.
@@ -6271,11 +6265,12 @@ const ThemeContext = React.createContext(defaultTheme);
6271
6265
  * @public
6272
6266
  */
6273
6267
  const FluentThemeProvider = (props) => {
6274
- const { fluentTheme, rtl, children } = props;
6268
+ const { fluentTheme, rtl, children, /* @conditional-compile-remove(image-overlay) */ rootStyle } = props;
6275
6269
  let fluentV8Theme = react.mergeThemes(defaultTheme, fluentTheme);
6276
6270
  fluentV8Theme = react.mergeThemes(fluentV8Theme, { rtl });
6277
6271
  return (React.createElement(ThemeContext.Provider, { value: fluentV8Theme },
6278
- React.createElement(react.ThemeProvider, { theme: fluentV8Theme, className: wrapper }, children)));
6272
+ React.createElement(react.ThemeProvider, { theme: fluentV8Theme, className: wrapper,
6273
+ /* @conditional-compile-remove(image-overlay) */ style: rootStyle }, children)));
6279
6274
  };
6280
6275
  /**
6281
6276
  * React hook to access theme
@@ -8811,10 +8806,10 @@ const downloadIcon = {
8811
8806
  * @private
8812
8807
  */
8813
8808
  const overlayStyles = (theme) => {
8809
+ var _a;
8814
8810
  return {
8815
8811
  root: {
8816
- background: theme.chatPalette.modalOverlayBlack,
8817
- opacity: '0.85'
8812
+ background: (_a = theme.semanticColors) === null || _a === void 0 ? void 0 : _a.bodyBackground
8818
8813
  }
8819
8814
  };
8820
8815
  };
@@ -8841,6 +8836,14 @@ const scrollableContentStyle = {
8841
8836
  flexDirection: 'column',
8842
8837
  flexWrap: 'nowrap'
8843
8838
  };
8839
+ /**
8840
+ * @private
8841
+ */
8842
+ const themeProviderRootStyle = {
8843
+ background: 'transparent',
8844
+ display: 'flex',
8845
+ flexDirection: 'column'
8846
+ };
8844
8847
  /**
8845
8848
  * @private
8846
8849
  */
@@ -8863,14 +8866,14 @@ const titleBarContainerStyle = {
8863
8866
  alignContent: 'center',
8864
8867
  alignItems: 'center'
8865
8868
  };
8866
- /* @conditional-compile-remove(image-overlay) */
8867
8869
  /**
8868
8870
  * @private
8869
8871
  */
8870
8872
  const titleStyle$2 = (theme) => {
8873
+ var _a;
8871
8874
  return {
8872
8875
  paddingLeft: '0.5rem',
8873
- color: theme.chatPalette.modalTitleWhite,
8876
+ color: (_a = theme.palette) === null || _a === void 0 ? void 0 : _a.black,
8874
8877
  fontFamily: 'inherit',
8875
8878
  fontSize: '0.875rem',
8876
8879
  fontStyle: 'normal',
@@ -8918,77 +8921,60 @@ const normalImageStyle = {
8918
8921
  maxHeight: '100%',
8919
8922
  maxWidth: '100%'
8920
8923
  };
8921
- /* @conditional-compile-remove(image-overlay) */
8922
8924
  /**
8923
8925
  * @private
8924
8926
  */
8925
8927
  const brokenImageStyle = (theme) => {
8928
+ var _a;
8926
8929
  return {
8927
- color: theme.chatPalette.modalTitleWhite
8930
+ color: (_a = theme.palette) === null || _a === void 0 ? void 0 : _a.black
8928
8931
  };
8929
8932
  };
8930
- /* @conditional-compile-remove(image-overlay) */
8931
8933
  /**
8932
8934
  * @private
8933
8935
  */
8934
8936
  const closeButtonStyles = (theme) => {
8937
+ var _a, _b, _c;
8935
8938
  return {
8936
- color: theme.chatPalette.modalTitleWhite,
8939
+ color: (_a = theme.palette) === null || _a === void 0 ? void 0 : _a.black,
8937
8940
  ':hover': {
8938
- color: theme.chatPalette.modalTitleWhite,
8939
- backgroundColor: theme.chatPalette.modalButtonBackgroundHover
8941
+ color: (_b = theme.palette) === null || _b === void 0 ? void 0 : _b.black
8940
8942
  },
8941
8943
  ':active': {
8942
- color: theme.chatPalette.modalTitleWhite,
8943
- backgroundColor: theme.chatPalette.modalButtonBackgroundActive
8944
+ color: (_c = theme.palette) === null || _c === void 0 ? void 0 : _c.black
8944
8945
  }
8945
8946
  };
8946
8947
  };
8947
- /* @conditional-compile-remove(image-overlay) */
8948
8948
  /**
8949
8949
  * @private
8950
8950
  */
8951
- const downloadButtonStyle = (theme) => {
8952
- return {
8953
- margin: '0 0.5rem',
8954
- height: '32px',
8955
- borderWidth: '1px',
8956
- fontSize: '0.875rem', // 14px
8957
- fontWeight: 600,
8958
- padding: '0.38rem 0.75rem',
8959
- borderRadius: '4px',
8960
- backgroundColor: theme.chatPalette.modalButtonBackground,
8961
- color: theme.chatPalette.modalTitleWhite,
8962
- whiteSpace: 'nowrap',
8963
- ':hover': {
8964
- color: theme.chatPalette.modalTitleWhite,
8965
- backgroundColor: theme.chatPalette.modalButtonBackgroundHover
8966
- },
8967
- ':active': {
8968
- color: theme.chatPalette.modalTitleWhite,
8969
- backgroundColor: theme.chatPalette.modalButtonBackgroundActive
8970
- },
8971
- '@media (max-width: 25rem)': {
8972
- display: 'none'
8973
- }
8974
- };
8951
+ const downloadButtonStyle = {
8952
+ margin: '0 0.5rem',
8953
+ height: '32px',
8954
+ borderWidth: '1px',
8955
+ fontSize: '0.875rem', // 14px
8956
+ fontWeight: 600,
8957
+ padding: '0.38rem 0.75rem',
8958
+ borderRadius: '4px',
8959
+ whiteSpace: 'nowrap',
8960
+ '@media (max-width: 25rem)': {
8961
+ display: 'none'
8962
+ }
8975
8963
  };
8976
- /* @conditional-compile-remove(image-overlay) */
8977
8964
  /**
8978
8965
  * @private
8979
8966
  */
8980
8967
  const smallDownloadButtonContainerStyle = (theme) => {
8968
+ var _a, _b, _c;
8981
8969
  return {
8982
8970
  marginRight: '0.5rem',
8983
- color: theme.chatPalette.modalTitleWhite,
8984
8971
  whiteSpace: 'nowrap',
8972
+ color: (_a = theme.palette) === null || _a === void 0 ? void 0 : _a.black,
8985
8973
  ':hover': {
8986
- color: theme.chatPalette.modalTitleWhite,
8987
- backgroundColor: theme.chatPalette.modalButtonBackgroundHover
8974
+ color: (_b = theme.palette) === null || _b === void 0 ? void 0 : _b.black
8988
8975
  },
8989
8976
  ':active': {
8990
- color: theme.chatPalette.modalTitleWhite,
8991
- backgroundColor: theme.chatPalette.modalButtonBackgroundActive
8977
+ color: (_c = theme.palette) === null || _c === void 0 ? void 0 : _c.black
8992
8978
  },
8993
8979
  '@media (min-width: 25rem)': {
8994
8980
  display: 'none'
@@ -9006,37 +8992,36 @@ const smallDownloadButtonContainerStyle = (theme) => {
9006
8992
  * @beta
9007
8993
  */
9008
8994
  const ImageOverlay = (props) => {
9009
- const { isOpen, imageSrc, title, titleIcon, altText, onDownloadButtonClicked, onDismiss, onError } = props;
9010
- const theme = useTheme();
8995
+ const { isOpen, imageSrc, title, titleIcon, altText, onDownloadButtonClicked, onDismiss } = props;
9011
8996
  /* @conditional-compile-remove(image-overlay) */
9012
8997
  const localeStrings = useLocale$1().strings.imageOverlay;
9013
8998
  const [isImageLoaded, setIsImageLoaded] = React.useState(true);
9014
- const imageStyle = isImageLoaded ? normalImageStyle : brokenImageStyle(theme);
8999
+ const imageStyle = isImageLoaded ? normalImageStyle : brokenImageStyle(imageOverlayTheme);
9015
9000
  const renderHeaderBar = () => {
9016
9001
  return (React.createElement(react.Stack, { className: react.mergeStyles(headerStyle) },
9017
9002
  React.createElement(react.Stack, { className: react.mergeStyles(titleBarContainerStyle) },
9018
9003
  titleIcon,
9019
- React.createElement(react.Stack.Item, { className: react.mergeStyles(titleStyle$2(theme)), "aria-label": title || 'Image' }, title)),
9004
+ React.createElement(react.Stack.Item, { className: react.mergeStyles(titleStyle$2(imageOverlayTheme)), "aria-label": title || 'Image' }, title)),
9020
9005
  React.createElement(react.Stack, { className: react.mergeStyles(controlBarContainerStyle) },
9021
- React.createElement(react.DefaultButton, { className: react.mergeStyles(downloadButtonStyle(theme)),
9006
+ onDownloadButtonClicked && (React.createElement(react.DefaultButton, { className: react.mergeStyles(downloadButtonStyle),
9022
9007
  /* @conditional-compile-remove(image-overlay) */
9023
- text: localeStrings.downloadButtonLabel, onClick: () => onDownloadButtonClicked(imageSrc), onRenderIcon: () => React.createElement(react.Icon, { iconName: downloadIcon.iconName, className: react.mergeStyles(downloadIconStyle) }), "aria-live": 'polite', "aria-label": localeStrings.downloadButtonLabel }),
9024
- React.createElement(react.IconButton, { iconProps: downloadIcon, className: react.mergeStyles(smallDownloadButtonContainerStyle(theme)), onClick: () => onDownloadButtonClicked(imageSrc), "aria-label": localeStrings.downloadButtonLabel, "aria-live": 'polite' }),
9025
- React.createElement(react.IconButton, { iconProps: cancelIcon, className: react.mergeStyles(closeButtonStyles(theme)), onClick: onDismiss,
9008
+ text: localeStrings.downloadButtonLabel, onClick: () => onDownloadButtonClicked && onDownloadButtonClicked(imageSrc), onRenderIcon: () => React.createElement(react.Icon, { iconName: downloadIcon.iconName, className: react.mergeStyles(downloadIconStyle) }), "aria-live": 'polite', "aria-label": localeStrings.downloadButtonLabel })),
9009
+ onDownloadButtonClicked && (React.createElement(react.IconButton, { iconProps: downloadIcon, className: react.mergeStyles(smallDownloadButtonContainerStyle(imageOverlayTheme)), onClick: () => onDownloadButtonClicked && onDownloadButtonClicked(imageSrc), "aria-label": localeStrings.downloadButtonLabel, "aria-live": 'polite' })),
9010
+ React.createElement(react.IconButton, { iconProps: cancelIcon, className: react.mergeStyles(closeButtonStyles(imageOverlayTheme)), onClick: onDismiss,
9026
9011
  /* @conditional-compile-remove(image-overlay) */
9027
9012
  ariaLabel: localeStrings.dismissButtonAriaLabel, "aria-live": 'polite' }))));
9028
9013
  };
9029
9014
  const renderBodyWithLightDismiss = () => {
9030
- return (React.createElement(react.Stack, { className: react.mergeStyles(bodyContainer), onClick: () => props.onDismiss() }, imageSrc && (React.createElement("img", { src: imageSrc, className: react.mergeStyles(imageStyle), alt: altText || 'image', "aria-label": 'image-overlay-main-image', "aria-live": 'polite', onError: (event) => {
9015
+ return (React.createElement(react.Stack, { className: react.mergeStyles(bodyContainer), onClick: () => props.onDismiss() }, imageSrc && (React.createElement("img", { src: imageSrc, className: react.mergeStyles(imageStyle), alt: altText || 'image', "aria-label": 'image-overlay-main-image', "aria-live": 'polite', onError: () => {
9031
9016
  setIsImageLoaded(false);
9032
- onError && onError(event);
9033
9017
  }, onClick: (event) => event.stopPropagation(), onDoubleClick: (event) => {
9034
9018
  event.persist();
9035
9019
  } }))));
9036
9020
  };
9037
- return (React.createElement(react.Modal, { titleAriaId: title, isOpen: isOpen, onDismiss: onDismiss, overlay: { styles: Object.assign({}, overlayStyles(theme)) }, styles: { main: focusTrapZoneStyle, scrollableContent: scrollableContentStyle }, isDarkOverlay: true },
9038
- renderHeaderBar(),
9039
- renderBodyWithLightDismiss()));
9021
+ return (React.createElement(react.Modal, { titleAriaId: title, isOpen: isOpen, onDismiss: onDismiss, overlay: { styles: Object.assign({}, overlayStyles(imageOverlayTheme)) }, styles: { main: focusTrapZoneStyle, scrollableContent: scrollableContentStyle }, isDarkOverlay: true },
9022
+ React.createElement(FluentThemeProvider, { fluentTheme: imageOverlayTheme, rootStyle: themeProviderRootStyle },
9023
+ renderHeaderBar(),
9024
+ renderBodyWithLightDismiss())));
9040
9025
  };
9041
9026
 
9042
9027
  // Copyright (c) Microsoft Corporation.
@@ -18728,7 +18713,7 @@ const _StarSurvey = (props) => {
18728
18713
  /**
18729
18714
  * @private
18730
18715
  */
18731
- const questionTextStyle = (theme) => react.mergeStyles({
18716
+ const questionTextStyle$1 = (theme) => react.mergeStyles({
18732
18717
  fontWeight: 600,
18733
18718
  fontSize: _pxToRem(16),
18734
18719
  lineHeight: _pxToRem(20),
@@ -18879,7 +18864,7 @@ const _TagsSurvey = (props) => {
18879
18864
  }, [selectedTags, selectedTextResponse, onConfirm]);
18880
18865
  return (React.createElement(React.Fragment, null,
18881
18866
  React.createElement(react.Stack, { verticalAlign: "center" },
18882
- React.createElement(react.Text, { className: questionTextStyle(theme) }, strings === null || strings === void 0 ? void 0 : strings.tagsSurveyQuestion)),
18867
+ React.createElement(react.Text, { className: questionTextStyle$1(theme) }, strings === null || strings === void 0 ? void 0 : strings.tagsSurveyQuestion)),
18883
18868
  React.createElement(react.Pivot, null, Object.keys(tags).map((key, i) => {
18884
18869
  return (React.createElement(react.PivotItem, { key: `key-${i}`, headerText: categoryHeadings[key], headerButtonProps: {
18885
18870
  'data-order': i,
@@ -25208,7 +25193,7 @@ const getEndedCallPageProps = (locale, endedCall) => {
25208
25193
  *
25209
25194
  * @private
25210
25195
  */
25211
- const getCallCompositePage = (call, previousCall, unsupportedBrowserInfo, transferCall) => {
25196
+ const getCallCompositePage = (call, previousCall, transferCall, unsupportedBrowserInfo) => {
25212
25197
  /* @conditional-compile-remove(unsupported-browser) */
25213
25198
  if (isUnsupportedEnvironment(unsupportedBrowserInfo.environmentInfo, unsupportedBrowserInfo.unsupportedBrowserVersionOptedIn)) {
25214
25199
  return 'unsupportedEnvironment';
@@ -26871,12 +26856,25 @@ const createAnnouncementString = (direction, participants, strings) => {
26871
26856
  /**
26872
26857
  * determines if the media gallery should be replaced by the dtmf dialer
26873
26858
  * @param callees Target callees to determine if the dtmf dialer should be shown
26859
+ * @param remoteParticipants Remote participants to determine if the dtmf dialer should be shown if there are participants in the call
26860
+ * when joining
26874
26861
  * @returns whether the dialer should be the gallery content or not
26875
26862
  */
26876
- const showDtmfDialer = (callees) => {
26877
- return !!((callees === null || callees === void 0 ? void 0 : callees.filter((callee) => {
26878
- return communicationCommon.isPhoneNumberIdentifier(callee) || communicationCommon.isMicrosoftTeamsAppIdentifier(callee);
26879
- })) && callees.length > 0);
26863
+ const showDtmfDialer = (callees, remoteParticipants) => {
26864
+ let showDtmfDialer = false;
26865
+ callees === null || callees === void 0 ? void 0 : callees.forEach((callee) => {
26866
+ if (communicationCommon.isMicrosoftTeamsAppIdentifier(callee) || communicationCommon.isPhoneNumberIdentifier(callee)) {
26867
+ showDtmfDialer = true;
26868
+ }
26869
+ });
26870
+ if (remoteParticipants) {
26871
+ remoteParticipants.forEach((participant) => {
26872
+ if (!('phoneNumber' in participant.identifier || 'teamsAppId' in participant.identifier)) {
26873
+ showDtmfDialer = false;
26874
+ }
26875
+ });
26876
+ }
26877
+ return showDtmfDialer;
26880
26878
  };
26881
26879
 
26882
26880
  // Copyright (c) Microsoft Corporation.
@@ -30484,22 +30482,9 @@ const CallPage = (props) => {
30484
30482
  /* @conditional-compile-remove(dtmf-dialer) */
30485
30483
  const callees = useSelector$1(getTargetCallees);
30486
30484
  /* @conditional-compile-remove(dtmf-dialer) */
30487
- const renderDtmfDialerFromStart = showDtmfDialer(callees);
30485
+ const renderDtmfDialerFromStart = showDtmfDialer(callees, remoteParticipantsConnected);
30488
30486
  /* @conditional-compile-remove(dtmf-dialer) */
30489
30487
  const [dtmfDialerPresent, setDtmfDialerPresent] = React.useState(renderDtmfDialerFromStart);
30490
- /* @conditional-compile-remove(dtmf-dialer) */
30491
- const dialerShouldAutoDismiss = React.useRef(renderDtmfDialerFromStart);
30492
- /* @conditional-compile-remove(dtmf-dialer) */
30493
- /**
30494
- * This useEffect is about clearing the dtmf dialer should there be a new participant that joins the call.
30495
- * This will only happen the first time should the dialer be present when the call starts.
30496
- */
30497
- React.useEffect(() => {
30498
- if (remoteParticipantsConnected.length > 1 && dtmfDialerPresent && dialerShouldAutoDismiss.current) {
30499
- setDtmfDialerPresent(false);
30500
- dialerShouldAutoDismiss.current = false;
30501
- }
30502
- }, [dtmfDialerPresent, remoteParticipantsConnected, setDtmfDialerPresent]);
30503
30488
  const strings = useLocale().strings.call;
30504
30489
  // Reduce the controls shown when mobile view is enabled.
30505
30490
  const callControlOptions = mobileView ? reduceCallControlsForMobile(options === null || options === void 0 ? void 0 : options.callControls) : options === null || options === void 0 ? void 0 : options.callControls;
@@ -31879,13 +31864,21 @@ const moreDetailsStyles = {
31879
31864
  */
31880
31865
  function NoticePage(props) {
31881
31866
  const adapter = useAdapter();
31867
+ const callees = useSelector$1(getTargetCallees);
31882
31868
  return (React.createElement(react.Stack, { className: react.mergeStyles(props.pageStyle), verticalFill: true, verticalAlign: "center", horizontalAlign: "center", "data-ui-id": props.dataUiId, "aria-atomic": true },
31883
31869
  React.createElement(react.Stack, { className: react.mergeStyles(containerStyle), tokens: containerItemGap },
31884
31870
  props.iconName && React.createElement(CallCompositeIcon, { iconName: props.iconName }),
31885
31871
  React.createElement(react.Text, { className: react.mergeStyles(titleStyles), "aria-live": "assertive" }, props.title),
31886
31872
  React.createElement(react.Text, { className: react.mergeStyles(moreDetailsStyles), "aria-live": "assertive" }, props.moreDetails),
31887
31873
  !props.disableStartCallButton && (React.createElement(react.Stack, { styles: rejoinCallButtonContainerStyles },
31888
- React.createElement(StartCallButton, { onClick: () => adapter.joinCall(), disabled: false, rejoinCall: true, autoFocus: true }))))));
31874
+ React.createElement(StartCallButton, { onClick: () => {
31875
+ if (callees && callees.length > 0) {
31876
+ adapter.startCall(callees);
31877
+ }
31878
+ else {
31879
+ adapter.joinCall();
31880
+ }
31881
+ }, disabled: false, rejoinCall: true, autoFocus: true }))))));
31889
31882
  }
31890
31883
 
31891
31884
  // Copyright (c) Microsoft Corporation.
@@ -31998,22 +31991,19 @@ const overlayPropsWaitingToBeAdmitted = (strings) => ({
31998
31991
  overlayIcon: React.createElement(CallCompositeIcon, { iconName: "LobbyScreenWaitingToBeAdmitted" })
31999
31992
  });
32000
31993
  const overlayPropsOutboundCall = (strings, participant) => {
31994
+ var _a;
32001
31995
  if (communicationCommon.isPhoneNumberIdentifier(participant.identifier)) {
32002
31996
  return {
32003
31997
  title: participant.identifier.phoneNumber,
32004
- moreDetails: outboundCallStringsTrampoline(strings)
31998
+ moreDetails: strings.outboundCallingNoticeString
32005
31999
  };
32006
32000
  }
32007
32001
  else {
32008
32002
  return {
32009
- title: outboundCallStringsTrampoline(strings)
32003
+ title: (_a = strings.outboundCallingNoticeString) !== null && _a !== void 0 ? _a : ''
32010
32004
  };
32011
32005
  }
32012
32006
  };
32013
- const outboundCallStringsTrampoline = (strings) => {
32014
- /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
32015
- return strings.outboundCallingNoticeString;
32016
- };
32017
32007
 
32018
32008
  // Copyright (c) Microsoft Corporation.
32019
32009
  // Licensed under the MIT License.
@@ -32638,6 +32628,39 @@ function ThankYouForFeedbackPage(
32638
32628
  React.createElement(react.Text, { className: react.mergeStyles(titleStyles), "aria-live": "assertive" }, strings.endOfSurveyText))));
32639
32629
  }
32640
32630
 
32631
+ // Copyright (c) Microsoft Corporation.
32632
+ // Licensed under the MIT License.
32633
+ /* @conditional-compile-remove(end-of-call-survey) */
32634
+ /* @conditional-compile-remove(end-of-call-survey) */
32635
+ /**
32636
+ * @private
32637
+ */
32638
+ const questionTextStyle = (theme) => react.mergeStyles({
32639
+ fontWeight: 600,
32640
+ fontSize: _pxToRem(20),
32641
+ lineHeight: _pxToRem(20),
32642
+ color: theme.palette.neutralPrimary
32643
+ });
32644
+ /* @conditional-compile-remove(end-of-call-survey) */
32645
+ /**
32646
+ * @private
32647
+ */
32648
+ const surveyContainerStyle = (isMobile) => react.mergeStyles(isMobile
32649
+ ? {
32650
+ width: '20rem',
32651
+ position: 'absolute',
32652
+ top: '10%',
32653
+ left: '50%',
32654
+ transform: 'translateX(-50%)'
32655
+ }
32656
+ : {
32657
+ width: '24rem',
32658
+ position: 'absolute',
32659
+ top: '20%',
32660
+ left: '50%',
32661
+ transform: 'translateX(-50%)'
32662
+ });
32663
+
32641
32664
  // Copyright (c) Microsoft Corporation.
32642
32665
  // Licensed under the MIT License.
32643
32666
  var __awaiter$8 = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -32672,17 +32695,10 @@ const Survey = (props) => {
32672
32695
  /* @conditional-compile-remove(end-of-call-survey) */
32673
32696
  const theme = react.useTheme();
32674
32697
  /* @conditional-compile-remove(end-of-call-survey) */
32675
- const questionTextStyle = (theme) => react.mergeStyles({
32676
- fontWeight: 600,
32677
- fontSize: _pxToRem(20),
32678
- lineHeight: _pxToRem(20),
32679
- color: theme.palette.neutralPrimary
32680
- });
32681
- /* @conditional-compile-remove(end-of-call-survey) */
32682
32698
  return (React.createElement(React.Fragment, null,
32683
32699
  showDefaultAfterSubmitScreen && React.createElement(ThankYouForFeedbackPage, { iconName: iconName }),
32684
32700
  showDefaultAfterDismissedScreen && (React.createElement(NoticePage, { iconName: iconName, title: title, moreDetails: moreDetails, dataUiId: 'left-call-page', disableStartCallButton: disableStartCallButton })),
32685
- !showDefaultAfterSubmitScreen && !showDefaultAfterDismissedScreen && (React.createElement(react.Stack, { verticalAlign: "center", style: { width: isMobile ? '20rem' : '24rem' } },
32701
+ !showDefaultAfterSubmitScreen && !showDefaultAfterDismissedScreen && (React.createElement(react.Stack, { verticalAlign: "center", className: surveyContainerStyle(isMobile) },
32686
32702
  React.createElement(react.Text, { className: questionTextStyle(theme) }, strings.surveyTitle),
32687
32703
  React.createElement(SurveyContent, { setShowSubmitFeedbackButton: (showButton) => {
32688
32704
  setShowSubmitFeedbackButton(showButton);
@@ -32912,7 +32928,7 @@ const MainScreen = (props) => {
32912
32928
  pageElement = (React.createElement(SurveyPage, { dataUiId: 'left-call-page', surveyOptions: (_p = props.options) === null || _p === void 0 ? void 0 : _p.surveyOptions, iconName: iconName, title: title, moreDetails: moreDetails, disableStartCallButton: disableStartCallButton, mobileView: props.mobileView }));
32913
32929
  break;
32914
32930
  }
32915
- pageElement = (React.createElement(NoticePage, { iconName: iconName, title: title, moreDetails: moreDetails, dataUiId: 'left-call-page', disableStartCallButton: disableStartCallButton }));
32931
+ pageElement = (React.createElement(NoticePage, { iconName: iconName, title: title, moreDetails: callees ? '' : moreDetails, dataUiId: 'left-call-page', disableStartCallButton: disableStartCallButton }));
32916
32932
  break;
32917
32933
  }
32918
32934
  case 'lobby':
@@ -33347,8 +33363,8 @@ class CallContext {
33347
33363
  /* @conditional-compile-remove(call-transfer) */
33348
33364
  const transferCall = latestAcceptedTransfer ? clientState.calls[latestAcceptedTransfer.callId] : undefined;
33349
33365
  const newPage = getCallCompositePage(call, latestEndedCall,
33350
- /* @conditional-compile-remove(unsupported-browser) */ environmentInfo,
33351
- /* @conditional-compile-remove(call-transfer) */ transferCall);
33366
+ /* @conditional-compile-remove(call-transfer) */ transferCall,
33367
+ /* @conditional-compile-remove(unsupported-browser) */ environmentInfo);
33352
33368
  if (!IsCallEndedPage(oldPage) && IsCallEndedPage(newPage)) {
33353
33369
  this.emitter.emit('callEnded', { callId: this.callId });
33354
33370
  // Reset the callId to undefined as the call has ended.
@@ -33503,7 +33519,8 @@ class AzureCommunicationCallAdapter {
33503
33519
  };
33504
33520
  this.callAgent.on('callsUpdated', onCallsUpdated);
33505
33521
  }
33506
- else if (this.callAgent.kind === 'TeamsCallAgent') {
33522
+ /* @conditional-compile-remove(teams-identity-support) */
33523
+ if (this.callAgent.kind === 'TeamsCallAgent') {
33507
33524
  const onTeamsCallsUpdated = (args) => {
33508
33525
  var _a;
33509
33526
  if ((_a = this.call) === null || _a === void 0 ? void 0 : _a.id) {
@@ -36853,6 +36870,7 @@ exports.darkTheme = darkTheme;
36853
36870
  exports.fromFlatCommunicationIdentifier = fromFlatCommunicationIdentifier;
36854
36871
  exports.getCallingSelector = getSelector$1;
36855
36872
  exports.getChatSelector = getSelector;
36873
+ exports.imageOverlayTheme = imageOverlayTheme;
36856
36874
  exports.lightTheme = lightTheme;
36857
36875
  exports.onResolveVideoEffectDependency = onResolveVideoEffectDependency;
36858
36876
  exports.onResolveVideoEffectDependencyLazy = onResolveVideoEffectDependencyLazy;