@azure/communication-react 1.17.0-alpha-202405160013 → 1.17.0-alpha-202405180013

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/dist/communication-react.d.ts +1 -1
  2. package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-LLjD-Jp0.js → ChatMessageComponentAsRichTextEditBox-r0U_8d3I.js} +22 -17
  3. package/dist/dist-cjs/communication-react/ChatMessageComponentAsRichTextEditBox-r0U_8d3I.js.map +1 -0
  4. package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-D7SB5NwN.js → RichTextSendBoxWrapper-DNlYAgO2.js} +6 -8
  5. package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-D7SB5NwN.js.map → RichTextSendBoxWrapper-DNlYAgO2.js.map} +1 -1
  6. package/dist/dist-cjs/communication-react/{index-CfI_of00.js → index-BLj9R9ms.js} +939 -526
  7. package/dist/dist-cjs/communication-react/index-BLj9R9ms.js.map +1 -0
  8. package/dist/dist-cjs/communication-react/index.js +5 -7
  9. package/dist/dist-cjs/communication-react/index.js.map +1 -1
  10. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  11. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  12. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js +1 -6
  13. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js.map +1 -1
  14. package/dist/dist-esm/calling-component-bindings/src/videoGallerySelector.js +1 -1
  15. package/dist/dist-esm/calling-component-bindings/src/videoGallerySelector.js.map +1 -1
  16. package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts +1 -1
  17. package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
  18. package/dist/dist-esm/calling-stateful-client/src/CallContext.js +0 -4
  19. package/dist/dist-esm/calling-stateful-client/src/CallContext.js.map +1 -1
  20. package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.js +0 -3
  21. package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.js.map +1 -1
  22. package/dist/dist-esm/calling-stateful-client/src/Converter.js +0 -1
  23. package/dist/dist-esm/calling-stateful-client/src/Converter.js.map +1 -1
  24. package/dist/dist-esm/calling-stateful-client/src/PPTLiveSubscriber.js +0 -2
  25. package/dist/dist-esm/calling-stateful-client/src/PPTLiveSubscriber.js.map +1 -1
  26. package/dist/dist-esm/calling-stateful-client/src/index-public.js.map +1 -1
  27. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsRichTextEditBox.js +17 -10
  28. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsRichTextEditBox.js.map +1 -1
  29. package/dist/dist-esm/react-components/src/components/InputBoxComponent.js +1 -1
  30. package/dist/dist-esm/react-components/src/components/InputBoxComponent.js.map +1 -1
  31. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/ContextMenuPlugin.d.ts +9 -0
  32. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/ContextMenuPlugin.js +29 -0
  33. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/ContextMenuPlugin.js.map +1 -0
  34. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/CopyPastePlugin.d.ts +1 -1
  35. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/CopyPastePlugin.js +15 -20
  36. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/CopyPastePlugin.js.map +1 -1
  37. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/KeyboardInputPlugin.d.ts +12 -0
  38. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/KeyboardInputPlugin.js +23 -0
  39. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/KeyboardInputPlugin.js.map +1 -0
  40. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/PlaceholderPlugin.d.ts +15 -0
  41. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/PlaceholderPlugin.js +39 -0
  42. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/PlaceholderPlugin.js.map +1 -0
  43. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/RichTextToolbarPlugin.d.ts +24 -0
  44. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/RichTextToolbarPlugin.js +66 -0
  45. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/RichTextToolbarPlugin.js.map +1 -0
  46. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/TableEditContextMenuProvider.d.ts +20 -0
  47. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/TableEditContextMenuProvider.js +46 -0
  48. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/TableEditContextMenuProvider.js.map +1 -0
  49. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/UpdateContentPlugin.d.ts +29 -0
  50. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/UpdateContentPlugin.js +71 -0
  51. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/UpdateContentPlugin.js.map +1 -0
  52. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.d.ts +7 -10
  53. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.js +170 -91
  54. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.js.map +1 -1
  55. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextInputBoxComponent.d.ts +0 -1
  56. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextInputBoxComponent.js +29 -12
  57. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextInputBoxComponent.js.map +1 -1
  58. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js +12 -46
  59. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js.map +1 -1
  60. package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/RichTextToolbar.d.ts +19 -0
  61. package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/RichTextToolbar.js +209 -0
  62. package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/RichTextToolbar.js.map +1 -0
  63. package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/Table/RichTextInsertTableCommandBarItem.d.ts +7 -0
  64. package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/Table/RichTextInsertTableCommandBarItem.js +49 -0
  65. package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/Table/RichTextInsertTableCommandBarItem.js.map +1 -0
  66. package/dist/dist-esm/react-components/src/components/RichTextEditor/{Buttons → Toolbar}/Table/RichTextInsertTablePane.d.ts +2 -2
  67. package/dist/dist-esm/react-components/src/components/RichTextEditor/{Buttons → Toolbar}/Table/RichTextInsertTablePane.js +3 -3
  68. package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/Table/RichTextInsertTablePane.js.map +1 -0
  69. package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/Table/RichTextToolbarTableIcon.d.ts +6 -0
  70. package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/Table/RichTextToolbarTableIcon.js +13 -0
  71. package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/Table/RichTextToolbarTableIcon.js.map +1 -0
  72. package/dist/dist-esm/react-components/src/components/TextFieldWithMention/TextFieldWithMention.js +1 -1
  73. package/dist/dist-esm/react-components/src/components/TextFieldWithMention/TextFieldWithMention.js.map +1 -1
  74. package/dist/dist-esm/react-components/src/components/VideoGallery/RemoteScreenShare.js +1 -4
  75. package/dist/dist-esm/react-components/src/components/VideoGallery/RemoteScreenShare.js.map +1 -1
  76. package/dist/dist-esm/react-components/src/components/VideoGallery.js +1 -3
  77. package/dist/dist-esm/react-components/src/components/VideoGallery.js.map +1 -1
  78. package/dist/dist-esm/react-components/src/components/VideoTile.js +0 -1
  79. package/dist/dist-esm/react-components/src/components/VideoTile.js.map +1 -1
  80. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js +3 -1
  81. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js.map +1 -1
  82. package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.d.ts +3 -3
  83. package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.js +4 -5
  84. package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.js.map +1 -1
  85. package/dist/dist-esm/react-components/src/components/utils/RichTextEditorUtils.d.ts +37 -0
  86. package/dist/dist-esm/react-components/src/components/utils/RichTextEditorUtils.js +60 -0
  87. package/dist/dist-esm/react-components/src/components/utils/RichTextEditorUtils.js.map +1 -0
  88. package/dist/dist-esm/react-components/src/components/utils/RichTextTableUtils.d.ts +11 -0
  89. package/dist/dist-esm/react-components/src/components/utils/RichTextTableUtils.js +95 -0
  90. package/dist/dist-esm/react-components/src/components/utils/RichTextTableUtils.js.map +1 -1
  91. package/dist/dist-esm/react-components/src/components/utils.d.ts +1 -1
  92. package/dist/dist-esm/react-components/src/components/utils.js +1 -3
  93. package/dist/dist-esm/react-components/src/components/utils.js.map +1 -1
  94. package/dist/dist-esm/react-components/src/localization/locales/ar-SA/strings.json +22 -1
  95. package/dist/dist-esm/react-components/src/localization/locales/cs-CZ/strings.json +22 -1
  96. package/dist/dist-esm/react-components/src/localization/locales/de-DE/strings.json +22 -1
  97. package/dist/dist-esm/react-components/src/localization/locales/en-GB/strings.json +22 -1
  98. package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +2 -1
  99. package/dist/dist-esm/react-components/src/localization/locales/es-ES/strings.json +22 -1
  100. package/dist/dist-esm/react-components/src/localization/locales/fi-FI/strings.json +23 -2
  101. package/dist/dist-esm/react-components/src/localization/locales/fr-FR/strings.json +31 -10
  102. package/dist/dist-esm/react-components/src/localization/locales/he-IL/strings.json +22 -1
  103. package/dist/dist-esm/react-components/src/localization/locales/it-IT/strings.json +22 -1
  104. package/dist/dist-esm/react-components/src/localization/locales/ja-JP/strings.json +31 -10
  105. package/dist/dist-esm/react-components/src/localization/locales/ko-KR/strings.json +31 -10
  106. package/dist/dist-esm/react-components/src/localization/locales/nb-NO/strings.json +22 -1
  107. package/dist/dist-esm/react-components/src/localization/locales/nl-NL/strings.json +22 -1
  108. package/dist/dist-esm/react-components/src/localization/locales/pl-PL/strings.json +22 -1
  109. package/dist/dist-esm/react-components/src/localization/locales/pt-BR/strings.json +31 -10
  110. package/dist/dist-esm/react-components/src/localization/locales/ru-RU/strings.json +22 -1
  111. package/dist/dist-esm/react-components/src/localization/locales/sv-SE/strings.json +22 -1
  112. package/dist/dist-esm/react-components/src/localization/locales/tr-TR/strings.json +22 -1
  113. package/dist/dist-esm/react-components/src/localization/locales/zh-CN/strings.json +30 -9
  114. package/dist/dist-esm/react-components/src/localization/locales/zh-TW/strings.json +24 -3
  115. package/dist/dist-esm/react-composites/src/composites/localization/locales/ar-SA/strings.json +4 -0
  116. package/dist/dist-esm/react-composites/src/composites/localization/locales/cs-CZ/strings.json +4 -0
  117. package/dist/dist-esm/react-composites/src/composites/localization/locales/de-DE/strings.json +4 -0
  118. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-GB/strings.json +4 -0
  119. package/dist/dist-esm/react-composites/src/composites/localization/locales/es-ES/strings.json +4 -0
  120. package/dist/dist-esm/react-composites/src/composites/localization/locales/fi-FI/strings.json +4 -0
  121. package/dist/dist-esm/react-composites/src/composites/localization/locales/fr-FR/strings.json +4 -0
  122. package/dist/dist-esm/react-composites/src/composites/localization/locales/he-IL/strings.json +4 -0
  123. package/dist/dist-esm/react-composites/src/composites/localization/locales/it-IT/strings.json +4 -0
  124. package/dist/dist-esm/react-composites/src/composites/localization/locales/ja-JP/strings.json +4 -0
  125. package/dist/dist-esm/react-composites/src/composites/localization/locales/ko-KR/strings.json +4 -0
  126. package/dist/dist-esm/react-composites/src/composites/localization/locales/nb-NO/strings.json +4 -0
  127. package/dist/dist-esm/react-composites/src/composites/localization/locales/nl-NL/strings.json +4 -0
  128. package/dist/dist-esm/react-composites/src/composites/localization/locales/pl-PL/strings.json +4 -0
  129. package/dist/dist-esm/react-composites/src/composites/localization/locales/pt-BR/strings.json +4 -0
  130. package/dist/dist-esm/react-composites/src/composites/localization/locales/ru-RU/strings.json +4 -0
  131. package/dist/dist-esm/react-composites/src/composites/localization/locales/sv-SE/strings.json +4 -0
  132. package/dist/dist-esm/react-composites/src/composites/localization/locales/tr-TR/strings.json +4 -0
  133. package/dist/dist-esm/react-composites/src/composites/localization/locales/zh-CN/strings.json +4 -0
  134. package/dist/dist-esm/react-composites/src/composites/localization/locales/zh-TW/strings.json +4 -0
  135. package/package.json +6 -8
  136. package/dist/dist-cjs/communication-react/ChatMessageComponentAsRichTextEditBox-LLjD-Jp0.js.map +0 -1
  137. package/dist/dist-cjs/communication-react/index-CfI_of00.js.map +0 -1
  138. package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/RichTextRibbonButtons.d.ts +0 -7
  139. package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/RichTextRibbonButtons.js +0 -86
  140. package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/RichTextRibbonButtons.js.map +0 -1
  141. package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/RichTextInsertTableButton.d.ts +0 -7
  142. package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/RichTextInsertTableButton.js +0 -55
  143. package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/RichTextInsertTableButton.js.map +0 -1
  144. package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/RichTextInsertTablePane.js.map +0 -1
  145. package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/RichTextTableContextMenu.d.ts +0 -8
  146. package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/RichTextTableContextMenu.js +0 -66
  147. package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/RichTextTableContextMenu.js.map +0 -1
  148. package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/insertTableAction.d.ts +0 -9
  149. package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/insertTableAction.js +0 -56
  150. package/dist/dist-esm/react-components/src/components/RichTextEditor/Buttons/Table/insertTableAction.js.map +0 -1
  151. package/dist/dist-esm/react-components/src/components/utils/RichTextEditorStringsUtils.d.ts +0 -15
  152. package/dist/dist-esm/react-components/src/components/utils/RichTextEditorStringsUtils.js +0 -39
  153. package/dist/dist-esm/react-components/src/components/utils/RichTextEditorStringsUtils.js.map +0 -1
@@ -1,5 +1,7 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT License.
3
+ import { editTable } from 'roosterjs-content-model-api';
4
+ import { tableContextMenuIconStyles } from '../styles/RichTextEditor.styles';
3
5
  /**
4
6
  * @private
5
7
  *
@@ -26,4 +28,97 @@ export function parseKey(key) {
26
28
  column: parseInt(column)
27
29
  };
28
30
  }
31
+ /**
32
+ * Returns an array of context menu items for editing a rich text table.
33
+ *
34
+ * @param editor - The editor instance.
35
+ * @param strings - An object containing localized strings for the context menu items.
36
+ * @returns An array of context menu items.
37
+ */
38
+ export const getTableEditContextMenuItems = (editor, strings) => {
39
+ return [
40
+ {
41
+ key: 'RichTextTableEditMenuTableInsert',
42
+ text: strings.richTextInsertRowOrColumnMenu,
43
+ ariaLabel: strings.richTextInsertRowOrColumnMenu,
44
+ iconProps: {
45
+ iconName: 'RichTextTableInsertMenuIcon',
46
+ styles: { root: tableContextMenuIconStyles }
47
+ },
48
+ subMenuProps: {
49
+ items: [
50
+ {
51
+ key: 'RichTextTableEditMenuTableInsertRowAbove',
52
+ text: strings.richTextInsertRowAboveMenu,
53
+ ariaLabel: strings.richTextInsertRowAboveMenu,
54
+ onClick: () => {
55
+ editTable(editor, 'insertAbove');
56
+ }
57
+ },
58
+ {
59
+ key: 'RichTextTableEditMenuTableInsertRowBelow',
60
+ text: strings.richTextInsertRowBelowMenu,
61
+ ariaLabel: strings.richTextInsertRowBelowMenu,
62
+ onClick: () => {
63
+ editTable(editor, 'insertBelow');
64
+ }
65
+ },
66
+ {
67
+ key: 'RichTextTableEditMenuTableInsertColumnLeft',
68
+ text: strings.richTextInsertColumnLeftMenu,
69
+ ariaLabel: strings.richTextInsertColumnLeftMenu,
70
+ onClick: () => {
71
+ editTable(editor, 'insertLeft');
72
+ }
73
+ },
74
+ {
75
+ key: 'RichTextTableEditMenuTableInsertColumnRight',
76
+ text: strings.richTextInsertColumnRightMenu,
77
+ ariaLabel: strings.richTextInsertColumnRightMenu,
78
+ onClick: () => {
79
+ editTable(editor, 'insertRight');
80
+ }
81
+ }
82
+ ]
83
+ }
84
+ },
85
+ {
86
+ key: 'RichTextTableEditMenuTableDelete',
87
+ text: strings.richTextDeleteRowOrColumnMenu,
88
+ ariaLabel: strings.richTextDeleteRowOrColumnMenu,
89
+ iconProps: {
90
+ iconName: 'RichTextTableDeleteMenuIcon',
91
+ styles: { root: tableContextMenuIconStyles }
92
+ },
93
+ subMenuProps: {
94
+ items: [
95
+ {
96
+ key: 'RichTextTableEditMenuTableDeleteRow',
97
+ text: strings.richTextDeleteRowMenu,
98
+ ariaLabel: strings.richTextDeleteRowMenu,
99
+ onClick: () => {
100
+ editTable(editor, 'deleteRow');
101
+ }
102
+ },
103
+ {
104
+ key: 'RichTextTableEditMenuTableDeleteColumn',
105
+ text: strings.richTextDeleteColumnMenu,
106
+ ariaLabel: strings.richTextDeleteColumnMenu,
107
+ onClick: () => {
108
+ editTable(editor, 'deleteColumn');
109
+ }
110
+ },
111
+ {
112
+ key: 'RichTextTableEditMenuTableDeleteTable',
113
+ text: strings.richTextDeleteTableMenu,
114
+ ariaLabel: strings.richTextDeleteTableMenu,
115
+ onClick: () => {
116
+ editTable(editor, 'deleteTable');
117
+ }
118
+ }
119
+ ]
120
+ }
121
+ }
122
+ ];
123
+ };
29
124
  //# sourceMappingURL=RichTextTableUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RichTextTableUtils.js","sourceRoot":"","sources":["../../../../../../../react-components/src/components/utils/RichTextTableUtils.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,kBAAkB,CAAC;AAEzD;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW,EAAE,MAAc;IACnD,OAAO,GAAG,GAAG,IAAI,MAAM,EAAE,CAAC;AAC5B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,OAAO;QACL,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC;QAClB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;KACzB,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * @private\n *\n * String to be replaces by actual values of row and column.\n */\nexport const ColumnRowReplaceString = '{column} x {row}';\n\n/**\n * @private\n *\n * Function to create key pair for the selected table size.\n */\nexport function createKey(row: number, column: number): string {\n return `${row},${column}`;\n}\n\n/**\n * @private\n *\n * Function to parse key to the selected table size valules.\n */\nexport function parseKey(key: string): { row: number; column: number } {\n const [row, column] = key.split(',');\n return {\n row: parseInt(row),\n column: parseInt(column)\n };\n}\n"]}
1
+ {"version":3,"file":"RichTextTableUtils.js","sourceRoot":"","sources":["../../../../../../../react-components/src/components/utils/RichTextTableUtils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { editTable } from 'roosterjs-content-model-api';\nimport { tableContextMenuIconStyles } from '../styles/RichTextEditor.styles';\nimport { RichTextStrings } from '../RichTextEditor/RichTextSendBox';\nimport { IEditor } from 'roosterjs-content-model-types';\nimport { IContextualMenuItem } from '@fluentui/react';\n\n/**\n * @private\n *\n * String to be replaces by actual values of row and column.\n */\nexport const ColumnRowReplaceString = '{column} x {row}';\n\n/**\n * @private\n *\n * Function to create key pair for the selected table size.\n */\nexport function createKey(row: number, column: number): string {\n return `${row},${column}`;\n}\n\n/**\n * @private\n *\n * Function to parse key to the selected table size valules.\n */\nexport function parseKey(key: string): { row: number; column: number } {\n const [row, column] = key.split(',');\n return {\n row: parseInt(row),\n column: parseInt(column)\n };\n}\n\n/**\n * Returns an array of context menu items for editing a rich text table.\n *\n * @param editor - The editor instance.\n * @param strings - An object containing localized strings for the context menu items.\n * @returns An array of context menu items.\n */\nexport const getTableEditContextMenuItems = (\n editor: IEditor,\n strings: Partial<RichTextStrings>\n): IContextualMenuItem[] => {\n return [\n {\n key: 'RichTextTableEditMenuTableInsert',\n text: strings.richTextInsertRowOrColumnMenu,\n ariaLabel: strings.richTextInsertRowOrColumnMenu,\n iconProps: {\n iconName: 'RichTextTableInsertMenuIcon',\n styles: { root: tableContextMenuIconStyles }\n },\n subMenuProps: {\n items: [\n {\n key: 'RichTextTableEditMenuTableInsertRowAbove',\n text: strings.richTextInsertRowAboveMenu,\n ariaLabel: strings.richTextInsertRowAboveMenu,\n onClick: () => {\n editTable(editor, 'insertAbove');\n }\n },\n {\n key: 'RichTextTableEditMenuTableInsertRowBelow',\n text: strings.richTextInsertRowBelowMenu,\n ariaLabel: strings.richTextInsertRowBelowMenu,\n onClick: () => {\n editTable(editor, 'insertBelow');\n }\n },\n {\n key: 'RichTextTableEditMenuTableInsertColumnLeft',\n text: strings.richTextInsertColumnLeftMenu,\n ariaLabel: strings.richTextInsertColumnLeftMenu,\n onClick: () => {\n editTable(editor, 'insertLeft');\n }\n },\n {\n key: 'RichTextTableEditMenuTableInsertColumnRight',\n text: strings.richTextInsertColumnRightMenu,\n ariaLabel: strings.richTextInsertColumnRightMenu,\n onClick: () => {\n editTable(editor, 'insertRight');\n }\n }\n ]\n }\n },\n {\n key: 'RichTextTableEditMenuTableDelete',\n text: strings.richTextDeleteRowOrColumnMenu,\n ariaLabel: strings.richTextDeleteRowOrColumnMenu,\n iconProps: {\n iconName: 'RichTextTableDeleteMenuIcon',\n styles: { root: tableContextMenuIconStyles }\n },\n subMenuProps: {\n items: [\n {\n key: 'RichTextTableEditMenuTableDeleteRow',\n text: strings.richTextDeleteRowMenu,\n ariaLabel: strings.richTextDeleteRowMenu,\n onClick: () => {\n editTable(editor, 'deleteRow');\n }\n },\n {\n key: 'RichTextTableEditMenuTableDeleteColumn',\n text: strings.richTextDeleteColumnMenu,\n ariaLabel: strings.richTextDeleteColumnMenu,\n onClick: () => {\n editTable(editor, 'deleteColumn');\n }\n },\n {\n key: 'RichTextTableEditMenuTableDeleteTable',\n text: strings.richTextDeleteTableMenu,\n ariaLabel: strings.richTextDeleteTableMenu,\n onClick: () => {\n editTable(editor, 'deleteTable');\n }\n }\n ]\n }\n }\n ];\n};\n"]}
@@ -83,7 +83,7 @@ export declare const defaultSpokenLanguage: _SupportedSpokenLanguage;
83
83
  *
84
84
  * @private
85
85
  */
86
- export declare const isEnterKeyEventFromCompositionSession: (e: React.KeyboardEvent<HTMLElement>) => boolean;
86
+ export declare const isEnterKeyEventFromCompositionSession: (e: KeyboardEvent) => boolean;
87
87
  /**
88
88
  * @private
89
89
  */
@@ -201,9 +201,7 @@ const SAFARI_COMPOSITION_KEYCODE = 229;
201
201
  */
202
202
  export const isEnterKeyEventFromCompositionSession = (e) =>
203
203
  // Uses KeyCode 229 and which code 229 to determine if the press of the enter key is from a composition session or not (Safari only)
204
- e.nativeEvent.isComposing ||
205
- e.nativeEvent.keyCode === SAFARI_COMPOSITION_KEYCODE ||
206
- e.nativeEvent.which === SAFARI_COMPOSITION_KEYCODE;
204
+ e.isComposing || e.keyCode === SAFARI_COMPOSITION_KEYCODE || e.which === SAFARI_COMPOSITION_KEYCODE;
207
205
  /**
208
206
  * @private
209
207
  */
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../react-components/src/components/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { IIconProps, MessageBarType } from '@fluentui/react';\nimport { ActiveErrorMessage, ErrorType } from './ErrorBar';\nimport { _SupportedSpokenLanguage } from '../types';\n\n/**\n * @private\n *\n * @param fileName\n * @param length\n * @returns string\n */\nexport const truncatedFileName = (fileName: string, length: number): string => {\n return fileName.substring(0, length).trimEnd() + (fileName.length > length ? '... ' : '');\n};\n\n/**\n * @private\n *\n * @param fileName\n * @returns string\n */\nexport const extension = (fileName: string): string => fileName.split('.').pop() || '';\n\n/**\n * @private\n */\nexport interface DismissedError {\n type: ErrorType;\n dismissedAt: Date;\n activeSince?: Date;\n}\n\n/**\n * @private\n * @param dismissedErrors\n * @param toDismiss\n * @returns DismissedError[]\n * Always returns a new Array so that the state variable is updated, trigerring a render.\n */\nexport const dismissError = (dismissedErrors: DismissedError[], toDismiss: ActiveErrorMessage): DismissedError[] => {\n const now = new Date(Date.now());\n for (const error of dismissedErrors) {\n if (error.type === toDismiss.type) {\n // Bump the timestamp for latest dismissal of this error to now.\n error.dismissedAt = now;\n error.activeSince = toDismiss.timestamp;\n return Array.from(dismissedErrors);\n }\n }\n\n const toDismissTimestamp = toDismiss.timestamp ?? now;\n\n // Record that this error was dismissed for the first time right now.\n return [\n ...dismissedErrors,\n {\n type: toDismiss.type,\n // the error time could be sometimes later than the button click time, which cause the dismiss not working\n // so we set the dismiss time to the later one\n dismissedAt: now > toDismissTimestamp ? now : toDismissTimestamp,\n activeSince: toDismiss.timestamp\n }\n ];\n};\n\n/**\n * @private\n * @param activeErrorMessages\n * @param dismissedErrors\n * @returns DismissedError[]\n * Returns a new Array if and only if contents change, to avoid re-rendering when nothing was dropped.\n */\nexport const dropDismissalsForInactiveErrors = (\n activeErrorMessages: ActiveErrorMessage[],\n dismissedErrors: DismissedError[]\n): DismissedError[] => {\n const active = new Map();\n for (const message of activeErrorMessages) {\n active.set(message.type, message);\n }\n\n // For an error such that:\n // * It was previously active, and dismissed.\n // * It did not have a timestamp associated with it.\n // * It is no longer active.\n //\n // We remove it from dismissals. When it becomes active again next time, it will be shown again on the UI.\n const shouldDeleteDismissal = (dismissed: DismissedError): boolean =>\n dismissed.activeSince === undefined && active.get(dismissed.type) === undefined;\n\n if (dismissedErrors.some((dismissed) => shouldDeleteDismissal(dismissed))) {\n return dismissedErrors.filter((dismissed) => !shouldDeleteDismissal(dismissed));\n }\n return dismissedErrors;\n};\n\n/**\n * @private\n * @param activeErrorMessages\n * @param dismissedErrors\n * @returns ActiveErrorMessage[]\n */\nexport const errorsToShow = (\n activeErrorMessages: ActiveErrorMessage[],\n dismissedErrors: DismissedError[],\n mountTimestamp?: Date\n): ActiveErrorMessage[] => {\n const dismissed: Map<ErrorType, DismissedError> = new Map();\n for (const error of dismissedErrors) {\n dismissed.set(error.type, error);\n }\n\n return activeErrorMessages.filter((error) => {\n if (mountTimestamp && error.timestamp && mountTimestamp > error.timestamp) {\n // Error has a timestamp and it is older than when the component was mounted.\n return false;\n }\n\n const dismissal = dismissed.get(error.type);\n if (!dismissal) {\n // This error was never dismissed.\n return true;\n }\n if (!error.timestamp) {\n // No timestamp associated with the error. In this case, the existence of a dismissal is enough to suppress the error.\n return false;\n }\n // Error has an associated timestamp, so compare with last dismissal.\n return error.timestamp > dismissal.dismissedAt;\n });\n};\n\n/**\n * @private\n * @param errorType\n * @returns MessageBarType\n */\nexport const messageBarType = (errorType: ErrorType): MessageBarType => {\n switch (errorType) {\n case 'callNetworkQualityLow':\n case 'callNoSpeakerFound':\n case 'callNoMicrophoneFound':\n case 'callMicrophoneAccessDenied':\n case 'callMicrophoneAccessDeniedSafari':\n case 'callMicrophoneMutedBySystem':\n case 'callMicrophoneUnmutedBySystem':\n case 'callMacOsMicrophoneAccessDenied':\n case 'callLocalVideoFreeze':\n case 'callCameraAccessDenied':\n case 'callCameraAccessDeniedSafari':\n case 'callCameraAlreadyInUse':\n case 'callVideoStoppedBySystem':\n case 'callVideoRecoveredBySystem':\n case 'callMacOsCameraAccessDenied':\n case 'callMacOsScreenShareAccessDenied':\n case 'startScreenShareGeneric':\n case 'cameraFrozenForRemoteParticipants':\n return MessageBarType.warning;\n default:\n return MessageBarType.error;\n }\n};\n\n/**\n * @private\n * @param errorType\n * @returns IIconProps | undefined\n */\nexport const messageBarIconProps = (errorType: ErrorType): IIconProps | undefined => {\n const iconName = customIconName[errorType];\n return iconName ? { iconName } : undefined;\n};\n\n/**\n * @private\n */\nexport const customIconName: Partial<{ [key in ErrorType]: string }> = {\n callNetworkQualityLow: 'ErrorBarCallNetworkQualityLow',\n callNoSpeakerFound: 'ErrorBarCallNoSpeakerFound',\n callNoMicrophoneFound: 'ErrorBarCallNoMicrophoneFound',\n callMicrophoneAccessDenied: 'ErrorBarCallMicrophoneAccessDenied',\n callMicrophoneAccessDeniedSafari: 'ErrorBarCallMicrophoneAccessDenied',\n callMicrophoneMutedBySystem: 'ErrorBarCallMicrophoneMutedBySystem',\n callMicrophoneUnmutedBySystem: 'ErrorBarCallMicrophoneUnmutedBySystem',\n callMacOsMicrophoneAccessDenied: 'ErrorBarCallMacOsMicrophoneAccessDenied',\n callLocalVideoFreeze: 'ErrorBarCallLocalVideoFreeze',\n callCameraAccessDenied: 'ErrorBarCallCameraAccessDenied',\n callCameraAccessDeniedSafari: 'ErrorBarCallCameraAccessDenied',\n callCameraAlreadyInUse: 'ErrorBarCallCameraAlreadyInUse',\n callVideoStoppedBySystem: 'ErrorBarCallVideoStoppedBySystem',\n callVideoRecoveredBySystem: 'ErrorBarCallVideoRecoveredBySystem',\n callMacOsCameraAccessDenied: 'ErrorBarCallMacOsCameraAccessDenied'\n};\n\n/**\n * @private\n */\nexport const isValidString = (string: string | undefined): string is string => {\n return !!string && string.length > 0;\n};\n\n/**\n * Chunk an array into rows of a given size.\n * @private\n */\nexport function chunk<T>(options: T[], itemsPerRow: number): T[][] {\n const rows: T[][] = [];\n let currentRow: T[] = [];\n for (const option of options) {\n currentRow.push(option);\n if (currentRow.length === itemsPerRow) {\n rows.push(currentRow);\n currentRow = [];\n }\n }\n if (currentRow.length > 0) {\n rows.push(currentRow);\n }\n return rows;\n}\n\n/**\n * @private\n */\nexport const defaultSpokenLanguage: _SupportedSpokenLanguage = 'en-us';\n\n/**\n * @private\n */\nconst SAFARI_COMPOSITION_KEYCODE = 229;\n/**\n * Determine if the press of the enter key is from a composition session or not (Safari only)\n *\n * @private\n */\nexport const isEnterKeyEventFromCompositionSession = (e: React.KeyboardEvent<HTMLElement>): boolean =>\n // Uses KeyCode 229 and which code 229 to determine if the press of the enter key is from a composition session or not (Safari only)\n e.nativeEvent.isComposing ||\n e.nativeEvent.keyCode === SAFARI_COMPOSITION_KEYCODE ||\n e.nativeEvent.which === SAFARI_COMPOSITION_KEYCODE;\n\n/**\n * @private\n */\nexport const nullToUndefined = <T>(value: T | null): T | undefined => (value === null ? undefined : value);\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../react-components/src/components/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { IIconProps, MessageBarType } from '@fluentui/react';\nimport { ActiveErrorMessage, ErrorType } from './ErrorBar';\nimport { _SupportedSpokenLanguage } from '../types';\n\n/**\n * @private\n *\n * @param fileName\n * @param length\n * @returns string\n */\nexport const truncatedFileName = (fileName: string, length: number): string => {\n return fileName.substring(0, length).trimEnd() + (fileName.length > length ? '... ' : '');\n};\n\n/**\n * @private\n *\n * @param fileName\n * @returns string\n */\nexport const extension = (fileName: string): string => fileName.split('.').pop() || '';\n\n/**\n * @private\n */\nexport interface DismissedError {\n type: ErrorType;\n dismissedAt: Date;\n activeSince?: Date;\n}\n\n/**\n * @private\n * @param dismissedErrors\n * @param toDismiss\n * @returns DismissedError[]\n * Always returns a new Array so that the state variable is updated, trigerring a render.\n */\nexport const dismissError = (dismissedErrors: DismissedError[], toDismiss: ActiveErrorMessage): DismissedError[] => {\n const now = new Date(Date.now());\n for (const error of dismissedErrors) {\n if (error.type === toDismiss.type) {\n // Bump the timestamp for latest dismissal of this error to now.\n error.dismissedAt = now;\n error.activeSince = toDismiss.timestamp;\n return Array.from(dismissedErrors);\n }\n }\n\n const toDismissTimestamp = toDismiss.timestamp ?? now;\n\n // Record that this error was dismissed for the first time right now.\n return [\n ...dismissedErrors,\n {\n type: toDismiss.type,\n // the error time could be sometimes later than the button click time, which cause the dismiss not working\n // so we set the dismiss time to the later one\n dismissedAt: now > toDismissTimestamp ? now : toDismissTimestamp,\n activeSince: toDismiss.timestamp\n }\n ];\n};\n\n/**\n * @private\n * @param activeErrorMessages\n * @param dismissedErrors\n * @returns DismissedError[]\n * Returns a new Array if and only if contents change, to avoid re-rendering when nothing was dropped.\n */\nexport const dropDismissalsForInactiveErrors = (\n activeErrorMessages: ActiveErrorMessage[],\n dismissedErrors: DismissedError[]\n): DismissedError[] => {\n const active = new Map();\n for (const message of activeErrorMessages) {\n active.set(message.type, message);\n }\n\n // For an error such that:\n // * It was previously active, and dismissed.\n // * It did not have a timestamp associated with it.\n // * It is no longer active.\n //\n // We remove it from dismissals. When it becomes active again next time, it will be shown again on the UI.\n const shouldDeleteDismissal = (dismissed: DismissedError): boolean =>\n dismissed.activeSince === undefined && active.get(dismissed.type) === undefined;\n\n if (dismissedErrors.some((dismissed) => shouldDeleteDismissal(dismissed))) {\n return dismissedErrors.filter((dismissed) => !shouldDeleteDismissal(dismissed));\n }\n return dismissedErrors;\n};\n\n/**\n * @private\n * @param activeErrorMessages\n * @param dismissedErrors\n * @returns ActiveErrorMessage[]\n */\nexport const errorsToShow = (\n activeErrorMessages: ActiveErrorMessage[],\n dismissedErrors: DismissedError[],\n mountTimestamp?: Date\n): ActiveErrorMessage[] => {\n const dismissed: Map<ErrorType, DismissedError> = new Map();\n for (const error of dismissedErrors) {\n dismissed.set(error.type, error);\n }\n\n return activeErrorMessages.filter((error) => {\n if (mountTimestamp && error.timestamp && mountTimestamp > error.timestamp) {\n // Error has a timestamp and it is older than when the component was mounted.\n return false;\n }\n\n const dismissal = dismissed.get(error.type);\n if (!dismissal) {\n // This error was never dismissed.\n return true;\n }\n if (!error.timestamp) {\n // No timestamp associated with the error. In this case, the existence of a dismissal is enough to suppress the error.\n return false;\n }\n // Error has an associated timestamp, so compare with last dismissal.\n return error.timestamp > dismissal.dismissedAt;\n });\n};\n\n/**\n * @private\n * @param errorType\n * @returns MessageBarType\n */\nexport const messageBarType = (errorType: ErrorType): MessageBarType => {\n switch (errorType) {\n case 'callNetworkQualityLow':\n case 'callNoSpeakerFound':\n case 'callNoMicrophoneFound':\n case 'callMicrophoneAccessDenied':\n case 'callMicrophoneAccessDeniedSafari':\n case 'callMicrophoneMutedBySystem':\n case 'callMicrophoneUnmutedBySystem':\n case 'callMacOsMicrophoneAccessDenied':\n case 'callLocalVideoFreeze':\n case 'callCameraAccessDenied':\n case 'callCameraAccessDeniedSafari':\n case 'callCameraAlreadyInUse':\n case 'callVideoStoppedBySystem':\n case 'callVideoRecoveredBySystem':\n case 'callMacOsCameraAccessDenied':\n case 'callMacOsScreenShareAccessDenied':\n case 'startScreenShareGeneric':\n case 'cameraFrozenForRemoteParticipants':\n return MessageBarType.warning;\n default:\n return MessageBarType.error;\n }\n};\n\n/**\n * @private\n * @param errorType\n * @returns IIconProps | undefined\n */\nexport const messageBarIconProps = (errorType: ErrorType): IIconProps | undefined => {\n const iconName = customIconName[errorType];\n return iconName ? { iconName } : undefined;\n};\n\n/**\n * @private\n */\nexport const customIconName: Partial<{ [key in ErrorType]: string }> = {\n callNetworkQualityLow: 'ErrorBarCallNetworkQualityLow',\n callNoSpeakerFound: 'ErrorBarCallNoSpeakerFound',\n callNoMicrophoneFound: 'ErrorBarCallNoMicrophoneFound',\n callMicrophoneAccessDenied: 'ErrorBarCallMicrophoneAccessDenied',\n callMicrophoneAccessDeniedSafari: 'ErrorBarCallMicrophoneAccessDenied',\n callMicrophoneMutedBySystem: 'ErrorBarCallMicrophoneMutedBySystem',\n callMicrophoneUnmutedBySystem: 'ErrorBarCallMicrophoneUnmutedBySystem',\n callMacOsMicrophoneAccessDenied: 'ErrorBarCallMacOsMicrophoneAccessDenied',\n callLocalVideoFreeze: 'ErrorBarCallLocalVideoFreeze',\n callCameraAccessDenied: 'ErrorBarCallCameraAccessDenied',\n callCameraAccessDeniedSafari: 'ErrorBarCallCameraAccessDenied',\n callCameraAlreadyInUse: 'ErrorBarCallCameraAlreadyInUse',\n callVideoStoppedBySystem: 'ErrorBarCallVideoStoppedBySystem',\n callVideoRecoveredBySystem: 'ErrorBarCallVideoRecoveredBySystem',\n callMacOsCameraAccessDenied: 'ErrorBarCallMacOsCameraAccessDenied'\n};\n\n/**\n * @private\n */\nexport const isValidString = (string: string | undefined): string is string => {\n return !!string && string.length > 0;\n};\n\n/**\n * Chunk an array into rows of a given size.\n * @private\n */\nexport function chunk<T>(options: T[], itemsPerRow: number): T[][] {\n const rows: T[][] = [];\n let currentRow: T[] = [];\n for (const option of options) {\n currentRow.push(option);\n if (currentRow.length === itemsPerRow) {\n rows.push(currentRow);\n currentRow = [];\n }\n }\n if (currentRow.length > 0) {\n rows.push(currentRow);\n }\n return rows;\n}\n\n/**\n * @private\n */\nexport const defaultSpokenLanguage: _SupportedSpokenLanguage = 'en-us';\n\n/**\n * @private\n */\nconst SAFARI_COMPOSITION_KEYCODE = 229;\n/**\n * Determine if the press of the enter key is from a composition session or not (Safari only)\n *\n * @private\n */\nexport const isEnterKeyEventFromCompositionSession = (e: KeyboardEvent): boolean =>\n // Uses KeyCode 229 and which code 229 to determine if the press of the enter key is from a composition session or not (Safari only)\n e.isComposing || e.keyCode === SAFARI_COMPOSITION_KEYCODE || e.which === SAFARI_COMPOSITION_KEYCODE;\n\n/**\n * @private\n */\nexport const nullToUndefined = <T>(value: T | null): T | undefined => (value === null ? undefined : value);\n"]}
@@ -57,6 +57,7 @@
57
57
  "richTextDeleteColumnMenu": "حذف العمود",
58
58
  "richTextDeleteRowMenu": "حذف الصف",
59
59
  "richTextDeleteTableMenu": "حذف الجدول",
60
+ "richTextToolbarMoreButtonAriaLabel": "More options",
60
61
  "attachmentMoreMenu": "خيارات إضافية"
61
62
  },
62
63
  "mentionPopover": {
@@ -199,7 +200,27 @@
199
200
  "blockedWarningText": "تم حذف هذه الرسالة بسبب نهج تنظيمي.",
200
201
  "blockedWarningLinkText": "تفاصيل",
201
202
  "attachmentCardGroupMessage": "تحتوي الرسالة على مرفق {attachmentCount}",
202
- "messageDeletedAnnouncementAriaLabel": "تم حذف الرسالة"
203
+ "messageDeletedAnnouncementAriaLabel": "تم حذف الرسالة",
204
+ "richTextBoldTooltip": "غامق",
205
+ "richTextItalicTooltip": "مائل",
206
+ "richTextUnderlineTooltip": "تسطير",
207
+ "richTextBulletListTooltip": "قائمة ذات تعداد نقطي",
208
+ "richTextNumberListTooltip": "قائمة مرقّمة",
209
+ "richTextIncreaseIndentTooltip": "زيادة المسافة البادئة",
210
+ "richTextDecreaseIndentTooltip": "إنقاص المسافة البادئة",
211
+ "richTextInsertTableTooltip": "إدراج جدول",
212
+ "richTextFormatButtonTooltip": "تنسيق",
213
+ "richTextInsertRowOrColumnMenu": "إدراج",
214
+ "richTextInsertTableMenuTitle": "إدراج جدول بـ {column} x {row}",
215
+ "richTextInsertRowAboveMenu": "إدراج أعلاه",
216
+ "richTextInsertRowBelowMenu": "إدراج أدناه",
217
+ "richTextInsertColumnLeftMenu": "إدراج يساراً",
218
+ "richTextInsertColumnRightMenu": "إدراج يميناً",
219
+ "richTextDeleteRowOrColumnMenu": "حذف",
220
+ "richTextDeleteColumnMenu": "حذف العمود",
221
+ "richTextDeleteRowMenu": "حذف الصف",
222
+ "richTextDeleteTableMenu": "حذف الجدول",
223
+ "richTextToolbarMoreButtonAriaLabel": "More options"
203
224
  },
204
225
  "errorBar": {
205
226
  "unableToReachChatService": "أنت غير متصل",
@@ -57,6 +57,7 @@
57
57
  "richTextDeleteColumnMenu": "Odstranit sloupec",
58
58
  "richTextDeleteRowMenu": "Odstranit řádek",
59
59
  "richTextDeleteTableMenu": "Odstranit tabulku",
60
+ "richTextToolbarMoreButtonAriaLabel": "More options",
60
61
  "attachmentMoreMenu": "Další možnosti"
61
62
  },
62
63
  "mentionPopover": {
@@ -199,7 +200,27 @@
199
200
  "blockedWarningText": "Tato zpráva se odstranila kvůli zásadám organizace.",
200
201
  "blockedWarningLinkText": "Podrobnosti",
201
202
  "attachmentCardGroupMessage": "Zpráva obsahuje {attachmentCount} přílohu",
202
- "messageDeletedAnnouncementAriaLabel": "Zpráva se odstranila."
203
+ "messageDeletedAnnouncementAriaLabel": "Zpráva se odstranila.",
204
+ "richTextBoldTooltip": "Tučné",
205
+ "richTextItalicTooltip": "Kurzíva",
206
+ "richTextUnderlineTooltip": "Podtržení",
207
+ "richTextBulletListTooltip": "Seznam s odrážkami",
208
+ "richTextNumberListTooltip": "Číslovaný seznam",
209
+ "richTextIncreaseIndentTooltip": "Zvětšit odsazení",
210
+ "richTextDecreaseIndentTooltip": "Zmenšit odsazení",
211
+ "richTextInsertTableTooltip": "Vložit tabulku",
212
+ "richTextFormatButtonTooltip": "Formát",
213
+ "richTextInsertRowOrColumnMenu": "Vložit",
214
+ "richTextInsertTableMenuTitle": "Vložit {column} x {row} tabulka",
215
+ "richTextInsertRowAboveMenu": "Vložit nad",
216
+ "richTextInsertRowBelowMenu": "Vložit pod",
217
+ "richTextInsertColumnLeftMenu": "Vložit vlevo",
218
+ "richTextInsertColumnRightMenu": "Vložit vpravo",
219
+ "richTextDeleteRowOrColumnMenu": "Odstranit",
220
+ "richTextDeleteColumnMenu": "Odstranit sloupec",
221
+ "richTextDeleteRowMenu": "Odstranit řádek",
222
+ "richTextDeleteTableMenu": "Odstranit tabulku",
223
+ "richTextToolbarMoreButtonAriaLabel": "More options"
203
224
  },
204
225
  "errorBar": {
205
226
  "unableToReachChatService": "Jste offline",
@@ -57,6 +57,7 @@
57
57
  "richTextDeleteColumnMenu": "Spalte löschen",
58
58
  "richTextDeleteRowMenu": "Zeile löschen",
59
59
  "richTextDeleteTableMenu": "Tabelle löschen",
60
+ "richTextToolbarMoreButtonAriaLabel": "More options",
60
61
  "attachmentMoreMenu": "Mehr Optionen"
61
62
  },
62
63
  "mentionPopover": {
@@ -199,7 +200,27 @@
199
200
  "blockedWarningText": "Diese Nachricht wurde aufgrund einer Organisationsrichtlinie gelöscht.",
200
201
  "blockedWarningLinkText": "Details",
201
202
  "attachmentCardGroupMessage": "Die Nachricht enthält {attachmentCount} Anlage.",
202
- "messageDeletedAnnouncementAriaLabel": "Die Nachricht wurde gelöscht"
203
+ "messageDeletedAnnouncementAriaLabel": "Die Nachricht wurde gelöscht",
204
+ "richTextBoldTooltip": "Fett",
205
+ "richTextItalicTooltip": "Kursiv",
206
+ "richTextUnderlineTooltip": "Unterstreichen",
207
+ "richTextBulletListTooltip": "Aufzählungsliste",
208
+ "richTextNumberListTooltip": "Nummerierte Liste",
209
+ "richTextIncreaseIndentTooltip": "Einzug vergrößern",
210
+ "richTextDecreaseIndentTooltip": "Einzug verringern",
211
+ "richTextInsertTableTooltip": "Tabelle einfügen",
212
+ "richTextFormatButtonTooltip": "Formatieren",
213
+ "richTextInsertRowOrColumnMenu": "Einfügen",
214
+ "richTextInsertTableMenuTitle": "{column} x {row} Tabelle einfügen",
215
+ "richTextInsertRowAboveMenu": "Oben einfügen",
216
+ "richTextInsertRowBelowMenu": "Unten einfügen",
217
+ "richTextInsertColumnLeftMenu": "Links einfügen",
218
+ "richTextInsertColumnRightMenu": "Rechts einfügen",
219
+ "richTextDeleteRowOrColumnMenu": "Löschen",
220
+ "richTextDeleteColumnMenu": "Spalte löschen",
221
+ "richTextDeleteRowMenu": "Zeile löschen",
222
+ "richTextDeleteTableMenu": "Tabelle löschen",
223
+ "richTextToolbarMoreButtonAriaLabel": "More options"
203
224
  },
204
225
  "errorBar": {
205
226
  "unableToReachChatService": "Sie sind offline.",
@@ -57,6 +57,7 @@
57
57
  "richTextDeleteColumnMenu": "Delete column",
58
58
  "richTextDeleteRowMenu": "Delete row",
59
59
  "richTextDeleteTableMenu": "Delete table",
60
+ "richTextToolbarMoreButtonAriaLabel": "More options",
60
61
  "attachmentMoreMenu": "More Options"
61
62
  },
62
63
  "mentionPopover": {
@@ -199,7 +200,27 @@
199
200
  "blockedWarningText": "This message was deleted due to organisational policy.",
200
201
  "blockedWarningLinkText": "Details",
201
202
  "attachmentCardGroupMessage": "The message has {attachmentCount} attachment",
202
- "messageDeletedAnnouncementAriaLabel": "The message is deleted"
203
+ "messageDeletedAnnouncementAriaLabel": "The message is deleted",
204
+ "richTextBoldTooltip": "Bold",
205
+ "richTextItalicTooltip": "Italic",
206
+ "richTextUnderlineTooltip": "Underline",
207
+ "richTextBulletListTooltip": "Bulleted list",
208
+ "richTextNumberListTooltip": "Numbered list",
209
+ "richTextIncreaseIndentTooltip": "Increase indent",
210
+ "richTextDecreaseIndentTooltip": "Decrease indent",
211
+ "richTextInsertTableTooltip": "Insert table",
212
+ "richTextFormatButtonTooltip": "Format",
213
+ "richTextInsertRowOrColumnMenu": "Insert",
214
+ "richTextInsertTableMenuTitle": "Insert {column} x {row} table",
215
+ "richTextInsertRowAboveMenu": "Insert above",
216
+ "richTextInsertRowBelowMenu": "Insert below",
217
+ "richTextInsertColumnLeftMenu": "Insert left",
218
+ "richTextInsertColumnRightMenu": "Insert right",
219
+ "richTextDeleteRowOrColumnMenu": "Delete",
220
+ "richTextDeleteColumnMenu": "Delete column",
221
+ "richTextDeleteRowMenu": "Delete row",
222
+ "richTextDeleteTableMenu": "Delete table",
223
+ "richTextToolbarMoreButtonAriaLabel": "More options"
203
224
  },
204
225
  "errorBar": {
205
226
  "unableToReachChatService": "You are offline",
@@ -219,7 +219,8 @@
219
219
  "richTextDeleteRowOrColumnMenu": "Delete",
220
220
  "richTextDeleteColumnMenu": "Delete column",
221
221
  "richTextDeleteRowMenu": "Delete row",
222
- "richTextDeleteTableMenu": "Delete table"
222
+ "richTextDeleteTableMenu": "Delete table",
223
+ "richTextToolbarMoreButtonAriaLabel": "More options"
223
224
  },
224
225
  "errorBar": {
225
226
  "unableToReachChatService": "You are offline",
@@ -57,6 +57,7 @@
57
57
  "richTextDeleteColumnMenu": "Eliminar columna",
58
58
  "richTextDeleteRowMenu": "Eliminar fila",
59
59
  "richTextDeleteTableMenu": "Eliminar tabla",
60
+ "richTextToolbarMoreButtonAriaLabel": "More options",
60
61
  "attachmentMoreMenu": "Más opciones"
61
62
  },
62
63
  "mentionPopover": {
@@ -199,7 +200,27 @@
199
200
  "blockedWarningText": "Este mensaje se eliminó debido a la directiva de la organización.",
200
201
  "blockedWarningLinkText": "Detalles",
201
202
  "attachmentCardGroupMessage": "El mensaje tiene {attachmentCount} archivo adjunto",
202
- "messageDeletedAnnouncementAriaLabel": "El mensaje se ha eliminado"
203
+ "messageDeletedAnnouncementAriaLabel": "El mensaje se ha eliminado",
204
+ "richTextBoldTooltip": "Negrita",
205
+ "richTextItalicTooltip": "Cursiva",
206
+ "richTextUnderlineTooltip": "Subrayado",
207
+ "richTextBulletListTooltip": "Lista con viñetas",
208
+ "richTextNumberListTooltip": "Lista numerada",
209
+ "richTextIncreaseIndentTooltip": "Aumentar sangría",
210
+ "richTextDecreaseIndentTooltip": "Reducir sangría",
211
+ "richTextInsertTableTooltip": "Insertar tabla",
212
+ "richTextFormatButtonTooltip": "Formato",
213
+ "richTextInsertRowOrColumnMenu": "Insertar",
214
+ "richTextInsertTableMenuTitle": "Insertar {column} x {row} tabla",
215
+ "richTextInsertRowAboveMenu": "Insertar arriba",
216
+ "richTextInsertRowBelowMenu": "Insertar debajo",
217
+ "richTextInsertColumnLeftMenu": "Insertar a la izquierda",
218
+ "richTextInsertColumnRightMenu": "Insertar a la derecha",
219
+ "richTextDeleteRowOrColumnMenu": "Eliminar",
220
+ "richTextDeleteColumnMenu": "Eliminar columna",
221
+ "richTextDeleteRowMenu": "Eliminar fila",
222
+ "richTextDeleteTableMenu": "Eliminar tabla",
223
+ "richTextToolbarMoreButtonAriaLabel": "More options"
203
224
  },
204
225
  "errorBar": {
205
226
  "unableToReachChatService": "Sin conexión",
@@ -38,7 +38,7 @@
38
38
  "removeAttachment": "Poista tiedosto",
39
39
  "uploading": "Ladataan",
40
40
  "uploadCompleted": "Lataus valmis",
41
- "richTextBoldTooltip": "Lihavoi",
41
+ "richTextBoldTooltip": "Lihavointi",
42
42
  "richTextItalicTooltip": "Kursivointi",
43
43
  "richTextUnderlineTooltip": "Alleviivaa",
44
44
  "richTextBulletListTooltip": "Luettelomerkeillä varustettu luettelo",
@@ -57,6 +57,7 @@
57
57
  "richTextDeleteColumnMenu": "Poista sarake",
58
58
  "richTextDeleteRowMenu": "Poista rivi",
59
59
  "richTextDeleteTableMenu": "Poista taulukko",
60
+ "richTextToolbarMoreButtonAriaLabel": "More options",
60
61
  "attachmentMoreMenu": "Lisää asetuksia"
61
62
  },
62
63
  "mentionPopover": {
@@ -199,7 +200,27 @@
199
200
  "blockedWarningText": "Tämä viesti poistettiin organisaation käytännön vuoksi.",
200
201
  "blockedWarningLinkText": "Lisätiedot",
201
202
  "attachmentCardGroupMessage": "Viestissä on {attachmentCount} liitettä",
202
- "messageDeletedAnnouncementAriaLabel": "Viesti on poistettu"
203
+ "messageDeletedAnnouncementAriaLabel": "Viesti on poistettu",
204
+ "richTextBoldTooltip": "Lihavoi",
205
+ "richTextItalicTooltip": "Kursivointi",
206
+ "richTextUnderlineTooltip": "Alleviivaus",
207
+ "richTextBulletListTooltip": "Luettelomerkeillä varustettu luettelo",
208
+ "richTextNumberListTooltip": "Numeroitu luettelo",
209
+ "richTextIncreaseIndentTooltip": "Suurenna sisennystä",
210
+ "richTextDecreaseIndentTooltip": "Pienennä sisennystä",
211
+ "richTextInsertTableTooltip": "Lisää taulukko",
212
+ "richTextFormatButtonTooltip": "Muoto",
213
+ "richTextInsertRowOrColumnMenu": "Lisää",
214
+ "richTextInsertTableMenuTitle": "Lisää {row}x{column}-kokoinen taulukko",
215
+ "richTextInsertRowAboveMenu": "Lisää yläpuolelle",
216
+ "richTextInsertRowBelowMenu": "Lisää alapuolelle",
217
+ "richTextInsertColumnLeftMenu": "Lisää vasemmalle",
218
+ "richTextInsertColumnRightMenu": "Lisää oikealle",
219
+ "richTextDeleteRowOrColumnMenu": "Poista",
220
+ "richTextDeleteColumnMenu": "Poista sarake",
221
+ "richTextDeleteRowMenu": "Poista rivi",
222
+ "richTextDeleteTableMenu": "Poista taulukko",
223
+ "richTextToolbarMoreButtonAriaLabel": "More options"
203
224
  },
204
225
  "errorBar": {
205
226
  "unableToReachChatService": "Olet offline-tilassa",
@@ -38,25 +38,26 @@
38
38
  "removeAttachment": "Supprimer un fichier",
39
39
  "uploading": "Téléchargement",
40
40
  "uploadCompleted": "Chargement terminé",
41
- "richTextBoldTooltip": "Gras",
41
+ "richTextBoldTooltip": "Bold",
42
42
  "richTextItalicTooltip": "Italique",
43
43
  "richTextUnderlineTooltip": "Souligner",
44
- "richTextBulletListTooltip": "Liste à puces",
44
+ "richTextBulletListTooltip": "Bulleted list",
45
45
  "richTextNumberListTooltip": "Liste numérotée",
46
- "richTextIncreaseIndentTooltip": "Augmenter le retrait",
47
- "richTextDecreaseIndentTooltip": "Réduire le retrait",
48
- "richTextInsertTableTooltip": "Insérer un tableau",
46
+ "richTextIncreaseIndentTooltip": "Increase indent",
47
+ "richTextDecreaseIndentTooltip": "Decrease indent",
48
+ "richTextInsertTableTooltip": "Insert table",
49
49
  "richTextFormatButtonTooltip": "Format",
50
50
  "richTextInsertRowOrColumnMenu": "Insérer",
51
51
  "richTextInsertTableMenuTitle": "Insérer une table {column} x {row}",
52
52
  "richTextInsertRowAboveMenu": "Insérer au-dessus",
53
53
  "richTextInsertRowBelowMenu": "Insérer l’élément ci-dessous",
54
- "richTextInsertColumnLeftMenu": "Insérer à gauche",
55
- "richTextInsertColumnRightMenu": "Insérer à droite",
54
+ "richTextInsertColumnLeftMenu": "Insert left",
55
+ "richTextInsertColumnRightMenu": "Insert right",
56
56
  "richTextDeleteRowOrColumnMenu": "Supprimer",
57
- "richTextDeleteColumnMenu": "Supprimer la colonne",
58
- "richTextDeleteRowMenu": "Supprimer une ligne",
57
+ "richTextDeleteColumnMenu": "Delete column",
58
+ "richTextDeleteRowMenu": "Delete row",
59
59
  "richTextDeleteTableMenu": "Supprimer le tableau",
60
+ "richTextToolbarMoreButtonAriaLabel": "More options",
60
61
  "attachmentMoreMenu": "Plus d’options"
61
62
  },
62
63
  "mentionPopover": {
@@ -199,7 +200,27 @@
199
200
  "blockedWarningText": "Ce message a été supprimé en raison d’une stratégie de l’organisation.",
200
201
  "blockedWarningLinkText": "Détails",
201
202
  "attachmentCardGroupMessage": "Le message a {attachmentCount} pièce jointe",
202
- "messageDeletedAnnouncementAriaLabel": "Le message est supprimé"
203
+ "messageDeletedAnnouncementAriaLabel": "Le message est supprimé",
204
+ "richTextBoldTooltip": "Gras",
205
+ "richTextItalicTooltip": "Italic",
206
+ "richTextUnderlineTooltip": "Underline",
207
+ "richTextBulletListTooltip": "Liste à puces",
208
+ "richTextNumberListTooltip": "Numbered list",
209
+ "richTextIncreaseIndentTooltip": "Augmenter le retrait",
210
+ "richTextDecreaseIndentTooltip": "Réduire le retrait",
211
+ "richTextInsertTableTooltip": "Insérer un tableau",
212
+ "richTextFormatButtonTooltip": "Format",
213
+ "richTextInsertRowOrColumnMenu": "Insert",
214
+ "richTextInsertTableMenuTitle": "Insérer une table {column} x {row}",
215
+ "richTextInsertRowAboveMenu": "Insert above",
216
+ "richTextInsertRowBelowMenu": "Insert below",
217
+ "richTextInsertColumnLeftMenu": "Insérer à gauche",
218
+ "richTextInsertColumnRightMenu": "Insérer à droite",
219
+ "richTextDeleteRowOrColumnMenu": "Delete",
220
+ "richTextDeleteColumnMenu": "Supprimer la colonne",
221
+ "richTextDeleteRowMenu": "Supprimer une ligne",
222
+ "richTextDeleteTableMenu": "Delete table",
223
+ "richTextToolbarMoreButtonAriaLabel": "More options"
203
224
  },
204
225
  "errorBar": {
205
226
  "unableToReachChatService": "Vous êtes hors connexion",
@@ -57,6 +57,7 @@
57
57
  "richTextDeleteColumnMenu": "מחק עמודה",
58
58
  "richTextDeleteRowMenu": "מחק שורה",
59
59
  "richTextDeleteTableMenu": "מחק טבלה",
60
+ "richTextToolbarMoreButtonAriaLabel": "More options",
60
61
  "attachmentMoreMenu": "אפשרויות נוספות"
61
62
  },
62
63
  "mentionPopover": {
@@ -199,7 +200,27 @@
199
200
  "blockedWarningText": "הודעה זו נמחקה עקב מדיניות ארגונית.",
200
201
  "blockedWarningLinkText": "פרטים",
201
202
  "attachmentCardGroupMessage": "ההודעה כוללת {attachmentCount} קבצים מצורפים.",
202
- "messageDeletedAnnouncementAriaLabel": "ההודעה נמחקת"
203
+ "messageDeletedAnnouncementAriaLabel": "ההודעה נמחקת",
204
+ "richTextBoldTooltip": "מודגש",
205
+ "richTextItalicTooltip": "הטיה",
206
+ "richTextUnderlineTooltip": "קו תחתון",
207
+ "richTextBulletListTooltip": "רשימה עם תבליטים",
208
+ "richTextNumberListTooltip": "רשימה ממוספרת",
209
+ "richTextIncreaseIndentTooltip": "הגדל כניסה",
210
+ "richTextDecreaseIndentTooltip": "הקטן כניסה",
211
+ "richTextInsertTableTooltip": "הוסף טבלה",
212
+ "richTextFormatButtonTooltip": "תבנית",
213
+ "richTextInsertRowOrColumnMenu": "הוסף",
214
+ "richTextInsertTableMenuTitle": "הוסף טבלה {column} x‏ {row}",
215
+ "richTextInsertRowAboveMenu": "הוסף מעל",
216
+ "richTextInsertRowBelowMenu": "הוסף מתחת",
217
+ "richTextInsertColumnLeftMenu": "הוסף משמאל",
218
+ "richTextInsertColumnRightMenu": "הוסף מימין",
219
+ "richTextDeleteRowOrColumnMenu": "מחק",
220
+ "richTextDeleteColumnMenu": "מחק עמודה",
221
+ "richTextDeleteRowMenu": "מחק שורה",
222
+ "richTextDeleteTableMenu": "מחק טבלה",
223
+ "richTextToolbarMoreButtonAriaLabel": "More options"
203
224
  },
204
225
  "errorBar": {
205
226
  "unableToReachChatService": "אתה נמצא במצב לא מקוון",
@@ -57,6 +57,7 @@
57
57
  "richTextDeleteColumnMenu": "Elimina colonna",
58
58
  "richTextDeleteRowMenu": "Elimina riga",
59
59
  "richTextDeleteTableMenu": "Elimina tabella",
60
+ "richTextToolbarMoreButtonAriaLabel": "More options",
60
61
  "attachmentMoreMenu": "Altre opzioni"
61
62
  },
62
63
  "mentionPopover": {
@@ -199,7 +200,27 @@
199
200
  "blockedWarningText": "Questo messaggio è stato eliminato a causa dei criteri dell'organizzazione.",
200
201
  "blockedWarningLinkText": "Dettagli",
201
202
  "attachmentCardGroupMessage": "Il messaggio ha allegati: {attachmentCount}.",
202
- "messageDeletedAnnouncementAriaLabel": "Il messaggio è stato eliminato"
203
+ "messageDeletedAnnouncementAriaLabel": "Il messaggio è stato eliminato",
204
+ "richTextBoldTooltip": "Grassetto",
205
+ "richTextItalicTooltip": "Corsivo",
206
+ "richTextUnderlineTooltip": "Sottolineato",
207
+ "richTextBulletListTooltip": "Elenco puntato",
208
+ "richTextNumberListTooltip": "Elenco numerato",
209
+ "richTextIncreaseIndentTooltip": "Aumenta rientro",
210
+ "richTextDecreaseIndentTooltip": "Riduci rientro",
211
+ "richTextInsertTableTooltip": "Inserisci tabella",
212
+ "richTextFormatButtonTooltip": "Formato",
213
+ "richTextInsertRowOrColumnMenu": "Inserisci",
214
+ "richTextInsertTableMenuTitle": "Inserisci tabella {column} x {row}",
215
+ "richTextInsertRowAboveMenu": "Inserisci sopra",
216
+ "richTextInsertRowBelowMenu": "Inserisci sotto",
217
+ "richTextInsertColumnLeftMenu": "Inserisci a sinistra",
218
+ "richTextInsertColumnRightMenu": "Inserisci a destra",
219
+ "richTextDeleteRowOrColumnMenu": "Elimina",
220
+ "richTextDeleteColumnMenu": "Elimina colonna",
221
+ "richTextDeleteRowMenu": "Elimina riga",
222
+ "richTextDeleteTableMenu": "Elimina tabella",
223
+ "richTextToolbarMoreButtonAriaLabel": "More options"
203
224
  },
204
225
  "errorBar": {
205
226
  "unableToReachChatService": "Sei offline",