@syncfusion/ej2-richtexteditor 20.3.61 → 20.4.38

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 (100) hide show
  1. package/.eslintrc.json +16 -1
  2. package/CHANGELOG.md +0 -40
  3. package/README.md +53 -45
  4. package/dist/ej2-richtexteditor.min.js +2 -2
  5. package/dist/ej2-richtexteditor.umd.min.js +2 -2
  6. package/dist/ej2-richtexteditor.umd.min.js.map +1 -1
  7. package/dist/es6/ej2-richtexteditor.es2015.js +312 -181
  8. package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
  9. package/dist/es6/ej2-richtexteditor.es5.js +300 -168
  10. package/dist/es6/ej2-richtexteditor.es5.js.map +1 -1
  11. package/dist/global/ej2-richtexteditor.min.js +2 -2
  12. package/dist/global/ej2-richtexteditor.min.js.map +1 -1
  13. package/dist/global/index.d.ts +1 -1
  14. package/package.json +15 -15
  15. package/src/editor-manager/plugin/clearformat.js +2 -1
  16. package/src/editor-manager/plugin/dom-node.js +1 -1
  17. package/src/editor-manager/plugin/formats.js +1 -0
  18. package/src/editor-manager/plugin/image.js +1 -0
  19. package/src/editor-manager/plugin/link.js +3 -1
  20. package/src/editor-manager/plugin/lists.js +15 -7
  21. package/src/editor-manager/plugin/ms-word-clean-up.js +6 -2
  22. package/src/editor-manager/plugin/selection-commands.js +8 -41
  23. package/src/editor-manager/plugin/table.js +6 -0
  24. package/src/editor-manager/plugin/toolbar-status.js +3 -0
  25. package/src/editor-manager/plugin/video.js +2 -2
  26. package/src/markdown-parser/plugin/clearformat.js +9 -7
  27. package/src/markdown-parser/plugin/formats.js +6 -5
  28. package/src/markdown-parser/plugin/lists.js +5 -0
  29. package/src/markdown-parser/plugin/markdown-selection.js +3 -0
  30. package/src/markdown-parser/plugin/md-selection-formats.js +13 -10
  31. package/src/rich-text-editor/actions/enter-key.js +66 -15
  32. package/src/rich-text-editor/actions/file-manager.js +1 -0
  33. package/src/rich-text-editor/actions/html-attributes.js +8 -8
  34. package/src/rich-text-editor/actions/html-editor.js +2 -0
  35. package/src/rich-text-editor/actions/keyboard.js +4 -4
  36. package/src/rich-text-editor/actions/markdown-toolbar-status.js +2 -1
  37. package/src/rich-text-editor/actions/paste-clean-up.js +2 -1
  38. package/src/rich-text-editor/actions/toolbar.js +2 -0
  39. package/src/rich-text-editor/base/constant.d.ts +8 -8
  40. package/src/rich-text-editor/base/constant.js +8 -8
  41. package/src/rich-text-editor/base/rich-text-editor.d.ts +2 -0
  42. package/src/rich-text-editor/base/rich-text-editor.js +43 -10
  43. package/src/rich-text-editor/base/util.js +9 -9
  44. package/src/rich-text-editor/renderer/audio-module.d.ts +1 -1
  45. package/src/rich-text-editor/renderer/audio-module.js +7 -5
  46. package/src/rich-text-editor/renderer/image-module.js +10 -6
  47. package/src/rich-text-editor/renderer/link-module.js +5 -4
  48. package/src/rich-text-editor/renderer/table-module.js +19 -5
  49. package/src/rich-text-editor/renderer/toolbar-renderer.d.ts +1 -0
  50. package/src/rich-text-editor/renderer/toolbar-renderer.js +1 -0
  51. package/src/rich-text-editor/renderer/video-module.d.ts +1 -1
  52. package/src/rich-text-editor/renderer/video-module.js +13 -4
  53. package/src/rich-text-editor/services/renderer-factory.js +4 -4
  54. package/src/rich-text-editor/services/service-locator.js +4 -4
  55. package/src/selection/selection.js +2 -0
  56. package/styles/bootstrap-dark.css +12 -5
  57. package/styles/bootstrap.css +12 -5
  58. package/styles/bootstrap4.css +12 -5
  59. package/styles/bootstrap5-dark.css +12 -5
  60. package/styles/bootstrap5.css +12 -5
  61. package/styles/fabric-dark.css +12 -5
  62. package/styles/fabric.css +12 -5
  63. package/styles/fluent-dark.css +12 -5
  64. package/styles/fluent.css +12 -5
  65. package/styles/highcontrast-light.css +12 -5
  66. package/styles/highcontrast.css +12 -5
  67. package/styles/material-dark.css +12 -5
  68. package/styles/material.css +12 -5
  69. package/styles/rich-text-editor/_bootstrap-dark-definition.scss +1 -0
  70. package/styles/rich-text-editor/_bootstrap-definition.scss +1 -0
  71. package/styles/rich-text-editor/_bootstrap4-definition.scss +1 -0
  72. package/styles/rich-text-editor/_bootstrap5-definition.scss +1 -0
  73. package/styles/rich-text-editor/_fabric-dark-definition.scss +1 -0
  74. package/styles/rich-text-editor/_fabric-definition.scss +1 -0
  75. package/styles/rich-text-editor/_fluent-definition.scss +1 -0
  76. package/styles/rich-text-editor/_fusionnew-definition.scss +1 -0
  77. package/styles/rich-text-editor/_highcontrast-definition.scss +1 -0
  78. package/styles/rich-text-editor/_highcontrast-light-definition.scss +1 -0
  79. package/styles/rich-text-editor/_material-dark-definition.scss +1 -0
  80. package/styles/rich-text-editor/_material-definition.scss +1 -0
  81. package/styles/rich-text-editor/_material3-definition.scss +1 -0
  82. package/styles/rich-text-editor/_tailwind-definition.scss +1 -0
  83. package/styles/rich-text-editor/_theme.scss +11 -6
  84. package/styles/rich-text-editor/bootstrap-dark.css +12 -5
  85. package/styles/rich-text-editor/bootstrap.css +12 -5
  86. package/styles/rich-text-editor/bootstrap4.css +12 -5
  87. package/styles/rich-text-editor/bootstrap5-dark.css +12 -5
  88. package/styles/rich-text-editor/bootstrap5.css +12 -5
  89. package/styles/rich-text-editor/fabric-dark.css +12 -5
  90. package/styles/rich-text-editor/fabric.css +12 -5
  91. package/styles/rich-text-editor/fluent-dark.css +12 -5
  92. package/styles/rich-text-editor/fluent.css +12 -5
  93. package/styles/rich-text-editor/highcontrast-light.css +12 -5
  94. package/styles/rich-text-editor/highcontrast.css +12 -5
  95. package/styles/rich-text-editor/material-dark.css +12 -5
  96. package/styles/rich-text-editor/material.css +12 -5
  97. package/styles/rich-text-editor/tailwind-dark.css +12 -5
  98. package/styles/rich-text-editor/tailwind.css +12 -5
  99. package/styles/tailwind-dark.css +12 -5
  100. package/styles/tailwind.css +12 -5
@@ -130,7 +130,7 @@ export function pageYOffset(e, parentElement, isIFrame) {
130
130
  */
131
131
  export function getTooltipText(item, serviceLocator) {
132
132
  var i10n = serviceLocator.getService('rteLocale');
133
- var itemLocale = toolsLocale[item];
133
+ var itemLocale = toolsLocale["" + item];
134
134
  var tooltipText = i10n.getConstant(itemLocale);
135
135
  return tooltipText;
136
136
  }
@@ -153,17 +153,17 @@ export function setToolbarStatus(e, isPopToolbar, self) {
153
153
  var itemStr = item && item.toLocaleLowerCase();
154
154
  if (item && (itemStr === key) || (item === 'UL' && key === 'unorderedlist') || (item === 'OL' && key === 'orderedlist') ||
155
155
  (itemStr === 'pre' && key === 'insertcode')) {
156
- if (typeof data[key] === 'boolean') {
157
- if (data[key] === true) {
156
+ if (typeof data["" + key] === 'boolean') {
157
+ if (data["" + key] === true) {
158
158
  addClass([e.tbElements[j]], [classes.CLS_ACTIVE]);
159
159
  }
160
160
  else {
161
161
  removeClass([e.tbElements[j]], [classes.CLS_ACTIVE]);
162
162
  }
163
163
  }
164
- else if ((typeof data[key] === 'string' || data[key] === null) &&
164
+ else if ((typeof data["" + key] === 'string' || data["" + key] === null) &&
165
165
  getIndex(key, e.parent.toolbarSettings.items) > -1) {
166
- var value = ((data[key]) ? data[key] : '');
166
+ var value = ((data["" + key]) ? data["" + key] : '');
167
167
  var result = '';
168
168
  switch (key) {
169
169
  case 'formats': {
@@ -177,7 +177,7 @@ export function setToolbarStatus(e, isPopToolbar, self) {
177
177
  result = getDropDownValue(formatItems, value, 'subCommand', 'text');
178
178
  dropDown.formatDropDown.content = ('<span style="display: inline-flex;' +
179
179
  'width:' + e.parent.format.width + '" >' +
180
- '<span class="e-rte-dropdown-btn-text' + ' ' + e.parent.cssClass + '">'
180
+ '<span class="e-rte-dropdown-btn-text' + (isNOU(e.parent.cssClass) ? '' : ' ' + e.parent.cssClass) + '">'
181
181
  + (isNOU(result) ? formatContent : result) +
182
182
  '</span></span>');
183
183
  dropDown.formatDropDown.dataBind();
@@ -207,7 +207,7 @@ export function setToolbarStatus(e, isPopToolbar, self) {
207
207
  e.tbElements[j].title = name_1;
208
208
  dropDown.fontNameDropDown.content = ('<span style="display: inline-flex;' +
209
209
  'width:' + e.parent.fontFamily.width + '" >' +
210
- '<span class="e-rte-dropdown-btn-text' + ' ' + e.parent.cssClass + '">'
210
+ '<span class="e-rte-dropdown-btn-text' + (isNOU(e.parent.cssClass) ? '' : ' ' + e.parent.cssClass) + '">'
211
211
  + name_1 + '</span></span>');
212
212
  dropDown.fontNameDropDown.dataBind();
213
213
  break;
@@ -223,7 +223,7 @@ export function setToolbarStatus(e, isPopToolbar, self) {
223
223
  result = getDropDownValue(fontSizeItems, (value === '' ? fontSizeContent.replace(/\s/g, '') : value), 'value', 'text');
224
224
  dropDown.fontSizeDropDown.content = ('<span style="display: inline-flex;' +
225
225
  'width:' + e.parent.fontSize.width + '" >' +
226
- '<span class="e-rte-dropdown-btn-text' + ' ' + e.parent.cssClass + '">'
226
+ '<span class="e-rte-dropdown-btn-text' + (isNOU(e.parent.cssClass) ? '' : ' ' + e.parent.cssClass) + '">'
227
227
  + getFormattedFontSize(result) + '</span></span>');
228
228
  dropDown.fontSizeDropDown.dataBind();
229
229
  break;
@@ -305,7 +305,7 @@ export function updateUndoRedoStatus(baseToolbar, undoRedoStatus) {
305
305
  var key = keys_2[_i];
306
306
  var target = tbItems[trgItems[i]];
307
307
  if (target) {
308
- baseToolbar.toolbarObj.enableItems(target, undoRedoStatus[key]);
308
+ baseToolbar.toolbarObj.enableItems(target, undoRedoStatus["" + key]);
309
309
  }
310
310
  i++;
311
311
  }
@@ -48,7 +48,7 @@ export declare class Audio {
48
48
  private editAreaClickHandler;
49
49
  private isAudioElem;
50
50
  private showAudioQuickToolbar;
51
- private hideAudioQuickToolbar;
51
+ hideAudioQuickToolbar(): void;
52
52
  private insertingAudio;
53
53
  insertAudio(e: IImageNotifyArgs): void;
54
54
  private audioUrlPopup;
@@ -98,6 +98,7 @@ var Audio = /** @class */ (function () {
98
98
  }
99
99
  }
100
100
  };
101
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
101
102
  Audio.prototype.touchStart = function (e, ele) {
102
103
  if (this.parent.readonly) {
103
104
  return;
@@ -304,6 +305,7 @@ var Audio = /** @class */ (function () {
304
305
  }
305
306
  };
306
307
  Audio.prototype.audioRemovePost = function (src) {
308
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
307
309
  var proxy = this;
308
310
  var absoluteUrl = '';
309
311
  if (isNOU(this.parent.insertAudioSettings.removeUrl) || this.parent.insertAudioSettings.removeUrl === '') {
@@ -315,8 +317,9 @@ var Audio = /** @class */ (function () {
315
317
  else {
316
318
  absoluteUrl = new URL(src, document.baseURI).href;
317
319
  }
318
- this.removingAudioName = absoluteUrl.replace(/^.*[\\\/]/, '');
320
+ this.removingAudioName = absoluteUrl.replace(/^.*[\\/]/, '');
319
321
  var xhr = new XMLHttpRequest();
322
+ // eslint-disable-next-line @typescript-eslint/tslint/config
320
323
  xhr.addEventListener('readystatechange', function () {
321
324
  if (this.readyState === 4 && this.status === 200) {
322
325
  proxy.triggerPost(this.response);
@@ -350,6 +353,7 @@ var Audio = /** @class */ (function () {
350
353
  }
351
354
  }
352
355
  if (this.isAudioElem(e.target)) {
356
+ this.audEle = e.target.querySelector('audio');
353
357
  e.preventDefault();
354
358
  }
355
359
  };
@@ -489,8 +493,6 @@ var Audio = /** @class */ (function () {
489
493
  addClass([target.querySelector('audio')], [classes.CLS_AUD_FOCUS]);
490
494
  target.querySelector('audio').style.outline = '2px solid #4a90e2';
491
495
  }
492
- var pageY = (this.parent.iframeSettings.enable) ? window.pageYOffset +
493
- this.parent.element.getBoundingClientRect().top + args.clientY : args.pageY;
494
496
  if (this.parent.quickToolbarModule.audioQTBar) {
495
497
  if (e.isNotify) {
496
498
  setTimeout(function () {
@@ -546,7 +548,7 @@ var Audio = /** @class */ (function () {
546
548
  cssClass: classes.CLS_RTE_ELEMENTS,
547
549
  enableRtl: this.parent.enableRtl,
548
550
  locale: this.parent.locale,
549
- showCloseIcon: true, closeOnEscape: true, width: (Browser.isDevice) ? '290px' : '340px', height: 'inherit',
551
+ showCloseIcon: true, closeOnEscape: true, width: (Browser.isDevice) ? '290px' : '340px',
550
552
  position: { X: 'center', Y: (Browser.isDevice) ? 'center' : 'top' },
551
553
  isModal: Browser.isDevice,
552
554
  buttons: [{
@@ -618,7 +620,7 @@ var Audio = /** @class */ (function () {
618
620
  var placeUrl = this.i10n.getConstant('audioUrl');
619
621
  this.inputUrl = this.parent.createElement('input', {
620
622
  className: 'e-input e-audio-url',
621
- attrs: { placeholder: placeUrl, spellcheck: 'false' }
623
+ attrs: { placeholder: placeUrl, spellcheck: 'false', 'aria-label': this.i10n.getConstant('audioLinkHeader') }
622
624
  });
623
625
  this.inputUrl.addEventListener('input', function () {
624
626
  if (!isNOU(_this.inputUrl)) {
@@ -107,6 +107,7 @@ var Image = /** @class */ (function () {
107
107
  }
108
108
  }
109
109
  };
110
+ // eslint-disable-next-line @typescript-eslint/tslint/config
110
111
  Image.prototype.setCssClass = function (e) {
111
112
  if (this.popupObj && e.cssClass) {
112
113
  if (isNullOrUndefined(e.oldCssClass)) {
@@ -300,8 +301,8 @@ var Image = /** @class */ (function () {
300
301
  var pos = this.calcPos(e);
301
302
  var top = pos.top;
302
303
  var left = pos.left;
303
- var imgWid = e.width;
304
- var imgHgt = e.height;
304
+ var imgWid = e.getBoundingClientRect().width;
305
+ var imgHgt = e.getBoundingClientRect().height;
305
306
  var borWid = (Browser.isDevice) ? (4 * parseInt((e.style.outline.slice(-3)), 10)) + 2 :
306
307
  (2 * parseInt((e.style.outline.slice(-3)), 10)) + 2; //span border width + image outline width
307
308
  var devWid = ((Browser.isDevice) ? 0 : 2); // span border width
@@ -328,7 +329,6 @@ var Image = /** @class */ (function () {
328
329
  offsetParent = offsetParent.parentNode;
329
330
  }
330
331
  if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {
331
- // eslint-disable-next-line
332
332
  parentOffset = offsetParent.getBoundingClientRect();
333
333
  }
334
334
  if (elem.offsetParent && (elem.offsetParent.classList.contains('e-img-caption'))) {
@@ -349,6 +349,7 @@ var Image = /** @class */ (function () {
349
349
  if (isNullOrUndefined(img.width)) {
350
350
  return;
351
351
  }
352
+ // eslint-disable-next-line security/detect-unsafe-regex
352
353
  var width = img.style.width !== '' ? img.style.width.match(/^\d+(\.\d*)?%$/g) ? parseFloat(img.style.width) :
353
354
  parseInt(img.style.width, 10) : img.width;
354
355
  var height = img.style.height !== '' ? parseInt(img.style.height, 10) : img.height;
@@ -1149,6 +1150,7 @@ var Image = /** @class */ (function () {
1149
1150
  }
1150
1151
  };
1151
1152
  Image.prototype.imageRemovePost = function (src) {
1153
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
1152
1154
  var proxy = this;
1153
1155
  var absoluteUrl = '';
1154
1156
  if (isNOU(this.parent.insertImageSettings.removeUrl) || this.parent.insertImageSettings.removeUrl === '') {
@@ -1160,8 +1162,9 @@ var Image = /** @class */ (function () {
1160
1162
  else {
1161
1163
  absoluteUrl = new URL(src, document.baseURI).href;
1162
1164
  }
1163
- this.removingImgName = absoluteUrl.replace(/^.*[\\\/]/, '');
1165
+ this.removingImgName = absoluteUrl.replace(/^.*[\\/]/, '');
1164
1166
  var xhr = new XMLHttpRequest();
1167
+ // eslint-disable-next-line @typescript-eslint/tslint/config
1165
1168
  xhr.addEventListener('readystatechange', function () {
1166
1169
  if (this.readyState === 4 && this.status === 200) {
1167
1170
  proxy.triggerPost(this.response);
@@ -1176,6 +1179,7 @@ var Image = /** @class */ (function () {
1176
1179
  if (isNOU(removeUrl) || removeUrl === '') {
1177
1180
  return;
1178
1181
  }
1182
+ // eslint-disable-next-line @typescript-eslint/tslint/config
1179
1183
  var file = new File([response], this.removingImgName);
1180
1184
  var ajax = new Ajax(removeUrl, 'POST', true, null);
1181
1185
  var formData = new FormData();
@@ -1325,7 +1329,7 @@ var Image = /** @class */ (function () {
1325
1329
  cssClass: classes.CLS_RTE_ELEMENTS + ' ' + this.parent.cssClass,
1326
1330
  enableRtl: this.parent.enableRtl,
1327
1331
  locale: this.parent.locale,
1328
- showCloseIcon: true, closeOnEscape: true, width: (Browser.isDevice) ? '290px' : '340px', height: 'inherit',
1332
+ showCloseIcon: true, closeOnEscape: true, width: (Browser.isDevice) ? '290px' : '340px',
1329
1333
  position: { X: 'center', Y: (Browser.isDevice) ? 'center' : 'top' },
1330
1334
  isModal: Browser.isDevice,
1331
1335
  buttons: [{
@@ -1474,7 +1478,7 @@ var Image = /** @class */ (function () {
1474
1478
  var placeUrl = this.i10n.getConstant('imageUrl');
1475
1479
  this.inputUrl = this.parent.createElement('input', {
1476
1480
  className: 'e-input e-img-url' + ' ' + this.parent.cssClass,
1477
- attrs: { placeholder: placeUrl, spellcheck: 'false' }
1481
+ attrs: { placeholder: placeUrl, spellcheck: 'false', 'aria-label': this.i10n.getConstant('imageLinkHeader') }
1478
1482
  });
1479
1483
  this.inputUrl.addEventListener('input', function () {
1480
1484
  if (!isNOU(_this.inputUrl)) {
@@ -88,6 +88,7 @@ var Link = /** @class */ (function () {
88
88
  }
89
89
  }
90
90
  };
91
+ // eslint-disable-next-line @typescript-eslint/tslint/config
91
92
  Link.prototype.setCssClass = function (e) {
92
93
  this.updateCss(this.checkBoxObj, e);
93
94
  this.updateCss(this.dialogObj, e);
@@ -261,13 +262,13 @@ var Link = /** @class */ (function () {
261
262
  });
262
263
  var htmlTextbox = (this.parent.editorMode === 'HTML') ? '<label>' + linkTooltip +
263
264
  '</label></div><div class="e-rte-field' + ' ' + this.parent.cssClass + '">' +
264
- '<input type="text" data-role ="none" spellcheck="false" placeholder = "' + title + '" class="e-input e-rte-linkTitle' + ' ' + this.parent.cssClass + '"></div>' +
265
+ '<input type="text" data-role ="none" spellcheck="false" placeholder = "' + title + '"aria-label="' + this.i10n.getConstant('linkTitle') + '" class="e-input e-rte-linkTitle' + ' ' + this.parent.cssClass + '"></div>' +
265
266
  '<div class="e-rte-label' + ' ' + this.parent.cssClass + '"></div>' + '<div class="e-rte-field' + ' ' + this.parent.cssClass + '">' +
266
267
  '<input type="checkbox" class="e-rte-linkTarget' + ' ' + this.parent.cssClass + '" data-role ="none"></div>' : '';
267
268
  var content = '<div class="e-rte-label' + ' ' + this.parent.cssClass + '"><label>' + linkWebAddress + '</label></div>' + '<div class="e-rte-field' + ' ' + this.parent.cssClass + '">' +
268
- '<input type="text" data-role ="none" spellcheck="false" placeholder="' + urlPlace + '" class="e-input e-rte-linkurl' + ' ' + this.parent.cssClass + '"/></div>' +
269
+ '<input type="text" data-role ="none" spellcheck="false" placeholder="' + urlPlace + '"aria-label="' + this.i10n.getConstant('linkWebUrl') + '" class="e-input e-rte-linkurl' + ' ' + this.parent.cssClass + '"/></div>' +
269
270
  '<div class="e-rte-label' + ' ' + this.parent.cssClass + '">' + '<label>' + linkDisplayText + '</label></div><div class="e-rte-field' + ' ' + this.parent.cssClass + '"> ' +
270
- '<input type="text" data-role ="none" spellcheck="false" class="e-input e-rte-linkText' + ' ' + this.parent.cssClass + '" placeholder="' + textPlace + '">' +
271
+ '<input type="text" data-role ="none" spellcheck="false" class="e-input e-rte-linkText' + ' ' + this.parent.cssClass + '"aria-label="' + this.i10n.getConstant('linkText') + '" placeholder="' + textPlace + '">' +
271
272
  '</div><div class="e-rte-label' + ' ' + this.parent.cssClass + '">' + htmlTextbox;
272
273
  var contentElem = parseHtml(content);
273
274
  linkContent.appendChild(contentElem);
@@ -293,7 +294,7 @@ var Link = /** @class */ (function () {
293
294
  cssClass: CLS_RTE_ELEMENTS + ' ' + this.parent.cssClass,
294
295
  enableRtl: this.parent.enableRtl,
295
296
  locale: this.parent.locale,
296
- showCloseIcon: true, closeOnEscape: true, width: (Browser.isDevice) ? '290px' : '310px', height: 'inherit',
297
+ showCloseIcon: true, closeOnEscape: true, width: (Browser.isDevice) ? '290px' : '310px',
297
298
  isModal: Browser.isDevice,
298
299
  buttons: [{
299
300
  click: this.insertlink.bind(selectObj),
@@ -79,6 +79,7 @@ var Table = /** @class */ (function () {
79
79
  }
80
80
  }
81
81
  };
82
+ // eslint-disable-next-line @typescript-eslint/tslint/config
82
83
  Table.prototype.setCssClass = function (e) {
83
84
  if (this.popupObj && e.cssClass) {
84
85
  if (isNullOrUndefined(e.oldCssClass)) {
@@ -211,18 +212,17 @@ var Table = /** @class */ (function () {
211
212
  }
212
213
  }
213
214
  };
215
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
214
216
  Table.prototype.tableModulekeyUp = function (e) {
215
- var event = e.args;
216
217
  if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection) && this.contentModule) {
217
218
  var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());
218
- var selection = this.parent.formatter.editorManager.nodeSelection.save(range, this.contentModule.getDocument());
219
219
  var ele = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range)[0];
220
220
  ele = (ele && ele.tagName !== 'TD' && ele.tagName !== 'TH') ? ele.parentElement : ele;
221
221
  if (ele && ele.tagName !== 'TD' && ele.tagName !== 'TH') {
222
222
  var closestTd = closest(ele, 'td');
223
223
  ele = !isNullOrUndefined(closestTd) && this.parent.inputElement.contains(closestTd) ? closestTd : ele;
224
224
  }
225
- if (this.previousTableElement != ele && !isNullOrUndefined(this.previousTableElement)) {
225
+ if (this.previousTableElement !== ele && !isNullOrUndefined(this.previousTableElement)) {
226
226
  this.previousTableElement.classList.remove(classes.CLS_TABLE_SEL);
227
227
  }
228
228
  }
@@ -651,7 +651,6 @@ var Table = /** @class */ (function () {
651
651
  top: 0,
652
652
  left: 0
653
653
  };
654
- // eslint-disable-next-line
655
654
  var offset = elem.getBoundingClientRect();
656
655
  var doc = elem.ownerDocument;
657
656
  var offsetParent = elem.offsetParent || doc.documentElement;
@@ -666,7 +665,6 @@ var Table = /** @class */ (function () {
666
665
  isNestedTable = true;
667
666
  }
668
667
  if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {
669
- // eslint-disable-next-line
670
668
  parentOffset = offsetParent.getBoundingClientRect();
671
669
  }
672
670
  if (isNestedTable) {
@@ -835,6 +833,8 @@ var Table = /** @class */ (function () {
835
833
  var mouseY = (this.parent.enableRtl) ? -(pageY - this.pageY) : (pageY - this.pageY);
836
834
  this.pageX = pageX;
837
835
  this.pageY = pageY;
836
+ var maxiumWidth;
837
+ var currentTdElement = this.curTable.closest('td');
838
838
  var args = { event: e, requestType: 'table' };
839
839
  this.parent.trigger(events.onResize, args, function (resizingArgs) {
840
840
  if (resizingArgs.cancel) {
@@ -867,6 +867,10 @@ var Table = /** @class */ (function () {
867
867
  if (_this.currentColumnResize === 'first') {
868
868
  mouseX = mouseX - 0.75; //This was done for to make the gripper and the table first/last column will be close.
869
869
  _this.removeResizeElement();
870
+ if (currentTdElement) {
871
+ maxiumWidth = _this.curTable.getBoundingClientRect().right - _this.calcPos(currentTdElement).left;
872
+ _this.curTable.style.maxWidth = maxiumWidth + 'px';
873
+ }
870
874
  // Below the value '100' is the 100% width of the parent element.
871
875
  if (((mouseX !== 0 && 5 < currentColumnCellWidth) || mouseX < 0) && currentTableWidth <= 100 &&
872
876
  _this.convertPixelToPercentage(tableWidth - mouseX, widthCompare) <= 100) {
@@ -884,6 +888,10 @@ var Table = /** @class */ (function () {
884
888
  else if (_this.currentColumnResize === 'last') {
885
889
  mouseX = mouseX + 0.75; //This was done for to make the gripper and the table first/last column will be close.
886
890
  _this.removeResizeElement();
891
+ if (currentTdElement) {
892
+ maxiumWidth = currentTdElement.getBoundingClientRect().right - _this.curTable.getBoundingClientRect().left;
893
+ _this.curTable.style.maxWidth = maxiumWidth + 'px';
894
+ }
887
895
  // Below the value '100' is the 100% width of the parent element.
888
896
  if (((mouseX !== 0 && 5 < currentColumnCellWidth) || mouseX > 0) &&
889
897
  currentTableWidth <= 100 && _this.convertPixelToPercentage(tableWidth + mouseX, widthCompare) <= 100) {
@@ -934,6 +942,12 @@ var Table = /** @class */ (function () {
934
942
  if (!Browser.isDevice) {
935
943
  EventHandler.remove(_this.contentModule.getEditPanel(), 'mouseover', _this.resizeHelper);
936
944
  }
945
+ if (currentTdElement) {
946
+ // eslint-disable-next-line max-len
947
+ var tableBoxPosition = _this.curTable.getBoundingClientRect().left - currentTdElement.getBoundingClientRect().left;
948
+ maxiumWidth = Math.abs(tableBoxPosition - currentTdElement.getBoundingClientRect().width) - 5;
949
+ _this.curTable.style.maxWidth = maxiumWidth + 'px';
950
+ }
937
951
  var widthType = _this.curTable.style.width.indexOf('%') > -1;
938
952
  _this.curTable.style.width = widthType ? _this.convertPixelToPercentage(tableWidth + mouseX, widthCompare) + '%'
939
953
  : tableWidth + mouseX + 'px';
@@ -72,6 +72,7 @@ export declare class ToolbarRenderer implements IRenderer {
72
72
  * @param {IColorPickerModel} args - specifies the arguments.
73
73
  * @param {string} item - specifies the item.
74
74
  * @param {ColorPicker} colorPicker - specifies the colorpicker.
75
+ * @param {string} defaultColor -specifies the defaultColor.
75
76
  * @returns {void}
76
77
  * @hidden
77
78
 
@@ -286,6 +286,7 @@ var ToolbarRenderer = /** @class */ (function () {
286
286
  * @param {IColorPickerModel} args - specifies the arguments.
287
287
  * @param {string} item - specifies the item.
288
288
  * @param {ColorPicker} colorPicker - specifies the colorpicker.
289
+ * @param {string} defaultColor -specifies the defaultColor.
289
290
  * @returns {void}
290
291
  * @hidden
291
292
 
@@ -76,7 +76,7 @@ export declare class Video {
76
76
  private alignVideo;
77
77
  private editAreaClickHandler;
78
78
  private showVideoQuickToolbar;
79
- private hideVideoQuickToolbar;
79
+ hideVideoQuickToolbar(): void;
80
80
  private isEmbedVidElem;
81
81
  private insertingVideo;
82
82
  insertVideo(e: IImageNotifyArgs): void;
@@ -385,7 +385,6 @@ var Video = /** @class */ (function () {
385
385
  offsetParent = offsetParent.parentNode;
386
386
  }
387
387
  if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {
388
- // eslint-disable-next-line
389
388
  parentOffset = offsetParent.getBoundingClientRect();
390
389
  }
391
390
  if (elem && elem.nodeType === 1 && elem.tagName === 'IFRAME') {
@@ -407,6 +406,7 @@ var Video = /** @class */ (function () {
407
406
  if (isNullOrUndefined(vidEleStyle)) {
408
407
  return;
409
408
  }
409
+ // eslint-disable-next-line
410
410
  var width = vidEleStyle.width !== '' ? vidEleStyle.width.match(/^\d+(\.\d*)?%$/g) ? parseFloat(vidEleStyle.width) :
411
411
  parseInt(vidEleStyle.width, 10) : vid.style.width !== '' ? vid.style.width : vid.width;
412
412
  var height = vidEleStyle.height !== '' ? parseInt(vidEleStyle.height, 10) : vid.style.height !== '' ? vid.style.height : vid.height;
@@ -805,6 +805,7 @@ var Video = /** @class */ (function () {
805
805
  }
806
806
  };
807
807
  Video.prototype.videoRemovePost = function (src) {
808
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
808
809
  var proxy = this;
809
810
  var absoluteUrl = '';
810
811
  if (isNOU(this.parent.insertVideoSettings.removeUrl) || this.parent.insertVideoSettings.removeUrl === '') {
@@ -816,8 +817,10 @@ var Video = /** @class */ (function () {
816
817
  else {
817
818
  absoluteUrl = new URL(src, document.baseURI).href;
818
819
  }
820
+ // eslint-disable-next-line no-useless-escape
819
821
  this.removingVideoName = absoluteUrl.replace(/^.*[\\\/]/, '');
820
822
  var xhr = new XMLHttpRequest();
823
+ // eslint-disable-next-line @typescript-eslint/tslint/config
821
824
  xhr.addEventListener('readystatechange', function () {
822
825
  if (this.readyState === 4 && this.status === 200) {
823
826
  proxy.triggerPost(this.response);
@@ -948,7 +951,7 @@ var Video = /** @class */ (function () {
948
951
  };
949
952
  Video.prototype.showVideoQuickToolbar = function (e) {
950
953
  var _this = this;
951
- if (e.type !== 'Videos' || isNullOrUndefined(this.parent.quickToolbarModule)
954
+ if (e.type !== 'Videos' || e.args.detail === 2 || isNullOrUndefined(this.parent.quickToolbarModule)
952
955
  || isNullOrUndefined(this.parent.quickToolbarModule.videoQTBar) || isNullOrUndefined(e.args)) {
953
956
  return;
954
957
  }
@@ -981,6 +984,12 @@ var Video = /** @class */ (function () {
981
984
  Video.prototype.hideVideoQuickToolbar = function () {
982
985
  if (!isNullOrUndefined(this.contentModule.getEditPanel().querySelector('.' + classes.CLS_VID_FOCUS))) {
983
986
  removeClass([this.contentModule.getEditPanel().querySelector('.' + classes.CLS_VID_FOCUS)], classes.CLS_VID_FOCUS);
987
+ if (!isNOU(this.videoEle)) {
988
+ this.videoEle.style.outline = '';
989
+ }
990
+ if (!isNOU(this.contentModule.getEditPanel().querySelector('.e-vid-resize'))) {
991
+ detach(this.contentModule.getEditPanel().querySelector('.e-vid-resize'));
992
+ }
984
993
  if (this.quickToolObj && this.quickToolObj.videoQTBar && document.body.contains(this.quickToolObj.videoQTBar.element)) {
985
994
  this.quickToolObj.videoQTBar.hidePopup();
986
995
  }
@@ -1026,7 +1035,7 @@ var Video = /** @class */ (function () {
1026
1035
  cssClass: classes.CLS_RTE_ELEMENTS,
1027
1036
  enableRtl: this.parent.enableRtl,
1028
1037
  locale: this.parent.locale,
1029
- showCloseIcon: true, closeOnEscape: true, width: (Browser.isDevice) ? '290px' : '340px', height: 'inherit',
1038
+ showCloseIcon: true, closeOnEscape: true, width: (Browser.isDevice) ? '290px' : '340px',
1030
1039
  position: { X: 'center', Y: (Browser.isDevice) ? 'center' : 'top' },
1031
1040
  isModal: Browser.isDevice,
1032
1041
  buttons: [{
@@ -1109,7 +1118,7 @@ var Video = /** @class */ (function () {
1109
1118
  videoUrl.appendChild(urlContent);
1110
1119
  this.embedInputUrl = this.parent.createElement('textarea', {
1111
1120
  className: 'e-input e-embed-video-url',
1112
- attrs: { placeholder: 'Paste Embed URL here', type: 'text', tabindex: '-1' }
1121
+ attrs: { placeholder: 'Paste Embed URL here', type: 'text', tabindex: '-1', 'aria-label': this.i10n.getConstant('embedVideoLinkHeader') }
1113
1122
  });
1114
1123
  this.embedInputUrl.addEventListener('keyup', function () {
1115
1124
  if (!isNOU(_this.embedInputUrl)) {
@@ -21,8 +21,8 @@ var RendererFactory = /** @class */ (function () {
21
21
  */
22
22
  RendererFactory.prototype.addRenderer = function (name, type) {
23
23
  var rName = getEnumValue(RenderType, name);
24
- if (isNullOrUndefined(this.rendererMap[rName])) {
25
- this.rendererMap[rName] = type;
24
+ if (isNullOrUndefined(this.rendererMap["" + rName])) {
25
+ this.rendererMap["" + rName] = type;
26
26
  }
27
27
  };
28
28
  /**
@@ -35,12 +35,12 @@ var RendererFactory = /** @class */ (function () {
35
35
  */
36
36
  RendererFactory.prototype.getRenderer = function (name) {
37
37
  var rName = getEnumValue(RenderType, name);
38
- if (isNullOrUndefined(this.rendererMap[rName])) {
38
+ if (isNullOrUndefined(this.rendererMap["" + rName])) {
39
39
  // eslint-disable-next-line
40
40
  throw "The renderer " + rName + " is not found";
41
41
  }
42
42
  else {
43
- return this.rendererMap[rName];
43
+ return this.rendererMap["" + rName];
44
44
  }
45
45
  };
46
46
  return RendererFactory;
@@ -21,8 +21,8 @@ var ServiceLocator = /** @class */ (function () {
21
21
  */
22
22
  /* eslint-enable */
23
23
  ServiceLocator.prototype.register = function (name, type) {
24
- if (isNullOrUndefined(this.services[name])) {
25
- this.services[name] = type;
24
+ if (isNullOrUndefined(this.services["" + name])) {
25
+ this.services["" + name] = type;
26
26
  }
27
27
  };
28
28
  /**
@@ -34,11 +34,11 @@ var ServiceLocator = /** @class */ (function () {
34
34
 
35
35
  */
36
36
  ServiceLocator.prototype.getService = function (name) {
37
- if (isNullOrUndefined(this.services[name])) {
37
+ if (isNullOrUndefined(this.services["" + name])) {
38
38
  // eslint-disable-next-line
39
39
  throw "The service " + name + " is not registered";
40
40
  }
41
- return this.services[name];
41
+ return this.services["" + name];
42
42
  };
43
43
  return ServiceLocator;
44
44
  }());
@@ -200,6 +200,7 @@ var NodeSelection = /** @class */ (function () {
200
200
  */
201
201
  NodeSelection.prototype.getSelectionNodes = function (nodeCollection) {
202
202
  nodeCollection = nodeCollection.reverse();
203
+ // eslint-disable-next-line
203
204
  var regEx = new RegExp(String.fromCharCode(8203), 'g');
204
205
  for (var index = 0; index < nodeCollection.length; index++) {
205
206
  if (nodeCollection[index].nodeType !== 3 || (nodeCollection[index].textContent.trim() === '' ||
@@ -220,6 +221,7 @@ var NodeSelection = /** @class */ (function () {
220
221
  */
221
222
  NodeSelection.prototype.getSelectionNodesBr = function (nodeCollection) {
222
223
  nodeCollection = nodeCollection.reverse();
224
+ // eslint-disable-next-line
223
225
  var regEx = new RegExp(String.fromCharCode(8203), 'g');
224
226
  for (var index = 0; index < nodeCollection.length; index++) {
225
227
  if (nodeCollection[index].nodeName !== 'BR' &&
@@ -2618,15 +2618,17 @@
2618
2618
  width: 300px;
2619
2619
  }
2620
2620
 
2621
- .e-dialog .e-vid-uploadwrap .e-droptext {
2622
- height: 108px;
2623
- }
2624
-
2625
- .e-dialog.e-device.e-dlg-modal .e-img-uploadwrap .e-droptext {
2621
+ .e-dialog.e-device.e-dlg-modal .e-img-uploadwrap .e-droptext,
2622
+ .e-dialog.e-device.e-dlg-modal .e-vid-uploadwrap .e-droptext,
2623
+ .e-dialog.e-device.e-dlg-modal .e-aud-uploadwrap .e-droptext {
2626
2624
  margin: 0 auto;
2627
2625
  width: 250px;
2628
2626
  }
2629
2627
 
2628
+ .e-dialog.e-device .e-video-url-wrap .e-radio-wrapper {
2629
+ padding: 8px 4px;
2630
+ }
2631
+
2630
2632
  .e-linkheader {
2631
2633
  color: #fff;
2632
2634
  }
@@ -2705,6 +2707,11 @@ span.e-rte-videoboxmark {
2705
2707
  color: #f0f0f0;
2706
2708
  }
2707
2709
 
2710
+ .e-richtexteditor .e-rte-toolbar .e-hor-nav:hover {
2711
+ border: solid rgba(0, 0, 0, 0.12);
2712
+ border-width: 0 0 0 1px;
2713
+ }
2714
+
2708
2715
  .e-rte-table-popup .e-span-border {
2709
2716
  border: 1px solid #505050;
2710
2717
  display: block;
@@ -2759,15 +2759,17 @@
2759
2759
  width: 300px;
2760
2760
  }
2761
2761
 
2762
- .e-dialog .e-vid-uploadwrap .e-droptext {
2763
- height: 108px;
2764
- }
2765
-
2766
- .e-dialog.e-device.e-dlg-modal .e-img-uploadwrap .e-droptext {
2762
+ .e-dialog.e-device.e-dlg-modal .e-img-uploadwrap .e-droptext,
2763
+ .e-dialog.e-device.e-dlg-modal .e-vid-uploadwrap .e-droptext,
2764
+ .e-dialog.e-device.e-dlg-modal .e-aud-uploadwrap .e-droptext {
2767
2765
  margin: 0 auto;
2768
2766
  width: 250px;
2769
2767
  }
2770
2768
 
2769
+ .e-dialog.e-device .e-video-url-wrap .e-radio-wrapper {
2770
+ padding: 8px 4px;
2771
+ }
2772
+
2771
2773
  .e-linkheader {
2772
2774
  color: #333;
2773
2775
  }
@@ -2846,6 +2848,11 @@ span.e-rte-videoboxmark {
2846
2848
  color: #000;
2847
2849
  }
2848
2850
 
2851
+ .e-richtexteditor .e-rte-toolbar .e-hor-nav:hover {
2852
+ border: solid rgba(0, 0, 0, 0.12);
2853
+ border-width: 0 0 0 1px;
2854
+ }
2855
+
2849
2856
  .e-rte-table-popup .e-span-border {
2850
2857
  border: 1px solid #ddd;
2851
2858
  display: block;
@@ -2846,15 +2846,17 @@
2846
2846
  width: 300px;
2847
2847
  }
2848
2848
 
2849
- .e-dialog .e-vid-uploadwrap .e-droptext {
2850
- height: 108px;
2851
- }
2852
-
2853
- .e-dialog.e-device.e-dlg-modal .e-img-uploadwrap .e-droptext {
2849
+ .e-dialog.e-device.e-dlg-modal .e-img-uploadwrap .e-droptext,
2850
+ .e-dialog.e-device.e-dlg-modal .e-vid-uploadwrap .e-droptext,
2851
+ .e-dialog.e-device.e-dlg-modal .e-aud-uploadwrap .e-droptext {
2854
2852
  margin: 0 auto;
2855
2853
  width: 250px;
2856
2854
  }
2857
2855
 
2856
+ .e-dialog.e-device .e-video-url-wrap .e-radio-wrapper {
2857
+ padding: 8px 4px;
2858
+ }
2859
+
2858
2860
  .e-linkheader {
2859
2861
  color: #212529;
2860
2862
  }
@@ -2933,6 +2935,11 @@ span.e-rte-videoboxmark {
2933
2935
  color: #212529;
2934
2936
  }
2935
2937
 
2938
+ .e-richtexteditor .e-rte-toolbar .e-hor-nav:hover {
2939
+ border: solid rgba(0, 0, 0, 0.12);
2940
+ border-width: 0 0 0 1px;
2941
+ }
2942
+
2936
2943
  .e-rte-table-popup .e-span-border {
2937
2944
  border: 1px solid #dee2e6;
2938
2945
  display: block;