@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.
- package/dist/communication-react.d.ts +71 -18
 - package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-Bi4Or6hk.js → ChatMessageComponentAsRichTextEditBox-D4ctXnw1.js} +27 -6
 - package/dist/dist-cjs/communication-react/ChatMessageComponentAsRichTextEditBox-D4ctXnw1.js.map +1 -0
 - package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-CaXswhPn.js → RichTextSendBoxWrapper-F6eqVXer.js} +2 -2
 - package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-CaXswhPn.js.map → RichTextSendBoxWrapper-F6eqVXer.js.map} +1 -1
 - package/dist/dist-cjs/communication-react/{index-B3X0l4SB.js → index-BJO_NOTU.js} +658 -367
 - package/dist/dist-cjs/communication-react/index-BJO_NOTU.js.map +1 -0
 - package/dist/dist-cjs/communication-react/index.js +1 -1
 - package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
 - package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
 - package/dist/dist-esm/calling-stateful-client/src/CallAgentDeclarative.d.ts +3 -3
 - package/dist/dist-esm/calling-stateful-client/src/CallAgentDeclarative.js.map +1 -1
 - package/dist/dist-esm/calling-stateful-client/src/CallAgentDeclarativeCommon.d.ts +1 -1
 - package/dist/dist-esm/calling-stateful-client/src/CallAgentDeclarativeCommon.js +15 -7
 - package/dist/dist-esm/calling-stateful-client/src/CallAgentDeclarativeCommon.js.map +1 -1
 - package/dist/dist-esm/calling-stateful-client/src/IncomingCallDeclarative.d.ts +2 -8
 - package/dist/dist-esm/calling-stateful-client/src/IncomingCallDeclarative.js.map +1 -1
 - package/dist/dist-esm/calling-stateful-client/src/TeamsCallAgentDeclarative.d.ts +14 -2
 - package/dist/dist-esm/calling-stateful-client/src/TeamsCallAgentDeclarative.js.map +1 -1
 - package/dist/dist-esm/calling-stateful-client/src/TeamsIncomingCallDeclarative.d.ts +17 -0
 - package/dist/dist-esm/calling-stateful-client/src/TeamsIncomingCallDeclarative.js +49 -0
 - package/dist/dist-esm/calling-stateful-client/src/TeamsIncomingCallDeclarative.js.map +1 -0
 - package/dist/dist-esm/calling-stateful-client/src/TypeGuards.d.ts +9 -1
 - package/dist/dist-esm/calling-stateful-client/src/TypeGuards.js +16 -0
 - package/dist/dist-esm/calling-stateful-client/src/TypeGuards.js.map +1 -1
 - package/dist/dist-esm/calling-stateful-client/src/index-public.d.ts +1 -1
 - package/dist/dist-esm/calling-stateful-client/src/index-public.js.map +1 -1
 - package/dist/dist-esm/communication-react/src/index.d.ts +1 -1
 - package/dist/dist-esm/communication-react/src/index.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/Attachment/AttachmentCard.js +14 -8
 - package/dist/dist-esm/react-components/src/components/Attachment/AttachmentCard.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentWrapper.d.ts +8 -2
 - package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentWrapper.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsEditBoxPicker.d.ts +6 -4
 - package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsEditBoxPicker.js +2 -12
 - package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsEditBoxPicker.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsRichTextEditBox.d.ts +2 -2
 - package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsRichTextEditBox.js +25 -4
 - package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsRichTextEditBox.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponent.d.ts +8 -6
 - package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponent.js +12 -3
 - package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponent.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/FluentChatMyMessageComponent.js +27 -3
 - package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/FluentChatMyMessageComponent.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/MessageThread.d.ts +9 -15
 - package/dist/dist-esm/react-components/src/components/MessageThread.js +10 -1
 - package/dist/dist-esm/react-components/src/components/MessageThread.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.js +28 -22
 - package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.d.ts +49 -0
 - package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js +16 -4
 - package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/RichTextToolbar.js +20 -2
 - package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/RichTextToolbar.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/index.d.ts +2 -1
 - package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/styles/AttachmentCard.styles.d.ts +2 -2
 - package/dist/dist-esm/react-components/src/components/styles/AttachmentCard.styles.js +15 -17
 - package/dist/dist-esm/react-components/src/components/styles/AttachmentCard.styles.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.js +3 -0
 - package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/utils/RichTextEditorUtils.d.ts +1 -5
 - package/dist/dist-esm/react-components/src/components/utils/RichTextEditorUtils.js +0 -21
 - package/dist/dist-esm/react-components/src/components/utils/RichTextEditorUtils.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.d.ts +9 -1
 - package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.js +10 -2
 - package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.js.map +1 -1
 - package/dist/dist-esm/react-components/src/localization/locales/ar-SA/strings.json +101 -63
 - package/dist/dist-esm/react-components/src/localization/locales/cs-CZ/strings.json +99 -61
 - package/dist/dist-esm/react-components/src/localization/locales/de-DE/strings.json +99 -61
 - package/dist/dist-esm/react-components/src/localization/locales/en-GB/strings.json +99 -61
 - package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +8 -2
 - package/dist/dist-esm/react-components/src/localization/locales/es-ES/strings.json +99 -61
 - package/dist/dist-esm/react-components/src/localization/locales/fi-FI/strings.json +99 -61
 - package/dist/dist-esm/react-components/src/localization/locales/fr-FR/strings.json +102 -64
 - package/dist/dist-esm/react-components/src/localization/locales/he-IL/strings.json +99 -61
 - package/dist/dist-esm/react-components/src/localization/locales/it-IT/strings.json +99 -61
 - package/dist/dist-esm/react-components/src/localization/locales/ja-JP/strings.json +101 -63
 - package/dist/dist-esm/react-components/src/localization/locales/ko-KR/strings.json +106 -68
 - package/dist/dist-esm/react-components/src/localization/locales/nb-NO/strings.json +99 -61
 - package/dist/dist-esm/react-components/src/localization/locales/nl-NL/strings.json +105 -67
 - package/dist/dist-esm/react-components/src/localization/locales/pl-PL/strings.json +104 -66
 - package/dist/dist-esm/react-components/src/localization/locales/pt-BR/strings.json +102 -64
 - package/dist/dist-esm/react-components/src/localization/locales/ru-RU/strings.json +100 -62
 - package/dist/dist-esm/react-components/src/localization/locales/sv-SE/strings.json +99 -61
 - package/dist/dist-esm/react-components/src/localization/locales/tr-TR/strings.json +100 -62
 - package/dist/dist-esm/react-components/src/localization/locales/zh-CN/strings.json +101 -63
 - package/dist/dist-esm/react-components/src/localization/locales/zh-TW/strings.json +100 -62
 - package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js +66 -31
 - package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadReducer.d.ts +49 -0
 - package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadReducer.js +48 -0
 - package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadReducer.js.map +1 -0
 - package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadUtils.d.ts +33 -1
 - package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadUtils.js +198 -6
 - package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadUtils.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/AttachmentUpload.d.ts +7 -7
 - package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/AttachmentUpload.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/common/SendBoxPicker.d.ts +2 -5
 - package/dist/dist-esm/react-composites/src/composites/common/SendBoxPicker.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/common/constants.d.ts +4 -0
 - package/dist/dist-esm/react-composites/src/composites/common/constants.js +4 -0
 - package/dist/dist-esm/react-composites/src/composites/common/constants.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/ar-SA/strings.json +10 -5
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/cs-CZ/strings.json +6 -1
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/de-DE/strings.json +6 -1
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/en-GB/strings.json +6 -1
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/es-ES/strings.json +6 -1
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/fi-FI/strings.json +10 -5
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/fr-FR/strings.json +10 -5
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/he-IL/strings.json +10 -5
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/it-IT/strings.json +10 -5
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/ja-JP/strings.json +6 -1
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/ko-KR/strings.json +10 -5
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/nb-NO/strings.json +6 -1
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/nl-NL/strings.json +6 -1
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/pl-PL/strings.json +6 -1
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/pt-BR/strings.json +10 -5
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/ru-RU/strings.json +6 -1
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/sv-SE/strings.json +10 -5
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/tr-TR/strings.json +6 -1
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/zh-CN/strings.json +10 -5
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/zh-TW/strings.json +10 -5
 - package/package.json +14 -14
 - package/dist/dist-cjs/communication-react/ChatMessageComponentAsRichTextEditBox-Bi4Or6hk.js.map +0 -1
 - package/dist/dist-cjs/communication-react/index-B3X0l4SB.js.map +0 -1
 - package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/useImageUpload.d.ts +0 -12
 - package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/useImageUpload.js +0 -115
 - 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 
     | 
| 
      
 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 
     | 
| 
      
 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: ( 
     | 
| 
      
 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 = ( 
     | 
| 
      
 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 
     | 
    
         
            -
                             
     | 
| 
      
 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": " 
     | 
| 
      
 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 
     | 
    
         
            -
                " 
     | 
| 
       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 
     | 
    
         
            -
                        " 
     | 
| 
      
 269 
     | 
    
         
            +
                        "dismissButtonAriaLabel": "إغلاق"
         
     | 
| 
       289 
270 
     | 
    
         
             
                    },
         
     | 
| 
       290 
271 
     | 
    
         
             
                    "startVideoGeneric": {
         
     | 
| 
       291 
272 
     | 
    
         
             
                        "title": "فشل بدء الفيديو.",
         
     | 
| 
       292 
     | 
    
         
            -
                        " 
     | 
| 
      
 273 
     | 
    
         
            +
                        "dismissButtonAriaLabel": "إغلاق"
         
     | 
| 
       293 
274 
     | 
    
         
             
                    },
         
     | 
| 
       294 
275 
     | 
    
         
             
                    "stopVideoGeneric": {
         
     | 
| 
       295 
276 
     | 
    
         
             
                        "title": "فشل إيقاف الفيديو.",
         
     | 
| 
       296 
     | 
    
         
            -
                        " 
     | 
| 
      
 277 
     | 
    
         
            +
                        "dismissButtonAriaLabel": "إغلاق"
         
     | 
| 
       297 
278 
     | 
    
         
             
                    },
         
     | 
| 
       298 
279 
     | 
    
         
             
                    "muteGeneric": {
         
     | 
| 
       299 
280 
     | 
    
         
             
                        "title": "فشل كتم صوت الميكروفون.",
         
     | 
| 
       300 
     | 
    
         
            -
                        " 
     | 
| 
      
 281 
     | 
    
         
            +
                        "dismissButtonAriaLabel": "إغلاق"
         
     | 
| 
       301 
282 
     | 
    
         
             
                    },
         
     | 
| 
       302 
283 
     | 
    
         
             
                    "unmuteGeneric": {
         
     | 
| 
       303 
     | 
    
         
            -
                        "title": "فشل إلغاء كتم صوت  
     | 
| 
       304 
     | 
    
         
            -
                        " 
     | 
| 
      
 284 
     | 
    
         
            +
                        "title": "فشل إلغاء كتم صوت الميكروفون.",
         
     | 
| 
      
 285 
     | 
    
         
            +
                        "dismissButtonAriaLabel": "إغلاق"
         
     | 
| 
       305 
286 
     | 
    
         
             
                    },
         
     | 
| 
       306 
287 
     | 
    
         
             
                    "speakingWhileMuted": {
         
     | 
| 
       307 
288 
     | 
    
         
             
                        "title": "تم كتم صوتك.",
         
     | 
| 
       308 
     | 
    
         
            -
                        " 
     | 
| 
      
 289 
     | 
    
         
            +
                        "dismissButtonAriaLabel": "إغلاق"
         
     | 
| 
       309 
290 
     | 
    
         
             
                    },
         
     | 
| 
       310 
291 
     | 
    
         
             
                    "startScreenShareGeneric": {
         
     | 
| 
       311 
292 
     | 
    
         
             
                        "title": "حدثت مشكلة أثناء بدء مشاركة الشاشة.",
         
     | 
| 
       312 
     | 
    
         
            -
                        " 
     | 
| 
      
 293 
     | 
    
         
            +
                        "dismissButtonAriaLabel": "إغلاق"
         
     | 
| 
       313 
294 
     | 
    
         
             
                    },
         
     | 
| 
       314 
295 
     | 
    
         
             
                    "stopScreenShareGeneric": {
         
     | 
| 
       315 
296 
     | 
    
         
             
                        "title": "فشل إيقاف مشاركة الشاشة",
         
     | 
| 
       316 
     | 
    
         
            -
                        " 
     | 
| 
      
 297 
     | 
    
         
            +
                        "dismissButtonAriaLabel": "إغلاق"
         
     | 
| 
       317 
298 
     | 
    
         
             
                    },
         
     | 
| 
       318 
299 
     | 
    
         
             
                    "callNetworkQualityLow": {
         
     | 
| 
       319 
300 
     | 
    
         
             
                        "title": "جودة الشبكة مقبولة.",
         
     | 
| 
       320 
     | 
    
         
            -
                        " 
     | 
| 
      
 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 
     | 
    
         
            -
                        " 
     | 
| 
      
 312 
     | 
    
         
            +
                        "dismissButtonAriaLabel": "إغلاق"
         
     | 
| 
       326 
313 
     | 
    
         
             
                    },
         
     | 
| 
       327 
314 
     | 
    
         
             
                    "callNoMicrophoneFound": {
         
     | 
| 
       328 
315 
     | 
    
         
             
                        "title": "لم يتم العثور على ميكروفونات",
         
     | 
| 
       329 
316 
     | 
    
         
             
                        "message": "قم بتوصيل جهاز إدخال صوت.",
         
     | 
| 
       330 
     | 
    
         
            -
                        " 
     | 
| 
      
 317 
     | 
    
         
            +
                        "dismissButtonAriaLabel": "إغلاق"
         
     | 
| 
       331 
318 
     | 
    
         
             
                    },
         
     | 
| 
       332 
319 
     | 
    
         
             
                    "callMicrophoneAccessDenied": {
         
     | 
| 
       333 
320 
     | 
    
         
             
                        "title": "يتعذر الوصول إلى الميكروفون",
         
     | 
| 
       334 
321 
     | 
    
         
             
                        "message": "انقر فوق التأمين في شريط العناوين لمنح الإذن لصفحة ويب هذه.",
         
     | 
| 
       335 
     | 
    
         
            -
                        " 
     | 
| 
      
 322 
     | 
    
         
            +
                        "dismissButtonAriaLabel": "إغلاق"
         
     | 
| 
       336 
323 
     | 
    
         
             
                    },
         
     | 
| 
       337 
324 
     | 
    
         
             
                    "callMicrophoneAccessDeniedSafari": {
         
     | 
| 
       338 
325 
     | 
    
         
             
                        "title": "يتعذر الوصول إلى الميكروفون",
         
     | 
| 
       339 
326 
     | 
    
         
             
                        "message": "قم بتحديث الصفحة للسماح بالأذونات، أو تحقق من إعدادات هذا المستعرض وتحقق من تمكين الأذونات لموقع الويب هذا.",
         
     | 
| 
       340 
     | 
    
         
            -
                        " 
     | 
| 
      
 327 
     | 
    
         
            +
                        "dismissButtonAriaLabel": "إغلاق"
         
     | 
| 
       341 
328 
     | 
    
         
             
                    },
         
     | 
| 
       342 
329 
     | 
    
         
             
                    "callMicrophoneMutedBySystem": {
         
     | 
| 
       343 
330 
     | 
    
         
             
                        "title": "تم كتم صوتك بواسطة النظام.",
         
     | 
| 
       344 
     | 
    
         
            -
                        " 
     | 
| 
      
 331 
     | 
    
         
            +
                        "dismissButtonAriaLabel": "إغلاق"
         
     | 
| 
       345 
332 
     | 
    
         
             
                    },
         
     | 
| 
       346 
333 
     | 
    
         
             
                    "callMicrophoneUnmutedBySystem": {
         
     | 
| 
       347 
334 
     | 
    
         
             
                        "title": "تم استرداد الميكروفون وتم إلغاء كتم صوتك من قبل النظام.",
         
     | 
| 
       348 
     | 
    
         
            -
                        " 
     | 
| 
      
 335 
     | 
    
         
            +
                        "dismissButtonAriaLabel": "إغلاق"
         
     | 
| 
       349 
336 
     | 
    
         
             
                    },
         
     | 
| 
       350 
337 
     | 
    
         
             
                    "callMacOsMicrophoneAccessDenied": {
         
     | 
| 
       351 
338 
     | 
    
         
             
                        "title": "يتعذر الوصول إلى الميكروفون",
         
     | 
| 
       352 
339 
     | 
    
         
             
                        "message": "امنح الميكروفون إذنا في إعدادات خصوصية macOS.",
         
     | 
| 
       353 
     | 
    
         
            -
                        " 
     | 
| 
      
 340 
     | 
    
         
            +
                        "dismissButtonAriaLabel": "إغلاق"
         
     | 
| 
       354 
341 
     | 
    
         
             
                    },
         
     | 
| 
       355 
342 
     | 
    
         
             
                    "callLocalVideoFreeze": {
         
     | 
| 
       356 
343 
     | 
    
         
             
                        "title": "النطاق الترددي للشبكة ضعيف.",
         
     | 
| 
       357 
344 
     | 
    
         
             
                        "message": "قد يظهر الفيديو متوقفا مؤقتا للآخرين في المكالمة.",
         
     | 
| 
       358 
     | 
    
         
            -
                        " 
     | 
| 
      
 345 
     | 
    
         
            +
                        "dismissButtonAriaLabel": "إغلاق"
         
     | 
| 
       359 
346 
     | 
    
         
             
                    },
         
     | 
| 
       360 
347 
     | 
    
         
             
                    "callCameraAccessDenied": {
         
     | 
| 
       361 
348 
     | 
    
         
             
                        "title": "تعذر الوصول إلى الكاميرا",
         
     | 
| 
       362 
349 
     | 
    
         
             
                        "message": "انقر فوق التأمين في شريط العناوين لمنح الإذن لصفحة ويب هذه.",
         
     | 
| 
       363 
     | 
    
         
            -
                        " 
     | 
| 
      
 350 
     | 
    
         
            +
                        "dismissButtonAriaLabel": "إغلاق"
         
     | 
| 
       364 
351 
     | 
    
         
             
                    },
         
     | 
| 
       365 
352 
     | 
    
         
             
                    "callCameraAccessDeniedSafari": {
         
     | 
| 
       366 
353 
     | 
    
         
             
                        "title": "تعذر الوصول إلى الكاميرا",
         
     | 
| 
       367 
354 
     | 
    
         
             
                        "message": "قم بتحديث الصفحة للسماح بالأذونات، أو تحقق من إعدادات هذا المستعرض وتحقق من تمكين الأذونات لموقع الويب هذا.",
         
     | 
| 
       368 
     | 
    
         
            -
                        " 
     | 
| 
      
 355 
     | 
    
         
            +
                        "dismissButtonAriaLabel": "إغلاق"
         
     | 
| 
       369 
356 
     | 
    
         
             
                    },
         
     | 
| 
       370 
357 
     | 
    
         
             
                    "callCameraAlreadyInUse": {
         
     | 
| 
       371 
358 
     | 
    
         
             
                        "title": "تعذر الوصول إلى الكاميرا",
         
     | 
| 
       372 
359 
     | 
    
         
             
                        "message": "قد يكون قيد الاستخدام بالفعل بواسطة تطبيق آخر.",
         
     | 
| 
       373 
     | 
    
         
            -
                        " 
     | 
| 
      
 360 
     | 
    
         
            +
                        "dismissButtonAriaLabel": "إغلاق"
         
     | 
| 
       374 
361 
     | 
    
         
             
                    },
         
     | 
| 
       375 
362 
     | 
    
         
             
                    "callVideoStoppedBySystem": {
         
     | 
| 
       376 
363 
     | 
    
         
             
                        "title": "تم إيقاف الفيديو الخاص بك من قبل النظام.",
         
     | 
| 
       377 
     | 
    
         
            -
                        " 
     | 
| 
      
 364 
     | 
    
         
            +
                        "dismissButtonAriaLabel": "إغلاق"
         
     | 
| 
       378 
365 
     | 
    
         
             
                    },
         
     | 
| 
       379 
366 
     | 
    
         
             
                    "callVideoRecoveredBySystem": {
         
     | 
| 
       380 
367 
     | 
    
         
             
                        "title": "تم استئناف الفيديو الخاص بك.",
         
     | 
| 
       381 
     | 
    
         
            -
                        " 
     | 
| 
      
 368 
     | 
    
         
            +
                        "dismissButtonAriaLabel": "إغلاق"
         
     | 
| 
       382 
369 
     | 
    
         
             
                    },
         
     | 
| 
       383 
370 
     | 
    
         
             
                    "callMacOsCameraAccessDenied": {
         
     | 
| 
       384 
371 
     | 
    
         
             
                        "title": "يقوم MacOS بحظر الوصول إلى الكاميرا",
         
     | 
| 
       385 
372 
     | 
    
         
             
                        "message": "قم بتحديث إعدادات الخصوصية للسماح لهذا المستعرض بالوصول إلى الكاميرا.",
         
     | 
| 
       386 
     | 
    
         
            -
                        " 
     | 
| 
      
 373 
     | 
    
         
            +
                        "dismissButtonAriaLabel": "إغلاق"
         
     | 
| 
       387 
374 
     | 
    
         
             
                    },
         
     | 
| 
       388 
375 
     | 
    
         
             
                    "callMacOsScreenShareAccessDenied": {
         
     | 
| 
       389 
376 
     | 
    
         
             
                        "title": "يقوم MacOS بحظر مشاركة الشاشة",
         
     | 
| 
       390 
377 
     | 
    
         
             
                        "message": "قم بتحديث إعدادات الخصوصية للسماح لهذا المستعرض بتسجيل الشاشة.",
         
     | 
| 
       391 
     | 
    
         
            -
                        " 
     | 
| 
      
 378 
     | 
    
         
            +
                        "dismissButtonAriaLabel": "إغلاق"
         
     | 
| 
       392 
379 
     | 
    
         
             
                    },
         
     | 
| 
       393 
380 
     | 
    
         
             
                    "failedToJoinCallGeneric": {
         
     | 
| 
       394 
     | 
    
         
            -
                        "title": "فشل  
     | 
| 
       395 
     | 
    
         
            -
                        " 
     | 
| 
      
 381 
     | 
    
         
            +
                        "title": "فشل الانضمام إلى المكالمة.",
         
     | 
| 
      
 382 
     | 
    
         
            +
                        "dismissButtonAriaLabel": "إغلاق"
         
     | 
| 
       396 
383 
     | 
    
         
             
                    },
         
     | 
| 
       397 
384 
     | 
    
         
             
                    "failedToJoinCallInvalidMeetingLink": {
         
     | 
| 
       398 
385 
     | 
    
         
             
                        "title": "تعذر الانضمام إلى الاجتماع. ارتباط غير صالح.",
         
     | 
| 
       399 
     | 
    
         
            -
                        " 
     | 
| 
      
 386 
     | 
    
         
            +
                        "dismissButtonAriaLabel": "إغلاق"
         
     | 
| 
       400 
387 
     | 
    
         
             
                    },
         
     | 
| 
       401 
388 
     | 
    
         
             
                    "cameraFrozenForRemoteParticipants": {
         
     | 
| 
       402 
389 
     | 
    
         
             
                        "title": "يواجه المستخدمون في المكالمة مشكلات في رؤية الفيديو الخاص بك.",
         
     | 
| 
       403 
390 
     | 
    
         
             
                        "message": "الرجاء التحقق من أجهزتك وشبكتك.",
         
     | 
| 
       404 
     | 
    
         
            -
                        " 
     | 
| 
      
 391 
     | 
    
         
            +
                        "dismissButtonAriaLabel": "إغلاق"
         
     | 
| 
       405 
392 
     | 
    
         
             
                    },
         
     | 
| 
       406 
393 
     | 
    
         
             
                    "unableToStartVideoEffect": {
         
     | 
| 
       407 
394 
     | 
    
         
             
                        "title": "يتعذر تطبيق تأثير الفيديو.",
         
     | 
| 
       408 
     | 
    
         
            -
                        " 
     | 
| 
      
 395 
     | 
    
         
            +
                        "dismissButtonAriaLabel": "إغلاق"
         
     | 
| 
       409 
396 
     | 
    
         
             
                    },
         
     | 
| 
       410 
397 
     | 
    
         
             
                    "startSpotlightWhileMaxParticipantsAreSpotlighted": {
         
     | 
| 
       411 
398 
     | 
    
         
             
                        "title": "يتعذر بدء تسليط ضوء على المشاركين.",
         
     | 
| 
       412 
399 
     | 
    
         
             
                        "message": "يتم تسليط الضوء على الحد الأقصى لعدد المشاركين بالفعل.",
         
     | 
| 
       413 
     | 
    
         
            -
                        " 
     | 
| 
      
 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 
     | 
    
         
            -
                    " 
     | 
| 
       582 
     | 
    
         
            -
                    " 
     | 
| 
       583 
     | 
    
         
            -
                    "meetingConferencePhoneInfoModalToll": " 
     | 
| 
       584 
     | 
    
         
            -
             
     | 
| 
      
 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 
     | 
    
         
             
            }
         
     |