@syncfusion/ej2-richtexteditor 20.1.59 → 20.2.36

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 (55) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/ej2-richtexteditor.umd.min.js +2 -2
  3. package/dist/ej2-richtexteditor.umd.min.js.map +1 -1
  4. package/dist/es6/ej2-richtexteditor.es2015.js +429 -173
  5. package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
  6. package/dist/es6/ej2-richtexteditor.es5.js +417 -164
  7. package/dist/es6/ej2-richtexteditor.es5.js.map +1 -1
  8. package/dist/global/ej2-richtexteditor.min.js +2 -2
  9. package/dist/global/ej2-richtexteditor.min.js.map +1 -1
  10. package/dist/global/index.d.ts +1 -1
  11. package/helpers/e2e/index.js +8 -6
  12. package/helpers/e2e/rte-helper.js +80 -64
  13. package/package.json +12 -12
  14. package/src/common/util.js +7 -8
  15. package/src/editor-manager/plugin/inserthtml.d.ts +1 -0
  16. package/src/editor-manager/plugin/inserthtml.js +25 -3
  17. package/src/editor-manager/plugin/lists.js +12 -4
  18. package/src/editor-manager/plugin/ms-word-clean-up.js +1 -1
  19. package/src/markdown-parser/base/constant.d.ts +6 -0
  20. package/src/markdown-parser/base/constant.js +6 -0
  21. package/src/markdown-parser/base/markdown-parser.d.ts +2 -0
  22. package/src/markdown-parser/base/markdown-parser.js +6 -0
  23. package/src/markdown-parser/base/types.d.ts +1 -1
  24. package/src/markdown-parser/plugin/insert-text.d.ts +22 -0
  25. package/src/markdown-parser/plugin/insert-text.js +51 -0
  26. package/src/rich-text-editor/actions/color-picker.js +20 -4
  27. package/src/rich-text-editor/actions/resize.js +4 -3
  28. package/src/rich-text-editor/actions/toolbar.js +4 -2
  29. package/src/rich-text-editor/base/classes.d.ts +5 -0
  30. package/src/rich-text-editor/base/classes.js +5 -0
  31. package/src/rich-text-editor/base/constant.d.ts +40 -0
  32. package/src/rich-text-editor/base/constant.js +41 -1
  33. package/src/rich-text-editor/base/interface.d.ts +3 -0
  34. package/src/rich-text-editor/base/rich-text-editor.d.ts +6 -0
  35. package/src/rich-text-editor/base/rich-text-editor.js +27 -23
  36. package/src/rich-text-editor/base/util.js +3 -3
  37. package/src/rich-text-editor/formatter/formatter.js +1 -1
  38. package/src/rich-text-editor/renderer/iframe-content-renderer.js +1 -1
  39. package/src/rich-text-editor/renderer/image-module.js +42 -38
  40. package/src/rich-text-editor/renderer/link-module.js +16 -14
  41. package/src/rich-text-editor/renderer/markdown-renderer.js +2 -1
  42. package/src/rich-text-editor/renderer/table-module.d.ts +3 -0
  43. package/src/rich-text-editor/renderer/table-module.js +132 -55
  44. package/src/rich-text-editor/renderer/toolbar-renderer.js +11 -1
  45. package/src/rich-text-editor/renderer/view-source.js +1 -1
  46. package/styles/fluent-dark.css +1 -0
  47. package/styles/fluent.css +1 -0
  48. package/styles/rich-text-editor/_fluent-definition.scss +1 -0
  49. package/styles/rich-text-editor/_fusionnew-definition.scss +189 -0
  50. package/styles/rich-text-editor/_layout.scss +3 -0
  51. package/styles/rich-text-editor/_material3-definition.scss +189 -0
  52. package/styles/rich-text-editor/fluent-dark.css +1 -0
  53. package/styles/rich-text-editor/fluent.css +1 -0
  54. package/styles/rich-text-editor/icons/_fusionnew.scss +303 -0
  55. package/styles/rich-text-editor/icons/_material3.scss +303 -0
@@ -524,11 +524,41 @@ const imageUploadFailed = 'imageUploadFailed';
524
524
  * @deprecated
525
525
  */
526
526
  const imageRemoving = 'imageRemoving';
527
+ /**
528
+ * @hidden
529
+ * @deprecated
530
+ */
531
+ const mediaSelected = 'mediaSelected';
532
+ /**
533
+ * @hidden
534
+ * @deprecated
535
+ */
536
+ const mediaUploading = 'mediaUploading';
537
+ /**
538
+ * @hidden
539
+ * @deprecated
540
+ */
541
+ const mediaUploadSuccess = 'mediaUploadSuccess';
542
+ /**
543
+ * @hidden
544
+ * @deprecated
545
+ */
546
+ const mediaUploadFailed = 'mediaUploadFailed';
547
+ /**
548
+ * @hidden
549
+ * @deprecated
550
+ */
551
+ const mediaRemoving = 'mediaRemoving';
527
552
  /**
528
553
  * @hidden
529
554
  * @deprecated
530
555
  */
531
556
  const afterImageDelete = 'afterImageDelete';
557
+ /**
558
+ * @hidden
559
+ * @deprecated
560
+ */
561
+ const afterMediaDelete = 'afterMediaaDelete';
532
562
  /**
533
563
  * @hidden
534
564
  * @deprecated
@@ -544,6 +574,11 @@ const xhtmlValidation = 'xhtmlValidation';
544
574
  * @deprecated
545
575
  */
546
576
  const beforeImageUpload = 'beforeImageUpload';
577
+ /**
578
+ * @hidden
579
+ * @deprecated
580
+ */
581
+ const beforeMediaUpload = 'beforeMediaUpload';
547
582
  /**
548
583
  * @hidden
549
584
  * @deprecated
@@ -599,6 +634,11 @@ const showImageDialog = 'showImageDialog';
599
634
  * @deprecated
600
635
  */
601
636
  const closeImageDialog = 'closeImageDialog';
637
+ /**
638
+ * @hidden
639
+ * @deprecated
640
+ */
641
+ const closeAudioDialog = 'closeAudioDialog';
602
642
  /**
603
643
  * @hidden
604
644
  * @deprecated
@@ -619,14 +659,14 @@ const bindCssClass = 'closeTableDialog';
619
659
  * @deprecated
620
660
  */
621
661
  const blockInlineEmptyNodes = `address:empty, article:empty, aside:empty, blockquote:empty,
622
- details:empty, dd:empty, div:empty, dl:empty, dt:empty, fieldset:empty, footer:empty,form:empty, h1:empty,
623
- h2:empty, h3:empty, h4:empty, h5:empty, h6:empty, header:empty, hgroup:empty, hr:empty, li:empty, main:empty, nav:empty,
624
- noscript:empty, output:empty, p:empty, pre:empty, section:empty, td:empty, th:empty,
625
- a:empty, abbr:empty, acronym:empty, b:empty, bdi:empty, bdo:empty, big:empty, button:empty,
626
- canvas:empty, cite:empty, code:empty, data:empty, datalist:empty, del:empty, dfn:empty, em:empty, font:empty, i:empty, iframe:empty,
627
- ins:empty, kbd:empty, label:empty, map:empty, mark:empty, meter:empty, noscript:empty, object:empty, output:empty, picture:empty, progress:empty,
628
- q:empty, ruby:empty, s:empty, samp:empty, script:empty, select:empty, slot:empty, small:empty, span:empty, strong:empty, strike:empty, sub:empty, sup:empty, svg:empty,
629
- template:empty, textarea:empty, time:empty, u:empty, tt:empty, var:empty, wbr:empty`;
662
+ details:empty, dd:empty, div:empty, dl:empty, dt:empty, fieldset:empty, footer:empty,form:empty, h1:empty,
663
+ h2:empty, h3:empty, h4:empty, h5:empty, h6:empty, header:empty, hgroup:empty, hr:empty, li:empty, main:empty, nav:empty,
664
+ noscript:empty, output:empty, p:empty, pre:empty, section:empty, td:empty, th:empty,
665
+ a:empty, abbr:empty, acronym:empty, b:empty, bdi:empty, bdo:empty, big:empty, button:empty,
666
+ canvas:empty, cite:empty, code:empty, data:empty, datalist:empty, del:empty, dfn:empty, em:empty, font:empty, i:empty, iframe:empty,
667
+ ins:empty, kbd:empty, label:empty, map:empty, mark:empty, meter:empty, noscript:empty, object:empty, output:empty, picture:empty, progress:empty,
668
+ q:empty, ruby:empty, s:empty, samp:empty, script:empty, select:empty, slot:empty, small:empty, span:empty, strong:empty, strike:empty, sub:empty, sup:empty, svg:empty,
669
+ template:empty, textarea:empty, time:empty, u:empty, tt:empty, var:empty, wbr:empty`;
630
670
 
631
671
  /**
632
672
  * Rich Text Editor classes defined here.
@@ -1171,6 +1211,11 @@ const CLS_RTE_FIXED_TB_EXPAND = 'e-rte-fixed-tb-expand';
1171
1211
  * @deprecated
1172
1212
  */
1173
1213
  const CLS_RTE_TB_ENABLED = 'e-rte-toolbar-enabled';
1214
+ /**
1215
+ * @hidden
1216
+ * @deprecated
1217
+ */
1218
+ const CLS_RTE_RES_WEST = 'e-south-west';
1174
1219
 
1175
1220
  /**
1176
1221
  * Defines types of Render
@@ -2315,7 +2360,7 @@ function setToolbarStatus(e, isPopToolbar, self) {
2315
2360
  result = getDropDownValue(formatItems$$1, value, 'subCommand', 'text');
2316
2361
  dropDown.formatDropDown.content = ('<span style="display: inline-flex;' +
2317
2362
  'width:' + e.parent.format.width + '" >' +
2318
- '<span class="e-rte-dropdown-btn-text">'
2363
+ '<span class="e-rte-dropdown-btn-text' + ' ' + e.parent.cssClass + '">'
2319
2364
  + (isNullOrUndefined(result) ? formatContent : result) +
2320
2365
  '</span></span>');
2321
2366
  dropDown.formatDropDown.dataBind();
@@ -2345,7 +2390,7 @@ function setToolbarStatus(e, isPopToolbar, self) {
2345
2390
  e.tbElements[j].title = name;
2346
2391
  dropDown.fontNameDropDown.content = ('<span style="display: inline-flex;' +
2347
2392
  'width:' + e.parent.fontFamily.width + '" >' +
2348
- '<span class="e-rte-dropdown-btn-text">'
2393
+ '<span class="e-rte-dropdown-btn-text' + ' ' + e.parent.cssClass + '">'
2349
2394
  + name + '</span></span>');
2350
2395
  dropDown.fontNameDropDown.dataBind();
2351
2396
  break;
@@ -2361,7 +2406,7 @@ function setToolbarStatus(e, isPopToolbar, self) {
2361
2406
  result = getDropDownValue(fontSizeItems, (value === '' ? fontSizeContent.replace(/\s/g, '') : value), 'value', 'text');
2362
2407
  dropDown.fontSizeDropDown.content = ('<span style="display: inline-flex;' +
2363
2408
  'width:' + e.parent.fontSize.width + '" >' +
2364
- '<span class="e-rte-dropdown-btn-text">'
2409
+ '<span class="e-rte-dropdown-btn-text' + ' ' + e.parent.cssClass + '">'
2365
2410
  + getFormattedFontSize(result) + '</span></span>');
2366
2411
  dropDown.fontSizeDropDown.dataBind();
2367
2412
  break;
@@ -2998,6 +3043,7 @@ class ToolbarRenderer {
2998
3043
  const proxy = this;
2999
3044
  let css = CLS_RTE_ELEMENTS + ' ' + CLS_TB_BTN + ((this.parent.inlineMode) ? (' ' + CLS_INLINE_DROPDOWN) : '');
3000
3045
  css += (' ' + ((item === 'backgroundcolor') ? CLS_BACKGROUND_COLOR_DROPDOWN : CLS_FONT_COLOR_DROPDOWN));
3046
+ css += ' ' + this.parent.cssClass;
3001
3047
  const content = proxy.parent.createElement('span', { className: CLS_COLOR_CONTENT });
3002
3048
  const inlineEle = proxy.parent.createElement('span', { className: args.cssClass });
3003
3049
  let range;
@@ -3185,6 +3231,14 @@ class ToolbarRenderer {
3185
3231
  beforeTileRender: (args) => {
3186
3232
  args.element.classList.add(CLS_COLOR_PALETTE);
3187
3233
  args.element.classList.add(CLS_CUSTOM_TILE);
3234
+ if (!isNullOrUndefined(this.parent.cssClass)) {
3235
+ const allClassName = this.parent.cssClass.split(' ');
3236
+ for (let i = 0; i < allClassName.length; i++) {
3237
+ if (allClassName[i].trim() !== '') {
3238
+ args.element.classList.add(allClassName[i]);
3239
+ }
3240
+ }
3241
+ }
3188
3242
  if (args.value === '') {
3189
3243
  args.element.classList.add(CLS_NOCOLOR_ITEM);
3190
3244
  }
@@ -3220,7 +3274,7 @@ class ToolbarRenderer {
3220
3274
  colorPicker.columns = (item === 'backgroundcolor') ? this.parent.backgroundColor.columns : this.parent.fontColor.columns;
3221
3275
  colorPicker.presetColors = (item === 'backgroundcolor') ? this.parent.backgroundColor.colorCode :
3222
3276
  this.parent.fontColor.colorCode;
3223
- colorPicker.cssClass = (item === 'backgroundcolor') ? CLS_BACKGROUND_COLOR_PICKER : CLS_FONT_COLOR_PICKER;
3277
+ colorPicker.cssClass = ((item === 'backgroundcolor') ? CLS_BACKGROUND_COLOR_PICKER : CLS_FONT_COLOR_PICKER) + ' ' + args.cssClass;
3224
3278
  colorPicker.createElement = this.parent.createElement;
3225
3279
  colorPicker.appendTo(document.getElementById(args.target));
3226
3280
  return colorPicker;
@@ -4203,7 +4257,8 @@ class Toolbar$2 {
4203
4257
  container: ((this.parent.inlineMode.enable) ? 'quick' : 'toolbar'),
4204
4258
  items: this.parent.toolbarSettings.items,
4205
4259
  mode: tBarMode,
4206
- target: ele
4260
+ target: ele,
4261
+ cssClass: this.parent.cssClass
4207
4262
  });
4208
4263
  if (this.parent.toolbarSettings.type === ToolbarType.Expand) {
4209
4264
  addClass([ele], ['e-rte-tb-mobile']);
@@ -4320,7 +4375,8 @@ class Toolbar$2 {
4320
4375
  container: 'toolbar',
4321
4376
  items: this.parent.toolbarSettings.items,
4322
4377
  mode: this.getToolbarMode(),
4323
- target: this.tbElement
4378
+ target: this.tbElement,
4379
+ cssClass: this.parent.cssClass
4324
4380
  });
4325
4381
  if (!this.parent.inlineMode.enable) {
4326
4382
  if (this.parent.toolbarSettings.enableFloating) {
@@ -5038,10 +5094,18 @@ class ColorPickerInput {
5038
5094
  const fontNode = this.parent.createElement('input');
5039
5095
  fontNode.id = targetID;
5040
5096
  fontNode.classList.add(CLS_FONT_COLOR_TARGET);
5097
+ if (!isNullOrUndefined(this.parent.cssClass)) {
5098
+ const allClassName = this.parent.cssClass.split(' ');
5099
+ for (let i = 0; i < allClassName.length; i++) {
5100
+ if (allClassName[i].trim() !== '') {
5101
+ fontNode.classList.add(allClassName[i]);
5102
+ }
5103
+ }
5104
+ }
5041
5105
  document.body.appendChild(fontNode);
5042
5106
  options = {
5043
5107
  cssClass: this.tools[item.toLocaleLowerCase()].icon
5044
- + ' ' + CLS_RTE_ELEMENTS + ' ' + CLS_ICONS,
5108
+ + ' ' + CLS_RTE_ELEMENTS + ' ' + CLS_ICONS + ' ' + this.parent.cssClass,
5045
5109
  value: this.tools[item.toLocaleLowerCase()].value,
5046
5110
  command: this.tools[item.toLocaleLowerCase()].command,
5047
5111
  subCommand: this.tools[item.toLocaleLowerCase()].subCommand,
@@ -5057,10 +5121,18 @@ class ColorPickerInput {
5057
5121
  const backNode = this.parent.createElement('input');
5058
5122
  backNode.id = targetID;
5059
5123
  backNode.classList.add(CLS_BACKGROUND_COLOR_TARGET);
5124
+ if (!isNullOrUndefined(this.parent.cssClass)) {
5125
+ const allClassName = this.parent.cssClass.split(' ');
5126
+ for (let i = 0; i < allClassName.length; i++) {
5127
+ if (allClassName[i].trim() !== '') {
5128
+ backNode.classList.add(allClassName[i]);
5129
+ }
5130
+ }
5131
+ }
5060
5132
  document.body.appendChild(backNode);
5061
5133
  options = {
5062
5134
  cssClass: this.tools[item.toLocaleLowerCase()].icon
5063
- + ' ' + CLS_RTE_ELEMENTS + ' ' + CLS_ICONS,
5135
+ + ' ' + CLS_RTE_ELEMENTS + ' ' + CLS_ICONS + ' ' + this.parent.cssClass,
5064
5136
  value: this.tools[item.toLocaleLowerCase()].value,
5065
5137
  command: this.tools[item.toLocaleLowerCase()].command,
5066
5138
  subCommand: this.tools[item.toLocaleLowerCase()].subCommand,
@@ -5133,8 +5205,8 @@ class ColorPickerInput {
5133
5205
  dropDownObj.setProperties({ cssClass: (dropDownObj.cssClass + ' ' + e.cssClass).trim() });
5134
5206
  }
5135
5207
  else {
5136
- colorPickerObj.setProperties({ cssClass: (colorPickerObj.cssClass.replace(e.oldCssClass, '').trim() + ' ' + e.cssClass).trim() });
5137
- dropDownObj.setProperties({ cssClass: (dropDownObj.cssClass.replace(e.oldCssClass, '').trim() + ' ' + e.cssClass).trim() });
5208
+ colorPickerObj.setProperties({ cssClass: (colorPickerObj.cssClass.replace(e.oldCssClass, '').replace(' ', ' ').trim() + ' ' + e.cssClass).trim() });
5209
+ dropDownObj.setProperties({ cssClass: (dropDownObj.cssClass.replace(e.oldCssClass, '').replace(' ', ' ').trim() + ' ' + e.cssClass).trim() });
5138
5210
  }
5139
5211
  }
5140
5212
  }
@@ -6586,18 +6658,18 @@ function updateTextNode$1(value) {
6586
6658
  tdElm[j].style.removeProperty('border');
6587
6659
  }
6588
6660
  }
6589
- if (!tableElm[i].classList.contains(CLS_TABLE)) {
6590
- tableElm[i].classList.add(CLS_TABLE);
6661
+ if (!tableElm[i].classList.contains('e-rte-table')) {
6662
+ tableElm[i].classList.add('e-rte-table');
6591
6663
  }
6592
6664
  }
6593
6665
  const imageElm = resultElm.querySelectorAll('img');
6594
6666
  for (let i = 0; i < imageElm.length; i++) {
6595
- if (!imageElm[i].classList.contains(CLS_RTE_IMAGE)) {
6596
- imageElm[i].classList.add(CLS_RTE_IMAGE);
6667
+ if (!imageElm[i].classList.contains('e-rte-image')) {
6668
+ imageElm[i].classList.add('e-rte-image');
6597
6669
  }
6598
- if (!(imageElm[i].classList.contains(CLS_IMGINLINE) ||
6599
- imageElm[i].classList.contains(CLS_IMGBREAK))) {
6600
- imageElm[i].classList.add(CLS_IMGINLINE);
6670
+ if (!(imageElm[i].classList.contains('e-imginline') ||
6671
+ imageElm[i].classList.contains('e-imgbreak'))) {
6672
+ imageElm[i].classList.add('e-imginline');
6601
6673
  }
6602
6674
  }
6603
6675
  }
@@ -7053,7 +7125,7 @@ class Formatter {
7053
7125
  }
7054
7126
  self.trigger(actionComplete, events, (callbackArgs) => {
7055
7127
  self.setPlaceHolder();
7056
- if (callbackArgs.requestType === 'Images' || callbackArgs.requestType === 'Links' && self.editorMode === 'HTML') {
7128
+ if ((callbackArgs.requestType === 'Images' || callbackArgs.requestType === 'Links') && self.editorMode === 'HTML') {
7057
7129
  const args = callbackArgs;
7058
7130
  if (callbackArgs.requestType === 'Links' && callbackArgs.event &&
7059
7131
  callbackArgs.event.type === 'keydown' &&
@@ -7156,6 +7228,12 @@ const CLEAR_COMMAND = 'clear-commands';
7156
7228
  * @hidden
7157
7229
  */
7158
7230
  const MD_TABLE = 'insert-table';
7231
+ /**
7232
+ * insertText plugin events
7233
+ *
7234
+ * @hidden
7235
+ */
7236
+ const INSERT_TEXT_COMMAND = 'insert-text';
7159
7237
 
7160
7238
  /**
7161
7239
  * Lists internal component
@@ -8884,6 +8962,55 @@ class ClearFormat {
8884
8962
  }
8885
8963
  }
8886
8964
 
8965
+ /**
8966
+ * Link internal component
8967
+ *
8968
+ * @hidden
8969
+ * @deprecated
8970
+ */
8971
+ class MDInsertText {
8972
+ /**
8973
+ * Constructor for creating the insert text plugin
8974
+ *
8975
+ * @param {MarkdownParser} parent - specifies the parent element
8976
+ * @hidden
8977
+ * @deprecated
8978
+ */
8979
+ constructor(parent) {
8980
+ this.parent = parent;
8981
+ this.selection = this.parent.markdownSelection;
8982
+ this.addEventListener();
8983
+ }
8984
+ addEventListener() {
8985
+ this.parent.observer.on(INSERT_TEXT_COMMAND, this.InsertTextExec, this);
8986
+ }
8987
+ InsertTextExec(e) {
8988
+ const textArea = this.parent.element;
8989
+ textArea.focus();
8990
+ const start = textArea.selectionStart;
8991
+ const end = textArea.selectionEnd;
8992
+ const text = e.value.text;
8993
+ const startOffset = start + text.length;
8994
+ const endOffset = end + text.length;
8995
+ textArea.value = textArea.value.substr(0, start)
8996
+ + text + textArea.value.substr(end, textArea.value.length);
8997
+ this.parent.markdownSelection.setSelection(textArea, startOffset, endOffset);
8998
+ this.restore(textArea, startOffset, endOffset, e);
8999
+ }
9000
+ restore(textArea, start, end, event) {
9001
+ this.selection.save(start, end);
9002
+ this.selection.restore(textArea);
9003
+ if (event && event.callBack) {
9004
+ event.callBack({
9005
+ requestType: event.subCommand,
9006
+ selectedText: this.selection.getSelectedText(textArea),
9007
+ editorMode: 'Markdown',
9008
+ event: event.event
9009
+ });
9010
+ }
9011
+ }
9012
+ }
9013
+
8887
9014
  /**
8888
9015
  * MarkdownParser internal component
8889
9016
  *
@@ -8910,6 +9037,7 @@ class MarkdownParser {
8910
9037
  this.linkObj = new MDLink(this);
8911
9038
  this.tableObj = new MDTable({ parent: this, syntaxTag: ({ Formats: this.formatTags, List: this.listTags }) });
8912
9039
  this.clearObj = new ClearFormat(this);
9040
+ this.insertTextObj = new MDInsertText(this);
8913
9041
  this.wireEvents();
8914
9042
  }
8915
9043
  initialize() {
@@ -8976,6 +9104,10 @@ class MarkdownParser {
8976
9104
  case 'clear':
8977
9105
  this.observer.notify(CLEAR_COMMAND, { subCommand: value, event: event, callBack: callBack });
8978
9106
  break;
9107
+ case 'inserttext':
9108
+ this.observer.notify(INSERT_TEXT_COMMAND, { subCommand: value, event: event, callBack: callBack,
9109
+ value: { text: exeValue } });
9110
+ break;
8979
9111
  }
8980
9112
  }
8981
9113
  }
@@ -9051,7 +9183,8 @@ class MarkdownRender {
9051
9183
  const div = this.parent.createElement('div', { id: this.parent.getID() + '_view', className: 'e-rte-content' });
9052
9184
  this.editableElement = this.parent.createElement('textarea', {
9053
9185
  className: 'e-content',
9054
- id: this.parent.getID() + '_editable-content'
9186
+ id: this.parent.getID() + '_editable-content',
9187
+ attrs: { 'aria-labelledby': this.parent.getID() + '_view' }
9055
9188
  });
9056
9189
  div.appendChild(this.editableElement);
9057
9190
  this.setPanel(div);
@@ -11137,7 +11270,7 @@ class Lists {
11137
11270
  }
11138
11271
  }
11139
11272
  applyLists(elements, type, selector, item, e) {
11140
- if (this.isRevert(elements, type) && isNullOrUndefined(item)) {
11273
+ if (this.isRevert(elements, type, item) && isNullOrUndefined(item)) {
11141
11274
  this.revertList(elements, e);
11142
11275
  this.removeEmptyListElements();
11143
11276
  }
@@ -11200,13 +11333,14 @@ class Lists {
11200
11333
  }
11201
11334
  }
11202
11335
  }
11203
- isRevert(nodes, tagName) {
11336
+ isRevert(nodes, tagName, item) {
11204
11337
  let isRevert = true;
11205
11338
  for (let i = 0; i < nodes.length; i++) {
11206
11339
  if (nodes[i].tagName !== 'LI') {
11207
11340
  return false;
11208
11341
  }
11209
- if (nodes[i].parentNode.tagName !== tagName) {
11342
+ if (nodes[i].parentNode.tagName !== tagName ||
11343
+ isNullOrUndefined(item) && nodes[i].parentNode.style.listStyleType !== '') {
11210
11344
  isRevert = false;
11211
11345
  }
11212
11346
  }
@@ -11229,6 +11363,12 @@ class Lists {
11229
11363
  (nodes[i].tagName === 'LI' && node.tagName === tagName && nodesTemp.indexOf(node) < 0 && item !== null)) {
11230
11364
  nodesTemp.push(node);
11231
11365
  }
11366
+ if (isNullOrUndefined(item) && (node.tagName === tagName ||
11367
+ ((node.tagName === 'UL' || node.tagName === 'OL') && node.hasAttribute('style')))) {
11368
+ if (node.hasAttribute('style')) {
11369
+ node.removeAttribute('style');
11370
+ }
11371
+ }
11232
11372
  }
11233
11373
  for (let j = nodesTemp.length - 1; j >= 0; j--) {
11234
11374
  const h = nodesTemp[j];
@@ -11330,7 +11470,8 @@ class Lists {
11330
11470
  }
11331
11471
  }
11332
11472
  }
11333
- if (element.parentNode.insertBefore(this.closeTag(parentNode.tagName), element), 'LI' === parentNode.parentNode.tagName) {
11473
+ if (element.parentNode.insertBefore(this.closeTag(parentNode.tagName), element), 'LI' === parentNode.parentNode.tagName || 'OL' === parentNode.parentNode.tagName ||
11474
+ 'UL' === parentNode.parentNode.tagName) {
11334
11475
  element.parentNode.insertBefore(this.closeTag('LI'), element);
11335
11476
  }
11336
11477
  else {
@@ -12288,7 +12429,9 @@ class InsertHtml {
12288
12429
  let isPreviousInlineElem;
12289
12430
  let paraElm;
12290
12431
  let previousParent;
12291
- range.deleteContents();
12432
+ if (!this.contentsDeleted) {
12433
+ range.deleteContents();
12434
+ }
12292
12435
  while (node.firstChild) {
12293
12436
  if (node.firstChild.nodeName === '#text' && node.firstChild.textContent.trim() === '') {
12294
12437
  detach(node.firstChild);
@@ -12416,9 +12559,28 @@ class InsertHtml {
12416
12559
  const nodeSelection = new NodeSelection();
12417
12560
  let currentNode = this.getNodeCollection(range, nodeSelection, node)[this.getNodeCollection(range, nodeSelection, node).length - 1];
12418
12561
  let splitedElm;
12419
- if ((currentNode.nodeName === 'BR' || currentNode.nodeName === 'HR') && !isNullOrUndefined(currentNode.parentElement) &&
12420
- currentNode.parentElement.textContent.trim().length === 0) {
12562
+ if ((currentNode.nodeName === 'BR' || currentNode.nodeName === 'HR' ||
12563
+ (currentNode.nodeName === '#text' && !isNullOrUndefined(currentNode.parentElement) && currentNode.parentElement.nodeName === 'LI')) &&
12564
+ (!isNullOrUndefined(currentNode.parentElement) && currentNode.parentElement.textContent.trim().length === 0)) {
12421
12565
  splitedElm = currentNode;
12566
+ if (currentNode.parentElement.nodeName === 'LI' && !isNullOrUndefined(currentNode.nextSibling) &&
12567
+ currentNode.nextSibling.nodeName === 'BR') {
12568
+ detach(currentNode.nextSibling);
12569
+ }
12570
+ }
12571
+ else if (currentNode.nodeName === '#text' && !isNullOrUndefined(currentNode.parentElement) &&
12572
+ currentNode.parentElement.nodeName === 'LI' && currentNode.parentElement.textContent.trim().length > 0) {
12573
+ splitedElm = currentNode;
12574
+ if (currentNode.parentElement.nodeName === 'LI' && !isNullOrUndefined(currentNode.nextSibling) &&
12575
+ currentNode.nextSibling.nodeName === 'BR') {
12576
+ detach(currentNode.nextSibling);
12577
+ }
12578
+ if (!range.collapsed) {
12579
+ range.deleteContents();
12580
+ }
12581
+ range.insertNode(node);
12582
+ this.contentsDeleted = true;
12583
+ return;
12422
12584
  }
12423
12585
  else {
12424
12586
  splitedElm = nodeCutter.GetSpliceNode(range, blockNode);
@@ -12506,6 +12668,7 @@ InsertHtml.inlineNode = ['a', 'abbr', 'acronym', 'audio', 'b', 'bdi', 'bdo', 'bi
12506
12668
  'ins', 'kbd', 'label', 'map', 'mark', 'meter', 'noscript', 'object', 'output', 'picture', 'progress',
12507
12669
  'q', 'ruby', 's', 'samp', 'script', 'select', 'slot', 'small', 'span', 'strong', 'sub', 'sup', 'svg',
12508
12670
  'template', 'textarea', 'time', 'u', 'tt', 'var', 'video', 'wbr'];
12671
+ InsertHtml.contentsDeleted = false;
12509
12672
 
12510
12673
  /**
12511
12674
  * Link internal component
@@ -15745,7 +15908,7 @@ class MsWordPaste {
15745
15908
  this.checkVShape(elm);
15746
15909
  let imgElem = elm.querySelectorAll('img');
15747
15910
  for (let i = 0; i < imgElem.length; i++) {
15748
- if (!isNullOrUndefined(imgElem[i].getAttribute('v:shapes')) && imgElem[i].getAttribute('v:shapes').indexOf('Picture') < 0) {
15911
+ if (!isNullOrUndefined(imgElem[i].getAttribute('v:shapes')) && imgElem[i].getAttribute('v:shapes').indexOf('Picture') < 0 && imgElem[i].getAttribute('v:shapes').indexOf('Image') < 0) {
15749
15912
  detach(imgElem[i]);
15750
15913
  }
15751
15914
  }
@@ -17066,6 +17229,10 @@ const IFRAMEHEADER = `
17066
17229
  body{color:#333;word-wrap:break-word;padding: 8px;box-sizing: border-box;}
17067
17230
  .e-rte-image {border: 0;cursor: pointer;display:
17068
17231
  block;float: none;height: auto;margin: 5px auto;max-width: 100%;position: relative;}
17232
+ .e-rte-image.e-imginline {display: inline-block;float: none;max-width: calc(100% - (2 * 5px));padding: 1px;vertical-align: bottom;}
17233
+ .e-rte-image.e-imgcenter {cursor: pointer;display: block;float: none;margin: 5px auto;max-width: 100%;position: relative;}
17234
+ .e-rte-image.e-imgright { float: right; margin: 0 auto;margin-left: 5px;text-align: right;}
17235
+ .e-rte-image.e-imgleft {float: left;margin: 0 auto;margin-right: 5px;text-align: left;}
17069
17236
  .e-img-caption { display: inline-block; float: none; margin: 5px auto; max-width: 100%;position: relative;}
17070
17237
  .e-img-caption.e-caption-inline {display: inline-block;float: none;
17071
17238
  margin: 5px auto;margin-left: 5px;margin-right: 5px;max-width: calc(100% - (2 * 5px));
@@ -17114,7 +17281,7 @@ const IFRAMEHEADER = `
17114
17281
  h3+h4, h4+h5, h5+h6{margin-top: 00.6em;}
17115
17282
  ul:last-child{margin-bottom: 0;}
17116
17283
  table { border-collapse: collapse; empty-cells: show;}
17117
- table td,table th {border: 1px solid #BDBDBD; height: 20px; vertical-align: middle;}
17284
+ table td,table th {border: 1px solid #BDBDBD; height: 20px; padding: 2px 5px; vertical-align: middle;}
17118
17285
  table.e-alternate-border tbody tr:nth-child(2n) {background-color: #F5F5F5;}
17119
17286
  table th {background-color: #E0E0E0;}
17120
17287
  table.e-dashed-border td,table.e-dashed-border th { border: 1px dashed #BDBDBD}
@@ -19030,9 +19197,10 @@ class Resize {
19030
19197
  this.parent.on(destroy, this.destroy, this);
19031
19198
  }
19032
19199
  renderResizable() {
19200
+ let enableRtlClass = (this.parent.enableRtl) ? CLS_RTE_RES_WEST : CLS_RTE_RES_EAST;
19033
19201
  this.resizer = this.parent.createElement('div', {
19034
19202
  id: this.parent.getID() + '-resizable', className: 'e-icons'
19035
- + ' ' + CLS_RTE_RES_HANDLE + ' ' + CLS_RTE_RES_EAST
19203
+ + ' ' + CLS_RTE_RES_HANDLE + ' ' + enableRtlClass
19036
19204
  });
19037
19205
  this.parent.element.classList.add(CLS_RTE_RES_CNT);
19038
19206
  this.parent.element.appendChild(this.resizer);
@@ -19063,12 +19231,12 @@ class Resize {
19063
19231
  const boundRect = this.parent.element.getBoundingClientRect();
19064
19232
  if (this.isMouseEvent(e)) {
19065
19233
  this.parent.element.style.height = e.clientY - boundRect.top + 'px';
19066
- this.parent.element.style.width = e.clientX - boundRect.left + 'px';
19234
+ this.parent.element.style.width = (!this.parent.enableRtl) ? e.clientX - boundRect.left + 'px' : boundRect.right - e.clientX + 'px';
19067
19235
  }
19068
19236
  else {
19069
19237
  const eventType = Browser.info.name !== 'msie' ? e.touches[0] : e;
19070
19238
  this.parent.element.style.height = eventType.clientY - boundRect.top + 'px';
19071
- this.parent.element.style.width = eventType.clientX - boundRect.left + 'px';
19239
+ this.parent.element.style.width = (!this.parent.enableRtl) ? e.clientX - boundRect.left + 'px' : boundRect.right - e.clientX + 'px';
19072
19240
  }
19073
19241
  if (!this.parent.toolbarSettings.enable) {
19074
19242
  this.parent.setContentHeight('', false);
@@ -19934,22 +20102,22 @@ class Link {
19934
20102
  const textPlace = this.i10n.getConstant('textPlaceholder');
19935
20103
  const title = this.i10n.getConstant('linkTitle');
19936
20104
  const linkDialogEle = this.parent.createElement('div', {
19937
- className: 'e-rte-link-dialog', id: this.rteID + '_rtelink'
20105
+ className: 'e-rte-link-dialog' + ' ' + this.parent.cssClass, id: this.rteID + '_rtelink'
19938
20106
  });
19939
20107
  this.parent.element.appendChild(linkDialogEle);
19940
20108
  const linkContent = this.parent.createElement('div', {
19941
- className: 'e-rte-linkcontent', id: this.rteID + '_linkContent'
20109
+ className: 'e-rte-linkcontent' + ' ' + this.parent.cssClass, id: this.rteID + '_linkContent'
19942
20110
  });
19943
20111
  const htmlTextbox = (this.parent.editorMode === 'HTML') ? '<label>' + linkTooltip +
19944
- '</label></div><div class="e-rte-field">' +
19945
- '<input type="text" data-role ="none" spellcheck="false" placeholder = "' + title + '" class="e-input e-rte-linkTitle"></div>' +
19946
- '<div class="e-rte-label"></div>' + '<div class="e-rte-field">' +
19947
- '<input type="checkbox" class="e-rte-linkTarget" data-role ="none"></div>' : '';
19948
- const content = '<div class="e-rte-label"><label>' + linkWebAddress + '</label></div>' + '<div class="e-rte-field">' +
19949
- '<input type="text" data-role ="none" spellcheck="false" placeholder="' + urlPlace + '" class="e-input e-rte-linkurl"/></div>' +
19950
- '<div class="e-rte-label">' + '<label>' + linkDisplayText + '</label></div><div class="e-rte-field"> ' +
19951
- '<input type="text" data-role ="none" spellcheck="false" class="e-input e-rte-linkText" placeholder="' + textPlace + '">' +
19952
- '</div><div class="e-rte-label">' + htmlTextbox;
20112
+ '</label></div><div class="e-rte-field' + ' ' + this.parent.cssClass + '">' +
20113
+ '<input type="text" data-role ="none" spellcheck="false" placeholder = "' + title + '" class="e-input e-rte-linkTitle' + ' ' + this.parent.cssClass + '"></div>' +
20114
+ '<div class="e-rte-label' + ' ' + this.parent.cssClass + '"></div>' + '<div class="e-rte-field' + ' ' + this.parent.cssClass + '">' +
20115
+ '<input type="checkbox" class="e-rte-linkTarget' + ' ' + this.parent.cssClass + '" data-role ="none"></div>' : '';
20116
+ const content = '<div class="e-rte-label' + ' ' + this.parent.cssClass + '"><label>' + linkWebAddress + '</label></div>' + '<div class="e-rte-field' + ' ' + this.parent.cssClass + '">' +
20117
+ '<input type="text" data-role ="none" spellcheck="false" placeholder="' + urlPlace + '" class="e-input e-rte-linkurl' + ' ' + this.parent.cssClass + '"/></div>' +
20118
+ '<div class="e-rte-label' + ' ' + this.parent.cssClass + '">' + '<label>' + linkDisplayText + '</label></div><div class="e-rte-field' + ' ' + this.parent.cssClass + '"> ' +
20119
+ '<input type="text" data-role ="none" spellcheck="false" class="e-input e-rte-linkText' + ' ' + this.parent.cssClass + '" placeholder="' + textPlace + '">' +
20120
+ '</div><div class="e-rte-label' + ' ' + this.parent.cssClass + '">' + htmlTextbox;
19953
20121
  const contentElem = parseHtml(content);
19954
20122
  linkContent.appendChild(contentElem);
19955
20123
  const linkTarget = linkContent.querySelector('.e-rte-linkTarget');
@@ -19977,9 +20145,9 @@ class Link {
19977
20145
  isModal: Browser.isDevice,
19978
20146
  buttons: [{
19979
20147
  click: this.insertlink.bind(selectObj),
19980
- buttonModel: { content: linkInsert, cssClass: 'e-flat e-insertLink', isPrimary: true }
20148
+ buttonModel: { content: linkInsert, cssClass: 'e-flat e-insertLink' + ' ' + this.parent.cssClass, isPrimary: true }
19981
20149
  },
19982
- { click: this.cancelDialog.bind(selectObj), buttonModel: { cssClass: 'e-flat', content: linkCancel } }],
20150
+ { click: this.cancelDialog.bind(selectObj), buttonModel: { cssClass: 'e-flat' + ' ' + this.parent.cssClass, content: linkCancel } }],
19983
20151
  target: (Browser.isDevice) ? document.body : this.parent.element,
19984
20152
  animationSettings: { effect: 'None' },
19985
20153
  close: (event) => {
@@ -20123,8 +20291,10 @@ class Link {
20123
20291
  if (this.parent.formatter.getUndoRedoStack().length === 0) {
20124
20292
  this.parent.formatter.saveData();
20125
20293
  }
20294
+ const selectParentEle = this.getAnchorNode(e.selectParent[0]);
20126
20295
  this.parent.formatter.process(this.parent, e.args, e.args, {
20127
20296
  selectNode: e.selectNode, selectParent: e.selectParent, selection: e.selection,
20297
+ text: selectParentEle.innerText,
20128
20298
  subCommand: e.args.item.subCommand
20129
20299
  });
20130
20300
  if (isIDevice$1() && this.parent.iframeSettings.enable) {
@@ -20139,7 +20309,7 @@ class Link {
20139
20309
  const selectParentEle = this.getAnchorNode(e.selectParent[0]);
20140
20310
  if (selectParentEle.classList.contains('e-rte-anchor') || selectParentEle.tagName === 'A') {
20141
20311
  this.parent.formatter.process(this.parent, e.args, e.args, {
20142
- url: selectParentEle.href,
20312
+ url: selectParentEle.href, text: selectParentEle.innerText,
20143
20313
  target: selectParentEle.target === '' ? '_self' : '_blank', selectNode: e.selectNode,
20144
20314
  subCommand: e.args.item.subCommand
20145
20315
  });
@@ -20457,18 +20627,18 @@ class Image {
20457
20627
  this.resizeBtnInit();
20458
20628
  this.imgEle = e;
20459
20629
  addClass([this.imgEle], 'e-resize');
20460
- this.imgResizeDiv = this.parent.createElement('span', { className: 'e-img-resize', id: this.rteID + '_imgResize' });
20630
+ this.imgResizeDiv = this.parent.createElement('span', { className: 'e-img-resize' + ' ' + this.parent.cssClass, id: this.rteID + '_imgResize' });
20461
20631
  this.imgResizeDiv.appendChild(this.parent.createElement('span', {
20462
- className: 'e-rte-imageboxmark e-rte-topLeft', styles: 'cursor: nwse-resize'
20632
+ className: 'e-rte-imageboxmark e-rte-topLeft' + ' ' + this.parent.cssClass, styles: 'cursor: nwse-resize'
20463
20633
  }));
20464
20634
  this.imgResizeDiv.appendChild(this.parent.createElement('span', {
20465
- className: 'e-rte-imageboxmark e-rte-topRight', styles: 'cursor: nesw-resize'
20635
+ className: 'e-rte-imageboxmark e-rte-topRight' + ' ' + this.parent.cssClass, styles: 'cursor: nesw-resize'
20466
20636
  }));
20467
20637
  this.imgResizeDiv.appendChild(this.parent.createElement('span', {
20468
- className: 'e-rte-imageboxmark e-rte-botLeft', styles: 'cursor: nesw-resize'
20638
+ className: 'e-rte-imageboxmark e-rte-botLeft' + ' ' + this.parent.cssClass, styles: 'cursor: nesw-resize'
20469
20639
  }));
20470
20640
  this.imgResizeDiv.appendChild(this.parent.createElement('span', {
20471
- className: 'e-rte-imageboxmark e-rte-botRight', styles: 'cursor: nwse-resize'
20641
+ className: 'e-rte-imageboxmark e-rte-botRight' + ' ' + this.parent.cssClass, styles: 'cursor: nwse-resize'
20472
20642
  }));
20473
20643
  if (Browser.isDevice) {
20474
20644
  addClass([this.imgResizeDiv], 'e-mob-rte');
@@ -21130,12 +21300,12 @@ class Image {
21130
21300
  }
21131
21301
  this.imagDialog(e);
21132
21302
  if (!isNullOrUndefined(this.dialogObj)) {
21133
- const linkWrap = this.parent.createElement('div', { className: 'e-img-linkwrap' });
21303
+ const linkWrap = this.parent.createElement('div', { className: 'e-img-linkwrap' + ' ' + this.parent.cssClass });
21134
21304
  const linkUrl = this.i10n.getConstant('linkurl');
21135
- const content = '<div class="e-rte-field">' +
21136
- '<input type="text" data-role ="none" class="e-input e-img-link" spellcheck="false" placeholder="' + linkUrl + '"/></div>' +
21305
+ const content = '<div class="e-rte-field' + ' ' + this.parent.cssClass + '">' +
21306
+ '<input type="text" data-role ="none" class="e-input e-img-link' + ' ' + this.parent.cssClass + '" spellcheck="false" placeholder="' + linkUrl + '"/></div>' +
21137
21307
  '<div class="e-rte-label"></div>' + '<div class="e-rte-field">' +
21138
- '<input type="checkbox" class="e-rte-linkTarget" data-role ="none"></div>';
21308
+ '<input type="checkbox" class="e-rte-linkTarget' + ' ' + this.parent.cssClass + '" data-role ="none"></div>';
21139
21309
  const contentElem = parseHtml(content);
21140
21310
  linkWrap.appendChild(contentElem);
21141
21311
  const linkTarget = linkWrap.querySelector('.e-rte-linkTarget');
@@ -21174,7 +21344,7 @@ class Image {
21174
21344
  this.insertlink(linkargs);
21175
21345
  },
21176
21346
  buttonModel: {
21177
- content: linkUpdate, cssClass: 'e-flat e-update-link', isPrimary: true
21347
+ content: linkUpdate, cssClass: 'e-flat e-update-link' + ' ' + this.parent.cssClass, isPrimary: true
21178
21348
  }
21179
21349
  }]
21180
21350
  });
@@ -21198,13 +21368,13 @@ class Image {
21198
21368
  this.imagDialog(e);
21199
21369
  const altText = this.i10n.getConstant('altText');
21200
21370
  if (!isNullOrUndefined(this.dialogObj)) {
21201
- const altWrap = this.parent.createElement('div', { className: 'e-img-altwrap' });
21371
+ const altWrap = this.parent.createElement('div', { className: 'e-img-altwrap' + ' ' + this.parent.cssClass });
21202
21372
  const altHeader = this.i10n.getConstant('alternateHeader');
21203
21373
  const linkUpdate = this.i10n.getConstant('dialogUpdate');
21204
21374
  const getAlt = (e.selectNode[0].getAttribute('alt') === null) ? '' :
21205
21375
  e.selectNode[0].getAttribute('alt');
21206
- const content = '<div class="e-rte-field">' +
21207
- '<input type="text" spellcheck="false" value="' + getAlt + '" class="e-input e-img-alt" placeholder="' + altText + '"/>' +
21376
+ const content = '<div class="e-rte-field' + ' ' + this.parent.cssClass + '">' +
21377
+ '<input type="text" spellcheck="false" value="' + getAlt + '" class="e-input e-img-alt' + ' ' + this.parent.cssClass + '" placeholder="' + altText + '"/>' +
21208
21378
  '</div>';
21209
21379
  const contentElem = parseHtml(content);
21210
21380
  altWrap.appendChild(contentElem);
@@ -21221,7 +21391,7 @@ class Image {
21221
21391
  this.insertAlt(altArgs);
21222
21392
  },
21223
21393
  buttonModel: {
21224
- content: linkUpdate, cssClass: 'e-flat e-update-alt', isPrimary: true
21394
+ content: linkUpdate, cssClass: 'e-flat e-update-alt' + ' ' + this.parent.cssClass, isPrimary: true
21225
21395
  }
21226
21396
  }]
21227
21397
  });
@@ -21387,11 +21557,11 @@ class Image {
21387
21557
  }
21388
21558
  else {
21389
21559
  this.captionEle = this.parent.createElement('span', {
21390
- className: CLS_CAPTION + ' ' + CLS_RTE_CAPTION,
21560
+ className: CLS_CAPTION + ' ' + CLS_RTE_CAPTION + ' ' + this.parent.cssClass,
21391
21561
  attrs: { contenteditable: 'false', draggable: 'false', style: 'width:' + this.parent.insertImageSettings.width }
21392
21562
  });
21393
- const imgWrap = this.parent.createElement('span', { className: 'e-img-wrap' });
21394
- const imgInner = this.parent.createElement('span', { className: 'e-img-inner',
21563
+ const imgWrap = this.parent.createElement('span', { className: 'e-img-wrap' + ' ' + this.parent.cssClass });
21564
+ const imgInner = this.parent.createElement('span', { className: 'e-img-inner' + ' ' + this.parent.cssClass,
21395
21565
  attrs: { contenteditable: 'true' } });
21396
21566
  const parent = e.selectNode[0].parentElement;
21397
21567
  if (parent.tagName === 'A') {
@@ -21443,7 +21613,7 @@ class Image {
21443
21613
  this.insertSize(selectObj);
21444
21614
  },
21445
21615
  buttonModel: {
21446
- content: linkUpdate, cssClass: 'e-flat e-update-size', isPrimary: true
21616
+ content: linkUpdate, cssClass: 'e-flat e-update-size' + ' ' + this.parent.cssClass, isPrimary: true
21447
21617
  }
21448
21618
  }]
21449
21619
  });
@@ -21487,7 +21657,7 @@ class Image {
21487
21657
  this.dialogObj.hide({ returnValue: true });
21488
21658
  return;
21489
21659
  }
21490
- const imgDialog = this.parent.createElement('div', { className: 'e-rte-img-dialog', id: this.rteID + '_image' });
21660
+ const imgDialog = this.parent.createElement('div', { className: 'e-rte-img-dialog' + ' ' + this.parent.cssClass, id: this.rteID + '_image' });
21491
21661
  this.parent.element.appendChild(imgDialog);
21492
21662
  const imgInsert = this.i10n.getConstant('dialogInsert');
21493
21663
  const imglinkCancel = this.i10n.getConstant('dialogCancel');
@@ -21496,7 +21666,7 @@ class Image {
21496
21666
  const selectObj = { selfImage: this, selection: e.selection, args: e.args, selectParent: e.selectParent };
21497
21667
  const dialogModel = {
21498
21668
  header: imgHeader,
21499
- cssClass: CLS_RTE_ELEMENTS,
21669
+ cssClass: CLS_RTE_ELEMENTS + ' ' + this.parent.cssClass,
21500
21670
  enableRtl: this.parent.enableRtl,
21501
21671
  locale: this.parent.locale,
21502
21672
  showCloseIcon: true, closeOnEscape: true, width: (Browser.isDevice) ? '290px' : '340px', height: 'inherit',
@@ -21504,13 +21674,13 @@ class Image {
21504
21674
  isModal: Browser.isDevice,
21505
21675
  buttons: [{
21506
21676
  click: this.insertImageUrl.bind(selectObj),
21507
- buttonModel: { content: imgInsert, cssClass: 'e-flat e-insertImage', isPrimary: true, disabled: true }
21677
+ buttonModel: { content: imgInsert, cssClass: 'e-flat e-insertImage' + ' ' + this.parent.cssClass, isPrimary: true, disabled: true }
21508
21678
  },
21509
21679
  {
21510
21680
  click: (e) => {
21511
21681
  this.cancelDialog(e);
21512
21682
  },
21513
- buttonModel: { cssClass: 'e-flat e-cancel', content: imglinkCancel }
21683
+ buttonModel: { cssClass: 'e-flat e-cancel' + ' ' + this.parent.cssClass, content: imglinkCancel }
21514
21684
  }],
21515
21685
  target: (Browser.isDevice) ? document.body : this.parent.element,
21516
21686
  animationSettings: { effect: 'None' },
@@ -21533,12 +21703,12 @@ class Image {
21533
21703
  this.dialogObj = null;
21534
21704
  }
21535
21705
  };
21536
- const dialogContent = this.parent.createElement('div', { className: 'e-img-content' });
21706
+ const dialogContent = this.parent.createElement('div', { className: 'e-img-content' + ' ' + this.parent.cssClass });
21537
21707
  if ((!isNullOrUndefined(this.parent.insertImageSettings.path) && this.parent.editorMode === 'Markdown')
21538
21708
  || this.parent.editorMode === 'HTML') {
21539
21709
  dialogContent.appendChild(this.imgUpload(e));
21540
21710
  }
21541
- const linkHeader = this.parent.createElement('div', { className: 'e-linkheader' });
21711
+ const linkHeader = this.parent.createElement('div', { className: 'e-linkheader' + ' ' + this.parent.cssClass });
21542
21712
  const linkHeaderText = this.i10n.getConstant('imageLinkHeader');
21543
21713
  if (this.parent.editorMode === 'HTML') {
21544
21714
  linkHeader.innerHTML = linkHeaderText;
@@ -21590,6 +21760,9 @@ class Image {
21590
21760
  if (target.nodeName === 'IMG') {
21591
21761
  this.imgEle = target;
21592
21762
  }
21763
+ if (target.nodeName !== '#document') {
21764
+ this.parent.currentTarget = e.target;
21765
+ }
21593
21766
  if (!isNullOrUndefined(this.dialogObj) && ((
21594
21767
  // eslint-disable-next-line
21595
21768
  !closest(target, '[id=' + "'" + this.dialogObj.element.id + "'" + ']') && this.parent.toolbarSettings.enable && this.parent.getToolbarElement() &&
@@ -21607,12 +21780,13 @@ class Image {
21607
21780
  }
21608
21781
  /* eslint-enable */
21609
21782
  }
21610
- if (e.target.tagName !== 'IMG' && this.imgResizeDiv && !(this.quickToolObj &&
21783
+ if (!(this.parent.iframeSettings.enable && !isNullOrUndefined(this.parent.currentTarget) && this.parent.currentTarget.nodeName === 'IMG') &&
21784
+ e.target.tagName !== 'IMG' && this.imgResizeDiv && !(this.quickToolObj &&
21611
21785
  this.quickToolObj.imageQTBar && this.quickToolObj.imageQTBar.element.contains(e.target)) &&
21612
21786
  this.contentModule.getEditPanel().contains(this.imgResizeDiv)) {
21613
21787
  this.cancelResizeAction();
21614
21788
  }
21615
- if (this.contentModule.getEditPanel().querySelector('.e-img-resize')) {
21789
+ if (this.contentModule.getEditPanel().querySelector('.e-img-resize') && !(this.parent.iframeSettings.enable && this.parent.currentTarget.nodeName === 'IMG')) {
21616
21790
  if (target.tagName !== 'IMG') {
21617
21791
  this.removeResizeEle();
21618
21792
  }
@@ -21636,10 +21810,10 @@ class Image {
21636
21810
  }
21637
21811
  // eslint-disable-next-line
21638
21812
  imageUrlPopup(e) {
21639
- const imgUrl = this.parent.createElement('div', { className: 'imgUrl' });
21813
+ const imgUrl = this.parent.createElement('div', { className: 'imgUrl' + ' ' + this.parent.cssClass });
21640
21814
  const placeUrl = this.i10n.getConstant('imageUrl');
21641
21815
  this.inputUrl = this.parent.createElement('input', {
21642
- className: 'e-input e-img-url',
21816
+ className: 'e-input e-img-url' + ' ' + this.parent.cssClass,
21643
21817
  attrs: { placeholder: placeUrl, spellcheck: 'false' }
21644
21818
  });
21645
21819
  this.inputUrl.addEventListener('input', () => {
@@ -21705,7 +21879,7 @@ class Image {
21705
21879
  const selectNode = e.selectNode[0];
21706
21880
  const imgHeight = this.i10n.getConstant('imageHeight');
21707
21881
  const imgWidth = this.i10n.getConstant('imageWidth');
21708
- const imgSizeWrap = this.parent.createElement('div', { className: 'e-img-sizewrap' });
21882
+ const imgSizeWrap = this.parent.createElement('div', { className: 'e-img-sizewrap' + ' ' + this.parent.cssClass });
21709
21883
  const widthVal = isNullOrUndefined(this.changedWidthValue) && (selectNode.style.width.toString() === 'auto' ||
21710
21884
  selectNode.style.width !== '') ? selectNode.style.width : !isNullOrUndefined(this.changedWidthValue) ?
21711
21885
  this.changedWidthValue : (parseInt(selectNode.getClientRects()[0].width.toString(), 10)).toString();
@@ -21714,12 +21888,12 @@ class Image {
21714
21888
  this.changedHeightValue : (parseInt(selectNode.getClientRects()[0].height.toString(), 10)).toString();
21715
21889
  this.changedWidthValue = null;
21716
21890
  this.changedHeightValue = null;
21717
- const content = '<div class="e-rte-label"><label>' + imgWidth +
21718
- '</label></div><div class="e-rte-field"><input type="text" id="imgwidth" class="e-img-width" value=' +
21891
+ const content = '<div class="e-rte-label' + ' ' + this.parent.cssClass + '"><label>' + imgWidth +
21892
+ '</label></div><div class="e-rte-field' + ' ' + this.parent.cssClass + '"><input type="text" id="imgwidth" class="e-img-width' + ' ' + this.parent.cssClass + '" value=' +
21719
21893
  widthVal
21720
21894
  + ' /></div>' +
21721
- '<div class="e-rte-label">' + '<label>' + imgHeight + '</label></div><div class="e-rte-field"> ' +
21722
- '<input type="text" id="imgheight" class="e-img-height" value=' +
21895
+ '<div class="e-rte-label' + ' ' + this.parent.cssClass + '">' + '<label>' + imgHeight + '</label></div><div class="e-rte-field' + ' ' + this.parent.cssClass + '"> ' +
21896
+ '<input type="text" id="imgheight" class="e-img-height' + ' ' + this.parent.cssClass + '" value=' +
21723
21897
  heightVal
21724
21898
  + ' /></div>';
21725
21899
  const contentElem = parseHtml(content);
@@ -21808,16 +21982,16 @@ class Image {
21808
21982
  save = e.selection;
21809
21983
  selectParent = e.selectParent;
21810
21984
  }
21811
- const uploadParentEle = this.parent.createElement('div', { className: 'e-img-uploadwrap e-droparea' });
21985
+ const uploadParentEle = this.parent.createElement('div', { className: 'e-img-uploadwrap e-droparea' + ' ' + this.parent.cssClass });
21812
21986
  const deviceImgUpMsg = this.i10n.getConstant('imageDeviceUploadMessage');
21813
21987
  const imgUpMsg = this.i10n.getConstant('imageUploadMessage');
21814
- const span = this.parent.createElement('span', { className: 'e-droptext' });
21988
+ const span = this.parent.createElement('span', { className: 'e-droptext' + ' ' + this.parent.cssClass });
21815
21989
  const spanMsg = this.parent.createElement('span', {
21816
- className: 'e-rte-upload-text', innerHTML: ((Browser.isDevice) ? deviceImgUpMsg : imgUpMsg)
21990
+ className: 'e-rte-upload-text' + ' ' + this.parent.cssClass, innerHTML: ((Browser.isDevice) ? deviceImgUpMsg : imgUpMsg)
21817
21991
  });
21818
21992
  span.appendChild(spanMsg);
21819
21993
  const btnEle = this.parent.createElement('button', {
21820
- className: 'e-browsebtn', id: this.rteID + '_insertImage', attrs: { autofocus: 'true', type: 'button' }
21994
+ className: 'e-browsebtn' + ' ' + this.parent.cssClass, id: this.rteID + '_insertImage', attrs: { autofocus: 'true', type: 'button' }
21821
21995
  });
21822
21996
  span.appendChild(btnEle);
21823
21997
  uploadParentEle.appendChild(span);
@@ -21829,7 +22003,7 @@ class Image {
21829
22003
  const btnClick = (Browser.isDevice) ? span : btnEle;
21830
22004
  EventHandler.add(btnClick, 'click', this.fileSelect, this);
21831
22005
  const uploadEle = this.parent.createElement('input', {
21832
- id: this.rteID + '_upload', attrs: { type: 'File', name: 'UploadFiles' }
22006
+ id: this.rteID + '_upload', attrs: { type: 'File', name: 'UploadFiles' }, className: this.parent.cssClass
21833
22007
  });
21834
22008
  uploadParentEle.appendChild(uploadEle);
21835
22009
  let altText;
@@ -22511,7 +22685,7 @@ class ViewSource {
22511
22685
  this.parent.formatter.editorManager.observer.off(KEY_DOWN_HANDLER, this.onKeyDown);
22512
22686
  }
22513
22687
  getSourceCode() {
22514
- return this.parent.createElement('textarea', { className: 'e-rte-srctextarea' });
22688
+ return this.parent.createElement('textarea', { className: 'e-rte-srctextarea' + ' ' + this.parent.cssClass });
22515
22689
  }
22516
22690
  wireEvent(element) {
22517
22691
  this.keyboardModule = new KeyboardEvents$1(element, {
@@ -22742,6 +22916,8 @@ class Table {
22742
22916
  this.pageX = null;
22743
22917
  this.pageY = null;
22744
22918
  this.moveEle = null;
22919
+ this.currentColumnResize = '';
22920
+ this.currentMarginLeft = 0;
22745
22921
  this.parent = parent;
22746
22922
  this.rteID = parent.element.id;
22747
22923
  this.l10n = serviceLocator.getService('rteLocale');
@@ -22909,6 +23085,7 @@ class Table {
22909
23085
  }
22910
23086
  else if (ele && ele.querySelectorAll('table').length > 0) {
22911
23087
  this.removeResizeElement();
23088
+ this.hideTableQuickToolbar();
22912
23089
  }
22913
23090
  }
22914
23091
  if (ele && ele.tagName !== 'TD' && ele.tagName !== 'TH') {
@@ -23285,7 +23462,7 @@ class Table {
23285
23462
  }
23286
23463
  tableResizeEleCreation(table, e) {
23287
23464
  this.parent.preventDefaultResize(e);
23288
- const columns = Array.prototype.slice.call(table.rows[this.calMaxCol(table)].cells, 1);
23465
+ const columns = table.rows[this.calMaxCol(table)].cells;
23289
23466
  const rows = [];
23290
23467
  for (let i = 0; i < table.rows.length; i++) {
23291
23468
  rows.push(Array.prototype.slice.call(table.rows[i].cells, 0, 1)[0]);
@@ -23293,15 +23470,21 @@ class Table {
23293
23470
  const height = parseInt(getComputedStyle(table).height, 10);
23294
23471
  const width = parseInt(getComputedStyle(table).width, 10);
23295
23472
  const pos = this.calcPos(table);
23296
- for (let i = 0; columns.length > i; i++) {
23473
+ for (let i = 0; columns.length >= i; i++) {
23297
23474
  const colReEle = this.parent.createElement('span', {
23298
23475
  attrs: {
23299
- 'data-col': (i + 1).toString(), 'unselectable': 'on', 'contenteditable': 'false'
23476
+ 'data-col': (i).toString(), 'unselectable': 'on', 'contenteditable': 'false'
23300
23477
  }
23301
23478
  });
23302
23479
  colReEle.classList.add(CLS_RTE_TABLE_RESIZE, CLS_TB_COL_RES);
23303
- colReEle.style.cssText = 'height: ' + height + 'px; width: 4px; top: ' + pos.top +
23304
- 'px; left:' + (pos.left + this.calcPos(columns[i]).left) + 'px;';
23480
+ if (columns.length === i) {
23481
+ colReEle.style.cssText = 'height: ' + height + 'px; width: 4px; top: ' + pos.top +
23482
+ 'px; left:' + (pos.left + this.calcPos(columns[i - 1]).left + columns[i - 1].offsetWidth) + 'px;';
23483
+ }
23484
+ else {
23485
+ colReEle.style.cssText = 'height: ' + height + 'px; width: 4px; top: ' + pos.top +
23486
+ 'px; left:' + (pos.left + this.calcPos(columns[i]).left) + 'px;';
23487
+ }
23305
23488
  this.contentModule.getEditPanel().appendChild(colReEle);
23306
23489
  }
23307
23490
  for (let i = 0; rows.length > i; i++) {
@@ -23319,7 +23502,7 @@ class Table {
23319
23502
  this.contentModule.getEditPanel().appendChild(rowReEle);
23320
23503
  }
23321
23504
  const tableReBox = this.parent.createElement('span', {
23322
- className: CLS_TB_BOX_RES, attrs: {
23505
+ className: CLS_TB_BOX_RES + ' ' + this.parent.cssClass, attrs: {
23323
23506
  'data-col': columns.length.toString(), 'unselectable': 'on', 'contenteditable': 'false'
23324
23507
  }
23325
23508
  });
@@ -23417,7 +23600,19 @@ class Table {
23417
23600
  this.hideTableQuickToolbar();
23418
23601
  if (target.classList.contains(CLS_TB_COL_RES)) {
23419
23602
  this.resizeBtnStat.column = true;
23420
- this.columnEle = this.curTable.rows[this.calMaxCol(this.curTable)].cells[parseInt(target.getAttribute('data-col'), 10)];
23603
+ if (parseInt(target.getAttribute('data-col'), 10) === this.curTable.rows[this.calMaxCol(this.curTable)].cells.length) {
23604
+ this.currentColumnResize = 'last';
23605
+ this.columnEle = this.curTable.rows[this.calMaxCol(this.curTable)].cells[parseInt(target.getAttribute('data-col'), 10) - 1];
23606
+ }
23607
+ else {
23608
+ if (parseInt(target.getAttribute('data-col'), 10) === 0) {
23609
+ this.currentColumnResize = 'first';
23610
+ }
23611
+ else {
23612
+ this.currentColumnResize = 'middle';
23613
+ }
23614
+ this.columnEle = this.curTable.rows[this.calMaxCol(this.curTable)].cells[parseInt(target.getAttribute('data-col'), 10)];
23615
+ }
23421
23616
  this.colIndex = this.columnEle.cellIndex;
23422
23617
  this.moveEle = e.target;
23423
23618
  this.appendHelper();
@@ -23461,7 +23656,7 @@ class Table {
23461
23656
  }
23462
23657
  appendHelper() {
23463
23658
  this.helper = this.parent.createElement('div', {
23464
- className: 'e-table-rhelper'
23659
+ className: 'e-table-rhelper' + ' ' + this.parent.cssClass
23465
23660
  });
23466
23661
  if (Browser.isDevice) {
23467
23662
  this.helper.classList.add('e-reicon');
@@ -23474,7 +23669,8 @@ class Table {
23474
23669
  if (this.resizeBtnStat.column) {
23475
23670
  this.helper.classList.add('e-column-helper');
23476
23671
  this.helper.style.cssText = 'height: ' + getComputedStyle(this.curTable).height + '; top: ' +
23477
- pos.top + 'px; left:' + (pos.left + this.calcPos(this.columnEle).left - 1) + 'px;';
23672
+ pos.top + 'px; left:' + ((pos.left + this.calcPos(this.columnEle).left) +
23673
+ (this.currentColumnResize === 'last' ? this.columnEle.offsetWidth + 2 : 0) - 1) + 'px;';
23478
23674
  }
23479
23675
  else {
23480
23676
  this.helper.classList.add('e-row-helper');
@@ -23486,7 +23682,8 @@ class Table {
23486
23682
  updateHelper() {
23487
23683
  const pos = this.calcPos(this.curTable);
23488
23684
  if (this.resizeBtnStat.column) {
23489
- const left = pos.left + this.calcPos(this.columnEle).left - 1;
23685
+ const left = (pos.left + this.calcPos(this.columnEle).left) +
23686
+ (this.currentColumnResize === 'last' ? this.columnEle.offsetWidth + 2 : 0) - 1;
23490
23687
  this.helper.style.left = left + 'px';
23491
23688
  }
23492
23689
  else {
@@ -23508,7 +23705,7 @@ class Table {
23508
23705
  resizing(e) {
23509
23706
  const pageX = this.getPointX(e);
23510
23707
  const pageY = this.getPointY(e);
23511
- const mouseX = (this.parent.enableRtl) ? -(pageX - this.pageX) : (pageX - this.pageX);
23708
+ let mouseX = (this.parent.enableRtl) ? -(pageX - this.pageX) : (pageX - this.pageX);
23512
23709
  const mouseY = (this.parent.enableRtl) ? -(pageY - this.pageY) : (pageY - this.pageY);
23513
23710
  this.pageX = pageX;
23514
23711
  this.pageY = pageY;
@@ -23524,23 +23721,66 @@ class Table {
23524
23721
  const paddingSize = +getComputedStyle(this.contentModule.getEditPanel()).paddingRight.match(/\d/g).join('');
23525
23722
  const rteWidth = this.contentModule.getEditPanel().offsetWidth - (this.contentModule.getEditPanel().offsetWidth -
23526
23723
  this.contentModule.getEditPanel().clientWidth) - paddingSize * 2;
23724
+ let widthCompare;
23725
+ if (!isNullOrUndefined(this.curTable.parentElement.closest('table'))) {
23726
+ const currentTd = this.curTable.closest('td');
23727
+ const currentTDPad = +getComputedStyle(currentTd).paddingRight.match(/\d/g).join('');
23728
+ // Padding of the current table with the parent element multiply with 2.
23729
+ widthCompare = currentTd.offsetWidth - (currentTd.offsetWidth - currentTd.clientWidth) - currentTDPad * 2;
23730
+ }
23731
+ else {
23732
+ widthCompare = rteWidth;
23733
+ }
23527
23734
  if (this.resizeBtnStat.column) {
23528
- const cellColl = this.curTable.rows[this.calMaxCol(this.curTable)].cells;
23529
23735
  const width = parseFloat(this.columnEle.offsetWidth.toString());
23530
- const actualwid = width - mouseX;
23531
- const totalwid = parseFloat(this.columnEle.offsetWidth.toString()) +
23532
- parseFloat(cellColl[this.colIndex - 1].offsetWidth.toString());
23533
- for (let i = 0; i < this.curTable.rows.length; i++) {
23534
- if ((totalwid - actualwid) > 20 && actualwid > 20) {
23535
- const leftColumnWidth = totalwid - actualwid;
23536
- const rightColWidth = actualwid;
23537
- if (!isNullOrUndefined(this.curTable.rows[i].cells[this.colIndex - 1])) {
23538
- this.curTable.rows[i].cells[this.colIndex - 1].style.width =
23539
- this.convertPixelToPercentage(leftColumnWidth, tableWidth) + '%';
23736
+ let cellRow = this.curTable.rows[0].cells[0].nodeName === 'TH' ? 1 : 0;
23737
+ let currentTableWidth = parseFloat(this.curTable.style.width.split('%')[0]);
23738
+ let currentColumnCellWidth = parseFloat(this.curTable.rows[cellRow].cells[this.colIndex].style.width.split('%')[0]);
23739
+ if (this.currentColumnResize === 'first') {
23740
+ mouseX = mouseX - 0.75; //This was done for to make the gripper and the table first/last column will be close.
23741
+ this.removeResizeElement();
23742
+ // Below the value '100' is the 100% width of the parent element.
23743
+ if (((mouseX !== 0 && 5 < currentColumnCellWidth) || mouseX < 0) && currentTableWidth <= 100 && this.convertPixelToPercentage(tableWidth - mouseX, widthCompare) <= 100) {
23744
+ const firstColumnsCell = this.findFirstLastColCells(this.curTable, true);
23745
+ this.curTable.style.width = this.convertPixelToPercentage(tableWidth - mouseX, widthCompare) > 100 ? (100 + '%') : (this.convertPixelToPercentage(tableWidth - mouseX, widthCompare) + '%');
23746
+ let differenceWidth = currentTableWidth - this.convertPixelToPercentage(tableWidth - mouseX, widthCompare);
23747
+ this.currentMarginLeft = this.currentMarginLeft + differenceWidth;
23748
+ this.curTable.style.marginLeft = 'calc(' + (this.curTable.style.width === '100%' ? 0 : this.currentMarginLeft) + '%)';
23749
+ for (let i = 0; i < firstColumnsCell.length; i++) {
23750
+ this.curTable.rows[i].cells[this.colIndex].style.width = (currentColumnCellWidth - differenceWidth) + '%';
23540
23751
  }
23541
- if (!isNullOrUndefined(this.curTable.rows[i].cells[this.colIndex])) {
23542
- this.curTable.rows[i].cells[this.colIndex].style.width =
23543
- this.convertPixelToPercentage(rightColWidth, tableWidth) + '%';
23752
+ }
23753
+ }
23754
+ else if (this.currentColumnResize === 'last') {
23755
+ mouseX = mouseX + 0.75; //This was done for to make the gripper and the table first/last column will be close.
23756
+ this.removeResizeElement();
23757
+ // Below the value '100' is the 100% width of the parent element.
23758
+ if (((mouseX !== 0 && 5 < currentColumnCellWidth) || mouseX > 0) && currentTableWidth <= 100 && this.convertPixelToPercentage(tableWidth + mouseX, widthCompare) <= 100) {
23759
+ const lastColumnsCell = this.findFirstLastColCells(this.curTable, false);
23760
+ this.curTable.style.width = this.convertPixelToPercentage(tableWidth + mouseX, widthCompare) > 100 ? (100 + '%') : (this.convertPixelToPercentage(tableWidth + mouseX, widthCompare) + '%');
23761
+ let differenceWidth = currentTableWidth - this.convertPixelToPercentage(tableWidth + mouseX, widthCompare);
23762
+ for (let i = 0; i < lastColumnsCell.length; i++) {
23763
+ this.curTable.rows[i].cells[this.colIndex].style.width = (currentColumnCellWidth - differenceWidth) + '%';
23764
+ }
23765
+ }
23766
+ }
23767
+ else {
23768
+ const cellColl = this.curTable.rows[this.calMaxCol(this.curTable)].cells;
23769
+ const actualwid = width - mouseX;
23770
+ const totalwid = parseFloat(this.columnEle.offsetWidth.toString()) +
23771
+ parseFloat(cellColl[this.colIndex - 1].offsetWidth.toString());
23772
+ for (let i = 0; i < this.curTable.rows.length; i++) {
23773
+ if ((totalwid - actualwid) > 20 && actualwid > 20) {
23774
+ const leftColumnWidth = totalwid - actualwid;
23775
+ const rightColWidth = actualwid;
23776
+ if (!isNullOrUndefined(this.curTable.rows[i].cells[this.colIndex - 1])) {
23777
+ this.curTable.rows[i].cells[this.colIndex - 1].style.width =
23778
+ this.convertPixelToPercentage(leftColumnWidth, tableWidth) + '%';
23779
+ }
23780
+ if (!isNullOrUndefined(this.curTable.rows[i].cells[this.colIndex])) {
23781
+ this.curTable.rows[i].cells[this.colIndex].style.width =
23782
+ this.convertPixelToPercentage(rightColWidth, tableWidth) + '%';
23783
+ }
23544
23784
  }
23545
23785
  }
23546
23786
  }
@@ -23564,7 +23804,7 @@ class Table {
23564
23804
  EventHandler.remove(this.contentModule.getEditPanel(), 'mouseover', this.resizeHelper);
23565
23805
  }
23566
23806
  const widthType = this.curTable.style.width.indexOf('%') > -1;
23567
- this.curTable.style.width = widthType ? this.convertPixelToPercentage(tableWidth + mouseX, rteWidth) + '%'
23807
+ this.curTable.style.width = widthType ? this.convertPixelToPercentage(tableWidth + mouseX, widthCompare) + '%'
23568
23808
  : tableWidth + mouseX + 'px';
23569
23809
  this.curTable.style.height = tableHeight + mouseY + 'px';
23570
23810
  tableReBox.classList.add('e-rbox-select');
@@ -23574,6 +23814,17 @@ class Table {
23574
23814
  }
23575
23815
  });
23576
23816
  }
23817
+ findFirstLastColCells(table, isFirst) {
23818
+ let resultColumns = [];
23819
+ const rows = table.querySelectorAll('tr');
23820
+ for (let i = 0; i < rows.length; i++) {
23821
+ if (rows[i].closest('table') === table) {
23822
+ const columns = rows[i].querySelectorAll('th, td');
23823
+ resultColumns.push(isFirst ? columns[0] : columns[columns.length - 1]);
23824
+ }
23825
+ }
23826
+ return resultColumns;
23827
+ }
23577
23828
  convertPixelToPercentage(value, offsetValue) {
23578
23829
  return (value / offsetValue) * 100;
23579
23830
  }
@@ -23592,14 +23843,14 @@ class Table {
23592
23843
  EventHandler.add(this.contentModule.getEditPanel(), 'mouseover', this.resizeHelper, this);
23593
23844
  }
23594
23845
  this.removeResizeElement();
23595
- if (this.helper && this.contentModule.getEditPanel().contains(this.helper)) {
23596
- detach(this.helper);
23597
- this.helper = null;
23598
- }
23599
- this.pageX = null;
23600
- this.pageY = null;
23601
- this.moveEle = null;
23602
23846
  }
23847
+ if (this.helper && this.contentModule.getEditPanel().contains(this.helper)) {
23848
+ detach(this.helper);
23849
+ this.helper = null;
23850
+ }
23851
+ this.pageX = null;
23852
+ this.pageY = null;
23853
+ this.moveEle = null;
23603
23854
  const args = { event: e, requestType: 'table' };
23604
23855
  this.parent.trigger(resizeStop, args);
23605
23856
  this.parent.formatter.saveData();
@@ -23653,16 +23904,16 @@ class Table {
23653
23904
  this.hideTableQuickToolbar();
23654
23905
  const header = '1X1';
23655
23906
  const insertbtn = this.l10n.getConstant('inserttablebtn');
23656
- this.dlgDiv = this.parent.createElement('div', { className: 'e-rte-table-popup', id: this.rteID + '_table' });
23657
- this.tblHeader = this.parent.createElement('div', { className: 'e-rte-popup-header' });
23907
+ this.dlgDiv = this.parent.createElement('div', { className: 'e-rte-table-popup' + ' ' + this.parent.cssClass, id: this.rteID + '_table' });
23908
+ this.tblHeader = this.parent.createElement('div', { className: 'e-rte-popup-header' + ' ' + this.parent.cssClass });
23658
23909
  this.tblHeader.innerHTML = header;
23659
23910
  this.dlgDiv.appendChild(this.tblHeader);
23660
- const tableDiv = this.parent.createElement('div', { className: 'e-rte-table-span' });
23911
+ const tableDiv = this.parent.createElement('div', { className: 'e-rte-table-span' + ' ' + this.parent.cssClass });
23661
23912
  this.drawTable(tableDiv, args);
23662
23913
  this.dlgDiv.appendChild(tableDiv);
23663
- this.dlgDiv.appendChild(this.parent.createElement('span', { className: 'e-span-border' }));
23914
+ this.dlgDiv.appendChild(this.parent.createElement('span', { className: 'e-span-border' + ' ' + this.parent.cssClass }));
23664
23915
  const btnEle = this.parent.createElement('button', {
23665
- className: 'e-insert-table-btn', id: this.rteID + '_insertTable',
23916
+ className: 'e-insert-table-btn' + ' ' + this.parent.cssClass, id: this.rteID + '_insertTable',
23666
23917
  attrs: { type: 'button', tabindex: '0' }
23667
23918
  });
23668
23919
  if (!isNullOrUndefined(this.parent.getToolbarElement().querySelector('.e-expended-nav'))) {
@@ -23724,7 +23975,7 @@ class Table {
23724
23975
  !target.offsetParent.classList.contains('e-quick-dropdown') &&
23725
23976
  !target.offsetParent.classList.contains('e-rte-backgroundcolor-dropdown') && !closest(target, '.e-rte-dropdown-popup')
23726
23977
  && !closest(target, '.e-rte-elements')) {
23727
- removeClass(this.parent.element.querySelectorAll('table td'), CLS_TABLE_SEL);
23978
+ removeClass(this.parent.inputElement.querySelectorAll('table td'), CLS_TABLE_SEL);
23728
23979
  if (!Browser.isIE) {
23729
23980
  this.hideTableQuickToolbar();
23730
23981
  }
@@ -23738,10 +23989,10 @@ class Table {
23738
23989
  let rowDiv;
23739
23990
  let tableCell;
23740
23991
  for (let row = 0; row < 3; row++) {
23741
- rowDiv = this.parent.createElement('div', { className: 'e-rte-table-row', attrs: { 'data-column': '' + row } });
23992
+ rowDiv = this.parent.createElement('div', { className: 'e-rte-table-row' + ' ' + this.parent.cssClass, attrs: { 'data-column': '' + row } });
23742
23993
  for (let col = 0; col < 10; col++) {
23743
23994
  const display = (row > 2) ? 'none' : 'inline-block';
23744
- tableCell = this.parent.createElement('div', { className: 'e-rte-tablecell e-default', attrs: { 'data-cell': '' + col } });
23995
+ tableCell = this.parent.createElement('div', { className: 'e-rte-tablecell e-default' + ' ' + this.parent.cssClass, attrs: { 'data-cell': '' + col } });
23745
23996
  rowDiv.appendChild(tableCell);
23746
23997
  tableCell.style.display = display;
23747
23998
  if (col === 0 && row === 0) {
@@ -23764,13 +24015,13 @@ class Table {
23764
24015
  height: 'initial', width: '290px', content: editContent, header: editHeader,
23765
24016
  buttons: [{
23766
24017
  click: this.applyProperties.bind(this, args),
23767
- buttonModel: { content: update, cssClass: 'e-flat e-size-update', isPrimary: true }
24018
+ buttonModel: { content: update, cssClass: 'e-flat e-size-update' + ' ' + this.parent.cssClass, isPrimary: true }
23768
24019
  },
23769
24020
  {
23770
24021
  click: (e) => {
23771
24022
  this.cancelDialog(e);
23772
24023
  },
23773
- buttonModel: { cssClass: 'e-flat e-cancel', content: cancel }
24024
+ buttonModel: { cssClass: 'e-flat e-cancel' + ' ' + this.parent.cssClass, content: cancel }
23774
24025
  }],
23775
24026
  cssClass: this.parent.cssClass
23776
24027
  });
@@ -23794,13 +24045,13 @@ class Table {
23794
24045
  height: 'initial', width: '290px', content: dlgContent,
23795
24046
  buttons: [{
23796
24047
  click: proxy.customTable.bind(this, args),
23797
- buttonModel: { content: insert, cssClass: 'e-flat e-insert-table', isPrimary: true }
24048
+ buttonModel: { content: insert, cssClass: 'e-flat e-insert-table' + ' ' + proxy.parent.cssClass, isPrimary: true }
23798
24049
  },
23799
24050
  {
23800
24051
  click: (e) => {
23801
24052
  proxy.cancelDialog(e);
23802
24053
  },
23803
- buttonModel: { cssClass: 'e-flat e-cancel', content: cancel }
24054
+ buttonModel: { cssClass: 'e-flat e-cancel' + ' ' + proxy.parent.cssClass, content: cancel }
23804
24055
  }]
23805
24056
  });
23806
24057
  if (!isNullOrUndefined(proxy.parent.cssClass)) {
@@ -23812,10 +24063,10 @@ class Table {
23812
24063
  tableCellDlgContent() {
23813
24064
  const tableColumn = this.l10n.getConstant('columns');
23814
24065
  const tableRow = this.l10n.getConstant('rows');
23815
- const tableWrap = this.parent.createElement('div', { className: 'e-cell-wrap' });
23816
- const content = '<div class="e-rte-field"><input type="text" '
23817
- + ' data-role ="none" id="tableColumn" class="e-table-column"/></div>'
23818
- + '<div class="e-rte-field"><input type="text" data-role ="none" id="tableRow" class="e-table-row" /></div>';
24066
+ const tableWrap = this.parent.createElement('div', { className: 'e-cell-wrap' + ' ' + this.parent.cssClass });
24067
+ const content = '<div class="e-rte-field' + ' ' + this.parent.cssClass + '"><input type="text" '
24068
+ + ' data-role ="none" id="tableColumn" class="e-table-column' + ' ' + this.parent.cssClass + '"/></div>'
24069
+ + '<div class="e-rte-field' + ' ' + this.parent.cssClass + '"><input type="text" data-role ="none" id="tableRow" class="e-table-row' + ' ' + this.parent.cssClass + '" /></div>';
23819
24070
  const contentElem = parseHtml(content);
23820
24071
  tableWrap.appendChild(contentElem);
23821
24072
  this.columnTextBox = new NumericTextBox({
@@ -23858,7 +24109,7 @@ class Table {
23858
24109
  return;
23859
24110
  }
23860
24111
  const tableDialog = this.parent.createElement('div', {
23861
- className: 'e-rte-edit-table', id: this.rteID + '_tabledialog'
24112
+ className: 'e-rte-edit-table' + ' ' + this.parent.cssClass, id: this.rteID + '_tabledialog'
23862
24113
  });
23863
24114
  this.parent.element.appendChild(tableDialog);
23864
24115
  const insert = this.l10n.getConstant('dialogInsert');
@@ -23873,13 +24124,13 @@ class Table {
23873
24124
  position: { X: 'center', Y: (Browser.isDevice) ? 'center' : 'top' },
23874
24125
  isModal: Browser.isDevice,
23875
24126
  buttons: [{
23876
- buttonModel: { content: insert, cssClass: 'e-flat e-insert-table', isPrimary: true }
24127
+ buttonModel: { content: insert, cssClass: 'e-flat e-insert-table' + ' ' + this.parent.cssClass, isPrimary: true }
23877
24128
  },
23878
24129
  {
23879
24130
  click: (e) => {
23880
24131
  this.cancelDialog(e);
23881
24132
  },
23882
- buttonModel: { cssClass: 'e-flat e-cancel', content: cancel }
24133
+ buttonModel: { cssClass: 'e-flat e-cancel' + ' ' + this.parent.cssClass, content: cancel }
23883
24134
  }],
23884
24135
  target: (Browser.isDevice) ? document.body : this.parent.element,
23885
24136
  animationSettings: { effect: 'None' },
@@ -23947,13 +24198,13 @@ class Table {
23947
24198
  const tableWidth = this.l10n.getConstant('tableWidth');
23948
24199
  const cellPadding = this.l10n.getConstant('cellpadding');
23949
24200
  const cellSpacing = this.l10n.getConstant('cellspacing');
23950
- const tableWrap = this.parent.createElement('div', { className: 'e-table-sizewrap' });
24201
+ const tableWrap = this.parent.createElement('div', { className: 'e-table-sizewrap' + ' ' + this.parent.cssClass });
23951
24202
  const widthVal = closest(selectNode, 'table').getClientRects()[0].width;
23952
24203
  const padVal = closest(selectNode, 'td').style.padding;
23953
24204
  const brdSpcVal = closest(selectNode, 'table').getAttribute('cellspacing');
23954
- const content = '<div class="e-rte-field"><input type="text" data-role ="none" id="tableWidth" class="e-table-width" '
23955
- + ' /></div>' + '<div class="e-rte-field"><input type="text" data-role ="none" id="cellPadding" class="e-cell-padding" />'
23956
- + ' </div><div class="e-rte-field"><input type="text" data-role ="none" id="cellSpacing" class="e-cell-spacing" /></div>';
24205
+ const content = '<div class="e-rte-field' + ' ' + this.parent.cssClass + '"><input type="text" data-role ="none" id="tableWidth" class="e-table-width' + ' ' + this.parent.cssClass + '" '
24206
+ + ' /></div>' + '<div class="e-rte-field' + ' ' + this.parent.cssClass + '"><input type="text" data-role ="none" id="cellPadding" class="e-cell-padding' + ' ' + this.parent.cssClass + '" />'
24207
+ + ' </div><div class="e-rte-field' + ' ' + this.parent.cssClass + '"><input type="text" data-role ="none" id="cellSpacing" class="e-cell-spacing' + ' ' + this.parent.cssClass + '" /></div>';
23957
24208
  const contentElem = parseHtml(content);
23958
24209
  tableWrap.appendChild(contentElem);
23959
24210
  this.tableWidthNum = new NumericTextBox({
@@ -24951,24 +25202,6 @@ var __decorate$1 = (undefined && undefined.__decorate) || function (decorators,
24951
25202
  let RichTextEditor = class RichTextEditor extends Component {
24952
25203
  constructor(options, element) {
24953
25204
  super(options, element);
24954
- this.defaultResetValue = null;
24955
- this.isResizeInitialized = false;
24956
- /**
24957
- * @hidden
24958
- * @deprecated
24959
- */
24960
- this.isFocusOut = false;
24961
- /**
24962
- * @hidden
24963
- * @deprecated
24964
- */
24965
- this.isRTE = false;
24966
- /**
24967
- * @hidden
24968
- * @deprecated
24969
- */
24970
- this.isBlur = true;
24971
- this.needsID = true;
24972
25205
  }
24973
25206
  /**
24974
25207
  * To provide the array of modules needed for component rendering
@@ -25049,6 +25282,14 @@ let RichTextEditor = class RichTextEditor extends Component {
25049
25282
  // eslint-disable-next-line
25050
25283
  (this.enabled) ? this.eventInitializer() : this.unWireEvents();
25051
25284
  }
25285
+ initializeValue() {
25286
+ this.isFocusOut = false;
25287
+ this.isRTE = false;
25288
+ this.isBlur = true;
25289
+ this.needsID = true;
25290
+ this.defaultResetValue = null;
25291
+ this.isResizeInitialized = false;
25292
+ }
25052
25293
  /**
25053
25294
  * For internal use only - Initialize the event handler;
25054
25295
  *
@@ -25057,6 +25298,7 @@ let RichTextEditor = class RichTextEditor extends Component {
25057
25298
  * @private
25058
25299
  */
25059
25300
  preRender() {
25301
+ this.initializeValue();
25060
25302
  this.onBlurHandler = this.blurHandler.bind(this);
25061
25303
  this.onFocusHandler = this.focusHandler.bind(this);
25062
25304
  this.onResizeHandler = this.resizeHandler.bind(this);
@@ -25113,11 +25355,18 @@ let RichTextEditor = class RichTextEditor extends Component {
25113
25355
  }
25114
25356
  else {
25115
25357
  this.valueContainer = this.createElement('textarea', {
25116
- id: this.getID() + '-value'
25358
+ id: this.getID() + '-value',
25359
+ attrs: { 'aria-labelledby': this.getID() }
25117
25360
  });
25118
25361
  }
25119
25362
  this.valueContainer.name = this.getID();
25120
25363
  addClass([this.valueContainer], CLS_RTE_HIDDEN);
25364
+ if (!isNullOrUndefined(this.cssClass)) {
25365
+ let currentClassList = this.cssClass.split(' ');
25366
+ for (let i = 0; i < currentClassList.length; i++) {
25367
+ addClass([this.valueContainer], currentClassList[i]);
25368
+ }
25369
+ }
25121
25370
  this.element.appendChild(this.valueContainer);
25122
25371
  }
25123
25372
  /**
@@ -25376,12 +25625,12 @@ let RichTextEditor = class RichTextEditor extends Component {
25376
25625
  const range = this.getRange();
25377
25626
  const currentStartContainer = range.startContainer;
25378
25627
  const currentEndContainer = range.endContainer;
25379
- let currentStartOffset = range.startOffset;
25380
- let isSameContainer = currentStartContainer === currentEndContainer ? true : false;
25628
+ const currentStartOffset = range.startOffset;
25629
+ const isSameContainer = currentStartContainer === currentEndContainer ? true : false;
25381
25630
  let currentEndOffset;
25382
25631
  const endNode = range.endContainer.nodeName === '#text' ? range.endContainer.parentElement :
25383
25632
  range.endContainer;
25384
- let closestLI = closest(endNode, 'LI');
25633
+ const closestLI = closest(endNode, 'LI');
25385
25634
  if (!isNullOrUndefined(closestLI) && endNode.textContent.length === range.endOffset &&
25386
25635
  !range.collapsed && isNullOrUndefined(endNode.nextElementSibling)) {
25387
25636
  closestLI.textContent = closestLI.textContent.trim();
@@ -25755,6 +26004,12 @@ let RichTextEditor = class RichTextEditor extends Component {
25755
26004
  for (let i = 0; i < this.originalElement.classList.length; i++) {
25756
26005
  addClass([this.element], this.originalElement.classList[i]);
25757
26006
  }
26007
+ if (!isNullOrUndefined(this.cssClass)) {
26008
+ let currentClassList = this.cssClass.split(' ');
26009
+ for (let i = 0; i < currentClassList.length; i++) {
26010
+ addClass([this.element], currentClassList[i]);
26011
+ }
26012
+ }
25758
26013
  removeClass([this.element], CLS_RTE_HIDDEN);
25759
26014
  }
25760
26015
  else {
@@ -26129,7 +26384,7 @@ let RichTextEditor = class RichTextEditor extends Component {
26129
26384
  if (this.inputElement && this.placeholder && this.iframeSettings.enable !== true) {
26130
26385
  if (this.editorMode !== 'Markdown') {
26131
26386
  if (!this.placeHolderWrapper) {
26132
- this.placeHolderWrapper = this.createElement('span', { className: 'rte-placeholder e-rte-placeholder' });
26387
+ this.placeHolderWrapper = this.createElement('span', { className: 'rte-placeholder e-rte-placeholder' + ' ' + this.cssClass });
26133
26388
  if (this.inputElement) {
26134
26389
  this.inputElement.parentElement.insertBefore(this.placeHolderWrapper, this.inputElement);
26135
26390
  }
@@ -26378,7 +26633,7 @@ let RichTextEditor = class RichTextEditor extends Component {
26378
26633
  this.setProperties({ value: this.valueTemplate });
26379
26634
  }
26380
26635
  else {
26381
- const compiledTemplate = compile(this.valueTemplate)("", this, 'valueTemplate');
26636
+ const compiledTemplate = compile(this.valueTemplate)('', this, 'valueTemplate');
26382
26637
  for (let i = 0; i < compiledTemplate.length; i++) {
26383
26638
  const item = compiledTemplate[i];
26384
26639
  append([item], this.element);
@@ -27001,6 +27256,7 @@ let RichTextEditor = class RichTextEditor extends Component {
27001
27256
  }
27002
27257
  onIframeMouseDown(e) {
27003
27258
  this.isBlur = false;
27259
+ this.currentTarget = e.target;
27004
27260
  this.notify(iframeMouseDown, e);
27005
27261
  }
27006
27262
  editorKeyDown(e) {
@@ -27327,5 +27583,5 @@ RichTextEditor = __decorate$1([
27327
27583
  * Rich Text Editor component exported items
27328
27584
  */
27329
27585
 
27330
- export { Toolbar$2 as Toolbar, KeyboardEvents$1 as KeyboardEvents, BaseToolbar, BaseQuickToolbar, QuickToolbar, Count, ColorPickerInput, MarkdownToolbarStatus, ExecCommandCallBack, ToolbarAction, MarkdownEditor, HtmlEditor, PasteCleanup, Resize, DropDownButtons, FileManager$1 as FileManager, FullScreen, setAttributes, HtmlToolbarStatus, XhtmlValidation, HTMLFormatter, Formatter, MarkdownFormatter, ContentRender, Render, ToolbarRenderer, Link, Image, ViewSource, Table, DialogRenderer, IframeContentRender, MarkdownRender, PopupRenderer, RichTextEditor, RenderType, ToolbarType, DialogType, executeGroup, created, destroyed, load, initialLoad, contentChanged, initialEnd, iframeMouseDown, destroy, toolbarClick, toolbarRefresh, refreshBegin, toolbarUpdated, bindOnEnd, renderColorPicker, htmlToolbarClick, markdownToolbarClick, destroyColorPicker, modelChanged, keyUp, keyDown, mouseUp, toolbarCreated, toolbarRenderComplete, enableFullScreen, disableFullScreen, dropDownSelect, beforeDropDownItemRender, execCommandCallBack, imageToolbarAction, linkToolbarAction, windowResize, resizeStart, onResize, resizeStop, undo, redo, insertLink, unLink, editLink, openLink, actionBegin, actionComplete, updatedToolbarStatus, actionSuccess, updateToolbarItem, insertImage, insertCompleted, imageLeft, imageRight, imageCenter, imageBreak, imageInline, imageLink, imageAlt, imageDelete, imageCaption, imageSize, sourceCode, updateSource, toolbarOpen, beforeDropDownOpen, selectionSave, selectionRestore, expandPopupClick, count, contentFocus, contentBlur, mouseDown, sourceCodeMouseDown, editAreaClick, scroll, contentscroll, colorPickerChanged, tableColorPickerChanged, focusChange, selectAll$1 as selectAll, selectRange, getSelectedHtml, renderInlineToolbar, paste, imgModule, rtlMode, createTable, docClick, tableToolbarAction, checkUndo, readOnlyMode, pasteClean, enterHandler, beforeDialogOpen, clearDialogObj, dialogOpen, beforeDialogClose, dialogClose, beforeQuickToolbarOpen, quickToolbarOpen, quickToolbarClose, popupHide, imageSelected, imageUploading, imageUploadSuccess, imageUploadFailed, imageRemoving, afterImageDelete, drop, xhtmlValidation, beforeImageUpload, resizeInitialized, renderFileManager, beforeImageDrop, dynamicModule, beforePasteCleanup, afterPasteCleanup, updateTbItemsStatus, showLinkDialog, closeLinkDialog, showImageDialog, closeImageDialog, showTableDialog, closeTableDialog, bindCssClass, blockInlineEmptyNodes, CLS_RTE, CLS_RTL, CLS_CONTENT, CLS_DISABLED, CLS_SCRIPT_SHEET, CLS_STYLE_SHEET, CLS_TOOLBAR, CLS_TB_FIXED, CLS_TB_FLOAT, CLS_TB_ABS_FLOAT, CLS_INLINE, CLS_TB_INLINE, CLS_RTE_EXPAND_TB, CLS_FULL_SCREEN, CLS_QUICK_TB, CLS_POP, CLS_TB_STATIC, CLS_QUICK_POP, CLS_QUICK_DROPDOWN, CLS_IMAGE_POP, CLS_INLINE_POP, CLS_INLINE_DROPDOWN, CLS_DROPDOWN_POPUP, CLS_DROPDOWN_ICONS, CLS_DROPDOWN_ITEMS, CLS_DROPDOWN_BTN, CLS_RTE_CONTENT, CLS_TB_ITEM, CLS_TB_EXTENDED, CLS_TB_WRAP, CLS_POPUP, CLS_SEPARATOR, CLS_MINIMIZE, CLS_MAXIMIZE, CLS_BACK, CLS_SHOW, CLS_HIDE, CLS_VISIBLE, CLS_FOCUS, CLS_RM_WHITE_SPACE, CLS_IMGRIGHT, CLS_IMGLEFT, CLS_IMGCENTER, CLS_IMGBREAK, CLS_CAPTION, CLS_RTE_CAPTION, CLS_CAPINLINE, CLS_IMGINLINE, CLS_COUNT, CLS_WARNING, CLS_ERROR, CLS_ICONS, CLS_ACTIVE, CLS_EXPAND_OPEN, CLS_RTE_ELEMENTS, CLS_TB_BTN, CLS_HR_SEPARATOR, CLS_TB_IOS_FIX, CLS_LIST_PRIMARY_CONTENT, CLS_NUMBERFORMATLIST_TB_BTN, CLS_BULLETFORMATLIST_TB_BTN, CLS_FORMATS_TB_BTN, CLS_FONT_NAME_TB_BTN, CLS_FONT_SIZE_TB_BTN, CLS_ALIGN_TB_BTN, CLS_FONT_COLOR_TARGET, CLS_BACKGROUND_COLOR_TARGET, CLS_COLOR_CONTENT, CLS_FONT_COLOR_DROPDOWN, CLS_BACKGROUND_COLOR_DROPDOWN, CLS_COLOR_PALETTE, CLS_FONT_COLOR_PICKER, CLS_BACKGROUND_COLOR_PICKER, CLS_RTE_READONLY, CLS_TABLE_SEL, CLS_TB_DASH_BOR, CLS_TB_ALT_BOR, CLS_TB_COL_RES, CLS_TB_ROW_RES, CLS_TB_BOX_RES, CLS_RTE_HIDDEN, CLS_RTE_PASTE_KEEP_FORMAT, CLS_RTE_PASTE_REMOVE_FORMAT, CLS_RTE_PASTE_PLAIN_FORMAT, CLS_RTE_PASTE_OK, CLS_RTE_PASTE_CANCEL, CLS_RTE_DIALOG_MIN_HEIGHT, CLS_RTE_RES_HANDLE, CLS_RTE_RES_EAST, CLS_RTE_IMAGE, CLS_RESIZE, CLS_IMG_FOCUS, CLS_RTE_DRAG_IMAGE, CLS_RTE_UPLOAD_POPUP, CLS_POPUP_OPEN, CLS_IMG_RESIZE, CLS_DROPAREA, CLS_IMG_INNER, CLS_UPLOAD_FILES, CLS_RTE_DIALOG_UPLOAD, CLS_RTE_RES_CNT, CLS_CUSTOM_TILE, CLS_NOCOLOR_ITEM, CLS_TABLE, CLS_TABLE_BORDER, CLS_RTE_TABLE_RESIZE, CLS_RTE_FIXED_TB_EXPAND, CLS_RTE_TB_ENABLED, getIndex, hasClass, getDropDownValue, isIDevice, getFormattedFontSize, pageYOffset, getTooltipText, setToolbarStatus, getCollection, getTBarItemsIndex, updateUndoRedoStatus, dispatchEvent, parseHtml, getTextNodesUnder, toObjectLowerCase, getEditValue, updateTextNode, getDefaultValue, isEditableValueEmpty, decode, sanitizeHelper, convertToBlob, getLocaleFontFormat, updateDropDownFontFormatLocale, ServiceLocator, RendererFactory, EditorManager, IMAGE, TABLE, LINK, INSERT_ROW, INSERT_COLUMN, DELETEROW, DELETECOLUMN, REMOVETABLE, TABLEHEADER, TABLE_VERTICAL_ALIGN, TABLE_MERGE, TABLE_VERTICAL_SPLIT, TABLE_HORIZONTAL_SPLIT, TABLE_MOVE, ALIGNMENT_TYPE, INDENT_TYPE, DEFAULT_TAG, BLOCK_TAGS, IGNORE_BLOCK_TAGS, TABLE_BLOCK_TAGS, SELECTION_TYPE, INSERTHTML_TYPE, INSERT_TEXT_TYPE, CLEAR_TYPE, SELF_CLOSING_TAGS, CLASS_IMAGE_RIGHT, CLASS_IMAGE_LEFT, CLASS_IMAGE_CENTER, CLASS_IMAGE_BREAK, CLASS_CAPTION, CLASS_RTE_CAPTION, CLASS_CAPTION_INLINE, CLASS_IMAGE_INLINE, Lists, markerClassName, DOMNode, Alignments, Indents, Formats, LinkCommand, InsertMethods, InsertTextExec, InsertHtmlExec, InsertHtml, IsFormatted, MsWordPaste, NodeCutter, ImageCommand, SelectionCommands, SelectionBasedExec, ClearFormatExec, UndoRedoManager, TableCommand, statusCollection, ToolbarStatus, NodeSelection, MarkdownParser, LISTS_COMMAND, selectionCommand, LINK_COMMAND, CLEAR_COMMAND, MD_TABLE, ClearFormat, MDLists, MDFormats, MarkdownSelection, UndoRedoCommands, MDSelectionFormats, MDLink, MDTable, markdownFormatTags, markdownSelectionTags, markdownListsTags, htmlKeyConfig, markdownKeyConfig, pasteCleanupGroupingTags, listConversionFilters, selfClosingTags, KEY_DOWN, ACTION, FORMAT_TYPE, KEY_DOWN_HANDLER, LIST_TYPE, KEY_UP_HANDLER, KEY_UP, MODEL_CHANGED_PLUGIN, MODEL_CHANGED, MS_WORD_CLEANUP_PLUGIN, MS_WORD_CLEANUP, ON_BEGIN, SPACE_ACTION };
27586
+ export { Toolbar$2 as Toolbar, KeyboardEvents$1 as KeyboardEvents, BaseToolbar, BaseQuickToolbar, QuickToolbar, Count, ColorPickerInput, MarkdownToolbarStatus, ExecCommandCallBack, ToolbarAction, MarkdownEditor, HtmlEditor, PasteCleanup, Resize, DropDownButtons, FileManager$1 as FileManager, FullScreen, setAttributes, HtmlToolbarStatus, XhtmlValidation, HTMLFormatter, Formatter, MarkdownFormatter, ContentRender, Render, ToolbarRenderer, Link, Image, ViewSource, Table, DialogRenderer, IframeContentRender, MarkdownRender, PopupRenderer, RichTextEditor, RenderType, ToolbarType, DialogType, executeGroup, created, destroyed, load, initialLoad, contentChanged, initialEnd, iframeMouseDown, destroy, toolbarClick, toolbarRefresh, refreshBegin, toolbarUpdated, bindOnEnd, renderColorPicker, htmlToolbarClick, markdownToolbarClick, destroyColorPicker, modelChanged, keyUp, keyDown, mouseUp, toolbarCreated, toolbarRenderComplete, enableFullScreen, disableFullScreen, dropDownSelect, beforeDropDownItemRender, execCommandCallBack, imageToolbarAction, linkToolbarAction, windowResize, resizeStart, onResize, resizeStop, undo, redo, insertLink, unLink, editLink, openLink, actionBegin, actionComplete, updatedToolbarStatus, actionSuccess, updateToolbarItem, insertImage, insertCompleted, imageLeft, imageRight, imageCenter, imageBreak, imageInline, imageLink, imageAlt, imageDelete, imageCaption, imageSize, sourceCode, updateSource, toolbarOpen, beforeDropDownOpen, selectionSave, selectionRestore, expandPopupClick, count, contentFocus, contentBlur, mouseDown, sourceCodeMouseDown, editAreaClick, scroll, contentscroll, colorPickerChanged, tableColorPickerChanged, focusChange, selectAll$1 as selectAll, selectRange, getSelectedHtml, renderInlineToolbar, paste, imgModule, rtlMode, createTable, docClick, tableToolbarAction, checkUndo, readOnlyMode, pasteClean, enterHandler, beforeDialogOpen, clearDialogObj, dialogOpen, beforeDialogClose, dialogClose, beforeQuickToolbarOpen, quickToolbarOpen, quickToolbarClose, popupHide, imageSelected, imageUploading, imageUploadSuccess, imageUploadFailed, imageRemoving, mediaSelected, mediaUploading, mediaUploadSuccess, mediaUploadFailed, mediaRemoving, afterImageDelete, afterMediaDelete, drop, xhtmlValidation, beforeImageUpload, beforeMediaUpload, resizeInitialized, renderFileManager, beforeImageDrop, dynamicModule, beforePasteCleanup, afterPasteCleanup, updateTbItemsStatus, showLinkDialog, closeLinkDialog, showImageDialog, closeImageDialog, closeAudioDialog, showTableDialog, closeTableDialog, bindCssClass, blockInlineEmptyNodes, CLS_RTE, CLS_RTL, CLS_CONTENT, CLS_DISABLED, CLS_SCRIPT_SHEET, CLS_STYLE_SHEET, CLS_TOOLBAR, CLS_TB_FIXED, CLS_TB_FLOAT, CLS_TB_ABS_FLOAT, CLS_INLINE, CLS_TB_INLINE, CLS_RTE_EXPAND_TB, CLS_FULL_SCREEN, CLS_QUICK_TB, CLS_POP, CLS_TB_STATIC, CLS_QUICK_POP, CLS_QUICK_DROPDOWN, CLS_IMAGE_POP, CLS_INLINE_POP, CLS_INLINE_DROPDOWN, CLS_DROPDOWN_POPUP, CLS_DROPDOWN_ICONS, CLS_DROPDOWN_ITEMS, CLS_DROPDOWN_BTN, CLS_RTE_CONTENT, CLS_TB_ITEM, CLS_TB_EXTENDED, CLS_TB_WRAP, CLS_POPUP, CLS_SEPARATOR, CLS_MINIMIZE, CLS_MAXIMIZE, CLS_BACK, CLS_SHOW, CLS_HIDE, CLS_VISIBLE, CLS_FOCUS, CLS_RM_WHITE_SPACE, CLS_IMGRIGHT, CLS_IMGLEFT, CLS_IMGCENTER, CLS_IMGBREAK, CLS_CAPTION, CLS_RTE_CAPTION, CLS_CAPINLINE, CLS_IMGINLINE, CLS_COUNT, CLS_WARNING, CLS_ERROR, CLS_ICONS, CLS_ACTIVE, CLS_EXPAND_OPEN, CLS_RTE_ELEMENTS, CLS_TB_BTN, CLS_HR_SEPARATOR, CLS_TB_IOS_FIX, CLS_LIST_PRIMARY_CONTENT, CLS_NUMBERFORMATLIST_TB_BTN, CLS_BULLETFORMATLIST_TB_BTN, CLS_FORMATS_TB_BTN, CLS_FONT_NAME_TB_BTN, CLS_FONT_SIZE_TB_BTN, CLS_ALIGN_TB_BTN, CLS_FONT_COLOR_TARGET, CLS_BACKGROUND_COLOR_TARGET, CLS_COLOR_CONTENT, CLS_FONT_COLOR_DROPDOWN, CLS_BACKGROUND_COLOR_DROPDOWN, CLS_COLOR_PALETTE, CLS_FONT_COLOR_PICKER, CLS_BACKGROUND_COLOR_PICKER, CLS_RTE_READONLY, CLS_TABLE_SEL, CLS_TB_DASH_BOR, CLS_TB_ALT_BOR, CLS_TB_COL_RES, CLS_TB_ROW_RES, CLS_TB_BOX_RES, CLS_RTE_HIDDEN, CLS_RTE_PASTE_KEEP_FORMAT, CLS_RTE_PASTE_REMOVE_FORMAT, CLS_RTE_PASTE_PLAIN_FORMAT, CLS_RTE_PASTE_OK, CLS_RTE_PASTE_CANCEL, CLS_RTE_DIALOG_MIN_HEIGHT, CLS_RTE_RES_HANDLE, CLS_RTE_RES_EAST, CLS_RTE_IMAGE, CLS_RESIZE, CLS_IMG_FOCUS, CLS_RTE_DRAG_IMAGE, CLS_RTE_UPLOAD_POPUP, CLS_POPUP_OPEN, CLS_IMG_RESIZE, CLS_DROPAREA, CLS_IMG_INNER, CLS_UPLOAD_FILES, CLS_RTE_DIALOG_UPLOAD, CLS_RTE_RES_CNT, CLS_CUSTOM_TILE, CLS_NOCOLOR_ITEM, CLS_TABLE, CLS_TABLE_BORDER, CLS_RTE_TABLE_RESIZE, CLS_RTE_FIXED_TB_EXPAND, CLS_RTE_TB_ENABLED, CLS_RTE_RES_WEST, getIndex, hasClass, getDropDownValue, isIDevice, getFormattedFontSize, pageYOffset, getTooltipText, setToolbarStatus, getCollection, getTBarItemsIndex, updateUndoRedoStatus, dispatchEvent, parseHtml, getTextNodesUnder, toObjectLowerCase, getEditValue, updateTextNode, getDefaultValue, isEditableValueEmpty, decode, sanitizeHelper, convertToBlob, getLocaleFontFormat, updateDropDownFontFormatLocale, ServiceLocator, RendererFactory, EditorManager, IMAGE, TABLE, LINK, INSERT_ROW, INSERT_COLUMN, DELETEROW, DELETECOLUMN, REMOVETABLE, TABLEHEADER, TABLE_VERTICAL_ALIGN, TABLE_MERGE, TABLE_VERTICAL_SPLIT, TABLE_HORIZONTAL_SPLIT, TABLE_MOVE, ALIGNMENT_TYPE, INDENT_TYPE, DEFAULT_TAG, BLOCK_TAGS, IGNORE_BLOCK_TAGS, TABLE_BLOCK_TAGS, SELECTION_TYPE, INSERTHTML_TYPE, INSERT_TEXT_TYPE, CLEAR_TYPE, SELF_CLOSING_TAGS, CLASS_IMAGE_RIGHT, CLASS_IMAGE_LEFT, CLASS_IMAGE_CENTER, CLASS_IMAGE_BREAK, CLASS_CAPTION, CLASS_RTE_CAPTION, CLASS_CAPTION_INLINE, CLASS_IMAGE_INLINE, Lists, markerClassName, DOMNode, Alignments, Indents, Formats, LinkCommand, InsertMethods, InsertTextExec, InsertHtmlExec, InsertHtml, IsFormatted, MsWordPaste, NodeCutter, ImageCommand, SelectionCommands, SelectionBasedExec, ClearFormatExec, UndoRedoManager, TableCommand, statusCollection, ToolbarStatus, NodeSelection, MarkdownParser, LISTS_COMMAND, selectionCommand, LINK_COMMAND, CLEAR_COMMAND, MD_TABLE, INSERT_TEXT_COMMAND, ClearFormat, MDLists, MDFormats, MarkdownSelection, UndoRedoCommands, MDSelectionFormats, MDLink, MDTable, markdownFormatTags, markdownSelectionTags, markdownListsTags, htmlKeyConfig, markdownKeyConfig, pasteCleanupGroupingTags, listConversionFilters, selfClosingTags, KEY_DOWN, ACTION, FORMAT_TYPE, KEY_DOWN_HANDLER, LIST_TYPE, KEY_UP_HANDLER, KEY_UP, MODEL_CHANGED_PLUGIN, MODEL_CHANGED, MS_WORD_CLEANUP_PLUGIN, MS_WORD_CLEANUP, ON_BEGIN, SPACE_ACTION };
27331
27587
  //# sourceMappingURL=ej2-richtexteditor.es2015.js.map