@azure/communication-react 1.5.1-alpha-202306110015 → 1.5.1-alpha-202306140013

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 (73) hide show
  1. package/dist/communication-react.d.ts +8 -9
  2. package/dist/dist-cjs/communication-react/index.js +192 -173
  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/react-components/src/components/ChatMessage/ChatMessageComponentAsEditBox.js +5 -1
  7. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsEditBox.js.map +1 -1
  8. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageContent.js +3 -3
  9. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageContent.js.map +1 -1
  10. package/dist/dist-esm/react-components/src/components/ChatMessage/MentionRenderer.js +1 -1
  11. package/dist/dist-esm/react-components/src/components/ChatMessage/MentionRenderer.js.map +1 -1
  12. package/dist/dist-esm/react-components/src/components/InputBoxComponent.js +1 -3
  13. package/dist/dist-esm/react-components/src/components/InputBoxComponent.js.map +1 -1
  14. package/dist/dist-esm/react-components/src/components/TextFieldWithMention/TextFieldWithMention.js +106 -80
  15. package/dist/dist-esm/react-components/src/components/TextFieldWithMention/TextFieldWithMention.js.map +1 -1
  16. package/dist/dist-esm/react-components/src/components/TextFieldWithMention/mentionTagUtils.d.ts +0 -15
  17. package/dist/dist-esm/react-components/src/components/TextFieldWithMention/mentionTagUtils.js +6 -34
  18. package/dist/dist-esm/react-components/src/components/TextFieldWithMention/mentionTagUtils.js.map +1 -1
  19. package/dist/dist-esm/react-components/src/components/VideoTile.js +7 -3
  20. package/dist/dist-esm/react-components/src/components/VideoTile.js.map +1 -1
  21. package/dist/dist-esm/react-components/src/components/styles/MentionPopover.style.js +1 -1
  22. package/dist/dist-esm/react-components/src/components/styles/MentionPopover.style.js.map +1 -1
  23. package/dist/dist-esm/react-components/src/components/styles/SendBox.styles.js +2 -3
  24. package/dist/dist-esm/react-components/src/components/styles/SendBox.styles.js.map +1 -1
  25. package/dist/dist-esm/react-components/src/components/utils.d.ts +0 -4
  26. package/dist/dist-esm/react-components/src/components/utils.js +0 -4
  27. package/dist/dist-esm/react-components/src/components/utils.js.map +1 -1
  28. package/dist/dist-esm/react-components/src/localization/locales/ar-SA/strings.json +1 -1
  29. package/dist/dist-esm/react-components/src/localization/locales/de-DE/strings.json +1 -1
  30. package/dist/dist-esm/react-components/src/localization/locales/es-ES/strings.json +1 -1
  31. package/dist/dist-esm/react-components/src/localization/locales/fi-FI/strings.json +1 -1
  32. package/dist/dist-esm/react-components/src/localization/locales/fr-FR/strings.json +1 -1
  33. package/dist/dist-esm/react-components/src/localization/locales/he-IL/strings.json +1 -1
  34. package/dist/dist-esm/react-components/src/localization/locales/it-IT/strings.json +1 -1
  35. package/dist/dist-esm/react-components/src/localization/locales/ja-JP/strings.json +1 -1
  36. package/dist/dist-esm/react-components/src/localization/locales/ko-KR/strings.json +1 -1
  37. package/dist/dist-esm/react-components/src/localization/locales/nb-NO/strings.json +1 -1
  38. package/dist/dist-esm/react-components/src/localization/locales/nl-NL/strings.json +1 -1
  39. package/dist/dist-esm/react-components/src/localization/locales/pl-PL/strings.json +1 -1
  40. package/dist/dist-esm/react-components/src/localization/locales/pt-BR/strings.json +1 -1
  41. package/dist/dist-esm/react-components/src/localization/locales/ru-RU/strings.json +1 -1
  42. package/dist/dist-esm/react-components/src/localization/locales/sv-SE/strings.json +1 -1
  43. package/dist/dist-esm/react-components/src/localization/locales/tr-TR/strings.json +1 -1
  44. package/dist/dist-esm/react-components/src/localization/locales/zh-CN/strings.json +1 -1
  45. package/dist/dist-esm/react-components/src/localization/locales/zh-TW/strings.json +1 -1
  46. package/dist/dist-esm/react-composites/src/Logger.d.ts +5 -0
  47. package/dist/dist-esm/react-composites/src/Logger.js +8 -0
  48. package/dist/dist-esm/react-composites/src/Logger.js.map +1 -0
  49. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts +8 -9
  50. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +19 -3
  51. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  52. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/OnFetchProfileCallback.js +1 -1
  53. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/OnFetchProfileCallback.js.map +1 -1
  54. package/dist/dist-esm/react-composites/src/composites/localization/locales/ar-SA/strings.json +6 -1
  55. package/dist/dist-esm/react-composites/src/composites/localization/locales/de-DE/strings.json +6 -1
  56. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-GB/strings.json +6 -1
  57. package/dist/dist-esm/react-composites/src/composites/localization/locales/es-ES/strings.json +6 -1
  58. package/dist/dist-esm/react-composites/src/composites/localization/locales/fi-FI/strings.json +6 -1
  59. package/dist/dist-esm/react-composites/src/composites/localization/locales/fr-FR/strings.json +6 -1
  60. package/dist/dist-esm/react-composites/src/composites/localization/locales/he-IL/strings.json +6 -1
  61. package/dist/dist-esm/react-composites/src/composites/localization/locales/it-IT/strings.json +6 -1
  62. package/dist/dist-esm/react-composites/src/composites/localization/locales/ja-JP/strings.json +6 -1
  63. package/dist/dist-esm/react-composites/src/composites/localization/locales/ko-KR/strings.json +6 -1
  64. package/dist/dist-esm/react-composites/src/composites/localization/locales/nb-NO/strings.json +6 -1
  65. package/dist/dist-esm/react-composites/src/composites/localization/locales/nl-NL/strings.json +6 -1
  66. package/dist/dist-esm/react-composites/src/composites/localization/locales/pl-PL/strings.json +6 -1
  67. package/dist/dist-esm/react-composites/src/composites/localization/locales/pt-BR/strings.json +6 -1
  68. package/dist/dist-esm/react-composites/src/composites/localization/locales/ru-RU/strings.json +6 -1
  69. package/dist/dist-esm/react-composites/src/composites/localization/locales/sv-SE/strings.json +6 -1
  70. package/dist/dist-esm/react-composites/src/composites/localization/locales/tr-TR/strings.json +6 -1
  71. package/dist/dist-esm/react-composites/src/composites/localization/locales/zh-CN/strings.json +6 -1
  72. package/dist/dist-esm/react-composites/src/composites/localization/locales/zh-TW/strings.json +6 -1
  73. package/package.json +15 -15
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../react-components/src/components/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { IIconProps, MessageBarType } from '@fluentui/react';\nimport { ActiveErrorMessage, ErrorType } from './ErrorBar';\n\n/**\n * @private\n *\n * @param fileName\n * @param length\n * @returns string\n */\nexport const truncatedFileName = (fileName: string, length: number): string => {\n return fileName.substring(0, length).trimEnd() + (fileName.length > length ? '... ' : '');\n};\n\n/**\n * @private\n *\n * @param fileName\n * @returns string\n */\nexport const extension = (fileName: string): string => fileName.split('.').pop() || '';\n\n/**\n * @private\n */\nexport interface DismissedError {\n type: ErrorType;\n dismissedAt: Date;\n activeSince?: Date;\n}\n\n/**\n * @private\n * @param dismissedErrors\n * @param toDismiss\n * @returns DismissedError[]\n * Always returns a new Array so that the state variable is updated, trigerring a render.\n */\nexport const dismissError = (dismissedErrors: DismissedError[], toDismiss: ActiveErrorMessage): DismissedError[] => {\n const now = new Date(Date.now());\n for (const error of dismissedErrors) {\n if (error.type === toDismiss.type) {\n // Bump the timestamp for latest dismissal of this error to now.\n error.dismissedAt = now;\n error.activeSince = toDismiss.timestamp;\n return Array.from(dismissedErrors);\n }\n }\n\n const toDismissTimestamp = toDismiss.timestamp ?? now;\n\n // Record that this error was dismissed for the first time right now.\n return [\n ...dismissedErrors,\n {\n type: toDismiss.type,\n // the error time could be sometimes later than the button click time, which cause the dismiss not working\n // so we set the dismiss time to the later one\n dismissedAt: now > toDismissTimestamp ? now : toDismissTimestamp,\n activeSince: toDismiss.timestamp\n }\n ];\n};\n\n/**\n * @private\n * @param activeErrorMessages\n * @param dismissedErrors\n * @returns DismissedError[]\n * Returns a new Array if and only if contents change, to avoid re-rendering when nothing was dropped.\n */\nexport const dropDismissalsForInactiveErrors = (\n activeErrorMessages: ActiveErrorMessage[],\n dismissedErrors: DismissedError[]\n): DismissedError[] => {\n const active = new Map();\n for (const message of activeErrorMessages) {\n active.set(message.type, message);\n }\n\n // For an error such that:\n // * It was previously active, and dismissed.\n // * It did not have a timestamp associated with it.\n // * It is no longer active.\n //\n // We remove it from dismissals. When it becomes active again next time, it will be shown again on the UI.\n const shouldDeleteDismissal = (dismissed: DismissedError): boolean =>\n dismissed.activeSince === undefined && active.get(dismissed.type) === undefined;\n\n if (dismissedErrors.some((dismissed) => shouldDeleteDismissal(dismissed))) {\n return dismissedErrors.filter((dismissed) => !shouldDeleteDismissal(dismissed));\n }\n return dismissedErrors;\n};\n\n/**\n * @private\n * @param activeErrorMessages\n * @param dismissedErrors\n * @returns ActiveErrorMessage[]\n */\nexport const errorsToShow = (\n activeErrorMessages: ActiveErrorMessage[],\n dismissedErrors: DismissedError[],\n mountTimestamp?: Date\n): ActiveErrorMessage[] => {\n const dismissed: Map<ErrorType, DismissedError> = new Map();\n for (const error of dismissedErrors) {\n dismissed.set(error.type, error);\n }\n\n return activeErrorMessages.filter((error) => {\n if (mountTimestamp && error.timestamp && mountTimestamp > error.timestamp) {\n // Error has a timestamp and it is older than when the component was mounted.\n return false;\n }\n\n const dismissal = dismissed.get(error.type);\n if (!dismissal) {\n // This error was never dismissed.\n return true;\n }\n if (!error.timestamp) {\n // No timestamp associated with the error. In this case, the existence of a dismissal is enough to suppress the error.\n return false;\n }\n // Error has an associated timestamp, so compare with last dismissal.\n return error.timestamp > dismissal.dismissedAt;\n });\n};\n\n/**\n * @private\n * @param errorType\n * @returns MessageBarType\n */\nexport const messageBarType = (errorType: ErrorType): MessageBarType => {\n switch (errorType) {\n case 'callNetworkQualityLow':\n case 'callNoSpeakerFound':\n case 'callNoMicrophoneFound':\n case 'callMicrophoneAccessDenied':\n case 'callMicrophoneAccessDeniedSafari':\n case 'callMicrophoneMutedBySystem':\n case 'callMicrophoneUnmutedBySystem':\n case 'callMacOsMicrophoneAccessDenied':\n case 'callLocalVideoFreeze':\n case 'callCameraAccessDenied':\n case 'callCameraAccessDeniedSafari':\n case 'callCameraAlreadyInUse':\n case 'callVideoStoppedBySystem':\n case 'callVideoRecoveredBySystem':\n case 'callMacOsCameraAccessDenied':\n case 'callMacOsScreenShareAccessDenied':\n case 'startScreenSharingGeneric':\n case 'cameraFrozenForRemoteParticipants':\n return MessageBarType.warning;\n default:\n return MessageBarType.error;\n }\n};\n\n/**\n * @private\n * @param errorType\n * @returns IIconProps | undefined\n */\nexport const messageBarIconProps = (errorType: ErrorType): IIconProps | undefined => {\n const iconName = customIconName[errorType];\n return iconName ? { iconName } : undefined;\n};\n\n/**\n * @private\n */\nexport const customIconName: Partial<{ [key in ErrorType]: string }> = {\n callNetworkQualityLow: 'ErrorBarCallNetworkQualityLow',\n callNoSpeakerFound: 'ErrorBarCallNoSpeakerFound',\n callNoMicrophoneFound: 'ErrorBarCallNoMicrophoneFound',\n callMicrophoneAccessDenied: 'ErrorBarCallMicrophoneAccessDenied',\n callMicrophoneAccessDeniedSafari: 'ErrorBarCallMicrophoneAccessDenied',\n callMicrophoneMutedBySystem: 'ErrorBarCallMicrophoneMutedBySystem',\n callMicrophoneUnmutedBySystem: 'ErrorBarCallMicrophoneUnmutedBySystem',\n callMacOsMicrophoneAccessDenied: 'ErrorBarCallMacOsMicrophoneAccessDenied',\n callLocalVideoFreeze: 'ErrorBarCallLocalVideoFreeze',\n callCameraAccessDenied: 'ErrorBarCallCameraAccessDenied',\n callCameraAccessDeniedSafari: 'ErrorBarCallCameraAccessDenied',\n callCameraAlreadyInUse: 'ErrorBarCallCameraAlreadyInUse',\n callVideoStoppedBySystem: 'ErrorBarCallVideoStoppedBySystem',\n callVideoRecoveredBySystem: 'ErrorBarCallVideoRecoveredBySystem',\n callMacOsCameraAccessDenied: 'ErrorBarCallMacOsCameraAccessDenied'\n};\n\n/**\n * @private\n */\nexport const isValidString = (string: string | undefined): string is string => {\n return !!string && string.length > 0;\n};\n\n/**\n * Chunk an array into rows of a given size.\n * @private\n */\nexport function chunk<T>(options: T[], itemsPerRow: number): T[][] {\n const rows: T[][] = [];\n let currentRow: T[] = [];\n for (const option of options) {\n currentRow.push(option);\n if (currentRow.length === itemsPerRow) {\n rows.push(currentRow);\n currentRow = [];\n }\n }\n if (currentRow.length > 0) {\n rows.push(currentRow);\n }\n return rows;\n}\n\n/**\n * @private\n */\nexport const defaultSpokenLanguage = 'en-us';\n\n/**\n * @private\n */\nconst SAFARI_COMPOSITION_KEYCODE = 229;\n/**\n * Determine if the press of the enter key is from a composition session or not (Safari only)\n *\n * @private\n */\nexport const isEnterKeyEventFromCompositionSession = (e: React.KeyboardEvent<HTMLElement>): boolean =>\n // Uses KeyCode 229 and which code 229 to determine if the press of the enter key is from a composition session or not (Safari only)\n e.nativeEvent.isComposing ||\n e.nativeEvent.keyCode === SAFARI_COMPOSITION_KEYCODE ||\n e.nativeEvent.which === SAFARI_COMPOSITION_KEYCODE;\n\n/**\n * @private\n */\nexport const nullToUndefined = <T>(value: T | null): T | undefined => (value === null ? undefined : value);\n\n/**\n * @private\n */\nexport const undefinedToNull = <T>(value: T | undefined): T | null => (value === undefined ? null : value);\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../react-components/src/components/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { IIconProps, MessageBarType } from '@fluentui/react';\nimport { ActiveErrorMessage, ErrorType } from './ErrorBar';\n\n/**\n * @private\n *\n * @param fileName\n * @param length\n * @returns string\n */\nexport const truncatedFileName = (fileName: string, length: number): string => {\n return fileName.substring(0, length).trimEnd() + (fileName.length > length ? '... ' : '');\n};\n\n/**\n * @private\n *\n * @param fileName\n * @returns string\n */\nexport const extension = (fileName: string): string => fileName.split('.').pop() || '';\n\n/**\n * @private\n */\nexport interface DismissedError {\n type: ErrorType;\n dismissedAt: Date;\n activeSince?: Date;\n}\n\n/**\n * @private\n * @param dismissedErrors\n * @param toDismiss\n * @returns DismissedError[]\n * Always returns a new Array so that the state variable is updated, trigerring a render.\n */\nexport const dismissError = (dismissedErrors: DismissedError[], toDismiss: ActiveErrorMessage): DismissedError[] => {\n const now = new Date(Date.now());\n for (const error of dismissedErrors) {\n if (error.type === toDismiss.type) {\n // Bump the timestamp for latest dismissal of this error to now.\n error.dismissedAt = now;\n error.activeSince = toDismiss.timestamp;\n return Array.from(dismissedErrors);\n }\n }\n\n const toDismissTimestamp = toDismiss.timestamp ?? now;\n\n // Record that this error was dismissed for the first time right now.\n return [\n ...dismissedErrors,\n {\n type: toDismiss.type,\n // the error time could be sometimes later than the button click time, which cause the dismiss not working\n // so we set the dismiss time to the later one\n dismissedAt: now > toDismissTimestamp ? now : toDismissTimestamp,\n activeSince: toDismiss.timestamp\n }\n ];\n};\n\n/**\n * @private\n * @param activeErrorMessages\n * @param dismissedErrors\n * @returns DismissedError[]\n * Returns a new Array if and only if contents change, to avoid re-rendering when nothing was dropped.\n */\nexport const dropDismissalsForInactiveErrors = (\n activeErrorMessages: ActiveErrorMessage[],\n dismissedErrors: DismissedError[]\n): DismissedError[] => {\n const active = new Map();\n for (const message of activeErrorMessages) {\n active.set(message.type, message);\n }\n\n // For an error such that:\n // * It was previously active, and dismissed.\n // * It did not have a timestamp associated with it.\n // * It is no longer active.\n //\n // We remove it from dismissals. When it becomes active again next time, it will be shown again on the UI.\n const shouldDeleteDismissal = (dismissed: DismissedError): boolean =>\n dismissed.activeSince === undefined && active.get(dismissed.type) === undefined;\n\n if (dismissedErrors.some((dismissed) => shouldDeleteDismissal(dismissed))) {\n return dismissedErrors.filter((dismissed) => !shouldDeleteDismissal(dismissed));\n }\n return dismissedErrors;\n};\n\n/**\n * @private\n * @param activeErrorMessages\n * @param dismissedErrors\n * @returns ActiveErrorMessage[]\n */\nexport const errorsToShow = (\n activeErrorMessages: ActiveErrorMessage[],\n dismissedErrors: DismissedError[],\n mountTimestamp?: Date\n): ActiveErrorMessage[] => {\n const dismissed: Map<ErrorType, DismissedError> = new Map();\n for (const error of dismissedErrors) {\n dismissed.set(error.type, error);\n }\n\n return activeErrorMessages.filter((error) => {\n if (mountTimestamp && error.timestamp && mountTimestamp > error.timestamp) {\n // Error has a timestamp and it is older than when the component was mounted.\n return false;\n }\n\n const dismissal = dismissed.get(error.type);\n if (!dismissal) {\n // This error was never dismissed.\n return true;\n }\n if (!error.timestamp) {\n // No timestamp associated with the error. In this case, the existence of a dismissal is enough to suppress the error.\n return false;\n }\n // Error has an associated timestamp, so compare with last dismissal.\n return error.timestamp > dismissal.dismissedAt;\n });\n};\n\n/**\n * @private\n * @param errorType\n * @returns MessageBarType\n */\nexport const messageBarType = (errorType: ErrorType): MessageBarType => {\n switch (errorType) {\n case 'callNetworkQualityLow':\n case 'callNoSpeakerFound':\n case 'callNoMicrophoneFound':\n case 'callMicrophoneAccessDenied':\n case 'callMicrophoneAccessDeniedSafari':\n case 'callMicrophoneMutedBySystem':\n case 'callMicrophoneUnmutedBySystem':\n case 'callMacOsMicrophoneAccessDenied':\n case 'callLocalVideoFreeze':\n case 'callCameraAccessDenied':\n case 'callCameraAccessDeniedSafari':\n case 'callCameraAlreadyInUse':\n case 'callVideoStoppedBySystem':\n case 'callVideoRecoveredBySystem':\n case 'callMacOsCameraAccessDenied':\n case 'callMacOsScreenShareAccessDenied':\n case 'startScreenSharingGeneric':\n case 'cameraFrozenForRemoteParticipants':\n return MessageBarType.warning;\n default:\n return MessageBarType.error;\n }\n};\n\n/**\n * @private\n * @param errorType\n * @returns IIconProps | undefined\n */\nexport const messageBarIconProps = (errorType: ErrorType): IIconProps | undefined => {\n const iconName = customIconName[errorType];\n return iconName ? { iconName } : undefined;\n};\n\n/**\n * @private\n */\nexport const customIconName: Partial<{ [key in ErrorType]: string }> = {\n callNetworkQualityLow: 'ErrorBarCallNetworkQualityLow',\n callNoSpeakerFound: 'ErrorBarCallNoSpeakerFound',\n callNoMicrophoneFound: 'ErrorBarCallNoMicrophoneFound',\n callMicrophoneAccessDenied: 'ErrorBarCallMicrophoneAccessDenied',\n callMicrophoneAccessDeniedSafari: 'ErrorBarCallMicrophoneAccessDenied',\n callMicrophoneMutedBySystem: 'ErrorBarCallMicrophoneMutedBySystem',\n callMicrophoneUnmutedBySystem: 'ErrorBarCallMicrophoneUnmutedBySystem',\n callMacOsMicrophoneAccessDenied: 'ErrorBarCallMacOsMicrophoneAccessDenied',\n callLocalVideoFreeze: 'ErrorBarCallLocalVideoFreeze',\n callCameraAccessDenied: 'ErrorBarCallCameraAccessDenied',\n callCameraAccessDeniedSafari: 'ErrorBarCallCameraAccessDenied',\n callCameraAlreadyInUse: 'ErrorBarCallCameraAlreadyInUse',\n callVideoStoppedBySystem: 'ErrorBarCallVideoStoppedBySystem',\n callVideoRecoveredBySystem: 'ErrorBarCallVideoRecoveredBySystem',\n callMacOsCameraAccessDenied: 'ErrorBarCallMacOsCameraAccessDenied'\n};\n\n/**\n * @private\n */\nexport const isValidString = (string: string | undefined): string is string => {\n return !!string && string.length > 0;\n};\n\n/**\n * Chunk an array into rows of a given size.\n * @private\n */\nexport function chunk<T>(options: T[], itemsPerRow: number): T[][] {\n const rows: T[][] = [];\n let currentRow: T[] = [];\n for (const option of options) {\n currentRow.push(option);\n if (currentRow.length === itemsPerRow) {\n rows.push(currentRow);\n currentRow = [];\n }\n }\n if (currentRow.length > 0) {\n rows.push(currentRow);\n }\n return rows;\n}\n\n/**\n * @private\n */\nexport const defaultSpokenLanguage = 'en-us';\n\n/**\n * @private\n */\nconst SAFARI_COMPOSITION_KEYCODE = 229;\n/**\n * Determine if the press of the enter key is from a composition session or not (Safari only)\n *\n * @private\n */\nexport const isEnterKeyEventFromCompositionSession = (e: React.KeyboardEvent<HTMLElement>): boolean =>\n // Uses KeyCode 229 and which code 229 to determine if the press of the enter key is from a composition session or not (Safari only)\n e.nativeEvent.isComposing ||\n e.nativeEvent.keyCode === SAFARI_COMPOSITION_KEYCODE ||\n e.nativeEvent.which === SAFARI_COMPOSITION_KEYCODE;\n\n/**\n * @private\n */\nexport const nullToUndefined = <T>(value: T | null): T | undefined => (value === null ? undefined : value);\n"]}
@@ -139,7 +139,7 @@
139
139
  "downloadFile": "تنزيل ملف",
140
140
  "blockedWarningText": "تم حذف هذه الرسالة بسبب نهج تنظيمي.",
141
141
  "blockedWarningLinkText": "تفاصيل",
142
- "fileCardGroupMessage": "The message has {fileCount} attachment"
142
+ "fileCardGroupMessage": "تحتوي الرسالة على مرفق {fileCount}"
143
143
  },
144
144
  "errorBar": {
145
145
  "unableToReachChatService": "أنت غير متصل",
@@ -139,7 +139,7 @@
139
139
  "downloadFile": "Datei herunterladen",
140
140
  "blockedWarningText": "Diese Nachricht wurde aufgrund einer Organisationsrichtlinie gelöscht.",
141
141
  "blockedWarningLinkText": "Details",
142
- "fileCardGroupMessage": "The message has {fileCount} attachment"
142
+ "fileCardGroupMessage": "Die Nachricht weist eine {fileCount}-Anlage auf"
143
143
  },
144
144
  "errorBar": {
145
145
  "unableToReachChatService": "Sie sind offline.",
@@ -139,7 +139,7 @@
139
139
  "downloadFile": "Descargar archivo",
140
140
  "blockedWarningText": "Este mensaje se eliminó debido a la directiva de la organización.",
141
141
  "blockedWarningLinkText": "Detalles",
142
- "fileCardGroupMessage": "The message has {fileCount} attachment"
142
+ "fileCardGroupMessage": "El mensaje tiene {fileCount} datos adjuntos"
143
143
  },
144
144
  "errorBar": {
145
145
  "unableToReachChatService": "Sin conexión",
@@ -139,7 +139,7 @@
139
139
  "downloadFile": "Lataa tiedosto",
140
140
  "blockedWarningText": "Tämä viesti poistettiin organisaation käytännön vuoksi.",
141
141
  "blockedWarningLinkText": "Lisätiedot",
142
- "fileCardGroupMessage": "The message has {fileCount} attachment"
142
+ "fileCardGroupMessage": "Viestissä on {fileCount} liite"
143
143
  },
144
144
  "errorBar": {
145
145
  "unableToReachChatService": "Olet offline-tilassa",
@@ -139,7 +139,7 @@
139
139
  "downloadFile": "Télécharger un fichier",
140
140
  "blockedWarningText": "Ce message a été supprimé en raison d’une stratégie de l’organisation.",
141
141
  "blockedWarningLinkText": "Détails",
142
- "fileCardGroupMessage": "The message has {fileCount} attachment"
142
+ "fileCardGroupMessage": "Le message a {fileCount} pièce jointe"
143
143
  },
144
144
  "errorBar": {
145
145
  "unableToReachChatService": "Vous êtes hors connexion",
@@ -139,7 +139,7 @@
139
139
  "downloadFile": "הורד קובץ",
140
140
  "blockedWarningText": "הודעה זו נמחקה עקב מדיניות ארגונית.",
141
141
  "blockedWarningLinkText": "פרטים",
142
- "fileCardGroupMessage": "The message has {fileCount} attachment"
142
+ "fileCardGroupMessage": "ההודעה כוללת קובץ מצורף {fileCount}"
143
143
  },
144
144
  "errorBar": {
145
145
  "unableToReachChatService": "אתה נמצא במצב לא מקוון",
@@ -139,7 +139,7 @@
139
139
  "downloadFile": "Scarica file",
140
140
  "blockedWarningText": "Questo messaggio è stato eliminato a causa dei criteri dell'organizzazione.",
141
141
  "blockedWarningLinkText": "Dettagli",
142
- "fileCardGroupMessage": "The message has {fileCount} attachment"
142
+ "fileCardGroupMessage": "Il messaggio contiene {fileCount} allegato"
143
143
  },
144
144
  "errorBar": {
145
145
  "unableToReachChatService": "Sei offline",
@@ -139,7 +139,7 @@
139
139
  "downloadFile": "ファイルをダウンロード",
140
140
  "blockedWarningText": "組織のポリシーにより、このメッセージは削除されました。",
141
141
  "blockedWarningLinkText": "詳細",
142
- "fileCardGroupMessage": "The message has {fileCount} attachment"
142
+ "fileCardGroupMessage": "メッセージには {fileCount} 個の添付ファイルがあります"
143
143
  },
144
144
  "errorBar": {
145
145
  "unableToReachChatService": "オフラインです",
@@ -139,7 +139,7 @@
139
139
  "downloadFile": "파일 다운로드",
140
140
  "blockedWarningText": "조직 정책으로 인해 이 메시지가 삭제되었습니다.",
141
141
  "blockedWarningLinkText": "세부 정보",
142
- "fileCardGroupMessage": "The message has {fileCount} attachment"
142
+ "fileCardGroupMessage": "메시지에 {fileCount}개의 첨부 파일이 있습니다"
143
143
  },
144
144
  "errorBar": {
145
145
  "unableToReachChatService": "오프라인 상태입니다.",
@@ -139,7 +139,7 @@
139
139
  "downloadFile": "Last ned fil",
140
140
  "blockedWarningText": "Denne meldingen ble slettet på grunn av en organisasjonspolicy.",
141
141
  "blockedWarningLinkText": "Detaljer",
142
- "fileCardGroupMessage": "The message has {fileCount} attachment"
142
+ "fileCardGroupMessage": "Meldingen har {fileCount} vedlegg"
143
143
  },
144
144
  "errorBar": {
145
145
  "unableToReachChatService": "Du er frakoblet",
@@ -139,7 +139,7 @@
139
139
  "downloadFile": "Bestand downloaden",
140
140
  "blockedWarningText": "Dit bericht is verwijderd vanwege organisatiebeleid.",
141
141
  "blockedWarningLinkText": "Details",
142
- "fileCardGroupMessage": "The message has {fileCount} attachment"
142
+ "fileCardGroupMessage": "Het bericht heeft {fileCount} bijlage"
143
143
  },
144
144
  "errorBar": {
145
145
  "unableToReachChatService": "U bent offline",
@@ -139,7 +139,7 @@
139
139
  "downloadFile": "Pobierz plik",
140
140
  "blockedWarningText": "Ta wiadomość została usunięta ze względu na zasady organizacyjne.",
141
141
  "blockedWarningLinkText": "Szczegóły",
142
- "fileCardGroupMessage": "The message has {fileCount} attachment"
142
+ "fileCardGroupMessage": "Wiadomość ma następującą liczbę załączników: {fileCount}"
143
143
  },
144
144
  "errorBar": {
145
145
  "unableToReachChatService": "Jesteś w trybie offline",
@@ -139,7 +139,7 @@
139
139
  "downloadFile": "Baixar arquivo",
140
140
  "blockedWarningText": "Esta mensagem foi excluída devido à política organizacional.",
141
141
  "blockedWarningLinkText": "Detalhes",
142
- "fileCardGroupMessage": "The message has {fileCount} attachment"
142
+ "fileCardGroupMessage": "A mensagem tem {fileCount} anexo"
143
143
  },
144
144
  "errorBar": {
145
145
  "unableToReachChatService": "Você está offline",
@@ -139,7 +139,7 @@
139
139
  "downloadFile": "Скачать файл",
140
140
  "blockedWarningText": "Это сообщение было удалено политикой организации.",
141
141
  "blockedWarningLinkText": "Сведения",
142
- "fileCardGroupMessage": "The message has {fileCount} attachment"
142
+ "fileCardGroupMessage": "Сообщение содержит {fileCount} вложение"
143
143
  },
144
144
  "errorBar": {
145
145
  "unableToReachChatService": "Вы не в сети",
@@ -139,7 +139,7 @@
139
139
  "downloadFile": "Ladda ner fil",
140
140
  "blockedWarningText": "Det här meddelandet har tagits bort på grund av en organisationsprincip.",
141
141
  "blockedWarningLinkText": "Information",
142
- "fileCardGroupMessage": "The message has {fileCount} attachment"
142
+ "fileCardGroupMessage": "Meddelandet har {fileCount} bifogad fil"
143
143
  },
144
144
  "errorBar": {
145
145
  "unableToReachChatService": "Du är offline",
@@ -139,7 +139,7 @@
139
139
  "downloadFile": "Dosyayı indir",
140
140
  "blockedWarningText": "Bu ileti kuruluş ilkesi nedeniyle silindi.",
141
141
  "blockedWarningLinkText": "Ayrıntılar",
142
- "fileCardGroupMessage": "The message has {fileCount} attachment"
142
+ "fileCardGroupMessage": "İletide {fileCount} ek var"
143
143
  },
144
144
  "errorBar": {
145
145
  "unableToReachChatService": "Çevrimdışısınız",
@@ -139,7 +139,7 @@
139
139
  "downloadFile": "下载文件",
140
140
  "blockedWarningText": "由于组织策略,此消息已被删除。",
141
141
  "blockedWarningLinkText": "详细信息",
142
- "fileCardGroupMessage": "The message has {fileCount} attachment"
142
+ "fileCardGroupMessage": "该邮件包含 {fileCount} 个附件"
143
143
  },
144
144
  "errorBar": {
145
145
  "unableToReachChatService": "你已脱机",
@@ -139,7 +139,7 @@
139
139
  "downloadFile": "下載檔案",
140
140
  "blockedWarningText": "由於組織原則,已刪除此訊息。",
141
141
  "blockedWarningLinkText": "詳細資料",
142
- "fileCardGroupMessage": "The message has {fileCount} attachment"
142
+ "fileCardGroupMessage": "郵件有 {fileCount} 個附件"
143
143
  },
144
144
  "errorBar": {
145
145
  "unableToReachChatService": "您處於離線狀態",
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @private
3
+ */
4
+ export declare const compositeLogger: import("@azure/logger").AzureLogger;
5
+ //# sourceMappingURL=Logger.d.ts.map
@@ -0,0 +1,8 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT license.
3
+ import { createClientLogger } from '@azure/logger';
4
+ /**
5
+ * @private
6
+ */
7
+ export const compositeLogger = createClientLogger('communication-react:composite');
8
+ //# sourceMappingURL=Logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../../../../react-composites/src/Logger.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,kBAAkB,CAAC,+BAA+B,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createClientLogger } from '@azure/logger';\n\n/**\n * @private\n */\nexport const compositeLogger = createClientLogger('communication-react:composite');\n"]}
@@ -157,6 +157,12 @@ export declare type CommonCallAdapterOptions = {
157
157
  * Default set of background images for background image picker.
158
158
  */
159
159
  videoBackgroundImages?: VideoBackgroundImage[];
160
+ /**
161
+ * Use this to fetch profile information which will override data in {@link CallAdapterState} like display name
162
+ * The onFetchProfile is fetch-and-forget one time action for each user, once a user profile is updated, the value will be cached
163
+ * and would not be updated again within the lifecycle of adapter.
164
+ */
165
+ onFetchProfile?: OnFetchProfileCallback;
160
166
  };
161
167
  /**
162
168
  * Optional parameters to create {@link AzureCommunicationCallAdapter}
@@ -198,14 +204,7 @@ export declare type AzureCommunicationCallAdapterArgs = {
198
204
  *
199
205
  * @beta
200
206
  */
201
- export declare type TeamsAdapterOptions = {
202
- /**
203
- * Use this to fetch profile information which will override data in {@link CallAdapterState} like display name
204
- * The onFetchProfile is fetch-and-forget one time action for each user, once a user profile is updated, the value will be cached
205
- * and would not be updated again within the lifecycle of adapter.
206
- */
207
- onFetchProfile?: OnFetchProfileCallback;
208
- } & CommonCallAdapterOptions;
207
+ export declare type TeamsAdapterOptions = CommonCallAdapterOptions;
209
208
  /**
210
209
  * Arguments for creating the Azure Communication Services implementation of {@link TeamsCallAdapter}.
211
210
  *
@@ -281,6 +280,6 @@ export declare const createAzureCommunicationCallAdapterFromClient: (callClient:
281
280
  *
282
281
  * @beta
283
282
  */
284
- export declare const createTeamsCallAdapterFromClient: (callClient: StatefulCallClient, callAgent: TeamsCallAgent, locator: CallAdapterLocator, options?: TeamsAdapterOptions | undefined) => Promise<TeamsCallAdapter>;
283
+ export declare const createTeamsCallAdapterFromClient: (callClient: StatefulCallClient, callAgent: TeamsCallAgent, locator: CallAdapterLocator, options?: CommonCallAdapterOptions | undefined) => Promise<TeamsCallAdapter>;
285
284
  export {};
286
285
  //# sourceMappingURL=AzureCommunicationCallAdapter.d.ts.map
@@ -9,6 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  step((generator = generator.apply(thisArg, _arguments || [])).next());
10
10
  });
11
11
  };
12
+ import { compositeLogger } from '../../../Logger';
12
13
  import { _isInCall } from "../../../../../calling-component-bindings/src";
13
14
  import { createStatefulCallClient } from "../../../../../calling-stateful-client/src";
14
15
  /* @conditional-compile-remove(teams-identity-support) */
@@ -333,29 +334,44 @@ export class AzureCommunicationCallAdapter {
333
334
  }
334
335
  queryCameras() {
335
336
  return __awaiter(this, void 0, void 0, function* () {
337
+ const startTime = new Date().getTime();
336
338
  return yield this.asyncTeeErrorToEventEmitter(() => __awaiter(this, void 0, void 0, function* () {
337
- return this.deviceManager.getCameras();
339
+ const cameras = yield this.deviceManager.getCameras();
340
+ const endTime = new Date().getTime();
341
+ compositeLogger.info('time to query cameras', endTime - startTime, 'ms');
342
+ return cameras;
338
343
  }));
339
344
  });
340
345
  }
341
346
  queryMicrophones() {
342
347
  return __awaiter(this, void 0, void 0, function* () {
348
+ const startTime = new Date().getTime();
343
349
  return yield this.asyncTeeErrorToEventEmitter(() => __awaiter(this, void 0, void 0, function* () {
344
- return this.deviceManager.getMicrophones();
350
+ const microphones = yield this.deviceManager.getMicrophones();
351
+ const endTime = new Date().getTime();
352
+ compositeLogger.info('time to query microphones', endTime - startTime, 'ms');
353
+ return microphones;
345
354
  }));
346
355
  });
347
356
  }
348
357
  querySpeakers() {
349
358
  return __awaiter(this, void 0, void 0, function* () {
359
+ const startTime = new Date().getTime();
350
360
  return yield this.asyncTeeErrorToEventEmitter(() => __awaiter(this, void 0, void 0, function* () {
351
- return this.deviceManager.isSpeakerSelectionAvailable ? this.deviceManager.getSpeakers() : [];
361
+ const speakers = (yield this.deviceManager.isSpeakerSelectionAvailable) ? this.deviceManager.getSpeakers() : [];
362
+ const endTime = new Date().getTime();
363
+ compositeLogger.info('time to query speakers', endTime - startTime, 'ms');
364
+ return speakers;
352
365
  }));
353
366
  });
354
367
  }
355
368
  askDevicePermission(constrain) {
356
369
  return __awaiter(this, void 0, void 0, function* () {
370
+ const startTime = new Date().getTime();
357
371
  return yield this.asyncTeeErrorToEventEmitter(() => __awaiter(this, void 0, void 0, function* () {
358
372
  yield this.deviceManager.askDevicePermission(constrain);
373
+ const endTime = new Date().getTime();
374
+ compositeLogger.info('time to query askDevicePermissions', endTime - startTime, 'ms');
359
375
  }));
360
376
  });
361
377
  }