@syncfusion/ej2-richtexteditor 23.2.7-52849 → 24.1.41-569421

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 (171) hide show
  1. package/.eslintrc.json +260 -0
  2. package/CHANGELOG.md +203 -1
  3. package/dist/ej2-richtexteditor.umd.min.js +1 -1
  4. package/dist/ej2-richtexteditor.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-richtexteditor.es2015.js +9873 -7941
  6. package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
  7. package/dist/es6/ej2-richtexteditor.es5.js +9967 -8034
  8. package/dist/es6/ej2-richtexteditor.es5.js.map +1 -1
  9. package/package.json +13 -13
  10. package/src/common/config.d.ts +7 -0
  11. package/src/common/config.js +12 -1
  12. package/src/common/constant.d.ts +6 -0
  13. package/src/common/constant.js +6 -0
  14. package/src/common/interface.d.ts +12 -0
  15. package/src/common/types.d.ts +6 -0
  16. package/src/common/util.d.ts +6 -0
  17. package/src/common/util.js +61 -20
  18. package/src/editor-manager/base/constant.d.ts +6 -0
  19. package/src/editor-manager/base/constant.js +6 -0
  20. package/src/editor-manager/base/editor-manager.d.ts +5 -0
  21. package/src/editor-manager/base/editor-manager.js +59 -0
  22. package/src/editor-manager/base/interface.d.ts +8 -0
  23. package/src/editor-manager/plugin/audio.js +13 -3
  24. package/src/editor-manager/plugin/dom-node.d.ts +5 -1
  25. package/src/editor-manager/plugin/dom-node.js +169 -28
  26. package/src/editor-manager/plugin/format-painter-actions.d.ts +1 -0
  27. package/src/editor-manager/plugin/format-painter-actions.js +19 -1
  28. package/src/editor-manager/plugin/formats.d.ts +1 -0
  29. package/src/editor-manager/plugin/formats.js +38 -3
  30. package/src/editor-manager/plugin/image.js +38 -15
  31. package/src/editor-manager/plugin/indents.js +1 -1
  32. package/src/editor-manager/plugin/inserthtml.d.ts +1 -0
  33. package/src/editor-manager/plugin/inserthtml.js +83 -20
  34. package/src/editor-manager/plugin/link.js +8 -3
  35. package/src/editor-manager/plugin/lists.js +159 -70
  36. package/src/editor-manager/plugin/ms-word-clean-up.d.ts +3 -0
  37. package/src/editor-manager/plugin/ms-word-clean-up.js +215 -85
  38. package/src/editor-manager/plugin/nodecutter.js +5 -2
  39. package/src/editor-manager/plugin/selection-commands.d.ts +2 -0
  40. package/src/editor-manager/plugin/selection-commands.js +248 -4
  41. package/src/editor-manager/plugin/table.d.ts +4 -1
  42. package/src/editor-manager/plugin/table.js +95 -49
  43. package/src/editor-manager/plugin/toolbar-status.d.ts +2 -2
  44. package/src/editor-manager/plugin/toolbar-status.js +20 -10
  45. package/src/editor-manager/plugin/undo.d.ts +1 -0
  46. package/src/editor-manager/plugin/undo.js +21 -1
  47. package/src/rich-text-editor/actions/base-quick-toolbar.d.ts +4 -3
  48. package/src/rich-text-editor/actions/base-quick-toolbar.js +61 -14
  49. package/src/rich-text-editor/actions/base-toolbar.js +33 -34
  50. package/src/rich-text-editor/actions/color-picker.d.ts +1 -0
  51. package/src/rich-text-editor/actions/color-picker.js +13 -3
  52. package/src/rich-text-editor/actions/count.js +1 -1
  53. package/src/rich-text-editor/actions/dropdown-buttons.d.ts +1 -0
  54. package/src/rich-text-editor/actions/dropdown-buttons.js +11 -5
  55. package/src/rich-text-editor/actions/emoji-picker.js +16 -7
  56. package/src/rich-text-editor/actions/enter-key.js +10 -5
  57. package/src/rich-text-editor/actions/file-manager.js +1 -1
  58. package/src/rich-text-editor/actions/format-painter.js +5 -2
  59. package/src/rich-text-editor/actions/full-screen.js +5 -4
  60. package/src/rich-text-editor/actions/html-editor.d.ts +2 -0
  61. package/src/rich-text-editor/actions/html-editor.js +124 -17
  62. package/src/rich-text-editor/actions/keyboard.js +3 -1
  63. package/src/rich-text-editor/actions/markdown-editor.js +3 -1
  64. package/src/rich-text-editor/actions/paste-clean-up.d.ts +5 -0
  65. package/src/rich-text-editor/actions/paste-clean-up.js +156 -28
  66. package/src/rich-text-editor/actions/quick-toolbar.d.ts +8 -0
  67. package/src/rich-text-editor/actions/quick-toolbar.js +59 -12
  68. package/src/rich-text-editor/actions/resize.js +2 -1
  69. package/src/rich-text-editor/actions/toolbar-action.js +1 -1
  70. package/src/rich-text-editor/actions/toolbar.d.ts +3 -3
  71. package/src/rich-text-editor/actions/toolbar.js +35 -96
  72. package/src/rich-text-editor/base/classes.d.ts +5 -5
  73. package/src/rich-text-editor/base/classes.js +5 -5
  74. package/src/rich-text-editor/base/constant.d.ts +46 -1
  75. package/src/rich-text-editor/base/constant.js +215 -1
  76. package/src/rich-text-editor/base/interface.d.ts +47 -3
  77. package/src/rich-text-editor/base/rich-text-editor-model.d.ts +3 -3
  78. package/src/rich-text-editor/base/rich-text-editor.d.ts +16 -4
  79. package/src/rich-text-editor/base/rich-text-editor.js +184 -97
  80. package/src/rich-text-editor/base/util.js +22 -4
  81. package/src/rich-text-editor/formatter/formatter.js +16 -4
  82. package/src/rich-text-editor/models/default-locale.js +31 -25
  83. package/src/rich-text-editor/models/items.js +3 -3
  84. package/src/rich-text-editor/models/toolbar-settings-model.d.ts +1 -1
  85. package/src/rich-text-editor/models/toolbar-settings.d.ts +1 -1
  86. package/src/rich-text-editor/models/toolbar-settings.js +1 -1
  87. package/src/rich-text-editor/renderer/audio-module.d.ts +1 -0
  88. package/src/rich-text-editor/renderer/audio-module.js +22 -4
  89. package/src/rich-text-editor/renderer/dialog-renderer.d.ts +2 -0
  90. package/src/rich-text-editor/renderer/dialog-renderer.js +22 -2
  91. package/src/rich-text-editor/renderer/iframe-content-renderer.js +2 -1
  92. package/src/rich-text-editor/renderer/image-module.d.ts +9 -1
  93. package/src/rich-text-editor/renderer/image-module.js +248 -213
  94. package/src/rich-text-editor/renderer/link-module.js +53 -24
  95. package/src/rich-text-editor/renderer/table-module.d.ts +10 -1
  96. package/src/rich-text-editor/renderer/table-module.js +343 -168
  97. package/src/rich-text-editor/renderer/toolbar-renderer.d.ts +3 -6
  98. package/src/rich-text-editor/renderer/toolbar-renderer.js +106 -101
  99. package/src/rich-text-editor/renderer/video-module.d.ts +3 -0
  100. package/src/rich-text-editor/renderer/video-module.js +82 -41
  101. package/src/rich-text-editor/renderer/view-source.d.ts +1 -0
  102. package/src/rich-text-editor/renderer/view-source.js +15 -5
  103. package/src/selection/selection.js +3 -0
  104. package/styles/bootstrap-dark.css +353 -103
  105. package/styles/bootstrap.css +357 -112
  106. package/styles/bootstrap4.css +338 -96
  107. package/styles/bootstrap5-dark.css +344 -97
  108. package/styles/bootstrap5.css +344 -97
  109. package/styles/fabric-dark.css +332 -90
  110. package/styles/fabric.css +333 -91
  111. package/styles/fluent-dark.css +360 -98
  112. package/styles/fluent.css +360 -98
  113. package/styles/highcontrast-light.css +332 -90
  114. package/styles/highcontrast.css +336 -91
  115. package/styles/material-dark.css +339 -92
  116. package/styles/material.css +339 -92
  117. package/styles/material3-dark.css +348 -100
  118. package/styles/material3.css +348 -100
  119. package/styles/rich-text-editor/_bds-definition.scss +279 -0
  120. package/styles/rich-text-editor/_bootstrap-dark-definition.scss +17 -13
  121. package/styles/rich-text-editor/_bootstrap-definition.scss +22 -19
  122. package/styles/rich-text-editor/_bootstrap4-definition.scss +11 -7
  123. package/styles/rich-text-editor/_bootstrap5-definition.scss +8 -4
  124. package/styles/rich-text-editor/_fabric-dark-definition.scss +6 -2
  125. package/styles/rich-text-editor/_fabric-definition.scss +7 -3
  126. package/styles/rich-text-editor/_fluent-definition.scss +14 -10
  127. package/styles/rich-text-editor/_fusionnew-definition.scss +7 -3
  128. package/styles/rich-text-editor/_highcontrast-definition.scss +7 -3
  129. package/styles/rich-text-editor/_highcontrast-light-definition.scss +6 -2
  130. package/styles/rich-text-editor/_layout.scss +211 -34
  131. package/styles/rich-text-editor/_material-dark-definition.scss +6 -2
  132. package/styles/rich-text-editor/_material-definition.scss +6 -2
  133. package/styles/rich-text-editor/_material3-definition.scss +16 -12
  134. package/styles/rich-text-editor/_tailwind-definition.scss +23 -19
  135. package/styles/rich-text-editor/_theme.scss +113 -24
  136. package/styles/rich-text-editor/bootstrap-dark.css +353 -103
  137. package/styles/rich-text-editor/bootstrap.css +357 -112
  138. package/styles/rich-text-editor/bootstrap4.css +338 -96
  139. package/styles/rich-text-editor/bootstrap5-dark.css +344 -97
  140. package/styles/rich-text-editor/bootstrap5.css +344 -97
  141. package/styles/rich-text-editor/fabric-dark.css +332 -90
  142. package/styles/rich-text-editor/fabric.css +333 -91
  143. package/styles/rich-text-editor/fluent-dark.css +360 -98
  144. package/styles/rich-text-editor/fluent.css +360 -98
  145. package/styles/rich-text-editor/highcontrast-light.css +332 -90
  146. package/styles/rich-text-editor/highcontrast.css +336 -91
  147. package/styles/rich-text-editor/icons/_bds.scss +348 -0
  148. package/styles/rich-text-editor/icons/_bootstrap-dark.scss +4 -4
  149. package/styles/rich-text-editor/icons/_bootstrap.scss +4 -4
  150. package/styles/rich-text-editor/icons/_bootstrap4.scss +4 -4
  151. package/styles/rich-text-editor/icons/_bootstrap5.scss +4 -4
  152. package/styles/rich-text-editor/icons/_fabric-dark.scss +4 -4
  153. package/styles/rich-text-editor/icons/_fabric.scss +4 -4
  154. package/styles/rich-text-editor/icons/_fluent.scss +4 -4
  155. package/styles/rich-text-editor/icons/_fusionnew.scss +3 -3
  156. package/styles/rich-text-editor/icons/_highcontrast-light.scss +4 -4
  157. package/styles/rich-text-editor/icons/_highcontrast.scss +4 -4
  158. package/styles/rich-text-editor/icons/_material-dark.scss +4 -4
  159. package/styles/rich-text-editor/icons/_material.scss +4 -4
  160. package/styles/rich-text-editor/icons/_material3.scss +4 -4
  161. package/styles/rich-text-editor/icons/_tailwind.scss +4 -4
  162. package/styles/rich-text-editor/material-dark.css +339 -92
  163. package/styles/rich-text-editor/material.css +339 -92
  164. package/styles/rich-text-editor/material3-dark.css +348 -100
  165. package/styles/rich-text-editor/material3.css +348 -100
  166. package/styles/rich-text-editor/tailwind-dark.css +383 -113
  167. package/styles/rich-text-editor/tailwind.css +383 -113
  168. package/styles/tailwind-dark.css +383 -113
  169. package/styles/tailwind.css +383 -113
  170. package/.github/PULL_REQUEST_TEMPLATE/Bug.md +0 -41
  171. package/.github/PULL_REQUEST_TEMPLATE/Feature.md +0 -27
@@ -230,7 +230,12 @@ export function setToolbarStatus(e, isPopToolbar, self) {
230
230
  }
231
231
  case 'bulletFormatList':
232
232
  case 'numberFormatList': {
233
- removeClass([e.tbElements[j]], [classes.CLS_ACTIVE]);
233
+ if (value !== '') {
234
+ addClass([e.tbElements[j]], [classes.CLS_ACTIVE]);
235
+ }
236
+ else {
237
+ removeClass([e.tbElements[j]], [classes.CLS_ACTIVE]);
238
+ }
234
239
  }
235
240
  }
236
241
  }
@@ -265,11 +270,11 @@ export function getTBarItemsIndex(items, toolbarItems) {
265
270
  continue;
266
271
  }
267
272
  else {
268
- if (items[i] === 'OrderedList' && toolbarItems[j].subCommand === 'OL') {
273
+ if ((items[i] === 'OrderedList' || items[i] === 'NumberFormatList') && toolbarItems[j].subCommand === 'OL') {
269
274
  itemsIndex.push(j);
270
275
  break;
271
276
  }
272
- else if (items[i] === 'UnorderedList' && toolbarItems[j].subCommand === 'UL') {
277
+ else if ((items[i] === 'UnorderedList' || items[i] === 'BulletFormatList') && toolbarItems[j].subCommand === 'UL') {
273
278
  itemsIndex.push(j);
274
279
  break;
275
280
  }
@@ -422,6 +427,15 @@ export function updateTextNode(value, rteObj) {
422
427
  for (var i = 0; i < emptyBlockElem.length; i++) {
423
428
  emptyBlockElem[i].innerHTML = '<br>';
424
429
  }
430
+ // To handle the Empty block node with \n
431
+ var allPNodes = tempNode.querySelectorAll('p');
432
+ for (var i = 0; i < allPNodes.length; i++) {
433
+ if (allPNodes[i].textContent.trim().length === 0 && allPNodes[i].childNodes.length === 1
434
+ && allPNodes[i].childNodes[0].nodeName === '#text' &&
435
+ isNOU(allPNodes[i].childNodes[0].textContent.match(/\u00a0/g))) {
436
+ allPNodes[i].innerHTML = '<br>';
437
+ }
438
+ }
425
439
  var emptyInlineElem = tempNode.querySelectorAll(CONSTANT.inlineEmptyNodes);
426
440
  for (var i = 0; i < emptyInlineElem.length; i++) {
427
441
  emptyInlineElem[i].innerHTML = '&ZeroWidthSpace;';
@@ -456,11 +470,15 @@ export function updateTextNode(value, rteObj) {
456
470
  }
457
471
  var imageElm = resultElm.querySelectorAll('img');
458
472
  for (var i = 0; i < imageElm.length; i++) {
473
+ if (imageElm[i].classList.contains('e-rte-image-unsupported')) {
474
+ continue; // Should not add the class if the image is Broken.
475
+ }
459
476
  if (!imageElm[i].classList.contains(classes.CLS_RTE_IMAGE)) {
460
477
  imageElm[i].classList.add(classes.CLS_RTE_IMAGE);
461
478
  }
462
479
  if (!(imageElm[i].classList.contains(classes.CLS_IMGINLINE) ||
463
- imageElm[i].classList.contains(classes.CLS_IMGBREAK))) {
480
+ imageElm[i].classList.contains(classes.CLS_IMGBREAK)) &&
481
+ !(imageElm[i].classList.contains('e-imgleft') || imageElm[i].classList.contains('e-imgright') || imageElm[i].classList.contains('e-imgcenter'))) {
464
482
  imageElm[i].classList.add(classes.CLS_IMGINLINE);
465
483
  }
466
484
  }
@@ -1,4 +1,4 @@
1
- import { extend, isNullOrUndefined as isNOU, Browser } from '@syncfusion/ej2-base';
1
+ import { extend, isNullOrUndefined as isNOU, Browser, closest } from '@syncfusion/ej2-base';
2
2
  import * as CONSTANT from '../base/constant';
3
3
  import { updateUndoRedoStatus, isIDevice } from '../base/util';
4
4
  import { KEY_DOWN, KEY_UP } from './../../common/constant';
@@ -27,12 +27,21 @@ var Formatter = /** @class */ (function () {
27
27
  var selection = self.contentModule.getDocument().getSelection();
28
28
  var range = (selection.rangeCount > 0) ? selection.getRangeAt(selection.rangeCount - 1) : null;
29
29
  var saveSelection;
30
+ var newRange;
31
+ if (!isNOU(value) && !isNOU(value.selection)) {
32
+ newRange = value.selection.range;
33
+ }
30
34
  var isKeyboardVideoInsert = (!isNOU(value) && !isNOU(value.cssClass) &&
31
35
  value.cssClass !== 'e-video-inline');
32
36
  if (self.editorMode === 'HTML') {
33
37
  if (!isNOU(args) && !isKeyboardVideoInsert) {
34
38
  if (isNOU(args.name) || (!isNOU(args.name) && args.name !== 'showDialog')) {
35
- saveSelection = this.editorManager.nodeSelection.save(range, self.contentModule.getDocument());
39
+ if (newRange) {
40
+ saveSelection = this.editorManager.nodeSelection.save(newRange, self.contentModule.getDocument());
41
+ }
42
+ else {
43
+ saveSelection = this.editorManager.nodeSelection.save(range, self.contentModule.getDocument());
44
+ }
36
45
  }
37
46
  }
38
47
  }
@@ -60,7 +69,7 @@ var Formatter = /** @class */ (function () {
60
69
  if (args.item.command === 'Images' || args.item.command === 'Videos' || args.item.command === 'Table' || args.item.command === 'Files') {
61
70
  currentInsertContentLength = 1;
62
71
  }
63
- var currentLength = self.getText().trim().length;
72
+ var currentLength = self.getText().trim().replace(/(\r\n|\n|\r|\t)/gm, '').replace(/\u200B/g, '').length;
64
73
  var selectionLength = self.getSelection().length;
65
74
  var totalLength = (currentLength - selectionLength) + currentInsertContentLength;
66
75
  if (!(self.maxLength === -1 || totalLength <= self.maxLength)) {
@@ -124,7 +133,10 @@ var Formatter = /** @class */ (function () {
124
133
  _this.saveData();
125
134
  }
126
135
  self.isBlur = false;
127
- self.contentModule.getEditPanel().focus();
136
+ var quickToolbarAction = !isNOU(event) && !isNOU(event.target) && (!isNOU(closest(event.target, ".e-rte-elements.e-dropdown-popup.e-rte-dropdown-popup.e-quick-dropdown.e-popup-open")) || !isNOU(closest(event.target, ".e-rte-elements.e-rte-quick-popup.e-popup-open")));
137
+ if (isNOU(saveSelection) || (!quickToolbarAction && (isNOU(closest(saveSelection.range.startContainer.parentElement, ".e-img-caption")) ? true : !(closest(saveSelection.range.startContainer.parentElement, ".e-img-caption").getAttribute("contenteditable") == "false")))) {
138
+ self.contentModule.getEditPanel().focus();
139
+ }
128
140
  if (self.editorMode === 'HTML' && !isKeyboardVideoInsert) {
129
141
  if (isNOU(args.selectType) || (!isNOU(args.selectType) && args.selectType !== 'showDialog')) {
130
142
  saveSelection.restore();
@@ -48,11 +48,11 @@ export var defaultLocale = {
48
48
  'audioLayoutOption': 'Layout option',
49
49
  'videoLayoutOption': 'Layout option',
50
50
  'align': 'Align',
51
- 'caption': 'Image Caption',
51
+ 'caption': 'Caption',
52
52
  'remove': 'Remove',
53
53
  'insertLink': 'Insert Link',
54
54
  'display': 'Display',
55
- 'altText': 'Alternative Text',
55
+ 'altText': 'Alternative text',
56
56
  'dimension': 'Change Size',
57
57
  'fullscreen': 'Maximize',
58
58
  'maximize': 'Maximize',
@@ -65,12 +65,12 @@ export var defaultLocale = {
65
65
  'preview': 'Preview',
66
66
  'viewside': 'ViewSide',
67
67
  'insertCode': 'Insert Code',
68
- 'linkText': 'Display Text',
68
+ 'linkText': 'Display text',
69
69
  'linkTooltipLabel': 'Title',
70
- 'linkWebUrl': 'Web Address',
70
+ 'linkWebUrl': 'Web address',
71
71
  'linkTitle': 'Enter a title',
72
- 'linkurl': 'http://example.com',
73
- 'linkOpenInNewWindow': 'Open Link in New Window',
72
+ 'linkurl': 'https://example.com',
73
+ 'linkOpenInNewWindow': 'Open link in new window',
74
74
  'linkHeader': 'Insert Link',
75
75
  'dialogInsert': 'Insert',
76
76
  'dialogCancel': 'Cancel',
@@ -92,9 +92,9 @@ export var defaultLocale = {
92
92
  'imageAlternateText': 'Alternate Text',
93
93
  'alternateHeader': 'Alternative Text',
94
94
  'browse': 'Browse',
95
- 'imageUrl': 'http://example.com/image.png',
96
- 'audioUrl': 'http://example.com/audio.mp3',
97
- 'videoUrl': 'http://example.com/video.mp3',
95
+ 'imageUrl': 'https://example.com/image.png',
96
+ 'audioUrl': 'https://example.com/audio.mp3',
97
+ 'videoUrl': 'https://example.com/video.mp4',
98
98
  'webUrl': 'Web URL',
99
99
  'embedUrl': 'Embed Code',
100
100
  'imageCaption': 'Caption',
@@ -104,7 +104,7 @@ export var defaultLocale = {
104
104
  'imageWidth': 'Width',
105
105
  'videoHeight': 'Height',
106
106
  'videoWidth': 'Width',
107
- 'textPlaceholder': 'Enter Text',
107
+ 'textPlaceholder': 'Enter text',
108
108
  'inserttablebtn': 'Insert Table',
109
109
  'tabledialogHeader': 'Insert Table',
110
110
  'tableWidth': 'Width',
@@ -112,14 +112,14 @@ export var defaultLocale = {
112
112
  'cellspacing': 'Cell Spacing',
113
113
  'columns': 'Number of columns',
114
114
  'rows': 'Number of rows',
115
- 'tableRows': 'Table Rows',
116
- 'tableColumns': 'Table Columns',
115
+ 'tableRows': 'Row',
116
+ 'tableColumns': 'Column',
117
117
  'tableCellHorizontalAlign': 'Table Cell Horizontal Align',
118
- 'tableCellVerticalAlign': 'Table Cell Vertical Align',
118
+ 'tableCellVerticalAlign': 'Vertical Align',
119
119
  'createTable': 'Create Table',
120
120
  'removeTable': 'Remove Table',
121
- 'tableHeader': 'Table Header',
122
- 'tableRemove': 'Table Remove',
121
+ 'tableHeader': 'Header Row',
122
+ 'tableRemove': 'Delete Table',
123
123
  'tableCellBackground': 'Table Cell Background',
124
124
  'tableEditProperties': 'Table Edit Properties',
125
125
  'styles': 'Styles',
@@ -181,11 +181,11 @@ export var defaultLocale = {
181
181
  'fontNameTimesNewRoman': 'Times New Roman',
182
182
  'fontNameVerdana': 'Verdana',
183
183
  'numberFormatListNumber': 'Number',
184
- 'numberFormatListLowerAlpha': 'LowerAlpha',
185
- 'numberFormatListUpperAlpha': 'UpperAlpha',
186
- 'numberFormatListLowerRoman': 'LowerRoman',
187
- 'numberFormatListUpperRoman': 'UpperRoman',
188
- 'numberFormatListLowerGreek': 'LowerGreek',
184
+ 'numberFormatListLowerAlpha': 'Lower Alpha',
185
+ 'numberFormatListUpperAlpha': 'Upper Alpha',
186
+ 'numberFormatListLowerRoman': 'Lower Roman',
187
+ 'numberFormatListUpperRoman': 'Upper Roman',
188
+ 'numberFormatListLowerGreek': 'Lower Greek',
189
189
  'bulletFormatListDisc': 'Disc',
190
190
  'bulletFormatListCircle': 'Circle',
191
191
  'bulletFormatListSquare': 'Square',
@@ -193,12 +193,16 @@ export var defaultLocale = {
193
193
  'bulletFormatListNone': 'None',
194
194
  'formatPainter': 'Format Painter',
195
195
  'emojiPicker': 'Emoji Picker',
196
- 'embeddedCode': 'Embedded Code',
197
- 'pasteEmbeddedCodeHere': 'Paste Embedded Code here',
196
+ 'embeddedCode': 'Embedded code',
197
+ 'pasteEmbeddedCodeHere': 'Paste embedded code here',
198
198
  'emojiPickerTypeToFind': 'Type to find',
199
199
  'emojiPickerNoResultFound': 'No results found',
200
200
  'emojiPickerTrySomethingElse': 'Try something else',
201
201
  'linkAriaLabel': 'Open in new window',
202
+ 'unsupportedImage': 'Unsupported file format',
203
+ 'mergecells': 'Merge cells',
204
+ 'verticalsplit': 'Vertical split',
205
+ 'horizontalsplit': 'Horizontal split'
202
206
  };
203
207
  export var toolsLocale = {
204
208
  'alignments': 'alignments',
@@ -227,6 +231,7 @@ export var toolsLocale = {
227
231
  'bulletformatlist': 'bulletFormatList',
228
232
  'undo': 'undo',
229
233
  'redo': 'redo',
234
+ 'filemanager': 'fileManager',
230
235
  'superscript': 'superscript',
231
236
  'subscript': 'subscript',
232
237
  'createlink': 'createLink',
@@ -253,7 +258,7 @@ export var toolsLocale = {
253
258
  'remove': 'remove',
254
259
  'insertlink': 'insertLink',
255
260
  'display': 'display',
256
- 'alttext': 'altText',
261
+ 'alttext': 'alternateHeader',
257
262
  'dimension': 'dimension',
258
263
  'fullscreen': 'fullscreen',
259
264
  'maximize': 'maximize',
@@ -288,11 +293,12 @@ export var toolsLocale = {
288
293
  'deleterow': 'deleteRow',
289
294
  'formatpainter': 'formatPainter',
290
295
  'emojipicker': 'emojiPicker',
291
- 'embeddedCode': 'Embedded Code',
292
- 'pasteEmbeddedCodeHere': 'Paste Embedded Code here',
296
+ 'embeddedCode': 'Embedded code',
297
+ 'pasteEmbeddedCodeHere': 'Paste embedded code here',
293
298
  'emojiPickerTypeToFind': 'Type to find',
294
299
  'emojiPickerNoResultFound': 'No results found',
295
300
  'emojiPickerTrySomethingElse': 'Try something else',
301
+ 'imageLinkAriaLabel': 'Open in new window',
296
302
  };
297
303
  export var fontNameLocale = [
298
304
  { locale: 'fontNameSegoeUI', value: 'Segoe UI' },
@@ -457,14 +457,14 @@ export var tools = {
457
457
  'sourcecode': {
458
458
  'id': 'SourceCode',
459
459
  'icon': 'e-source-code',
460
- 'tooltip': 'Source Code',
460
+ 'tooltip': 'Code View (Ctrl+Shift+H)',
461
461
  'command': 'SourceCode',
462
462
  'subCommand': 'SourceCode'
463
463
  },
464
464
  'preview': {
465
465
  'id': 'Preview',
466
466
  'icon': 'e-preview',
467
- 'tooltip': 'Preview',
467
+ 'tooltip': 'Preview (Ctrl+Shift+H)',
468
468
  'command': 'Preview',
469
469
  'subCommand': 'Preview'
470
470
  },
@@ -780,7 +780,7 @@ export var windowKeys = {
780
780
  'Number Format List': 'Ctrl+Shift+O',
781
781
  'Bullet Format List': 'Ctrl+Alt+O',
782
782
  'Insert Audio': 'Ctrl+Shift+A',
783
- 'Insert Video': 'Ctrl+Shift+V',
783
+ 'Insert Video': 'Ctrl+Alt+V',
784
784
  'Increase Indent': 'Ctrl+]',
785
785
  'Decrease Indent': 'Ctrl+[',
786
786
  'Decrease Fontsize': 'Ctrl+Shift+<',
@@ -827,7 +827,7 @@ export interface PasteCleanupSettingsModel {
827
827
  /**
828
828
  * Specifies the allowed style properties when pasting in RichTextEditor.
829
829
  *
830
- * @default ['background', 'background-color', 'border', 'border-bottom', 'border-left', 'border-radius', 'border-right', 'border-style', 'border-top', 'border-width', 'clear', 'color', 'cursor', 'direction', 'display', 'float', 'font', 'font-family', 'font-size', 'font-weight', 'font-style', 'height', 'left', 'line-height', 'list-style-type', 'margin', 'margin-top', 'margin-left', 'margin-right', 'margin-bottom', 'max-height', 'max-width', 'min-height', 'min-width', 'overflow', 'overflow-x', 'overflow-y', 'padding', 'padding-bottom', 'padding-left', 'padding-right', 'padding-top', 'position', 'right', 'table-layout', 'text-align', 'text-decoration', 'text-indent', 'top', 'vertical-align', 'visibility', 'white-space', 'width']
830
+ * @default ['background', 'background-color', 'border', 'border-bottom', 'border-left', 'border-radius', 'border-right', 'border-style', 'border-top', 'border-width', 'clear', 'color', 'cursor', 'direction', 'display', 'float', 'font', 'font-family', 'font-size', 'font-weight', 'font-style', 'height', 'left', 'line-height', 'list-style-type', 'margin', 'margin-top', 'margin-left', 'margin-right', 'margin-bottom', 'max-height', 'max-width', 'min-height', 'min-width', 'overflow', 'overflow-x', 'overflow-y', 'padding', 'padding-bottom', 'padding-left', 'padding-right', 'padding-top', 'position', 'right', 'table-layout', 'text-align', 'text-decoration', 'text-transform', 'text-indent', 'top', 'vertical-align', 'visibility', 'white-space', 'width']
831
831
  */
832
832
  allowedStyleProps?: string[];
833
833
 
@@ -736,7 +736,7 @@ export declare class PasteCleanupSettings extends ChildProperty<PasteCleanupSett
736
736
  /**
737
737
  * Specifies the allowed style properties when pasting in RichTextEditor.
738
738
  *
739
- * @default ['background', 'background-color', 'border', 'border-bottom', 'border-left', 'border-radius', 'border-right', 'border-style', 'border-top', 'border-width', 'clear', 'color', 'cursor', 'direction', 'display', 'float', 'font', 'font-family', 'font-size', 'font-weight', 'font-style', 'height', 'left', 'line-height', 'list-style-type', 'margin', 'margin-top', 'margin-left', 'margin-right', 'margin-bottom', 'max-height', 'max-width', 'min-height', 'min-width', 'overflow', 'overflow-x', 'overflow-y', 'padding', 'padding-bottom', 'padding-left', 'padding-right', 'padding-top', 'position', 'right', 'table-layout', 'text-align', 'text-decoration', 'text-indent', 'top', 'vertical-align', 'visibility', 'white-space', 'width']
739
+ * @default ['background', 'background-color', 'border', 'border-bottom', 'border-left', 'border-radius', 'border-right', 'border-style', 'border-top', 'border-width', 'clear', 'color', 'cursor', 'direction', 'display', 'float', 'font', 'font-family', 'font-size', 'font-weight', 'font-style', 'height', 'left', 'line-height', 'list-style-type', 'margin', 'margin-top', 'margin-left', 'margin-right', 'margin-bottom', 'max-height', 'max-width', 'min-height', 'min-width', 'overflow', 'overflow-x', 'overflow-y', 'padding', 'padding-bottom', 'padding-left', 'padding-right', 'padding-top', 'position', 'right', 'table-layout', 'text-align', 'text-decoration', 'text-transform', 'text-indent', 'top', 'vertical-align', 'visibility', 'white-space', 'width']
740
740
  */
741
741
  allowedStyleProps: string[];
742
742
  /**
@@ -361,7 +361,7 @@ var PasteCleanupSettings = /** @class */ (function (_super) {
361
361
  Property(null)
362
362
  ], PasteCleanupSettings.prototype, "deniedAttrs", void 0);
363
363
  __decorate([
364
- Property(['background', 'background-color', 'border', 'border-bottom', 'border-left', 'border-radius', 'border-right', 'border-style', 'border-top', 'border-width', 'clear', 'color', 'cursor', 'direction', 'display', 'float', 'font', 'font-family', 'font-size', 'font-weight', 'font-style', 'height', 'left', 'line-height', 'list-style-type', 'margin', 'margin-top', 'margin-left', 'margin-right', 'margin-bottom', 'max-height', 'max-width', 'min-height', 'min-width', 'overflow', 'overflow-x', 'overflow-y', 'padding', 'padding-bottom', 'padding-left', 'padding-right', 'padding-top', 'position', 'right', 'table-layout', 'text-align', 'text-decoration', 'text-indent', 'top', 'vertical-align', 'visibility', 'white-space', 'width'])
364
+ Property(['background', 'background-color', 'border', 'border-bottom', 'border-left', 'border-radius', 'border-right', 'border-style', 'border-top', 'border-width', 'clear', 'color', 'cursor', 'direction', 'display', 'float', 'font', 'font-family', 'font-size', 'font-weight', 'font-style', 'height', 'left', 'line-height', 'list-style-type', 'margin', 'margin-top', 'margin-left', 'margin-right', 'margin-bottom', 'max-height', 'max-width', 'min-height', 'min-width', 'overflow', 'overflow-x', 'overflow-y', 'padding', 'padding-bottom', 'padding-left', 'padding-right', 'padding-top', 'position', 'right', 'table-layout', 'text-align', 'text-decoration', 'text-transform', 'text-indent', 'top', 'vertical-align', 'visibility', 'white-space', 'width'])
365
365
  ], PasteCleanupSettings.prototype, "allowedStyleProps", void 0);
366
366
  __decorate([
367
367
  Property(null)
@@ -34,6 +34,7 @@ export declare class Audio {
34
34
  private onToolbarAction;
35
35
  private onKeyUp;
36
36
  private onKeyDown;
37
+ private handleSelectAll;
37
38
  private openDialog;
38
39
  private showDialog;
39
40
  private closeDialog;
@@ -39,6 +39,7 @@ var Audio = /** @class */ (function () {
39
39
  this.parent.on(events.editAreaClick, this.editAreaClickHandler, this);
40
40
  this.parent.on(events.insertCompleted, this.showAudioQuickToolbar, this);
41
41
  this.parent.on(events.destroy, this.removeEventListener, this);
42
+ this.parent.on(events.iframeMouseDown, this.closeDialog, this);
42
43
  };
43
44
  Audio.prototype.removeEventListener = function () {
44
45
  if (this.parent.isDestroyed) {
@@ -57,6 +58,7 @@ var Audio = /** @class */ (function () {
57
58
  this.parent.off(events.editAreaClick, this.editAreaClickHandler);
58
59
  this.parent.off(events.insertCompleted, this.showAudioQuickToolbar);
59
60
  this.parent.off(events.destroy, this.removeEventListener);
61
+ this.parent.off(events.iframeMouseDown, this.closeDialog);
60
62
  if (!isNullOrUndefined(this.contentModule)) {
61
63
  EventHandler.remove(this.parent.contentModule.getEditPanel(), Browser.touchStartEvent, this.touchStart);
62
64
  EventHandler.remove(this.contentModule.getEditPanel(), Browser.touchEndEvent, this.audioClick);
@@ -239,6 +241,13 @@ var Audio = /** @class */ (function () {
239
241
  originalEvent.preventDefault();
240
242
  break;
241
243
  }
244
+ if (originalEvent.ctrlKey && originalEvent.key === 'a') {
245
+ this.handleSelectAll();
246
+ }
247
+ };
248
+ Audio.prototype.handleSelectAll = function () {
249
+ var audioFocusNodes = this.parent.inputElement.querySelectorAll('.' + classes.CLS_AUD_FOCUS);
250
+ removeClass(audioFocusNodes, classes.CLS_AUD_FOCUS);
242
251
  };
243
252
  Audio.prototype.openDialog = function (isInternal, event, selection, ele, parentEle) {
244
253
  var range;
@@ -298,7 +307,7 @@ var Audio = /** @class */ (function () {
298
307
  this.parent.formatter.saveData();
299
308
  }
300
309
  e.selection.restore();
301
- this.parent.formatter.process(this.parent, e.args, e.args, {
310
+ this.parent.formatter.process(this.parent, e.args, e.args.originalEvent, {
302
311
  selectNode: e.selectNode,
303
312
  subCommand: e.args.item.subCommand
304
313
  });
@@ -379,6 +388,7 @@ var Audio = /** @class */ (function () {
379
388
  if (e.offsetX > e.target.clientWidth || e.offsetY > e.target.clientHeight) {
380
389
  }
381
390
  else {
391
+ this.parent.notify(events.documentClickClosedBy, { closedBy: "outside click" });
382
392
  this.dialogObj.hide({ returnValue: true });
383
393
  this.parent.isBlur = true;
384
394
  dispatchEvent(this.parent.element, 'focusout');
@@ -393,6 +403,9 @@ var Audio = /** @class */ (function () {
393
403
  this.prevSelectedAudEle.style.outline = '';
394
404
  }
395
405
  }
406
+ if (this.parent.inlineMode.enable && target && this.dialogObj && !closest(target, '#' + this.dialogObj.element.id)) {
407
+ this.dialogObj.hide();
408
+ }
396
409
  };
397
410
  Audio.prototype.alignmentSelect = function (e) {
398
411
  var item = e.item;
@@ -425,7 +438,7 @@ var Audio = /** @class */ (function () {
425
438
  }
426
439
  var subCommand = (e.args.item) ?
427
440
  e.args.item.subCommand : 'Break';
428
- this.parent.formatter.process(this.parent, e.args, e.args, { selectNode: e.selectNode, subCommand: subCommand });
441
+ this.parent.formatter.process(this.parent, e.args, e.args.originalEvent, { selectNode: e.selectNode, subCommand: subCommand });
429
442
  };
430
443
  Audio.prototype.inline = function (e) {
431
444
  if (e.selectNode[0].nodeName !== 'AUDIO') {
@@ -433,7 +446,7 @@ var Audio = /** @class */ (function () {
433
446
  }
434
447
  var subCommand = (e.args.item) ?
435
448
  e.args.item.subCommand : 'Inline';
436
- this.parent.formatter.process(this.parent, e.args, e.args, { selectNode: e.selectNode, subCommand: subCommand });
449
+ this.parent.formatter.process(this.parent, e.args, e.args.originalEvent, { selectNode: e.selectNode, subCommand: subCommand });
437
450
  };
438
451
  Audio.prototype.editAreaClickHandler = function (e) {
439
452
  if (this.parent.readonly) {
@@ -573,7 +586,7 @@ var Audio = /** @class */ (function () {
573
586
  _this.uploadObj.removing();
574
587
  }
575
588
  _this.parent.isBlur = false;
576
- if (event && event.event.returnValue) {
589
+ if (event && !isNOU(event.event) && event.event.returnValue) {
577
590
  if (_this.parent.editorMode === 'HTML') {
578
591
  selection.restore();
579
592
  }
@@ -640,6 +653,11 @@ var Audio = /** @class */ (function () {
640
653
  }
641
654
  }
642
655
  });
656
+ if (e.selectNode && this.isAudioElem(e.selectNode[0])) {
657
+ var regex = new RegExp(/([^\S]|^)(((https?\:\/\/)|(www\.))(\S+))/gi);
658
+ var sourceElement = e.selectNode[0].querySelector('source');
659
+ this.inputUrl.value = sourceElement.src.match(regex) ? sourceElement.src : '';
660
+ }
643
661
  audioUrl.appendChild(this.inputUrl);
644
662
  return audioUrl;
645
663
  };
@@ -7,6 +7,7 @@ export declare class DialogRenderer {
7
7
  dialogObj: Dialog;
8
8
  private dialogEle;
9
9
  private parent;
10
+ private outsideClickClosedBy;
10
11
  constructor(parent?: IRichTextEditor);
11
12
  protected addEventListener(): void;
12
13
  protected removeEventListener(): void;
@@ -23,6 +24,7 @@ export declare class DialogRenderer {
23
24
  private handleEnterKeyDown;
24
25
  private beforeOpenCallback;
25
26
  private open;
27
+ private documentClickClosedBy;
26
28
  private beforeClose;
27
29
  private getDialogPosition;
28
30
  /**
@@ -15,6 +15,7 @@ var DialogRenderer = /** @class */ (function () {
15
15
  }
16
16
  this.parent.on(events.moduleDestroy, this.moduleDestroy, this);
17
17
  this.parent.on(events.destroy, this.removeEventListener, this);
18
+ this.parent.on(events.documentClickClosedBy, this.documentClickClosedBy, this);
18
19
  };
19
20
  DialogRenderer.prototype.removeEventListener = function () {
20
21
  if (this.parent.isDestroyed) {
@@ -22,6 +23,7 @@ var DialogRenderer = /** @class */ (function () {
22
23
  }
23
24
  this.parent.off(events.destroy, this.removeEventListener);
24
25
  this.parent.off(events.moduleDestroy, this.moduleDestroy);
26
+ this.parent.off(events.documentClickClosedBy, this.documentClickClosedBy);
25
27
  };
26
28
  /**
27
29
  * dialog render method
@@ -35,7 +37,11 @@ var DialogRenderer = /** @class */ (function () {
35
37
  var dlgObj;
36
38
  e.beforeOpen = this.beforeOpen.bind(this);
37
39
  e.open = this.open.bind(this);
38
- e.position = { X: 'center', Y: this.getDialogPosition() };
40
+ e.position = {
41
+ X: 'center',
42
+ Y: (e.target !== 'string' && e.target.nodeName === 'BODY' &&
43
+ !isNOU(e.position)) ? e.position.Y : this.getDialogPosition()
44
+ };
39
45
  if (isNOU(e.close)) {
40
46
  e.close = this.close.bind(this);
41
47
  }
@@ -68,10 +74,14 @@ var DialogRenderer = /** @class */ (function () {
68
74
  DialogRenderer.prototype.open = function (args) {
69
75
  this.parent.trigger(events.dialogOpen, args);
70
76
  };
77
+ DialogRenderer.prototype.documentClickClosedBy = function (args) {
78
+ this.outsideClickClosedBy = args.closedBy;
79
+ };
71
80
  DialogRenderer.prototype.beforeClose = function (args) {
72
81
  if (this.dialogEle) {
73
82
  this.dialogEle.removeEventListener('keydown', this.handleEnterKeyDown);
74
83
  }
84
+ args.closedBy = this.outsideClickClosedBy === 'outside click' ? this.outsideClickClosedBy : args.closedBy;
75
85
  this.parent.trigger(events.beforeDialogClose, args, function (closeArgs) {
76
86
  if (!closeArgs.cancel) {
77
87
  if (closeArgs.container.classList.contains('e-popup-close')) {
@@ -79,11 +89,21 @@ var DialogRenderer = /** @class */ (function () {
79
89
  }
80
90
  }
81
91
  });
92
+ this.outsideClickClosedBy = "";
82
93
  };
83
94
  DialogRenderer.prototype.getDialogPosition = function () {
84
95
  var distanceFromVisibleTop = this.parent.element.getBoundingClientRect().top;
85
96
  if (distanceFromVisibleTop < 0) {
86
- distanceFromVisibleTop = Math.abs(distanceFromVisibleTop);
97
+ var topHeight = 0;
98
+ var parentElement = this.parent.element;
99
+ while (parentElement.nodeName !== 'BODY') {
100
+ var top_1 = parentElement.getBoundingClientRect().top;
101
+ if (top_1 > 0) {
102
+ topHeight = top_1;
103
+ }
104
+ parentElement = parentElement.parentElement;
105
+ }
106
+ distanceFromVisibleTop = Math.abs(distanceFromVisibleTop) + topHeight;
87
107
  return distanceFromVisibleTop.toString();
88
108
  }
89
109
  else {
@@ -14,7 +14,7 @@ var __extends = (this && this.__extends) || (function () {
14
14
  import { ContentRender } from '../renderer/content-renderer';
15
15
  import { isNullOrUndefined } from '@syncfusion/ej2-base';
16
16
  import { getEditValue } from '../base/util';
17
- var IFRAMEHEADER = "\n<!DOCTYPE html> \n <html>\n <head>\n <meta charset='utf-8' /> \n <style>\n @charset \"UTF-8\";\n body {\n font-family: \"Roboto\", sans-serif;\n font-size: 14px;\n }\n html, body{height: 100%;margin: 0;}\n body.e-cursor{cursor:default}\n span.e-selected-node\t{background-color: #939393;color: white;}\n span.e-selected-node.e-highlight {background-color: #1d9dd8;}\n body{color:#333;word-wrap:break-word;padding: 8px;box-sizing: border-box;}\n .e-rte-image, .e-rte-audio, .e-rte-video {border: 0;cursor: pointer;display:\n block;float: none;height: auto;margin: 5px auto;max-width: 100%;position: relative;}\n .e-rte-image.e-imginline, .e-rte-audio.e-audio-inline, .e-rte-video.e-video-inline {display: inline-block;float: none;max-width: calc(100% - (2 * 5px));padding: 1px;vertical-align: bottom;}\n .e-rte-image.e-imgcenter, .e-rte-video.e-video-center {cursor: pointer;display: block;float: none;margin: 5px auto;max-width: 100%;position: relative;}\n .e-rte-image.e-imgright, .e-rte-video.e-video-right { float: right; margin: 0 auto;margin-left: 5px;text-align: right;}\n .e-rte-image.e-imgleft, .e-rte-video.e-video-left {float: left;margin: 0 auto;margin-right: 5px;text-align: left;}\n .e-img-caption { display: inline-block; float: none; margin: 5px auto; max-width: 100%;position: relative;}\n .e-img-caption.e-caption-inline {display: inline-block;float: none;\n margin: 5px auto;margin-left: 5px;margin-right: 5px;max-width: calc(100% - (2 * 5px));\n position: relativetext-align: center;vertical-align: bottom;}\n .e-img-inner {box-sizing: border-box;display: block;font-size: 16px;font-weight: initial;\n margin: auto;opacity: .9;text-align: center;width: 100%;}\n .e-img-wrap {display: inline-block;margin: auto;padding: 0;text-align: center;width: 100%;}\n .e-imgleft, .e-video-left {float: left;margin: 0 5px 0 0;text-align: left;}\n .e-imgright, .e-video-right {float: right;margin: 0 0 0 5px;text-align: right;}\n .e-imgcenter, .e-video-center {cursor: pointer;display: block;float: none;height: auto;margin: 5px auto;max-width: 100%;position: relative;}\n .e-control img:not(.e-resize) {border: 2px solid transparent; z-index: 1000}\n .e-imginline , .e-audio-inline, .e-video-inline {display: inline-block;float: none;margin-left: 5px;margin-right: 5px;\n max-width: calc(100% - (2 * 5px));vertical-align: bottom;}\n .e-imgbreak, .e-audio-break, .e-video-break {border: 0;cursor: pointer;\n display: block;float: none;height: auto;margin: 5px auto;max-width: 100%;position: relative;}\n .e-rte-image.e-img-focus:not(.e-resize), .e-audio-focus:not(.e-resize), .e-video-focus:not(.e-resize) {border: solid 2px #4a90e2;}\n img.e-img-focus::selection, audio.e-audio-focus::selection, .e-video-focus::selection { background: transparent;color: transparent;}\n span.e-rte-imageboxmark { width: 10px; height: 10px; position: absolute; display: block;\n background: #4a90e2; border: 1px solid #fff; z-index: 1000;}\n .e-mob-rte.e-mob-span span.e-rte-imageboxmark { background: #4a90e2; border: 1px solid #fff; }\n .e-mob-rte span.e-rte-imageboxmark { background: #fff; border: 1px solid #4a90e2;\n border-radius: 15px; height: 20px; width: 20px; }\n .e-mob-rte.e-mob-span span.e-rte-imageboxmark { background: #4a90e2; border: 1px solid #fff; }\n .e-rte-content .e-content img.e-resize, .e-rte-content .e-content video.e-resize { z-index: 1000; }\n .e-img-caption .e-img-inner { outline: 0; }\n .e-img-caption a:focus-visible { outline: none; }\n .e-img-caption .e-rte-image.e-imgright, .e-img-caption .e-rte-image.e-imgleft { float: none; margin: 0;}\n body{box-sizing: border-box;min-height: 100px;outline: 0 solid transparent;\n overflow-x: auto;padding: 16px;position: relative;text-align: inherit;z-index: 2;}\n p{margin: 0 0 10px;margin-bottom: 10px;}\n li{margin-bottom: 10px;}\n h1{font-size: 2.17em;font-weight: 400;line-height: 1;margin: 10px 0;}\n h2{font-size: 1.74em;font-weight: 400;margin: 10px 0;}\n h3{font-size: 1.31em;font-weight: 400;margin: 10px 0;}\n h4{font-size: 16px;font-weight: 400;line-height: 1.5;margin: 0;}\n h5{font-size: 00.8em;font-weight: 400;margin: 0;}\n h6{font-size: 00.65em;font-weight: 400;margin: 0;}\n blockquote{margin: 10px 0;margin-left: 0;padding-left: 5px;border-left: solid 2px #5c5c5c;}\n pre{background-color: inherit;border: 0;border-radius: 0;color: #333;\n font-size: inherit;line-height: inherit;margin: 0 0 10px;overflow: visible;padding: 0;\n white-space: pre-wrap;word-break: inherit;word-wrap: break-word;}\n strong, b{font-weight: 700;}\n a{text-decoration: none;user-select: auto;}\n a:hover{text-decoration: underline;};\n p:last-child, pre:last-child, blockquote:last-child{margin-bottom: 0;}\n h3+h4, h4+h5, h5+h6{margin-top: 00.6em;}\n ul:last-child{margin-bottom: 0;}\n table { border-collapse: collapse; empty-cells: show;}\n table td,table th {border: 1px solid #BDBDBD; height: 20px; padding: 2px 5px; vertical-align: middle;}\n table.e-alternate-border tbody tr:nth-child(2n) {background-color: #F5F5F5;}\n table th {background-color: #E0E0E0;}\n table.e-dashed-border td,table.e-dashed-border th { border: 1px dashed #BDBDBD} \n table .e-cell-select {border: 1px double #4a90e2;}\n span.e-table-box { cursor: nwse-resize; display: block; height: 10px; position: absolute; width: 10px; }\n span.e-table-box.e-rmob {height: 14px;width: 14px;}\n .e-row-resize, .e-column-resize { background-color: transparent; background-repeat: repeat;\n bottom: 0;cursor: col-resize;height: 1px;overflow: visible;position: absolute;width: 1px; }\n .e-row-resize { cursor: row-resize; height: 1px;}\n .e-table-rhelper { cursor: col-resize; opacity: .87;position: absolute;}\n .e-table-rhelper.e-column-helper { width: 1px; }\n .e-table-rhelper.e-row-helper {height: 1px;}\n .e-reicon::before { border-bottom: 6px solid transparent; border-right: 6px solid;\n border-top: 6px solid transparent; content: ''; display: block; height: 0;\n position: absolute; right: 4px; top: 4px; width: 20px; }\n .e-reicon::after { border-bottom: 6px solid transparent; border-left: 6px solid;\n border-top: 6px solid transparent; content: ''; display: block;\n height: 0; left: 4px; position: absolute; top: 4px; width: 20px; z-index: 3; }\n .e-row-helper.e-reicon::after { top: 10px; transform: rotate(90deg); }\n .e-row-helper.e-reicon::before { left: 4px; top: -20px; transform: rotate(90deg); }\n span.e-table-box { background-color: #ffffff; border: 1px solid #BDBDBD; }\n span.e-table-box.e-rbox-select { background-color: #BDBDBD; border: 1px solid #BDBDBD; }\n .e-table-rhelper { background-color: #4a90e2;}\n .e-rtl { direction: rtl; }\n .e-rte-placeholder::before { content: attr(placeholder); opacity: 0.54; overflow: hidden; padding-top: 16px; position: absolute; text-align: start; top: 0; z-index: 1; }\n </style>\n </head>";
17
+ var IFRAMEHEADER = "\n<!DOCTYPE html> \n <html>\n <head>\n <meta charset='utf-8' /> \n <style>\n @charset \"UTF-8\";\n body {\n font-family: \"Roboto\", sans-serif;\n font-size: 14px;\n }\n html, body{height: 100%;margin: 0;}\n body.e-cursor{cursor:default}\n span.e-selected-node\t{background-color: #939393;color: white;}\n span.e-selected-node.e-highlight {background-color: #1d9dd8;}\n body{color:#333;word-wrap:break-word;padding: 8px;box-sizing: border-box;}\n .e-rte-image, .e-rte-video {border: 0;cursor: pointer;display:\n block;float: none;height: auto;margin: 5px auto;max-width: 100%;position: relative;}\n .e-rte-audio {border: 0;cursor: pointer;display:\n block;float: none;margin: 5px auto;max-width: 100%;position: relative;}\n .e-rte-image.e-imginline, .e-rte-audio.e-audio-inline, .e-rte-video.e-video-inline {display: inline-block;float: none;\n margin-left: 5px;margin-right: 5px;max-width: calc(100% - (2 * 5px));padding: 1px;vertical-align: bottom;}\n .e-rte-image.e-imgcenter, .e-rte-video.e-video-center {cursor: pointer;display: block;float: none;margin: 5px auto;max-width: 100%;position: relative;}\n .e-rte-image.e-imgright, .e-rte-video.e-video-right { float: right; margin: 0 auto;margin-left: 5px;text-align: right;}\n .e-rte-image.e-imgleft, .e-rte-video.e-video-left {float: left;margin: 0 auto;margin-right: 5px;text-align: left;}\n .e-img-caption { display: inline-block; float: none; margin: 5px auto; max-width: 100%;position: relative;}\n .e-img-caption.e-caption-inline {display: inline-block;float: none;\n margin: 5px auto;margin-left: 5px;margin-right: 5px;max-width: calc(100% - (2 * 5px));\n position: relativetext-align: center;vertical-align: bottom;}\n .e-rte-img-caption.e-imgcenter {display: contents; margin-left: auto; margin-right: auto;}\n .e-rte-img-caption.e-imgright {display: contents; margin-left: auto; margin-right: 0;}\n .e-rte-img-caption.e-imgleft {display: contents;margin-left: 0;margin-right: auto;}\n .e-img-caption.e-rte-img-caption.e-imgbreak {display: contents;}\n .e-img-inner {box-sizing: border-box;display: block;font-size: 16px;font-weight: initial;\n margin: auto;opacity: .9;text-align: center;width: 100%;}\n .e-img-wrap {display: inline-block;margin: auto;padding: 0;text-align: center;width: 100%;}\n .e-imgleft, .e-video-left {float: left;margin: 0 5px 0 0;text-align: left;}\n .e-imgright, .e-video-right {float: right;margin: 0 0 0 5px;text-align: right;}\n .e-imgcenter, .e-video-center {cursor: pointer;display: block;float: none;height: auto;margin: 5px auto;max-width: 100%;position: relative;}\n .e-control img:not(.e-resize) {border: 2px solid transparent; z-index: 1000}\n .e-imginline , .e-audio-inline, .e-video-inline {display: inline-block;float: none;margin-left: 5px;margin-right: 5px;\n max-width: calc(100% - (2 * 5px));vertical-align: bottom;}\n .e-imgbreak, .e-audio-break, .e-video-break {border: 0;cursor: pointer;\n display: block;float: none;height: auto;margin: 5px auto;max-width: 100%;position: relative;}\n .e-rte-image.e-img-focus:not(.e-resize), .e-audio-focus:not(.e-resize), .e-video-focus:not(.e-resize) {border: solid 2px #4a90e2;}\n img.e-img-focus::selection, audio.e-audio-focus::selection, .e-video-focus::selection { background: transparent;color: transparent;}\n span.e-rte-imageboxmark, span.e-rte-videoboxmark { width: 10px; height: 10px; position: absolute; display: block;\n background: #4a90e2; border: 1px solid #fff; z-index: 1000;}\n .e-mob-rte.e-mob-span span.e-rte-imageboxmark, .e-mob-rte.e-mob-span span.e-rte-videoboxmark { background: #4a90e2; border: 1px solid #fff; }\n .e-mob-rte span.e-rte-imageboxmark, .e-mob-rte span.e-rte-videoboxmark { background: #fff; border: 1px solid #4a90e2;\n border-radius: 15px; height: 20px; width: 20px; }\n .e-mob-rte.e-mob-span span.e-rte-imageboxmark, .e-mob-rte.e-mob-span span.e-rte-videoboxmark { background: #4a90e2; border: 1px solid #fff; }\n .e-rte-content .e-content img.e-resize, .e-rte-content .e-content video.e-resize { z-index: 1000; }\n .e-img-caption .e-img-inner { outline: 0; }\n .e-rte-img-caption.e-imgleft .e-img-inner { float: left; text-align: left; }\n .e-rte-img-caption.e-imgright .e-img-inner { float: right; text-align: right; }\n .e-rte-img-caption.e-imgleft .e-img-wrap, .e-rte-img-caption.e-imgright .e-img-wrap { display: contents; }\n .e-img-caption a:focus-visible { outline: none; }\n .e-rte-img-caption .e-rte-image.e-imgright { margin-left: auto; margin-right: 0; }\n .e-rte-img-caption .e-rte-image.e-imgleft { margin: 0; }\n body{box-sizing: border-box;min-height: 100px;outline: 0 solid transparent;\n overflow-x: auto;padding: 16px;position: relative;text-align: inherit;z-index: 2;}\n p{margin: 0 0 10px;margin-bottom: 10px;}\n li{margin-bottom: 10px;}\n h1{font-size: 2.17em;font-weight: 400;line-height: 1;margin: 10px 0;}\n h2{font-size: 1.74em;font-weight: 400;margin: 10px 0;}\n h3{font-size: 1.31em;font-weight: 400;margin: 10px 0;}\n h4{font-size: 16px;font-weight: 400;line-height: 1.5;margin: 0;}\n h5{font-size: 00.8em;font-weight: 400;margin: 0;}\n h6{font-size: 00.65em;font-weight: 400;margin: 0;}\n blockquote{margin: 10px 0;margin-left: 0;padding-left: 5px;border-left: solid 2px #5c5c5c;}\n pre{background-color: inherit;border: 0;border-radius: 0;color: #333;\n font-size: inherit;line-height: inherit;margin: 0 0 10px;overflow: visible;padding: 0;\n white-space: pre-wrap;word-break: inherit;word-wrap: break-word;}\n strong, b{font-weight: 700;}\n a{text-decoration: none;user-select: auto;}\n a:hover{text-decoration: underline;};\n p:last-child, pre:last-child, blockquote:last-child{margin-bottom: 0;}\n h3+h4, h4+h5, h5+h6{margin-top: 00.6em;}\n ul:last-child{margin-bottom: 0;}\n table { border-collapse: collapse; empty-cells: show;}\n table td,table th {border: 1px solid #BDBDBD; height: 20px; padding: 2px 5px; vertical-align: middle;}\n table.e-alternate-border tbody tr:nth-child(2n) {background-color: #F5F5F5;}\n table th {background-color: #E0E0E0;}\n table.e-dashed-border td,table.e-dashed-border th { border: 1px dashed #BDBDBD} \n table .e-cell-select {border: 1px double #4a90e2;}\n span.e-table-box { cursor: nwse-resize; display: block; height: 10px; position: absolute; width: 10px; }\n span.e-table-box.e-rmob {height: 14px;width: 14px;}\n .e-row-resize, .e-column-resize { background-color: transparent; background-repeat: repeat;\n bottom: 0;cursor: col-resize;height: 1px;overflow: visible;position: absolute;width: 1px; }\n .e-row-resize { cursor: row-resize; height: 1px;}\n .e-table-rhelper { cursor: col-resize; opacity: .87;position: absolute;}\n .e-table-rhelper.e-column-helper { width: 1px; }\n .e-table-rhelper.e-row-helper {height: 1px;}\n .e-reicon::before { border-bottom: 6px solid transparent; border-right: 6px solid;\n border-top: 6px solid transparent; content: ''; display: block; height: 0;\n position: absolute; right: 4px; top: 4px; width: 20px; }\n .e-reicon::after { border-bottom: 6px solid transparent; border-left: 6px solid;\n border-top: 6px solid transparent; content: ''; display: block;\n height: 0; left: 4px; position: absolute; top: 4px; width: 20px; z-index: 3; }\n .e-row-helper.e-reicon::after { top: 10px; transform: rotate(90deg); }\n .e-row-helper.e-reicon::before { left: 4px; top: -20px; transform: rotate(90deg); }\n span.e-table-box { background-color: #ffffff; border: 1px solid #BDBDBD; }\n span.e-table-box.e-rbox-select { background-color: #BDBDBD; border: 1px solid #BDBDBD; }\n .e-table-rhelper { background-color: #4a90e2;}\n .e-rtl { direction: rtl; }\n .e-rte-placeholder::before { content: attr(placeholder); opacity: 0.54; overflow: hidden; padding-top: 16px; position: absolute; text-align: start; top: 0; z-index: 1; }\n li ol, li ul { margin-block-start: 10px;}\n </style>\n </head>";
18
18
  /**
19
19
  * Content module is used to render Rich Text Editor content
20
20
  *
@@ -44,6 +44,7 @@ var IframeContentRender = /** @class */ (function (_super) {
44
44
  styles: 'display:block;',
45
45
  attrs: { 'srcdoc': iFrameContent }
46
46
  });
47
+ iframe.setAttribute("role", "none");
47
48
  this.setPanel(iframe);
48
49
  rteObj.element.appendChild(iframe);
49
50
  iframe.contentDocument.body.id = this.parent.getID() + '_rte-edit-view';
@@ -30,7 +30,6 @@ export declare class Image {
30
30
  private isAllowedTypes;
31
31
  private pageX;
32
32
  private pageY;
33
- private mouseX;
34
33
  private dialogRenderObj;
35
34
  private deletedImg;
36
35
  private changedWidthValue;
@@ -38,6 +37,8 @@ export declare class Image {
38
37
  private inputWidthValue;
39
38
  private inputHeightValue;
40
39
  private removingImgName;
40
+ private currentResizeHandler;
41
+ private aspectRatio;
41
42
  private constructor();
42
43
  protected addEventListener(): void;
43
44
  protected removeEventListener(): void;
@@ -56,9 +57,15 @@ export declare class Image {
56
57
  private imgResizePos;
57
58
  private calcPos;
58
59
  private setAspectRatio;
60
+ private setImageWidth;
61
+ private setImageHeight;
62
+ private removeImageHeight;
63
+ private getImageDimension;
59
64
  private pixToPerc;
60
65
  private imgDupMouseMove;
61
66
  private resizing;
67
+ private getResizeFactor;
68
+ private findAspectRatio;
62
69
  private cancelResizeAction;
63
70
  private resizeImgDupPos;
64
71
  private resizeBtnInit;
@@ -67,6 +74,7 @@ export declare class Image {
67
74
  private editImgLink;
68
75
  private removeImgLink;
69
76
  private onKeyDown;
77
+ private handleSelectAll;
70
78
  private openDialog;
71
79
  private showDialog;
72
80
  private closeDialog;