@azure/communication-react 1.13.0-alpha-202402140012 → 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 (52) hide show
  1. package/dist/communication-react.d.ts +26 -42
  2. package/dist/dist-cjs/communication-react/index.js +145 -168
  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/calling-stateful-client/src/CallDeclarativeCommon.js +8 -12
  9. package/dist/dist-esm/calling-stateful-client/src/CallDeclarativeCommon.js.map +1 -1
  10. package/dist/dist-esm/react-components/src/components/ImageOverlay.d.ts +3 -7
  11. package/dist/dist-esm/react-components/src/components/ImageOverlay.js +16 -15
  12. package/dist/dist-esm/react-components/src/components/ImageOverlay.js.map +1 -1
  13. package/dist/dist-esm/react-components/src/components/styles/ImageOverlay.style.d.ts +12 -8
  14. package/dist/dist-esm/react-components/src/components/styles/ImageOverlay.style.js +34 -43
  15. package/dist/dist-esm/react-components/src/components/styles/ImageOverlay.style.js.map +1 -1
  16. package/dist/dist-esm/react-components/src/theming/FluentThemeProvider.d.ts +2 -0
  17. package/dist/dist-esm/react-components/src/theming/FluentThemeProvider.js +3 -2
  18. package/dist/dist-esm/react-components/src/theming/FluentThemeProvider.js.map +1 -1
  19. package/dist/dist-esm/react-components/src/theming/themes.d.ts +8 -21
  20. package/dist/dist-esm/react-components/src/theming/themes.js +10 -16
  21. package/dist/dist-esm/react-components/src/theming/themes.js.map +1 -1
  22. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js +1 -1
  23. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js.map +1 -1
  24. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.d.ts +1 -1
  25. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.js.map +1 -1
  26. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts +4 -4
  27. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +8 -44
  28. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  29. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.d.ts +5 -5
  30. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.js.map +1 -1
  31. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/index.d.ts +1 -1
  32. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/index.js.map +1 -1
  33. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.d.ts +1 -1
  34. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.js.map +1 -1
  35. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js +1 -16
  36. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js.map +1 -1
  37. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/LobbyPage.js +3 -7
  38. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/LobbyPage.js.map +1 -1
  39. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/NoticePage.js +11 -1
  40. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/NoticePage.js.map +1 -1
  41. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/MediaGalleryUtils.d.ts +3 -1
  42. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/MediaGalleryUtils.js +17 -4
  43. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/MediaGalleryUtils.js.map +1 -1
  44. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.d.ts +2 -2
  45. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js +1 -1
  46. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js.map +1 -1
  47. package/dist/dist-esm/react-composites/src/composites/common/Survey.js +4 -11
  48. package/dist/dist-esm/react-composites/src/composites/common/Survey.js.map +1 -1
  49. package/dist/dist-esm/react-composites/src/composites/common/styles/Survey.styles.d.ts +10 -0
  50. package/dist/dist-esm/react-composites/src/composites/common/styles/Survey.styles.js +36 -0
  51. package/dist/dist-esm/react-composites/src/composites/common/styles/Survey.styles.js.map +1 -0
  52. package/package.json +2 -2
@@ -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-202402140012';
176
+ var telemetryVersion = '1.13.0-alpha-202402161702';
177
177
 
178
178
 
179
179
  var telemetryVersion$1 = /*@__PURE__*/getDefaultExportFromCjs(telemetryVersion);
@@ -4528,21 +4528,17 @@ class ProxyTransferCallFeature {
4528
4528
  switch (prop) {
4529
4529
  case 'on':
4530
4530
  return (...args) => {
4531
- const isTransferRequested = args[0] === 'transferRequested';
4532
- if (isTransferRequested) {
4531
+ const isTransferAccepted = args[0] === 'transferAccepted';
4532
+ if (isTransferAccepted) {
4533
4533
  const listener = args[1];
4534
4534
  const newListener = (args) => {
4535
- const newArgs = Object.assign(Object.assign({}, args), { accept: (acceptOptions) => {
4536
- const acceptedTransferCall = args.accept(acceptOptions);
4537
- this._context.setAcceptedTransfer(this._call.id, {
4538
- callId: acceptedTransferCall.id,
4539
- timestamp: new Date()
4540
- });
4541
- return acceptedTransferCall;
4542
- } });
4543
- listener(newArgs);
4535
+ this._context.setAcceptedTransfer(this._call.id, {
4536
+ callId: args.targetCall.id,
4537
+ timestamp: new Date()
4538
+ });
4539
+ listener(args);
4544
4540
  };
4545
- return target.on('transferRequested', newListener);
4541
+ return target.on('transferAccepted', newListener);
4546
4542
  }
4547
4543
  };
4548
4544
  default:
@@ -6178,14 +6174,6 @@ const lightTheme = {
6178
6174
  /* @conditional-compile-remove(raise-hand) */
6179
6175
  raiseHandGold: '#eaa300'
6180
6176
  },
6181
- /* @conditional-compile-remove(image-overlay) */
6182
- chatPalette: {
6183
- modalOverlayBlack: '#000000',
6184
- modalTitleWhite: '#ffffff',
6185
- modalButtonBackground: '#1b1a19',
6186
- modalButtonBackgroundHover: '#252423',
6187
- modalButtonBackgroundActive: '#292827'
6188
- },
6189
6177
  semanticColors: {
6190
6178
  errorText: '#a80000'
6191
6179
  }
@@ -6229,18 +6217,20 @@ const darkTheme = {
6229
6217
  /* @conditional-compile-remove(raise-hand) */
6230
6218
  raiseHandGold: '#eaa300'
6231
6219
  },
6232
- /* @conditional-compile-remove(image-overlay) */
6233
- chatPalette: {
6234
- modalOverlayBlack: '#000000',
6235
- modalTitleWhite: '#ffffff',
6236
- modalButtonBackground: '#1b1a19',
6237
- modalButtonBackgroundHover: '#252423',
6238
- modalButtonBackgroundActive: '#292827'
6239
- },
6240
6220
  semanticColors: {
6241
6221
  errorText: '#f1707b'
6242
6222
  }
6243
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
+ };
6244
6234
 
6245
6235
  // Copyright (c) Microsoft Corporation.
6246
6236
  // Licensed under the MIT License.
@@ -6275,11 +6265,12 @@ const ThemeContext = React.createContext(defaultTheme);
6275
6265
  * @public
6276
6266
  */
6277
6267
  const FluentThemeProvider = (props) => {
6278
- const { fluentTheme, rtl, children } = props;
6268
+ const { fluentTheme, rtl, children, /* @conditional-compile-remove(image-overlay) */ rootStyle } = props;
6279
6269
  let fluentV8Theme = react.mergeThemes(defaultTheme, fluentTheme);
6280
6270
  fluentV8Theme = react.mergeThemes(fluentV8Theme, { rtl });
6281
6271
  return (React.createElement(ThemeContext.Provider, { value: fluentV8Theme },
6282
- 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)));
6283
6274
  };
6284
6275
  /**
6285
6276
  * React hook to access theme
@@ -8815,10 +8806,10 @@ const downloadIcon = {
8815
8806
  * @private
8816
8807
  */
8817
8808
  const overlayStyles = (theme) => {
8809
+ var _a;
8818
8810
  return {
8819
8811
  root: {
8820
- background: theme.chatPalette.modalOverlayBlack,
8821
- opacity: '0.85'
8812
+ background: (_a = theme.semanticColors) === null || _a === void 0 ? void 0 : _a.bodyBackground
8822
8813
  }
8823
8814
  };
8824
8815
  };
@@ -8845,6 +8836,14 @@ const scrollableContentStyle = {
8845
8836
  flexDirection: 'column',
8846
8837
  flexWrap: 'nowrap'
8847
8838
  };
8839
+ /**
8840
+ * @private
8841
+ */
8842
+ const themeProviderRootStyle = {
8843
+ background: 'transparent',
8844
+ display: 'flex',
8845
+ flexDirection: 'column'
8846
+ };
8848
8847
  /**
8849
8848
  * @private
8850
8849
  */
@@ -8867,14 +8866,14 @@ const titleBarContainerStyle = {
8867
8866
  alignContent: 'center',
8868
8867
  alignItems: 'center'
8869
8868
  };
8870
- /* @conditional-compile-remove(image-overlay) */
8871
8869
  /**
8872
8870
  * @private
8873
8871
  */
8874
8872
  const titleStyle$2 = (theme) => {
8873
+ var _a;
8875
8874
  return {
8876
8875
  paddingLeft: '0.5rem',
8877
- color: theme.chatPalette.modalTitleWhite,
8876
+ color: (_a = theme.palette) === null || _a === void 0 ? void 0 : _a.black,
8878
8877
  fontFamily: 'inherit',
8879
8878
  fontSize: '0.875rem',
8880
8879
  fontStyle: 'normal',
@@ -8922,77 +8921,60 @@ const normalImageStyle = {
8922
8921
  maxHeight: '100%',
8923
8922
  maxWidth: '100%'
8924
8923
  };
8925
- /* @conditional-compile-remove(image-overlay) */
8926
8924
  /**
8927
8925
  * @private
8928
8926
  */
8929
8927
  const brokenImageStyle = (theme) => {
8928
+ var _a;
8930
8929
  return {
8931
- color: theme.chatPalette.modalTitleWhite
8930
+ color: (_a = theme.palette) === null || _a === void 0 ? void 0 : _a.black
8932
8931
  };
8933
8932
  };
8934
- /* @conditional-compile-remove(image-overlay) */
8935
8933
  /**
8936
8934
  * @private
8937
8935
  */
8938
8936
  const closeButtonStyles = (theme) => {
8937
+ var _a, _b, _c;
8939
8938
  return {
8940
- color: theme.chatPalette.modalTitleWhite,
8939
+ color: (_a = theme.palette) === null || _a === void 0 ? void 0 : _a.black,
8941
8940
  ':hover': {
8942
- color: theme.chatPalette.modalTitleWhite,
8943
- backgroundColor: theme.chatPalette.modalButtonBackgroundHover
8941
+ color: (_b = theme.palette) === null || _b === void 0 ? void 0 : _b.black
8944
8942
  },
8945
8943
  ':active': {
8946
- color: theme.chatPalette.modalTitleWhite,
8947
- backgroundColor: theme.chatPalette.modalButtonBackgroundActive
8944
+ color: (_c = theme.palette) === null || _c === void 0 ? void 0 : _c.black
8948
8945
  }
8949
8946
  };
8950
8947
  };
8951
- /* @conditional-compile-remove(image-overlay) */
8952
8948
  /**
8953
8949
  * @private
8954
8950
  */
8955
- const downloadButtonStyle = (theme) => {
8956
- return {
8957
- margin: '0 0.5rem',
8958
- height: '32px',
8959
- borderWidth: '1px',
8960
- fontSize: '0.875rem', // 14px
8961
- fontWeight: 600,
8962
- padding: '0.38rem 0.75rem',
8963
- borderRadius: '4px',
8964
- backgroundColor: theme.chatPalette.modalButtonBackground,
8965
- color: theme.chatPalette.modalTitleWhite,
8966
- whiteSpace: 'nowrap',
8967
- ':hover': {
8968
- color: theme.chatPalette.modalTitleWhite,
8969
- backgroundColor: theme.chatPalette.modalButtonBackgroundHover
8970
- },
8971
- ':active': {
8972
- color: theme.chatPalette.modalTitleWhite,
8973
- backgroundColor: theme.chatPalette.modalButtonBackgroundActive
8974
- },
8975
- '@media (max-width: 25rem)': {
8976
- display: 'none'
8977
- }
8978
- };
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
+ }
8979
8963
  };
8980
- /* @conditional-compile-remove(image-overlay) */
8981
8964
  /**
8982
8965
  * @private
8983
8966
  */
8984
8967
  const smallDownloadButtonContainerStyle = (theme) => {
8968
+ var _a, _b, _c;
8985
8969
  return {
8986
8970
  marginRight: '0.5rem',
8987
- color: theme.chatPalette.modalTitleWhite,
8988
8971
  whiteSpace: 'nowrap',
8972
+ color: (_a = theme.palette) === null || _a === void 0 ? void 0 : _a.black,
8989
8973
  ':hover': {
8990
- color: theme.chatPalette.modalTitleWhite,
8991
- backgroundColor: theme.chatPalette.modalButtonBackgroundHover
8974
+ color: (_b = theme.palette) === null || _b === void 0 ? void 0 : _b.black
8992
8975
  },
8993
8976
  ':active': {
8994
- color: theme.chatPalette.modalTitleWhite,
8995
- backgroundColor: theme.chatPalette.modalButtonBackgroundActive
8977
+ color: (_c = theme.palette) === null || _c === void 0 ? void 0 : _c.black
8996
8978
  },
8997
8979
  '@media (min-width: 25rem)': {
8998
8980
  display: 'none'
@@ -9010,37 +8992,36 @@ const smallDownloadButtonContainerStyle = (theme) => {
9010
8992
  * @beta
9011
8993
  */
9012
8994
  const ImageOverlay = (props) => {
9013
- const { isOpen, imageSrc, title, titleIcon, altText, onDownloadButtonClicked, onDismiss, onError } = props;
9014
- const theme = useTheme();
8995
+ const { isOpen, imageSrc, title, titleIcon, altText, onDownloadButtonClicked, onDismiss } = props;
9015
8996
  /* @conditional-compile-remove(image-overlay) */
9016
8997
  const localeStrings = useLocale$1().strings.imageOverlay;
9017
8998
  const [isImageLoaded, setIsImageLoaded] = React.useState(true);
9018
- const imageStyle = isImageLoaded ? normalImageStyle : brokenImageStyle(theme);
8999
+ const imageStyle = isImageLoaded ? normalImageStyle : brokenImageStyle(imageOverlayTheme);
9019
9000
  const renderHeaderBar = () => {
9020
9001
  return (React.createElement(react.Stack, { className: react.mergeStyles(headerStyle) },
9021
9002
  React.createElement(react.Stack, { className: react.mergeStyles(titleBarContainerStyle) },
9022
9003
  titleIcon,
9023
- 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)),
9024
9005
  React.createElement(react.Stack, { className: react.mergeStyles(controlBarContainerStyle) },
9025
- React.createElement(react.DefaultButton, { className: react.mergeStyles(downloadButtonStyle(theme)),
9006
+ onDownloadButtonClicked && (React.createElement(react.DefaultButton, { className: react.mergeStyles(downloadButtonStyle),
9026
9007
  /* @conditional-compile-remove(image-overlay) */
9027
- 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 }),
9028
- React.createElement(react.IconButton, { iconProps: downloadIcon, className: react.mergeStyles(smallDownloadButtonContainerStyle(theme)), onClick: () => onDownloadButtonClicked(imageSrc), "aria-label": localeStrings.downloadButtonLabel, "aria-live": 'polite' }),
9029
- 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,
9030
9011
  /* @conditional-compile-remove(image-overlay) */
9031
9012
  ariaLabel: localeStrings.dismissButtonAriaLabel, "aria-live": 'polite' }))));
9032
9013
  };
9033
9014
  const renderBodyWithLightDismiss = () => {
9034
- 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: () => {
9035
9016
  setIsImageLoaded(false);
9036
- onError && onError(event);
9037
9017
  }, onClick: (event) => event.stopPropagation(), onDoubleClick: (event) => {
9038
9018
  event.persist();
9039
9019
  } }))));
9040
9020
  };
9041
- return (React.createElement(react.Modal, { titleAriaId: title, isOpen: isOpen, onDismiss: onDismiss, overlay: { styles: Object.assign({}, overlayStyles(theme)) }, styles: { main: focusTrapZoneStyle, scrollableContent: scrollableContentStyle }, isDarkOverlay: true },
9042
- renderHeaderBar(),
9043
- 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())));
9044
9025
  };
9045
9026
 
9046
9027
  // Copyright (c) Microsoft Corporation.
@@ -18732,7 +18713,7 @@ const _StarSurvey = (props) => {
18732
18713
  /**
18733
18714
  * @private
18734
18715
  */
18735
- const questionTextStyle = (theme) => react.mergeStyles({
18716
+ const questionTextStyle$1 = (theme) => react.mergeStyles({
18736
18717
  fontWeight: 600,
18737
18718
  fontSize: _pxToRem(16),
18738
18719
  lineHeight: _pxToRem(20),
@@ -18883,7 +18864,7 @@ const _TagsSurvey = (props) => {
18883
18864
  }, [selectedTags, selectedTextResponse, onConfirm]);
18884
18865
  return (React.createElement(React.Fragment, null,
18885
18866
  React.createElement(react.Stack, { verticalAlign: "center" },
18886
- 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)),
18887
18868
  React.createElement(react.Pivot, null, Object.keys(tags).map((key, i) => {
18888
18869
  return (React.createElement(react.PivotItem, { key: `key-${i}`, headerText: categoryHeadings[key], headerButtonProps: {
18889
18870
  'data-order': i,
@@ -25212,7 +25193,7 @@ const getEndedCallPageProps = (locale, endedCall) => {
25212
25193
  *
25213
25194
  * @private
25214
25195
  */
25215
- const getCallCompositePage = (call, previousCall, unsupportedBrowserInfo, transferCall) => {
25196
+ const getCallCompositePage = (call, previousCall, transferCall, unsupportedBrowserInfo) => {
25216
25197
  /* @conditional-compile-remove(unsupported-browser) */
25217
25198
  if (isUnsupportedEnvironment(unsupportedBrowserInfo.environmentInfo, unsupportedBrowserInfo.unsupportedBrowserVersionOptedIn)) {
25218
25199
  return 'unsupportedEnvironment';
@@ -26875,12 +26856,25 @@ const createAnnouncementString = (direction, participants, strings) => {
26875
26856
  /**
26876
26857
  * determines if the media gallery should be replaced by the dtmf dialer
26877
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
26878
26861
  * @returns whether the dialer should be the gallery content or not
26879
26862
  */
26880
- const showDtmfDialer = (callees) => {
26881
- return !!((callees === null || callees === void 0 ? void 0 : callees.filter((callee) => {
26882
- return communicationCommon.isPhoneNumberIdentifier(callee) || communicationCommon.isMicrosoftTeamsAppIdentifier(callee);
26883
- })) && 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;
26884
26878
  };
26885
26879
 
26886
26880
  // Copyright (c) Microsoft Corporation.
@@ -30488,22 +30482,9 @@ const CallPage = (props) => {
30488
30482
  /* @conditional-compile-remove(dtmf-dialer) */
30489
30483
  const callees = useSelector$1(getTargetCallees);
30490
30484
  /* @conditional-compile-remove(dtmf-dialer) */
30491
- const renderDtmfDialerFromStart = showDtmfDialer(callees);
30485
+ const renderDtmfDialerFromStart = showDtmfDialer(callees, remoteParticipantsConnected);
30492
30486
  /* @conditional-compile-remove(dtmf-dialer) */
30493
30487
  const [dtmfDialerPresent, setDtmfDialerPresent] = React.useState(renderDtmfDialerFromStart);
30494
- /* @conditional-compile-remove(dtmf-dialer) */
30495
- const dialerShouldAutoDismiss = React.useRef(renderDtmfDialerFromStart);
30496
- /* @conditional-compile-remove(dtmf-dialer) */
30497
- /**
30498
- * This useEffect is about clearing the dtmf dialer should there be a new participant that joins the call.
30499
- * This will only happen the first time should the dialer be present when the call starts.
30500
- */
30501
- React.useEffect(() => {
30502
- if (remoteParticipantsConnected.length > 1 && dtmfDialerPresent && dialerShouldAutoDismiss.current) {
30503
- setDtmfDialerPresent(false);
30504
- dialerShouldAutoDismiss.current = false;
30505
- }
30506
- }, [dtmfDialerPresent, remoteParticipantsConnected, setDtmfDialerPresent]);
30507
30488
  const strings = useLocale().strings.call;
30508
30489
  // Reduce the controls shown when mobile view is enabled.
30509
30490
  const callControlOptions = mobileView ? reduceCallControlsForMobile(options === null || options === void 0 ? void 0 : options.callControls) : options === null || options === void 0 ? void 0 : options.callControls;
@@ -31883,13 +31864,21 @@ const moreDetailsStyles = {
31883
31864
  */
31884
31865
  function NoticePage(props) {
31885
31866
  const adapter = useAdapter();
31867
+ const callees = useSelector$1(getTargetCallees);
31886
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 },
31887
31869
  React.createElement(react.Stack, { className: react.mergeStyles(containerStyle), tokens: containerItemGap },
31888
31870
  props.iconName && React.createElement(CallCompositeIcon, { iconName: props.iconName }),
31889
31871
  React.createElement(react.Text, { className: react.mergeStyles(titleStyles), "aria-live": "assertive" }, props.title),
31890
31872
  React.createElement(react.Text, { className: react.mergeStyles(moreDetailsStyles), "aria-live": "assertive" }, props.moreDetails),
31891
31873
  !props.disableStartCallButton && (React.createElement(react.Stack, { styles: rejoinCallButtonContainerStyles },
31892
- 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 }))))));
31893
31882
  }
31894
31883
 
31895
31884
  // Copyright (c) Microsoft Corporation.
@@ -32002,22 +31991,19 @@ const overlayPropsWaitingToBeAdmitted = (strings) => ({
32002
31991
  overlayIcon: React.createElement(CallCompositeIcon, { iconName: "LobbyScreenWaitingToBeAdmitted" })
32003
31992
  });
32004
31993
  const overlayPropsOutboundCall = (strings, participant) => {
31994
+ var _a;
32005
31995
  if (communicationCommon.isPhoneNumberIdentifier(participant.identifier)) {
32006
31996
  return {
32007
31997
  title: participant.identifier.phoneNumber,
32008
- moreDetails: outboundCallStringsTrampoline(strings)
31998
+ moreDetails: strings.outboundCallingNoticeString
32009
31999
  };
32010
32000
  }
32011
32001
  else {
32012
32002
  return {
32013
- title: outboundCallStringsTrampoline(strings)
32003
+ title: (_a = strings.outboundCallingNoticeString) !== null && _a !== void 0 ? _a : ''
32014
32004
  };
32015
32005
  }
32016
32006
  };
32017
- const outboundCallStringsTrampoline = (strings) => {
32018
- /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
32019
- return strings.outboundCallingNoticeString;
32020
- };
32021
32007
 
32022
32008
  // Copyright (c) Microsoft Corporation.
32023
32009
  // Licensed under the MIT License.
@@ -32642,6 +32628,39 @@ function ThankYouForFeedbackPage(
32642
32628
  React.createElement(react.Text, { className: react.mergeStyles(titleStyles), "aria-live": "assertive" }, strings.endOfSurveyText))));
32643
32629
  }
32644
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
+
32645
32664
  // Copyright (c) Microsoft Corporation.
32646
32665
  // Licensed under the MIT License.
32647
32666
  var __awaiter$8 = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -32676,17 +32695,10 @@ const Survey = (props) => {
32676
32695
  /* @conditional-compile-remove(end-of-call-survey) */
32677
32696
  const theme = react.useTheme();
32678
32697
  /* @conditional-compile-remove(end-of-call-survey) */
32679
- const questionTextStyle = (theme) => react.mergeStyles({
32680
- fontWeight: 600,
32681
- fontSize: _pxToRem(20),
32682
- lineHeight: _pxToRem(20),
32683
- color: theme.palette.neutralPrimary
32684
- });
32685
- /* @conditional-compile-remove(end-of-call-survey) */
32686
32698
  return (React.createElement(React.Fragment, null,
32687
32699
  showDefaultAfterSubmitScreen && React.createElement(ThankYouForFeedbackPage, { iconName: iconName }),
32688
32700
  showDefaultAfterDismissedScreen && (React.createElement(NoticePage, { iconName: iconName, title: title, moreDetails: moreDetails, dataUiId: 'left-call-page', disableStartCallButton: disableStartCallButton })),
32689
- !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) },
32690
32702
  React.createElement(react.Text, { className: questionTextStyle(theme) }, strings.surveyTitle),
32691
32703
  React.createElement(SurveyContent, { setShowSubmitFeedbackButton: (showButton) => {
32692
32704
  setShowSubmitFeedbackButton(showButton);
@@ -32916,7 +32928,7 @@ const MainScreen = (props) => {
32916
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 }));
32917
32929
  break;
32918
32930
  }
32919
- 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 }));
32920
32932
  break;
32921
32933
  }
32922
32934
  case 'lobby':
@@ -33351,8 +33363,8 @@ class CallContext {
33351
33363
  /* @conditional-compile-remove(call-transfer) */
33352
33364
  const transferCall = latestAcceptedTransfer ? clientState.calls[latestAcceptedTransfer.callId] : undefined;
33353
33365
  const newPage = getCallCompositePage(call, latestEndedCall,
33354
- /* @conditional-compile-remove(unsupported-browser) */ environmentInfo,
33355
- /* @conditional-compile-remove(call-transfer) */ transferCall);
33366
+ /* @conditional-compile-remove(call-transfer) */ transferCall,
33367
+ /* @conditional-compile-remove(unsupported-browser) */ environmentInfo);
33356
33368
  if (!IsCallEndedPage(oldPage) && IsCallEndedPage(newPage)) {
33357
33369
  this.emitter.emit('callEnded', { callId: this.callId });
33358
33370
  // Reset the callId to undefined as the call has ended.
@@ -33458,7 +33470,7 @@ class AzureCommunicationCallAdapter {
33458
33470
  /* @conditional-compile-remove(video-background-effects) */ options, this.targetCallees);
33459
33471
  this.context.onCallEnded((endCallData) => this.emitter.emit('callEnded', endCallData));
33460
33472
  const onStateChange = (clientState) => {
33461
- var _a, _b, _c, _d;
33473
+ var _a, _b, _c;
33462
33474
  // unsubscribe when the instance gets disposed
33463
33475
  if (!this) {
33464
33476
  callClient.offStateChange(onStateChange);
@@ -33480,31 +33492,6 @@ class AzureCommunicationCallAdapter {
33480
33492
  });
33481
33493
  }
33482
33494
  this.context.updateClientState(clientState);
33483
- /* @conditional-compile-remove(call-transfer) */
33484
- const acceptedTransferCallState = this.context.getState().acceptedTransferCallState;
33485
- /* @conditional-compile-remove(call-transfer) */
33486
- // TODO: Remove this if statement when Calling SDK prevents accepting transfer requests that have timed out
33487
- // This is to handle the case when there has been an accepted transfer call that is now in the connected state
33488
- // AND is not the current call. Ensure we leave the current call.
33489
- if (acceptedTransferCallState &&
33490
- acceptedTransferCallState.state === 'Connected' &&
33491
- ((_d = this.call) === null || _d === void 0 ? void 0 : _d.id) &&
33492
- acceptedTransferCallState.id !== this.call.id) {
33493
- const cAgent = callAgent;
33494
- const transferCall = cAgent.calls.find((call) => call.id === acceptedTransferCallState.id);
33495
- if (transferCall) {
33496
- const oldCall = this.call;
33497
- this.processNewCall(transferCall);
33498
- // Arbitrary wait time before hanging up. 2 seconds is derived from manual testing. This is to allow
33499
- // transferor to hang up themselves. If the transferor has not hung up, we hang up because we are now
33500
- // in the transfer call
33501
- setTimeout(() => {
33502
- if ((oldCall === null || oldCall === void 0 ? void 0 : oldCall.state) === 'Connected') {
33503
- oldCall.hangUp();
33504
- }
33505
- }, 2000);
33506
- }
33507
- }
33508
33495
  };
33509
33496
  this.handlers = createHandlers(callClient, callAgent, deviceManager, undefined,
33510
33497
  /* @conditional-compile-remove(video-background-effects) */ {
@@ -33532,7 +33519,8 @@ class AzureCommunicationCallAdapter {
33532
33519
  };
33533
33520
  this.callAgent.on('callsUpdated', onCallsUpdated);
33534
33521
  }
33535
- else if (this.callAgent.kind === 'TeamsCallAgent') {
33522
+ /* @conditional-compile-remove(teams-identity-support) */
33523
+ if (this.callAgent.kind === 'TeamsCallAgent') {
33536
33524
  const onTeamsCallsUpdated = (args) => {
33537
33525
  var _a;
33538
33526
  if ((_a = this.call) === null || _a === void 0 ? void 0 : _a.id) {
@@ -34148,7 +34136,7 @@ class AzureCommunicationCallAdapter {
34148
34136
  /* @conditional-compile-remove(rooms) */
34149
34137
  (_f = this.call) === null || _f === void 0 ? void 0 : _f.on('roleChanged', this.roleChanged.bind(this));
34150
34138
  /* @conditional-compile-remove(call-transfer) */
34151
- (_g = this.call) === null || _g === void 0 ? void 0 : _g.feature(communicationCalling.Features.Transfer).on('transferRequested', this.transferRequested.bind(this));
34139
+ (_g = this.call) === null || _g === void 0 ? void 0 : _g.feature(communicationCalling.Features.Transfer).on('transferAccepted', this.transferAccepted.bind(this));
34152
34140
  /* @conditional-compile-remove(capabilities) */
34153
34141
  (_h = this.call) === null || _h === void 0 ? void 0 : _h.feature(communicationCalling.Features.Capabilities).on('capabilitiesChanged', this.capabilitiesChanged.bind(this));
34154
34142
  /* @conditional-compile-remove(spotlight) */
@@ -34222,20 +34210,8 @@ class AzureCommunicationCallAdapter {
34222
34210
  });
34223
34211
  }
34224
34212
  /* @conditional-compile-remove(call-transfer) */
34225
- transferRequested(args) {
34226
- const newArgs = Object.assign(Object.assign({}, args), { accept: (options) => {
34227
- var _a, _b, _c, _d, _e, _f;
34228
- const videoSource = (_c = (_b = (_a = this.context.getState().call) === null || _a === void 0 ? void 0 : _a.localVideoStreams) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.source;
34229
- args.accept({
34230
- audioOptions: (_d = options === null || options === void 0 ? void 0 : options.audioOptions) !== null && _d !== void 0 ? _d : {
34231
- muted: !!((_e = this.context.getState().call) === null || _e === void 0 ? void 0 : _e.isMuted)
34232
- },
34233
- videoOptions: (_f = options === null || options === void 0 ? void 0 : options.videoOptions) !== null && _f !== void 0 ? _f :
34234
- /* maintain video state if options.videoOptions is not defined */
34235
- (videoSource ? { localVideoStreams: [new communicationCalling.LocalVideoStream(videoSource)] } : undefined)
34236
- });
34237
- } });
34238
- this.emitter.emit('transferRequested', newArgs);
34213
+ transferAccepted(args) {
34214
+ this.emitter.emit('transferAccepted', args);
34239
34215
  }
34240
34216
  /* @conditional-compile-remove(capabilities) */
34241
34217
  capabilitiesChanged(data) {
@@ -36894,6 +36870,7 @@ exports.darkTheme = darkTheme;
36894
36870
  exports.fromFlatCommunicationIdentifier = fromFlatCommunicationIdentifier;
36895
36871
  exports.getCallingSelector = getSelector$1;
36896
36872
  exports.getChatSelector = getSelector;
36873
+ exports.imageOverlayTheme = imageOverlayTheme;
36897
36874
  exports.lightTheme = lightTheme;
36898
36875
  exports.onResolveVideoEffectDependency = onResolveVideoEffectDependency;
36899
36876
  exports.onResolveVideoEffectDependencyLazy = onResolveVideoEffectDependencyLazy;