@azure/communication-react 1.18.0-alpha-202407180014 → 1.18.0-alpha-202407200014

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 (129) hide show
  1. package/dist/communication-react.d.ts +71 -18
  2. package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-Bi4Or6hk.js → ChatMessageComponentAsRichTextEditBox-D4ctXnw1.js} +27 -6
  3. package/dist/dist-cjs/communication-react/ChatMessageComponentAsRichTextEditBox-D4ctXnw1.js.map +1 -0
  4. package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-CaXswhPn.js → RichTextSendBoxWrapper-F6eqVXer.js} +2 -2
  5. package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-CaXswhPn.js.map → RichTextSendBoxWrapper-F6eqVXer.js.map} +1 -1
  6. package/dist/dist-cjs/communication-react/{index-B3X0l4SB.js → index-BJO_NOTU.js} +658 -367
  7. package/dist/dist-cjs/communication-react/index-BJO_NOTU.js.map +1 -0
  8. package/dist/dist-cjs/communication-react/index.js +1 -1
  9. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  10. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  11. package/dist/dist-esm/calling-stateful-client/src/CallAgentDeclarative.d.ts +3 -3
  12. package/dist/dist-esm/calling-stateful-client/src/CallAgentDeclarative.js.map +1 -1
  13. package/dist/dist-esm/calling-stateful-client/src/CallAgentDeclarativeCommon.d.ts +1 -1
  14. package/dist/dist-esm/calling-stateful-client/src/CallAgentDeclarativeCommon.js +15 -7
  15. package/dist/dist-esm/calling-stateful-client/src/CallAgentDeclarativeCommon.js.map +1 -1
  16. package/dist/dist-esm/calling-stateful-client/src/IncomingCallDeclarative.d.ts +2 -8
  17. package/dist/dist-esm/calling-stateful-client/src/IncomingCallDeclarative.js.map +1 -1
  18. package/dist/dist-esm/calling-stateful-client/src/TeamsCallAgentDeclarative.d.ts +14 -2
  19. package/dist/dist-esm/calling-stateful-client/src/TeamsCallAgentDeclarative.js.map +1 -1
  20. package/dist/dist-esm/calling-stateful-client/src/TeamsIncomingCallDeclarative.d.ts +17 -0
  21. package/dist/dist-esm/calling-stateful-client/src/TeamsIncomingCallDeclarative.js +49 -0
  22. package/dist/dist-esm/calling-stateful-client/src/TeamsIncomingCallDeclarative.js.map +1 -0
  23. package/dist/dist-esm/calling-stateful-client/src/TypeGuards.d.ts +9 -1
  24. package/dist/dist-esm/calling-stateful-client/src/TypeGuards.js +16 -0
  25. package/dist/dist-esm/calling-stateful-client/src/TypeGuards.js.map +1 -1
  26. package/dist/dist-esm/calling-stateful-client/src/index-public.d.ts +1 -1
  27. package/dist/dist-esm/calling-stateful-client/src/index-public.js.map +1 -1
  28. package/dist/dist-esm/communication-react/src/index.d.ts +1 -1
  29. package/dist/dist-esm/communication-react/src/index.js.map +1 -1
  30. package/dist/dist-esm/react-components/src/components/Attachment/AttachmentCard.js +14 -8
  31. package/dist/dist-esm/react-components/src/components/Attachment/AttachmentCard.js.map +1 -1
  32. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentWrapper.d.ts +8 -2
  33. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentWrapper.js.map +1 -1
  34. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsEditBoxPicker.d.ts +6 -4
  35. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsEditBoxPicker.js +2 -12
  36. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsEditBoxPicker.js.map +1 -1
  37. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsRichTextEditBox.d.ts +2 -2
  38. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsRichTextEditBox.js +25 -4
  39. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsRichTextEditBox.js.map +1 -1
  40. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponent.d.ts +8 -6
  41. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponent.js +12 -3
  42. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponent.js.map +1 -1
  43. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/FluentChatMyMessageComponent.js +27 -3
  44. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/FluentChatMyMessageComponent.js.map +1 -1
  45. package/dist/dist-esm/react-components/src/components/MessageThread.d.ts +9 -15
  46. package/dist/dist-esm/react-components/src/components/MessageThread.js +10 -1
  47. package/dist/dist-esm/react-components/src/components/MessageThread.js.map +1 -1
  48. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.js +28 -22
  49. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.js.map +1 -1
  50. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.d.ts +49 -0
  51. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js +16 -4
  52. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js.map +1 -1
  53. package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/RichTextToolbar.js +20 -2
  54. package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/RichTextToolbar.js.map +1 -1
  55. package/dist/dist-esm/react-components/src/components/index.d.ts +2 -1
  56. package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
  57. package/dist/dist-esm/react-components/src/components/styles/AttachmentCard.styles.d.ts +2 -2
  58. package/dist/dist-esm/react-components/src/components/styles/AttachmentCard.styles.js +15 -17
  59. package/dist/dist-esm/react-components/src/components/styles/AttachmentCard.styles.js.map +1 -1
  60. package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.js +3 -0
  61. package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.js.map +1 -1
  62. package/dist/dist-esm/react-components/src/components/utils/RichTextEditorUtils.d.ts +1 -5
  63. package/dist/dist-esm/react-components/src/components/utils/RichTextEditorUtils.js +0 -21
  64. package/dist/dist-esm/react-components/src/components/utils/RichTextEditorUtils.js.map +1 -1
  65. package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.d.ts +9 -1
  66. package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.js +10 -2
  67. package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.js.map +1 -1
  68. package/dist/dist-esm/react-components/src/localization/locales/ar-SA/strings.json +101 -63
  69. package/dist/dist-esm/react-components/src/localization/locales/cs-CZ/strings.json +99 -61
  70. package/dist/dist-esm/react-components/src/localization/locales/de-DE/strings.json +99 -61
  71. package/dist/dist-esm/react-components/src/localization/locales/en-GB/strings.json +99 -61
  72. package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +8 -2
  73. package/dist/dist-esm/react-components/src/localization/locales/es-ES/strings.json +99 -61
  74. package/dist/dist-esm/react-components/src/localization/locales/fi-FI/strings.json +99 -61
  75. package/dist/dist-esm/react-components/src/localization/locales/fr-FR/strings.json +102 -64
  76. package/dist/dist-esm/react-components/src/localization/locales/he-IL/strings.json +99 -61
  77. package/dist/dist-esm/react-components/src/localization/locales/it-IT/strings.json +99 -61
  78. package/dist/dist-esm/react-components/src/localization/locales/ja-JP/strings.json +101 -63
  79. package/dist/dist-esm/react-components/src/localization/locales/ko-KR/strings.json +106 -68
  80. package/dist/dist-esm/react-components/src/localization/locales/nb-NO/strings.json +99 -61
  81. package/dist/dist-esm/react-components/src/localization/locales/nl-NL/strings.json +105 -67
  82. package/dist/dist-esm/react-components/src/localization/locales/pl-PL/strings.json +104 -66
  83. package/dist/dist-esm/react-components/src/localization/locales/pt-BR/strings.json +102 -64
  84. package/dist/dist-esm/react-components/src/localization/locales/ru-RU/strings.json +100 -62
  85. package/dist/dist-esm/react-components/src/localization/locales/sv-SE/strings.json +99 -61
  86. package/dist/dist-esm/react-components/src/localization/locales/tr-TR/strings.json +100 -62
  87. package/dist/dist-esm/react-components/src/localization/locales/zh-CN/strings.json +101 -63
  88. package/dist/dist-esm/react-components/src/localization/locales/zh-TW/strings.json +100 -62
  89. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js +66 -31
  90. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js.map +1 -1
  91. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadReducer.d.ts +49 -0
  92. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadReducer.js +48 -0
  93. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadReducer.js.map +1 -0
  94. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadUtils.d.ts +33 -1
  95. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadUtils.js +198 -6
  96. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadUtils.js.map +1 -1
  97. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/AttachmentUpload.d.ts +7 -7
  98. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/AttachmentUpload.js.map +1 -1
  99. package/dist/dist-esm/react-composites/src/composites/common/SendBoxPicker.d.ts +2 -5
  100. package/dist/dist-esm/react-composites/src/composites/common/SendBoxPicker.js.map +1 -1
  101. package/dist/dist-esm/react-composites/src/composites/common/constants.d.ts +4 -0
  102. package/dist/dist-esm/react-composites/src/composites/common/constants.js +4 -0
  103. package/dist/dist-esm/react-composites/src/composites/common/constants.js.map +1 -1
  104. package/dist/dist-esm/react-composites/src/composites/localization/locales/ar-SA/strings.json +10 -5
  105. package/dist/dist-esm/react-composites/src/composites/localization/locales/cs-CZ/strings.json +6 -1
  106. package/dist/dist-esm/react-composites/src/composites/localization/locales/de-DE/strings.json +6 -1
  107. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-GB/strings.json +6 -1
  108. package/dist/dist-esm/react-composites/src/composites/localization/locales/es-ES/strings.json +6 -1
  109. package/dist/dist-esm/react-composites/src/composites/localization/locales/fi-FI/strings.json +10 -5
  110. package/dist/dist-esm/react-composites/src/composites/localization/locales/fr-FR/strings.json +10 -5
  111. package/dist/dist-esm/react-composites/src/composites/localization/locales/he-IL/strings.json +10 -5
  112. package/dist/dist-esm/react-composites/src/composites/localization/locales/it-IT/strings.json +10 -5
  113. package/dist/dist-esm/react-composites/src/composites/localization/locales/ja-JP/strings.json +6 -1
  114. package/dist/dist-esm/react-composites/src/composites/localization/locales/ko-KR/strings.json +10 -5
  115. package/dist/dist-esm/react-composites/src/composites/localization/locales/nb-NO/strings.json +6 -1
  116. package/dist/dist-esm/react-composites/src/composites/localization/locales/nl-NL/strings.json +6 -1
  117. package/dist/dist-esm/react-composites/src/composites/localization/locales/pl-PL/strings.json +6 -1
  118. package/dist/dist-esm/react-composites/src/composites/localization/locales/pt-BR/strings.json +10 -5
  119. package/dist/dist-esm/react-composites/src/composites/localization/locales/ru-RU/strings.json +6 -1
  120. package/dist/dist-esm/react-composites/src/composites/localization/locales/sv-SE/strings.json +10 -5
  121. package/dist/dist-esm/react-composites/src/composites/localization/locales/tr-TR/strings.json +6 -1
  122. package/dist/dist-esm/react-composites/src/composites/localization/locales/zh-CN/strings.json +10 -5
  123. package/dist/dist-esm/react-composites/src/composites/localization/locales/zh-TW/strings.json +10 -5
  124. package/package.json +14 -14
  125. package/dist/dist-cjs/communication-react/ChatMessageComponentAsRichTextEditBox-Bi4Or6hk.js.map +0 -1
  126. package/dist/dist-cjs/communication-react/index-B3X0l4SB.js.map +0 -1
  127. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/useImageUpload.d.ts +0 -12
  128. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/useImageUpload.js +0 -115
  129. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/useImageUpload.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"RichTextEditor.styles.js","sourceRoot":"","sources":["../../../../../../../react-components/src/components/styles/RichTextEditor.styles.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { IButtonStyles, ICommandBarStyles, IContextualMenuStyles, IStyle, Theme, mergeStyles } from '@fluentui/react';\nimport { editorTextBoxButtonStyle } from './SendBox.styles';\nimport { RichTextEditorStyleProps } from '../RichTextEditor/RichTextEditor';\n\n/**\n * @private\n */\nexport const richTextEditorStyle = (props: { minHeight: string; maxHeight: string }): string => {\n return mergeStyles({\n border: 'none',\n overflow: 'auto',\n outline: 'none',\n minHeight: props.minHeight,\n maxHeight: props.maxHeight,\n maxWidth: '100%',\n paddingTop: '0.5rem'\n });\n};\n\n/**\n * @private\n */\nexport const richTextEditorWrapperStyle = (theme: Theme): string => {\n return mergeStyles({\n paddingInlineStart: `0.75rem`,\n paddingInlineEnd: `0.75rem`,\n maxWidth: '100%',\n color: theme.palette.neutralPrimary,\n\n '& table': {\n background: 'transparent',\n borderCollapse: 'collapse',\n width: '100%',\n borderSpacing: '0',\n tableLayout: 'auto',\n\n '& tr': {\n background: 'transparent',\n border: `1px solid ${theme.palette.neutralSecondary}`,\n\n '& td': {\n background: 'transparent',\n border: `1px solid ${theme.palette.neutralSecondary}`,\n wordBreak: 'normal',\n padding: '0.125rem 0.25rem',\n verticalAlign: 'top'\n }\n }\n }\n });\n};\n\n/**\n * @private\n */\nexport const richTextActionButtonsStackStyle = mergeStyles({\n paddingRight: `0.125rem`\n});\n\n/**\n * @private\n */\nexport const richTextActionButtonsStyle = mergeStyles({\n height: '2.25rem',\n width: '2.25rem',\n margin: 'auto'\n});\n\n/**\n * @private\n */\nexport const richTextActionButtonsDividerStyle = (theme: Theme): string => {\n return mergeStyles({\n color: theme.palette.neutralQuaternaryAlt,\n margin: '0.375rem -0.5rem 0 -0.5rem',\n backgroundColor: 'transparent'\n });\n};\n\n/**\n * @private\n */\nexport const ribbonOverflowButtonStyle = (theme: Theme): Partial<IContextualMenuStyles> => {\n return {\n subComponentStyles: {\n menuItem: {\n icon: { color: theme.palette.neutralPrimary, paddingTop: '0.5rem' },\n root: ribbonOverflowButtonRootStyles(theme)\n },\n callout: {}\n }\n };\n};\n\nconst ribbonOverflowButtonRootStyles = (theme: Theme): IStyle => {\n return {\n selectors: {\n // Icon's color doesn't work here because of the specificity\n '&:hover': {\n selectors: {\n '.ms-ContextualMenu-icon': {\n color: theme.palette.neutralPrimary\n }\n }\n },\n '.ribbon-table-button-regular-icon': {\n display: 'inline-block',\n margin: '0 0.25rem 0 0.25rem',\n width: '1.25rem',\n height: '1.25rem'\n },\n '.ribbon-table-button-filled-icon': {\n display: 'none'\n }\n }\n };\n};\n\nconst ribbonButtonRootStyles = (iconColor: string, hoverIconColor: string): IStyle => {\n return {\n backgroundColor: 'transparent',\n selectors: {\n // media query applies only if the device allows real hover interactions\n // and hover styles are not applied on touch- only devices where the hover state cannot be accurately detected\n '@media (hover: hover)': {\n ':hover .ms-Button-icon': {\n color: hoverIconColor\n },\n ':hover .ms-Button-menuIcon': {\n color: hoverIconColor\n }\n },\n // the classes needs here to apply to styles for icons because of the specificity\n '.ms-Button-icon': {\n color: iconColor\n },\n '.ms-Button-menuIcon': {\n color: iconColor\n }\n }\n };\n};\n\n/**\n * @private\n */\nexport const toolbarButtonStyle = (theme: Theme): Partial<IButtonStyles> => {\n return {\n icon: { color: theme.palette.neutralPrimary, height: 'auto', paddingTop: '0.25rem' },\n menuIcon: { color: theme.palette.neutralPrimary, height: 'auto', paddingTop: '0.25rem' },\n root: { minWidth: 'auto', backgroundColor: 'transparent' },\n rootChecked: ribbonButtonRootStyles(theme.palette.themePrimary, theme.palette.themePrimary),\n // there is a bug for Android where the press action is considered hover sometimes\n rootHovered: ribbonButtonRootStyles(theme.palette.neutralPrimary, theme.palette.themePrimary),\n rootCheckedHovered: ribbonButtonRootStyles(theme.palette.themePrimary, theme.palette.themePrimary),\n rootCheckedPressed: ribbonButtonRootStyles(theme.palette.themePrimary, theme.palette.themePrimary),\n rootPressed: ribbonButtonRootStyles(theme.palette.themePrimary, theme.palette.themePrimary),\n rootExpanded: ribbonButtonRootStyles(theme.palette.themePrimary, theme.palette.themePrimary),\n rootExpandedHovered: ribbonButtonRootStyles(theme.palette.themePrimary, theme.palette.themePrimary)\n };\n};\n\nconst rootRibbonTableButtonStyle = (theme: Theme): IStyle => {\n // merge IStyles props\n return Object.assign({ minWidth: 'auto' }, ribbonTableButtonRootStyles(theme, false));\n};\n\n/**\n * @private\n */\nexport const toolbarTableButtonStyle = (theme: Theme): Partial<IButtonStyles> => {\n return {\n icon: { height: 'auto' },\n menuIcon: { height: 'auto' },\n root: rootRibbonTableButtonStyle(theme),\n rootChecked: ribbonTableButtonRootStyles(theme, true),\n rootHovered: ribbonTableButtonRootStyles(theme, true),\n rootCheckedHovered: ribbonTableButtonRootStyles(theme, true),\n rootCheckedPressed: ribbonTableButtonRootStyles(theme, true),\n rootPressed: ribbonTableButtonRootStyles(theme, true),\n rootExpanded: ribbonTableButtonRootStyles(theme, true),\n rootExpandedHovered: ribbonTableButtonRootStyles(theme, true)\n };\n};\nconst ribbonTableButtonRootStyles = (theme: Theme, isSelected: boolean): IStyle => {\n return {\n backgroundColor: 'transparent',\n selectors: {\n '.ribbon-table-button-regular-icon': {\n width: '1.25rem',\n height: '1.25rem',\n margin: '0 0.25rem 0 0.25rem',\n color: theme.palette.neutralPrimary,\n display: isSelected ? 'none' : 'inline-block'\n },\n '.ribbon-table-button-filled-icon': {\n width: '1.25rem',\n height: '1.25rem',\n margin: '0 0.25rem 0 0.25rem',\n color: theme.palette.themePrimary,\n display: isSelected ? 'inline-block' : 'none'\n }\n }\n };\n};\n\n/**\n * @private\n */\nexport const ribbonDividerStyle = (theme: Theme): string => {\n return mergeStyles({\n color: theme.palette.neutralQuaternaryAlt,\n margin: '0 -0.5rem',\n paddingTop: '0.25rem'\n });\n};\n\n/**\n * @private\n */\nexport const richTextToolbarStyle: Partial<ICommandBarStyles> = {\n // Override for the default white color of the Ribbon component\n root: { backgroundColor: 'transparent', padding: '0.25rem 0 0 0', height: '2rem' }\n};\n\n/**\n * @private\n */\nexport const richTextFormatButtonIconStyle = (theme: Theme, isSelected: boolean): string => {\n return mergeStyles(editorTextBoxButtonStyle, {\n color: isSelected ? theme.palette.themePrimary : theme.palette.neutralSecondary\n });\n};\n\n/**\n * @private\n */\nexport const editBoxRichTextEditorStyle = (): RichTextEditorStyleProps => {\n return {\n minHeight: '2.25rem',\n maxHeight: '8rem'\n };\n};\n\n/**\n * @private\n */\nexport const sendBoxRichTextEditorStyle = (isExpanded: boolean): RichTextEditorStyleProps => {\n return {\n minHeight: isExpanded ? '4rem' : '1.25rem',\n maxHeight: '8rem'\n };\n};\n\n/**\n * @private\n */\nexport const insertTableMenuCellButtonStyles = (theme: Theme): IStyle => {\n return {\n width: '24px',\n height: '24px',\n border: `solid 1px ${theme.palette.neutralSecondaryAlt}`,\n cursor: 'pointer',\n background: 'transparent'\n };\n};\n\n/**\n * @private\n */\nexport const insertTableMenuCellButtonSelectedStyles = (theme: Theme): IStyle => {\n return {\n background: theme.palette.themePrimary,\n border: `solid 1px ${theme.palette.themeLighterAlt}`\n };\n};\n\n/**\n * @private\n */\nexport const insertTableMenuTablePane = mergeStyles({\n padding: '8px 10px 12px 10px',\n boxSizing: 'content-box',\n minWidth: 'auto'\n});\n\n/**\n * @private\n */\nexport const insertTableMenuFocusZone = (theme: Theme): string => {\n return mergeStyles({\n display: 'inline-grid',\n gridTemplateColumns: 'auto auto auto auto auto',\n border: `solid 1px ${theme.palette.neutralSecondaryAlt}`\n });\n};\n\n/**\n * @private\n */\nexport const insertTableMenuTitleStyles = mergeStyles({\n width: '100%',\n height: '1rem',\n fontSize: '0.75rem',\n marginBottom: '0.5rem'\n});\n\n/**\n * @private\n */\nexport const tableContextMenuIconStyles = mergeStyles({\n marginTop: '0.375rem'\n});\n"]}
1
+ {"version":3,"file":"RichTextEditor.styles.js","sourceRoot":"","sources":["../../../../../../../react-components/src/components/styles/RichTextEditor.styles.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { IButtonStyles, ICommandBarStyles, IContextualMenuStyles, IStyle, Theme, mergeStyles } from '@fluentui/react';\nimport { editorTextBoxButtonStyle } from './SendBox.styles';\nimport { RichTextEditorStyleProps } from '../RichTextEditor/RichTextEditor';\n\n/**\n * @private\n */\nexport const richTextEditorStyle = (props: { minHeight: string; maxHeight: string }): string => {\n return mergeStyles({\n border: 'none',\n overflow: 'auto',\n outline: 'none',\n minHeight: props.minHeight,\n maxHeight: props.maxHeight,\n maxWidth: '100%',\n paddingTop: '0.5rem'\n });\n};\n\n/**\n * @private\n */\nexport const richTextEditorWrapperStyle = (theme: Theme): string => {\n return mergeStyles({\n paddingInlineStart: `0.75rem`,\n paddingInlineEnd: `0.75rem`,\n maxWidth: '100%',\n color: theme.palette.neutralPrimary,\n '& img': {\n margin: '0.2rem'\n },\n '& table': {\n background: 'transparent',\n borderCollapse: 'collapse',\n width: '100%',\n borderSpacing: '0',\n tableLayout: 'auto',\n\n '& tr': {\n background: 'transparent',\n border: `1px solid ${theme.palette.neutralSecondary}`,\n\n '& td': {\n background: 'transparent',\n border: `1px solid ${theme.palette.neutralSecondary}`,\n wordBreak: 'normal',\n padding: '0.125rem 0.25rem',\n verticalAlign: 'top'\n }\n }\n }\n });\n};\n\n/**\n * @private\n */\nexport const richTextActionButtonsStackStyle = mergeStyles({\n paddingRight: `0.125rem`\n});\n\n/**\n * @private\n */\nexport const richTextActionButtonsStyle = mergeStyles({\n height: '2.25rem',\n width: '2.25rem',\n margin: 'auto'\n});\n\n/**\n * @private\n */\nexport const richTextActionButtonsDividerStyle = (theme: Theme): string => {\n return mergeStyles({\n color: theme.palette.neutralQuaternaryAlt,\n margin: '0.375rem -0.5rem 0 -0.5rem',\n backgroundColor: 'transparent'\n });\n};\n\n/**\n * @private\n */\nexport const ribbonOverflowButtonStyle = (theme: Theme): Partial<IContextualMenuStyles> => {\n return {\n subComponentStyles: {\n menuItem: {\n icon: { color: theme.palette.neutralPrimary, paddingTop: '0.5rem' },\n root: ribbonOverflowButtonRootStyles(theme)\n },\n callout: {}\n }\n };\n};\n\nconst ribbonOverflowButtonRootStyles = (theme: Theme): IStyle => {\n return {\n selectors: {\n // Icon's color doesn't work here because of the specificity\n '&:hover': {\n selectors: {\n '.ms-ContextualMenu-icon': {\n color: theme.palette.neutralPrimary\n }\n }\n },\n '.ribbon-table-button-regular-icon': {\n display: 'inline-block',\n margin: '0 0.25rem 0 0.25rem',\n width: '1.25rem',\n height: '1.25rem'\n },\n '.ribbon-table-button-filled-icon': {\n display: 'none'\n }\n }\n };\n};\n\nconst ribbonButtonRootStyles = (iconColor: string, hoverIconColor: string): IStyle => {\n return {\n backgroundColor: 'transparent',\n selectors: {\n // media query applies only if the device allows real hover interactions\n // and hover styles are not applied on touch- only devices where the hover state cannot be accurately detected\n '@media (hover: hover)': {\n ':hover .ms-Button-icon': {\n color: hoverIconColor\n },\n ':hover .ms-Button-menuIcon': {\n color: hoverIconColor\n }\n },\n // the classes needs here to apply to styles for icons because of the specificity\n '.ms-Button-icon': {\n color: iconColor\n },\n '.ms-Button-menuIcon': {\n color: iconColor\n }\n }\n };\n};\n\n/**\n * @private\n */\nexport const toolbarButtonStyle = (theme: Theme): Partial<IButtonStyles> => {\n return {\n icon: { color: theme.palette.neutralPrimary, height: 'auto', paddingTop: '0.25rem' },\n menuIcon: { color: theme.palette.neutralPrimary, height: 'auto', paddingTop: '0.25rem' },\n root: { minWidth: 'auto', backgroundColor: 'transparent' },\n rootChecked: ribbonButtonRootStyles(theme.palette.themePrimary, theme.palette.themePrimary),\n // there is a bug for Android where the press action is considered hover sometimes\n rootHovered: ribbonButtonRootStyles(theme.palette.neutralPrimary, theme.palette.themePrimary),\n rootCheckedHovered: ribbonButtonRootStyles(theme.palette.themePrimary, theme.palette.themePrimary),\n rootCheckedPressed: ribbonButtonRootStyles(theme.palette.themePrimary, theme.palette.themePrimary),\n rootPressed: ribbonButtonRootStyles(theme.palette.themePrimary, theme.palette.themePrimary),\n rootExpanded: ribbonButtonRootStyles(theme.palette.themePrimary, theme.palette.themePrimary),\n rootExpandedHovered: ribbonButtonRootStyles(theme.palette.themePrimary, theme.palette.themePrimary)\n };\n};\n\nconst rootRibbonTableButtonStyle = (theme: Theme): IStyle => {\n // merge IStyles props\n return Object.assign({ minWidth: 'auto' }, ribbonTableButtonRootStyles(theme, false));\n};\n\n/**\n * @private\n */\nexport const toolbarTableButtonStyle = (theme: Theme): Partial<IButtonStyles> => {\n return {\n icon: { height: 'auto' },\n menuIcon: { height: 'auto' },\n root: rootRibbonTableButtonStyle(theme),\n rootChecked: ribbonTableButtonRootStyles(theme, true),\n rootHovered: ribbonTableButtonRootStyles(theme, true),\n rootCheckedHovered: ribbonTableButtonRootStyles(theme, true),\n rootCheckedPressed: ribbonTableButtonRootStyles(theme, true),\n rootPressed: ribbonTableButtonRootStyles(theme, true),\n rootExpanded: ribbonTableButtonRootStyles(theme, true),\n rootExpandedHovered: ribbonTableButtonRootStyles(theme, true)\n };\n};\nconst ribbonTableButtonRootStyles = (theme: Theme, isSelected: boolean): IStyle => {\n return {\n backgroundColor: 'transparent',\n selectors: {\n '.ribbon-table-button-regular-icon': {\n width: '1.25rem',\n height: '1.25rem',\n margin: '0 0.25rem 0 0.25rem',\n color: theme.palette.neutralPrimary,\n display: isSelected ? 'none' : 'inline-block'\n },\n '.ribbon-table-button-filled-icon': {\n width: '1.25rem',\n height: '1.25rem',\n margin: '0 0.25rem 0 0.25rem',\n color: theme.palette.themePrimary,\n display: isSelected ? 'inline-block' : 'none'\n }\n }\n };\n};\n\n/**\n * @private\n */\nexport const ribbonDividerStyle = (theme: Theme): string => {\n return mergeStyles({\n color: theme.palette.neutralQuaternaryAlt,\n margin: '0 -0.5rem',\n paddingTop: '0.25rem'\n });\n};\n\n/**\n * @private\n */\nexport const richTextToolbarStyle: Partial<ICommandBarStyles> = {\n // Override for the default white color of the Ribbon component\n root: { backgroundColor: 'transparent', padding: '0.25rem 0 0 0', height: '2rem' }\n};\n\n/**\n * @private\n */\nexport const richTextFormatButtonIconStyle = (theme: Theme, isSelected: boolean): string => {\n return mergeStyles(editorTextBoxButtonStyle, {\n color: isSelected ? theme.palette.themePrimary : theme.palette.neutralSecondary\n });\n};\n\n/**\n * @private\n */\nexport const editBoxRichTextEditorStyle = (): RichTextEditorStyleProps => {\n return {\n minHeight: '2.25rem',\n maxHeight: '8rem'\n };\n};\n\n/**\n * @private\n */\nexport const sendBoxRichTextEditorStyle = (isExpanded: boolean): RichTextEditorStyleProps => {\n return {\n minHeight: isExpanded ? '4rem' : '1.25rem',\n maxHeight: '8rem'\n };\n};\n\n/**\n * @private\n */\nexport const insertTableMenuCellButtonStyles = (theme: Theme): IStyle => {\n return {\n width: '24px',\n height: '24px',\n border: `solid 1px ${theme.palette.neutralSecondaryAlt}`,\n cursor: 'pointer',\n background: 'transparent'\n };\n};\n\n/**\n * @private\n */\nexport const insertTableMenuCellButtonSelectedStyles = (theme: Theme): IStyle => {\n return {\n background: theme.palette.themePrimary,\n border: `solid 1px ${theme.palette.themeLighterAlt}`\n };\n};\n\n/**\n * @private\n */\nexport const insertTableMenuTablePane = mergeStyles({\n padding: '8px 10px 12px 10px',\n boxSizing: 'content-box',\n minWidth: 'auto'\n});\n\n/**\n * @private\n */\nexport const insertTableMenuFocusZone = (theme: Theme): string => {\n return mergeStyles({\n display: 'inline-grid',\n gridTemplateColumns: 'auto auto auto auto auto',\n border: `solid 1px ${theme.palette.neutralSecondaryAlt}`\n });\n};\n\n/**\n * @private\n */\nexport const insertTableMenuTitleStyles = mergeStyles({\n width: '100%',\n height: '1rem',\n fontSize: '0.75rem',\n marginBottom: '0.5rem'\n});\n\n/**\n * @private\n */\nexport const tableContextMenuIconStyles = mergeStyles({\n marginTop: '0.375rem'\n});\n"]}
@@ -1,4 +1,4 @@
1
- import type { BorderFormat, DatasetFormat, ModelToDomContext, ValueSanitizer } from 'roosterjs-content-model-types';
1
+ import type { BorderFormat, DatasetFormat, ModelToDomContext } from 'roosterjs-content-model-types';
2
2
  /**
3
3
  * Plugin event type for RoosterJS plugins
4
4
  * @private
@@ -34,8 +34,4 @@ export declare const borderApplier: (format: BorderFormat, element: HTMLElement,
34
34
  * For all other cases, it applies the default formats.
35
35
  */
36
36
  export declare const dataSetApplier: (format: DatasetFormat, element: HTMLElement, context: ModelToDomContext) => void;
37
- /**
38
- * @private
39
- */
40
- export declare const DefaultSanitizers: Record<string, ValueSanitizer>;
41
37
  //# sourceMappingURL=RichTextEditorUtils.d.ts.map
@@ -57,25 +57,4 @@ export const dataSetApplier = (format, element, context) => {
57
57
  context.defaultFormatAppliers.dataset(format, element, context);
58
58
  }
59
59
  };
60
- // divParagraphSanitizer and DefaultSanitizers should be deleted from here and used as part of PastePlugin instead (from roosterjs packages)
61
- // https://github.com/microsoft/roosterjs/issues/2737
62
- /**
63
- * @private
64
- */
65
- const divParagraphSanitizer = (value, tagName) => {
66
- const tag = tagName.toLowerCase();
67
- if (tag === 'div' || tag === 'p') {
68
- return null;
69
- }
70
- return value;
71
- };
72
- /**
73
- * @private
74
- */
75
- export const DefaultSanitizers = {
76
- width: divParagraphSanitizer,
77
- height: divParagraphSanitizer,
78
- 'inline-size': divParagraphSanitizer,
79
- 'block-size': divParagraphSanitizer
80
- };
81
60
  //# sourceMappingURL=RichTextEditorUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RichTextEditorUtils.js","sourceRoot":"","sources":["../../../../../../../react-components/src/components/utils/RichTextEditorUtils.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC;;;GAGG;AACH,MAAM,CAAN,IAAY,eASX;AATD,WAAY,eAAe;IACzB,8CAA2B,CAAA;IAC3B,kDAA+B,CAAA;IAC/B,oDAAiC,CAAA;IACjC,kCAAe,CAAA;IACf,sCAAmB,CAAA;IACnB,8CAA2B,CAAA;IAC3B,8CAA2B,CAAA;IAC3B,sCAAmB,CAAA;AACrB,CAAC,EATW,eAAe,KAAf,eAAe,QAS1B;AAED;;;GAGG;AACH,MAAM,CAAN,IAAY,yBAEX;AAFD,WAAY,yBAAyB;IACnC,4CAAe,CAAA;AACjB,CAAC,EAFW,yBAAyB,KAAzB,yBAAyB,QAEpC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAoB,EAAE,OAAoB,EAAE,OAA0B,EAAQ,EAAE;IAC5G,IAAI,OAAO,YAAY,oBAAoB,EAAE,CAAC;QAC5C,kCAAkC;QAClC,wCAAwC;QACxC,iCAAiC;IACnC,CAAC;SAAM,IAAI,OAAO,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC;QAChD,4CAA4C;QAC5C,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;AACH,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAqB,EAAE,OAAoB,EAAE,OAA0B,EAAQ,EAAE;IAC9G,IAAI,OAAO,YAAY,gBAAgB,EAAE,CAAC;QACxC,oCAAoC;QACpC,wCAAwC;QACxC,iCAAiC;IACnC,CAAC;SAAM,IAAI,OAAO,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;QACjD,4CAA4C;QAC5C,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;AACH,CAAC,CAAC;AAEF,4IAA4I;AAC5I,qDAAqD;AACrD;;GAEG;AACH,MAAM,qBAAqB,GAAG,CAAC,KAAa,EAAE,OAAe,EAAiB,EAAE;IAC9E,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAClC,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAmC;IAC/D,KAAK,EAAE,qBAAqB;IAC5B,MAAM,EAAE,qBAAqB;IAC7B,aAAa,EAAE,qBAAqB;IACpC,YAAY,EAAE,qBAAqB;CACpC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { BorderFormat, DatasetFormat, ModelToDomContext, ValueSanitizer } from 'roosterjs-content-model-types';\n\n/**\n * Plugin event type for RoosterJS plugins\n * @private\n */\nexport enum PluginEventType {\n EditorReady = 'editorReady',\n BeforeDispose = 'beforeDispose',\n ContentChanged = 'contentChanged',\n Input = 'input',\n KeyDown = 'keyDown',\n BeforePaste = 'beforePaste',\n ZoomChanged = 'zoomChanged',\n MouseUp = 'mouseUp'\n}\n\n/**\n * ContentChanged event source for RoosterJS\n * @private\n */\nexport enum ContentChangedEventSource {\n Paste = 'Paste'\n}\n\n/**\n * Applies the border format to the specified element.\n * If the element is an HTMLTableCellElement, it skips setting editing info\n * and to use classes instead of inline styles.\n * For all other cases, the default format applier is used.\n */\nexport const borderApplier = (format: BorderFormat, element: HTMLElement, context: ModelToDomContext): void => {\n if (element instanceof HTMLTableCellElement) {\n // don't set format for table cell\n // as it will set inline styles for them\n // we want to use classes instead\n } else if (context.defaultFormatAppliers.border) {\n // apply default formats for all other cases\n context.defaultFormatAppliers.border(format, element, context);\n }\n};\n\n/**\n * Applies the dataset format to the given HTML element.\n * If the element is an HTMLTableElement, it skips setting editing info\n * and to use classes instead of inline styles.\n * For all other cases, it applies the default formats.\n */\nexport const dataSetApplier = (format: DatasetFormat, element: HTMLElement, context: ModelToDomContext): void => {\n if (element instanceof HTMLTableElement) {\n // don't set editing info for tables\n // as it will set inline styles for them\n // we want to use classes instead\n } else if (context.defaultFormatAppliers.dataset) {\n // apply default formats for all other cases\n context.defaultFormatAppliers.dataset(format, element, context);\n }\n};\n\n// divParagraphSanitizer and DefaultSanitizers should be deleted from here and used as part of PastePlugin instead (from roosterjs packages)\n// https://github.com/microsoft/roosterjs/issues/2737\n/**\n * @private\n */\nconst divParagraphSanitizer = (value: string, tagName: string): string | null => {\n const tag = tagName.toLowerCase();\n if (tag === 'div' || tag === 'p') {\n return null;\n }\n return value;\n};\n\n/**\n * @private\n */\nexport const DefaultSanitizers: Record<string, ValueSanitizer> = {\n width: divParagraphSanitizer,\n height: divParagraphSanitizer,\n 'inline-size': divParagraphSanitizer,\n 'block-size': divParagraphSanitizer\n};\n"]}
1
+ {"version":3,"file":"RichTextEditorUtils.js","sourceRoot":"","sources":["../../../../../../../react-components/src/components/utils/RichTextEditorUtils.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC;;;GAGG;AACH,MAAM,CAAN,IAAY,eASX;AATD,WAAY,eAAe;IACzB,8CAA2B,CAAA;IAC3B,kDAA+B,CAAA;IAC/B,oDAAiC,CAAA;IACjC,kCAAe,CAAA;IACf,sCAAmB,CAAA;IACnB,8CAA2B,CAAA;IAC3B,8CAA2B,CAAA;IAC3B,sCAAmB,CAAA;AACrB,CAAC,EATW,eAAe,KAAf,eAAe,QAS1B;AAED;;;GAGG;AACH,MAAM,CAAN,IAAY,yBAEX;AAFD,WAAY,yBAAyB;IACnC,4CAAe,CAAA;AACjB,CAAC,EAFW,yBAAyB,KAAzB,yBAAyB,QAEpC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAoB,EAAE,OAAoB,EAAE,OAA0B,EAAQ,EAAE;IAC5G,IAAI,OAAO,YAAY,oBAAoB,EAAE,CAAC;QAC5C,kCAAkC;QAClC,wCAAwC;QACxC,iCAAiC;IACnC,CAAC;SAAM,IAAI,OAAO,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC;QAChD,4CAA4C;QAC5C,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;AACH,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAqB,EAAE,OAAoB,EAAE,OAA0B,EAAQ,EAAE;IAC9G,IAAI,OAAO,YAAY,gBAAgB,EAAE,CAAC;QACxC,oCAAoC;QACpC,wCAAwC;QACxC,iCAAiC;IACnC,CAAC;SAAM,IAAI,OAAO,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;QACjD,4CAA4C;QAC5C,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;AACH,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { BorderFormat, DatasetFormat, ModelToDomContext } from 'roosterjs-content-model-types';\n\n/**\n * Plugin event type for RoosterJS plugins\n * @private\n */\nexport enum PluginEventType {\n EditorReady = 'editorReady',\n BeforeDispose = 'beforeDispose',\n ContentChanged = 'contentChanged',\n Input = 'input',\n KeyDown = 'keyDown',\n BeforePaste = 'beforePaste',\n ZoomChanged = 'zoomChanged',\n MouseUp = 'mouseUp'\n}\n\n/**\n * ContentChanged event source for RoosterJS\n * @private\n */\nexport enum ContentChangedEventSource {\n Paste = 'Paste'\n}\n\n/**\n * Applies the border format to the specified element.\n * If the element is an HTMLTableCellElement, it skips setting editing info\n * and to use classes instead of inline styles.\n * For all other cases, the default format applier is used.\n */\nexport const borderApplier = (format: BorderFormat, element: HTMLElement, context: ModelToDomContext): void => {\n if (element instanceof HTMLTableCellElement) {\n // don't set format for table cell\n // as it will set inline styles for them\n // we want to use classes instead\n } else if (context.defaultFormatAppliers.border) {\n // apply default formats for all other cases\n context.defaultFormatAppliers.border(format, element, context);\n }\n};\n\n/**\n * Applies the dataset format to the given HTML element.\n * If the element is an HTMLTableElement, it skips setting editing info\n * and to use classes instead of inline styles.\n * For all other cases, it applies the default formats.\n */\nexport const dataSetApplier = (format: DatasetFormat, element: HTMLElement, context: ModelToDomContext): void => {\n if (element instanceof HTMLTableElement) {\n // don't set editing info for tables\n // as it will set inline styles for them\n // we want to use classes instead\n } else if (context.defaultFormatAppliers.dataset) {\n // apply default formats for all other cases\n context.defaultFormatAppliers.dataset(format, element, context);\n }\n};\n"]}
@@ -39,10 +39,17 @@ export declare const isSendBoxButtonAriaDisabled: ({ hasContent, hasCompletedAtt
39
39
  hasError: boolean;
40
40
  disabled: boolean;
41
41
  }) => boolean;
42
+ interface CancelInlineImageUploadProps {
43
+ imageSrcArray: string[] | undefined;
44
+ imageUploadsInProgress: AttachmentMetadataInProgress[] | undefined;
45
+ messageId?: string;
46
+ editBoxOnCancelInlineImageUpload?: (id: string, messageId: string) => void;
47
+ sendBoxOnCancelInlineImageUpload?: (id: string) => void;
48
+ }
42
49
  /**
43
50
  * @internal
44
51
  */
45
- export declare const cancelInlineImageUpload: (imageSrcArray: string[] | undefined, imageUploadsInProgress: AttachmentMetadataInProgress[] | undefined, onCancelInlineImageUpload?: (id: string) => void) => void;
52
+ export declare const cancelInlineImageUpload: (props: CancelInlineImageUploadProps) => void;
46
53
  /**
47
54
  * @internal
48
55
  */
@@ -55,4 +62,5 @@ export declare const insertImagesToContentString: (content: string, imageUploads
55
62
  * @internal
56
63
  */
57
64
  export declare const removeBrokenImageContent: (content: string) => string;
65
+ export {};
58
66
  //# sourceMappingURL=SendBoxUtils.d.ts.map
@@ -44,6 +44,12 @@ export const addUploadedImagesToMessage = (message, uploadInlineImages) => __awa
44
44
  const imagesPromise = Array.from(document.querySelectorAll('img')).map((img) => {
45
45
  return new Promise((resolve, rejects) => {
46
46
  const uploadInlineImage = uploadInlineImages.find((imageUpload) => !imageUpload.error && (imageUpload.url === img.src || imageUpload.id === img.id));
47
+ // The message might content images that comes with the message before editing, those images are not in the uploadInlineImages array.
48
+ // This function should only modify the message content for images in the uploadInlineImages array.
49
+ if (!uploadInlineImage) {
50
+ resolve();
51
+ return;
52
+ }
47
53
  const imageElement = new Image();
48
54
  imageElement.src = img.src;
49
55
  imageElement.onload = () => {
@@ -109,11 +115,13 @@ hasCompletedAttachmentUploads, hasError, disabled }) => {
109
115
  /**
110
116
  * @internal
111
117
  */
112
- export const cancelInlineImageUpload = (imageSrcArray, imageUploadsInProgress, onCancelInlineImageUpload) => {
118
+ export const cancelInlineImageUpload = (props) => {
119
+ const { imageSrcArray, imageUploadsInProgress, messageId, editBoxOnCancelInlineImageUpload, sendBoxOnCancelInlineImageUpload } = props;
113
120
  if (imageSrcArray && imageUploadsInProgress && (imageUploadsInProgress === null || imageUploadsInProgress === void 0 ? void 0 : imageUploadsInProgress.length) > 0) {
114
121
  imageUploadsInProgress === null || imageUploadsInProgress === void 0 ? void 0 : imageUploadsInProgress.map((uploadImage) => {
115
122
  if (uploadImage.url && !(imageSrcArray === null || imageSrcArray === void 0 ? void 0 : imageSrcArray.includes(uploadImage.url))) {
116
- onCancelInlineImageUpload === null || onCancelInlineImageUpload === void 0 ? void 0 : onCancelInlineImageUpload(uploadImage.id);
123
+ sendBoxOnCancelInlineImageUpload && sendBoxOnCancelInlineImageUpload(uploadImage.id);
124
+ editBoxOnCancelInlineImageUpload && editBoxOnCancelInlineImageUpload(uploadImage.id, messageId || '');
117
125
  }
118
126
  });
119
127
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SendBoxUtils.js","sourceRoot":"","sources":["../../../../../../../react-components/src/components/utils/SendBoxUtils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/* @conditional-compile-remove(file-sharing-acs) */\nimport { AttachmentMetadataInProgress } from '@internal/acs-ui-common';\n/* @conditional-compile-remove(file-sharing-acs) */\nimport { AttachmentMetadata } from '@internal/acs-ui-common';\n\n/**\n * @private\n */\nexport const MAXIMUM_LENGTH_OF_MESSAGE = 8000;\nconst EMPTY_MESSAGE_REGEX = /^\\s*$/;\n\n/* @conditional-compile-remove(file-sharing-acs) */\n/**\n * @private\n */\nexport const hasIncompleteAttachmentUploads = (\n attachmentsWithProgress: AttachmentMetadataInProgress[] | undefined\n): boolean => {\n return !!(\n attachmentsWithProgress?.length &&\n !attachmentsWithProgress\n .filter((attachmentUpload) => !attachmentUpload.error)\n .every((attachmentUpload) => attachmentUpload.progress === 1 && attachmentUpload.progress !== undefined)\n );\n};\n\n/* @conditional-compile-remove(file-sharing-acs) */\n/**\n * @private\n */\nexport const isAttachmentUploadCompleted = (\n attachmentsWithProgress: AttachmentMetadataInProgress[] | undefined\n): boolean => {\n return !!attachmentsWithProgress?.find((attachment) => !attachment.error);\n};\n\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\n/**\n * @internal\n */\n// Before sending the image, we need to add the image id we get back after uploading the images to the message content.\nexport const addUploadedImagesToMessage = async (\n message: string,\n uploadInlineImages: AttachmentMetadataInProgress[]\n): Promise<string> => {\n if (message === '') {\n return message;\n }\n const document = new DOMParser().parseFromString(message ?? '', 'text/html');\n const imagesPromise = Array.from(document.querySelectorAll('img')).map((img) => {\n return new Promise<void>((resolve, rejects) => {\n const uploadInlineImage = uploadInlineImages.find(\n (imageUpload) => !imageUpload.error && (imageUpload.url === img.src || imageUpload.id === img.id)\n );\n const imageElement = new Image();\n imageElement.src = img.src;\n imageElement.onload = () => {\n // imageElement is a copy of original img element, so changes need to be made to the original img element\n img.id = uploadInlineImage?.id ?? '';\n img.src = '';\n img.width = imageElement.width;\n img.height = imageElement.height;\n img.style.aspectRatio = `${imageElement.width} / ${imageElement.height}`;\n // Clear maxWidth and maxHeight styles so that they can set in the style attribute\n img.style.maxWidth = '';\n img.style.maxHeight = '';\n resolve();\n };\n imageElement.onerror = () => {\n console.log('Error loading image', img.src);\n rejects();\n };\n });\n });\n await Promise.all(imagesPromise);\n const newMessage = document.body.innerHTML;\n return newMessage;\n};\n\n/**\n * @private\n */\nexport const isMessageTooLong = (valueLength: number): boolean => {\n return valueLength > MAXIMUM_LENGTH_OF_MESSAGE;\n};\n\n/**\n * @private\n */\nexport const sanitizeText = (message: string): string => {\n if (EMPTY_MESSAGE_REGEX.test(message)) {\n return '';\n } else {\n return message;\n }\n};\n\n/**\n * Determines whether the send box should be disabled for ARIA accessibility.\n *\n * @param hasContent - Indicates whether the send box has content.\n * @param hasCompletedAttachmentUploads - Indicates whether attachment uploads have completed.\n * @param hasError - Indicates whether there is an error.\n * @param disabled - Indicates whether the send box is disabled.\n * @returns A boolean value indicating whether the send box should be disabled for ARIA accessibility.\n */\nexport const isSendBoxButtonAriaDisabled = ({\n hasContent,\n /* @conditional-compile-remove(file-sharing-acs) */\n hasCompletedAttachmentUploads,\n hasError,\n disabled\n}: {\n hasContent: boolean;\n /* @conditional-compile-remove(file-sharing-acs) */\n hasCompletedAttachmentUploads: boolean;\n hasError: boolean;\n disabled: boolean;\n}): boolean => {\n return (\n // no content\n !(hasContent || /* @conditional-compile-remove(file-sharing-acs) */ hasCompletedAttachmentUploads) ||\n //error message exists\n hasError ||\n disabled\n );\n};\n\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\n/**\n * @internal\n */\nexport const cancelInlineImageUpload = (\n imageSrcArray: string[] | undefined,\n imageUploadsInProgress: AttachmentMetadataInProgress[] | undefined,\n onCancelInlineImageUpload?: (id: string) => void\n): void => {\n if (imageSrcArray && imageUploadsInProgress && imageUploadsInProgress?.length > 0) {\n imageUploadsInProgress?.map((uploadImage) => {\n if (uploadImage.url && !imageSrcArray?.includes(uploadImage.url)) {\n onCancelInlineImageUpload?.(uploadImage.id);\n }\n });\n }\n};\n\n/* @conditional-compile-remove(file-sharing-acs) */\n/**\n * @internal\n */\nexport const toAttachmentMetadata = (\n attachmentsWithProgress: AttachmentMetadataInProgress[] | undefined\n): AttachmentMetadata[] | undefined => {\n return attachmentsWithProgress\n ?.filter((attachment) => {\n return !('error' in attachment) && !attachment.error?.message;\n })\n .map((attachment) => {\n return {\n id: attachment.id,\n name: attachment.name,\n url: attachment.url ?? ''\n };\n });\n};\n\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\n/**\n * @internal\n */\nexport const insertImagesToContentString = async (\n content: string,\n imageUploadsInProgress?: AttachmentMetadataInProgress[],\n onCompleted?: (content: string) => void\n): Promise<void> => {\n if (!imageUploadsInProgress || imageUploadsInProgress.length <= 0) {\n onCompleted?.(content);\n }\n const newContent = await addUploadedImagesToMessage(content, imageUploadsInProgress ?? []);\n onCompleted?.(newContent);\n};\n\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\n/**\n * @internal\n */\nexport const removeBrokenImageContent = (content: string): string => {\n const document = new DOMParser().parseFromString(content, 'text/html');\n document.querySelectorAll('img').forEach((img) => {\n // Before submitting/resend the message, we need to trim the unnecessary attributes such as src,\n // which is set to a local svg of a broken image icon at this point.\n // Once message is submitted/resent, it will be fetched again and might not be a broken image anymore,\n // That's why we need to remove the class and data-ui-id attribute of 'broken-image-wrapper'\n if (img.className === 'broken-image-wrapper') {\n img.removeAttribute('class');\n img.removeAttribute('src');\n img.removeAttribute('data-ui-id');\n }\n });\n return document.body.innerHTML;\n};\n"]}
1
+ {"version":3,"file":"SendBoxUtils.js","sourceRoot":"","sources":["../../../../../../../react-components/src/components/utils/SendBoxUtils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/* @conditional-compile-remove(file-sharing-acs) */\nimport { AttachmentMetadataInProgress } from '@internal/acs-ui-common';\n/* @conditional-compile-remove(file-sharing-acs) */\nimport { AttachmentMetadata } from '@internal/acs-ui-common';\n\n/**\n * @private\n */\nexport const MAXIMUM_LENGTH_OF_MESSAGE = 8000;\nconst EMPTY_MESSAGE_REGEX = /^\\s*$/;\n\n/* @conditional-compile-remove(file-sharing-acs) */\n/**\n * @private\n */\nexport const hasIncompleteAttachmentUploads = (\n attachmentsWithProgress: AttachmentMetadataInProgress[] | undefined\n): boolean => {\n return !!(\n attachmentsWithProgress?.length &&\n !attachmentsWithProgress\n .filter((attachmentUpload) => !attachmentUpload.error)\n .every((attachmentUpload) => attachmentUpload.progress === 1 && attachmentUpload.progress !== undefined)\n );\n};\n\n/* @conditional-compile-remove(file-sharing-acs) */\n/**\n * @private\n */\nexport const isAttachmentUploadCompleted = (\n attachmentsWithProgress: AttachmentMetadataInProgress[] | undefined\n): boolean => {\n return !!attachmentsWithProgress?.find((attachment) => !attachment.error);\n};\n\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\n/**\n * @internal\n */\n// Before sending the image, we need to add the image id we get back after uploading the images to the message content.\nexport const addUploadedImagesToMessage = async (\n message: string,\n uploadInlineImages: AttachmentMetadataInProgress[]\n): Promise<string> => {\n if (message === '') {\n return message;\n }\n const document = new DOMParser().parseFromString(message ?? '', 'text/html');\n const imagesPromise = Array.from(document.querySelectorAll('img')).map((img) => {\n return new Promise<void>((resolve, rejects) => {\n const uploadInlineImage = uploadInlineImages.find(\n (imageUpload) => !imageUpload.error && (imageUpload.url === img.src || imageUpload.id === img.id)\n );\n // The message might content images that comes with the message before editing, those images are not in the uploadInlineImages array.\n // This function should only modify the message content for images in the uploadInlineImages array.\n if (!uploadInlineImage) {\n resolve();\n return;\n }\n const imageElement = new Image();\n imageElement.src = img.src;\n imageElement.onload = () => {\n // imageElement is a copy of original img element, so changes need to be made to the original img element\n img.id = uploadInlineImage?.id ?? '';\n img.src = '';\n img.width = imageElement.width;\n img.height = imageElement.height;\n img.style.aspectRatio = `${imageElement.width} / ${imageElement.height}`;\n // Clear maxWidth and maxHeight styles so that they can set in the style attribute\n img.style.maxWidth = '';\n img.style.maxHeight = '';\n resolve();\n };\n imageElement.onerror = () => {\n console.log('Error loading image', img.src);\n rejects();\n };\n });\n });\n await Promise.all(imagesPromise);\n const newMessage = document.body.innerHTML;\n return newMessage;\n};\n\n/**\n * @private\n */\nexport const isMessageTooLong = (valueLength: number): boolean => {\n return valueLength > MAXIMUM_LENGTH_OF_MESSAGE;\n};\n\n/**\n * @private\n */\nexport const sanitizeText = (message: string): string => {\n if (EMPTY_MESSAGE_REGEX.test(message)) {\n return '';\n } else {\n return message;\n }\n};\n\n/**\n * Determines whether the send box should be disabled for ARIA accessibility.\n *\n * @param hasContent - Indicates whether the send box has content.\n * @param hasCompletedAttachmentUploads - Indicates whether attachment uploads have completed.\n * @param hasError - Indicates whether there is an error.\n * @param disabled - Indicates whether the send box is disabled.\n * @returns A boolean value indicating whether the send box should be disabled for ARIA accessibility.\n */\nexport const isSendBoxButtonAriaDisabled = ({\n hasContent,\n /* @conditional-compile-remove(file-sharing-acs) */\n hasCompletedAttachmentUploads,\n hasError,\n disabled\n}: {\n hasContent: boolean;\n /* @conditional-compile-remove(file-sharing-acs) */\n hasCompletedAttachmentUploads: boolean;\n hasError: boolean;\n disabled: boolean;\n}): boolean => {\n return (\n // no content\n !(hasContent || /* @conditional-compile-remove(file-sharing-acs) */ hasCompletedAttachmentUploads) ||\n //error message exists\n hasError ||\n disabled\n );\n};\n\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\ninterface CancelInlineImageUploadProps {\n imageSrcArray: string[] | undefined;\n imageUploadsInProgress: AttachmentMetadataInProgress[] | undefined;\n messageId?: string;\n editBoxOnCancelInlineImageUpload?: (id: string, messageId: string) => void;\n sendBoxOnCancelInlineImageUpload?: (id: string) => void;\n}\n\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\n/**\n * @internal\n */\nexport const cancelInlineImageUpload = (props: CancelInlineImageUploadProps): void => {\n const {\n imageSrcArray,\n imageUploadsInProgress,\n messageId,\n editBoxOnCancelInlineImageUpload,\n sendBoxOnCancelInlineImageUpload\n } = props;\n if (imageSrcArray && imageUploadsInProgress && imageUploadsInProgress?.length > 0) {\n imageUploadsInProgress?.map((uploadImage) => {\n if (uploadImage.url && !imageSrcArray?.includes(uploadImage.url)) {\n sendBoxOnCancelInlineImageUpload && sendBoxOnCancelInlineImageUpload(uploadImage.id);\n editBoxOnCancelInlineImageUpload && editBoxOnCancelInlineImageUpload(uploadImage.id, messageId || '');\n }\n });\n }\n};\n\n/* @conditional-compile-remove(file-sharing-acs) */\n/**\n * @internal\n */\nexport const toAttachmentMetadata = (\n attachmentsWithProgress: AttachmentMetadataInProgress[] | undefined\n): AttachmentMetadata[] | undefined => {\n return attachmentsWithProgress\n ?.filter((attachment) => {\n return !('error' in attachment) && !attachment.error?.message;\n })\n .map((attachment) => {\n return {\n id: attachment.id,\n name: attachment.name,\n url: attachment.url ?? ''\n };\n });\n};\n\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\n/**\n * @internal\n */\nexport const insertImagesToContentString = async (\n content: string,\n imageUploadsInProgress?: AttachmentMetadataInProgress[],\n onCompleted?: (content: string) => void\n): Promise<void> => {\n if (!imageUploadsInProgress || imageUploadsInProgress.length <= 0) {\n onCompleted?.(content);\n }\n const newContent = await addUploadedImagesToMessage(content, imageUploadsInProgress ?? []);\n onCompleted?.(newContent);\n};\n\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\n/**\n * @internal\n */\nexport const removeBrokenImageContent = (content: string): string => {\n const document = new DOMParser().parseFromString(content, 'text/html');\n document.querySelectorAll('img').forEach((img) => {\n // Before submitting/resend the message, we need to trim the unnecessary attributes such as src,\n // which is set to a local svg of a broken image icon at this point.\n // Once message is submitted/resent, it will be fetched again and might not be a broken image anymore,\n // That's why we need to remove the class and data-ui-id attribute of 'broken-image-wrapper'\n if (img.className === 'broken-image-wrapper') {\n img.removeAttribute('class');\n img.removeAttribute('src');\n img.removeAttribute('data-ui-id');\n }\n });\n return document.body.innerHTML;\n};\n"]}
@@ -185,8 +185,8 @@
185
185
  "failToSendTag": "فشل الإرسال",
186
186
  "editedTag": "تم التحرير",
187
187
  "liveAuthorIntro": "قال {author}",
188
- "messageContentAriaText": "{author} قال {message}",
189
- "messageContentMineAriaText": "لقد قلت {message}",
188
+ "messageContentAriaText": "{status} {author} قال {message}",
189
+ "messageContentMineAriaText": "{status} أنت قولت {message}",
190
190
  "editBoxTextLimit": "تجاوزت رسالتك الحد الأقصى لعدد الأحرف {limitNumber}",
191
191
  "editBoxPlaceholderText": "تحرير رسالتك",
192
192
  "newMessagesIndicator": "رسائل جديدة",
@@ -220,7 +220,8 @@
220
220
  "richTextDeleteColumnMenu": "حذف العمود",
221
221
  "richTextDeleteRowMenu": "حذف الصف",
222
222
  "richTextDeleteTableMenu": "حذف الجدول",
223
- "richTextToolbarMoreButtonAriaLabel": "خيارات إضافية"
223
+ "richTextToolbarMoreButtonAriaLabel": "خيارات إضافية",
224
+ "attachmentUploadsPendingError": "يتم الآن التحميل... الرجاء الانتظار."
224
225
  },
225
226
  "errorBar": {
226
227
  "unableToReachChatService": "أنت غير متصل",
@@ -237,6 +238,7 @@
237
238
  "startScreenShareGeneric": "حدثت مشكلة أثناء بدء مشاركة الشاشة.",
238
239
  "stopScreenShareGeneric": "فشل إيقاف مشاركة الشاشة",
239
240
  "callNetworkQualityLow": "جودة الشبكة مقبولة.",
241
+ "teamsMeetingCallNetworkQualityLow": "جودة الشبكة منخفضة.",
240
242
  "callNoSpeakerFound": "لم يتم العثور على سماعات أو سماعات رأس. قم بتوصيل جهاز صوت لسماع المكالمة.",
241
243
  "callNoMicrophoneFound": "لم يتم العثور على ميكروفونات. قم بتوصيل جهاز إدخال صوت.",
242
244
  "callMicrophoneAccessDenied": "يتعذر الوصول إلى الميكروفون. انقر فوق التأمين في شريط العناوين لمنح الإذن لصفحة ويب هذه.",
@@ -257,160 +259,189 @@
257
259
  "failedToJoinCallInvalidMeetingLink": "تعذر الانضمام إلى الاجتماع. ارتباط غير صالح.",
258
260
  "cameraFrozenForRemoteParticipants": "يواجه المستخدمون في المكالمة مشكلات في رؤية الفيديو الخاص بك. الرجاء التحقق من أجهزتك وشبكتك.",
259
261
  "unableToStartVideoEffect": "يتعذر تطبيق تأثير الفيديو.",
260
- "startSpotlightWhileMaxParticipantsAreSpotlighted": "لا يمكن بدء تسليط الضوء على المشاركين (المشاركين) لأنه تم بالفعل تسليط الضوء على الحد الأقصى لعدد المشاركين."
262
+ "startSpotlightWhileMaxParticipantsAreSpotlighted": "لا يمكن بدء تسليط الضوء على المشاركين (المشاركين) لأنه تم بالفعل تسليط الضوء على الحد الأقصى لعدد المشاركين.",
263
+ "mutedByRemoteParticipant": "تم كتم صوتك من قبل مشارك آخر."
261
264
  },
262
- "notifications": {
263
- "unableToReachChatService": {
264
- "title": "أنت غير متصل.",
265
- "closeButtonAriaLabel": "إغلاق"
266
- },
267
- "accessDenied": {
268
- "title": "غير قادر على الوصول إلى خدمات الدردشة",
269
- "message": "الرجاء التحقق من بيانات اعتماد المستخدم المقدمة",
270
- "closeButtonAriaLabel": "إغلاق"
271
- },
272
- "userNotInChatThread": {
273
- "title": "لم تعد في مؤشر ترابط الدردشة هذا.",
274
- "closeButtonAriaLabel": "إغلاق"
275
- },
276
- "sendMessageNotInChatThread": {
277
- "title": "فشل إرسال الرسالة",
278
- "message": "لم تعد مضمناً في هذا ترابط الدردشة هذا",
279
- "closeButtonAriaLabel": "إغلاق"
280
- },
281
- "sendMessageGeneric": {
282
- "title": "فشل إرسال الرسالة.",
283
- "closeButtonAriaLabel": "إغلاق"
284
- },
265
+ "notificationStack": {
285
266
  "callingNetworkFailure": {
286
267
  "title": "مكالمة مزعجة",
287
268
  "message": "يبدو أنك غير متصل. الرجاء التحقق من اتصال الشبكة والمحاولة مرة أخرى.",
288
- "closeButtonAriaLabel": "إغلاق"
269
+ "dismissButtonAriaLabel": "إغلاق"
289
270
  },
290
271
  "startVideoGeneric": {
291
272
  "title": "فشل بدء الفيديو.",
292
- "closeButtonAriaLabel": "إغلاق"
273
+ "dismissButtonAriaLabel": "إغلاق"
293
274
  },
294
275
  "stopVideoGeneric": {
295
276
  "title": "فشل إيقاف الفيديو.",
296
- "closeButtonAriaLabel": "إغلاق"
277
+ "dismissButtonAriaLabel": "إغلاق"
297
278
  },
298
279
  "muteGeneric": {
299
280
  "title": "فشل كتم صوت الميكروفون.",
300
- "closeButtonAriaLabel": "إغلاق"
281
+ "dismissButtonAriaLabel": "إغلاق"
301
282
  },
302
283
  "unmuteGeneric": {
303
- "title": "فشل إلغاء كتم صوت الميكروفون",
304
- "closeButtonAriaLabel": "إغلاق"
284
+ "title": "فشل إلغاء كتم صوت الميكروفون.",
285
+ "dismissButtonAriaLabel": "إغلاق"
305
286
  },
306
287
  "speakingWhileMuted": {
307
288
  "title": "تم كتم صوتك.",
308
- "closeButtonAriaLabel": "إغلاق"
289
+ "dismissButtonAriaLabel": "إغلاق"
309
290
  },
310
291
  "startScreenShareGeneric": {
311
292
  "title": "حدثت مشكلة أثناء بدء مشاركة الشاشة.",
312
- "closeButtonAriaLabel": "إغلاق"
293
+ "dismissButtonAriaLabel": "إغلاق"
313
294
  },
314
295
  "stopScreenShareGeneric": {
315
296
  "title": "فشل إيقاف مشاركة الشاشة",
316
- "closeButtonAriaLabel": "إغلاق"
297
+ "dismissButtonAriaLabel": "إغلاق"
317
298
  },
318
299
  "callNetworkQualityLow": {
319
300
  "title": "جودة الشبكة مقبولة.",
320
- "closeButtonAriaLabel": "إغلاق"
301
+ "dismissButtonAriaLabel": "إغلاق"
302
+ },
303
+ "teamsMeetingCallNetworkQualityLow": {
304
+ "title": "جودة الشبكة منخفضة.",
305
+ "dismissButtonAriaLabel": "إغلاق",
306
+ "message": "انضم إلى هذه المكالمة من هاتفك للحصول على صوت أفضل. يمكنك متابعة عرض الاجتماع على هذا الجهاز.",
307
+ "primaryButtonLabel": "انضمام عبر الهاتف"
321
308
  },
322
309
  "callNoSpeakerFound": {
323
310
  "title": "لم يتم العثور على سماعات أو سماعات رأس",
324
311
  "message": "قم بتوصيل جهاز صوت لسماع المكالمة.",
325
- "closeButtonAriaLabel": "إغلاق"
312
+ "dismissButtonAriaLabel": "إغلاق"
326
313
  },
327
314
  "callNoMicrophoneFound": {
328
315
  "title": "لم يتم العثور على ميكروفونات",
329
316
  "message": "قم بتوصيل جهاز إدخال صوت.",
330
- "closeButtonAriaLabel": "إغلاق"
317
+ "dismissButtonAriaLabel": "إغلاق"
331
318
  },
332
319
  "callMicrophoneAccessDenied": {
333
320
  "title": "يتعذر الوصول إلى الميكروفون",
334
321
  "message": "انقر فوق التأمين في شريط العناوين لمنح الإذن لصفحة ويب هذه.",
335
- "closeButtonAriaLabel": "إغلاق"
322
+ "dismissButtonAriaLabel": "إغلاق"
336
323
  },
337
324
  "callMicrophoneAccessDeniedSafari": {
338
325
  "title": "يتعذر الوصول إلى الميكروفون",
339
326
  "message": "قم بتحديث الصفحة للسماح بالأذونات، أو تحقق من إعدادات هذا المستعرض وتحقق من تمكين الأذونات لموقع الويب هذا.",
340
- "closeButtonAriaLabel": "إغلاق"
327
+ "dismissButtonAriaLabel": "إغلاق"
341
328
  },
342
329
  "callMicrophoneMutedBySystem": {
343
330
  "title": "تم كتم صوتك بواسطة النظام.",
344
- "closeButtonAriaLabel": "إغلاق"
331
+ "dismissButtonAriaLabel": "إغلاق"
345
332
  },
346
333
  "callMicrophoneUnmutedBySystem": {
347
334
  "title": "تم استرداد الميكروفون وتم إلغاء كتم صوتك من قبل النظام.",
348
- "closeButtonAriaLabel": "إغلاق"
335
+ "dismissButtonAriaLabel": "إغلاق"
349
336
  },
350
337
  "callMacOsMicrophoneAccessDenied": {
351
338
  "title": "يتعذر الوصول إلى الميكروفون",
352
339
  "message": "امنح الميكروفون إذنا في إعدادات خصوصية macOS.",
353
- "closeButtonAriaLabel": "إغلاق"
340
+ "dismissButtonAriaLabel": "إغلاق"
354
341
  },
355
342
  "callLocalVideoFreeze": {
356
343
  "title": "النطاق الترددي للشبكة ضعيف.",
357
344
  "message": "قد يظهر الفيديو متوقفا مؤقتا للآخرين في المكالمة.",
358
- "closeButtonAriaLabel": "إغلاق"
345
+ "dismissButtonAriaLabel": "إغلاق"
359
346
  },
360
347
  "callCameraAccessDenied": {
361
348
  "title": "تعذر الوصول إلى الكاميرا",
362
349
  "message": "انقر فوق التأمين في شريط العناوين لمنح الإذن لصفحة ويب هذه.",
363
- "closeButtonAriaLabel": "إغلاق"
350
+ "dismissButtonAriaLabel": "إغلاق"
364
351
  },
365
352
  "callCameraAccessDeniedSafari": {
366
353
  "title": "تعذر الوصول إلى الكاميرا",
367
354
  "message": "قم بتحديث الصفحة للسماح بالأذونات، أو تحقق من إعدادات هذا المستعرض وتحقق من تمكين الأذونات لموقع الويب هذا.",
368
- "closeButtonAriaLabel": "إغلاق"
355
+ "dismissButtonAriaLabel": "إغلاق"
369
356
  },
370
357
  "callCameraAlreadyInUse": {
371
358
  "title": "تعذر الوصول إلى الكاميرا",
372
359
  "message": "قد يكون قيد الاستخدام بالفعل بواسطة تطبيق آخر.",
373
- "closeButtonAriaLabel": "إغلاق"
360
+ "dismissButtonAriaLabel": "إغلاق"
374
361
  },
375
362
  "callVideoStoppedBySystem": {
376
363
  "title": "تم إيقاف الفيديو الخاص بك من قبل النظام.",
377
- "closeButtonAriaLabel": "إغلاق"
364
+ "dismissButtonAriaLabel": "إغلاق"
378
365
  },
379
366
  "callVideoRecoveredBySystem": {
380
367
  "title": "تم استئناف الفيديو الخاص بك.",
381
- "closeButtonAriaLabel": "إغلاق"
368
+ "dismissButtonAriaLabel": "إغلاق"
382
369
  },
383
370
  "callMacOsCameraAccessDenied": {
384
371
  "title": "يقوم MacOS بحظر الوصول إلى الكاميرا",
385
372
  "message": "قم بتحديث إعدادات الخصوصية للسماح لهذا المستعرض بالوصول إلى الكاميرا.",
386
- "closeButtonAriaLabel": "إغلاق"
373
+ "dismissButtonAriaLabel": "إغلاق"
387
374
  },
388
375
  "callMacOsScreenShareAccessDenied": {
389
376
  "title": "يقوم MacOS بحظر مشاركة الشاشة",
390
377
  "message": "قم بتحديث إعدادات الخصوصية للسماح لهذا المستعرض بتسجيل الشاشة.",
391
- "closeButtonAriaLabel": "إغلاق"
378
+ "dismissButtonAriaLabel": "إغلاق"
392
379
  },
393
380
  "failedToJoinCallGeneric": {
394
- "title": "فشل في الانضمام إلى المكالمة.",
395
- "closeButtonAriaLabel": "إغلاق"
381
+ "title": "فشل الانضمام إلى المكالمة.",
382
+ "dismissButtonAriaLabel": "إغلاق"
396
383
  },
397
384
  "failedToJoinCallInvalidMeetingLink": {
398
385
  "title": "تعذر الانضمام إلى الاجتماع. ارتباط غير صالح.",
399
- "closeButtonAriaLabel": "إغلاق"
386
+ "dismissButtonAriaLabel": "إغلاق"
400
387
  },
401
388
  "cameraFrozenForRemoteParticipants": {
402
389
  "title": "يواجه المستخدمون في المكالمة مشكلات في رؤية الفيديو الخاص بك.",
403
390
  "message": "الرجاء التحقق من أجهزتك وشبكتك.",
404
- "closeButtonAriaLabel": "إغلاق"
391
+ "dismissButtonAriaLabel": "إغلاق"
405
392
  },
406
393
  "unableToStartVideoEffect": {
407
394
  "title": "يتعذر تطبيق تأثير الفيديو.",
408
- "closeButtonAriaLabel": "إغلاق"
395
+ "dismissButtonAriaLabel": "إغلاق"
409
396
  },
410
397
  "startSpotlightWhileMaxParticipantsAreSpotlighted": {
411
398
  "title": "يتعذر بدء تسليط ضوء على المشاركين.",
412
399
  "message": "يتم تسليط الضوء على الحد الأقصى لعدد المشاركين بالفعل.",
413
- "closeButtonAriaLabel": "إغلاق"
400
+ "dismissButtonAriaLabel": "إغلاق"
401
+ },
402
+ "mutedByRemoteParticipant": {
403
+ "title": "تم كتم صوتك من قبل مشارك آخر.",
404
+ "dismissButtonAriaLabel": "إغلاق"
405
+ },
406
+ "recordingStarted": {
407
+ "title": "بدأ التسجيل.",
408
+ "message": "من خلال الانضمام، فأنت توافق على كتابة هذا الاجتماع.",
409
+ "dismissButtonAriaLabel": "إغلاق"
410
+ },
411
+ "transcriptionStarted": {
412
+ "title": "بدأت كتابة الحديث.",
413
+ "message": "من خلال الانضمام، فأنت توافق على كتابة هذا الاجتماع.",
414
+ "dismissButtonAriaLabel": "إغلاق"
415
+ },
416
+ "recordingStopped": {
417
+ "title": "يتم الآن حفظ التسجيل.",
418
+ "message": "لقد توقف التسجيل.",
419
+ "dismissButtonAriaLabel": "إغلاق"
420
+ },
421
+ "transcriptionStopped": {
422
+ "title": "يتم الآن حفظ كتابة الحديث.",
423
+ "message": "توقفت كتابة الحديث.",
424
+ "dismissButtonAriaLabel": "إغلاق"
425
+ },
426
+ "recordingAndTranscriptionStarted": {
427
+ "title": "بدء التسجيل والنسخ. ",
428
+ "message": "من خلال الانضمام، فأنت توافق على كتابة هذا الاجتماع.",
429
+ "dismissButtonAriaLabel": "إغلاق"
430
+ },
431
+ "recordingAndTranscriptionStopped": {
432
+ "title": "يتم حفظ التسجيل وكتابة الحديث.",
433
+ "message": "التسجيل وكتابة الحديث متوقفان.",
434
+ "dismissButtonAriaLabel": "إغلاق"
435
+ },
436
+ "recordingStoppedStillTranscribing": {
437
+ "title": "لقد توقف التسجيل.",
438
+ "message": "أنت الآن تقوم فقط بكتابة الحديث لهذا الاجتماع.",
439
+ "dismissButtonAriaLabel": "إغلاق"
440
+ },
441
+ "transcriptionStoppedStillRecording": {
442
+ "title": "توقفت كتابة الحديث.",
443
+ "message": "أنت الآن تسجل هذا الاجتماع فقط.",
444
+ "dismissButtonAriaLabel": "إغلاق"
414
445
  }
415
446
  },
416
447
  "videoGallery": {
@@ -436,7 +467,8 @@
436
467
  "spotlightLimitReachedMenuTitle": "تم الوصول إلى الحد الأقصى لتسليط الضوء",
437
468
  "stopSpotlightVideoTileMenuLabel": "التوقف عن تسليط الضوء",
438
469
  "stopSpotlightOnSelfVideoTileMenuLabel": "الخروج من وضع تسليط الضوء",
439
- "attendeeRole": "الحضور"
470
+ "attendeeRole": "الحضور",
471
+ "muteParticipantMenuItemLabel": "كتم الصوت"
440
472
  },
441
473
  "dialpad": {
442
474
  "placeholderText": "أدخل رقم الهاتف",
@@ -578,9 +610,15 @@
578
610
  "meetingConferencePhoneInfoModalMeetingId": "أدخل معرف الاجتماع",
579
611
  "meetingConferencePhoneInfoModalWait": "انتظر حتى يتم القبول من قبل المنظم",
580
612
  "meetingConferencePhoneInfoModalNoPhoneAvailable": "لا يتوفر هاتف",
581
- "meetingConferencePhoneInfoModalTollFree": "{phoneNumber} (رقم مجاني) {country}، {city}",
582
- "meetingConferencePhoneInfoModalTollFreeWithoutGeoData": "{phoneNumber} (رقم مجاني)",
583
- "meetingConferencePhoneInfoModalToll": "{country} {phoneNumber} (رقم غير مجاني)، {city}",
584
- "meetingConferencePhoneInfoModalTollWithoutGeoData": "{phoneNumber} (رقم غير مجاني)"
613
+ "meetingConferencePhoneInfoModalTollGeoData": "{country}، {city}",
614
+ "meetingConferencePhoneInfoModalTollFree": "(رقم مجاني)",
615
+ "meetingConferencePhoneInfoModalToll": "(الرقم غير المجاني)"
616
+ },
617
+ "IncomingCallNotification": {
618
+ "incomingCallNotificationPlaceholderId": "مستخدم غير معروف",
619
+ "incomingCallNotificationPlaceholderAlert": "مكالمة واردة",
620
+ "incomingCallNoticicationAcceptWithAudioAriaLabel": "قبول مع الصوت",
621
+ "incomingCallNoticicationAcceptWithVideoAriaLabel": "قبول مع الفيديو",
622
+ "incomingCallNoticicationRejectAriaLabel": "رفض"
585
623
  }
586
624
  }