@syncfusion/ej2-richtexteditor 20.1.61 → 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 (54) hide show
  1. package/CHANGELOG.md +10 -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 +419 -171
  5. package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
  6. package/dist/es6/ej2-richtexteditor.es5.js +411 -162
  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/markdown-parser/base/constant.d.ts +6 -0
  19. package/src/markdown-parser/base/constant.js +6 -0
  20. package/src/markdown-parser/base/markdown-parser.d.ts +2 -0
  21. package/src/markdown-parser/base/markdown-parser.js +6 -0
  22. package/src/markdown-parser/base/types.d.ts +1 -1
  23. package/src/markdown-parser/plugin/insert-text.d.ts +22 -0
  24. package/src/markdown-parser/plugin/insert-text.js +51 -0
  25. package/src/rich-text-editor/actions/color-picker.js +20 -4
  26. package/src/rich-text-editor/actions/resize.js +4 -3
  27. package/src/rich-text-editor/actions/toolbar.js +4 -2
  28. package/src/rich-text-editor/base/classes.d.ts +5 -0
  29. package/src/rich-text-editor/base/classes.js +5 -0
  30. package/src/rich-text-editor/base/constant.d.ts +40 -0
  31. package/src/rich-text-editor/base/constant.js +41 -1
  32. package/src/rich-text-editor/base/interface.d.ts +2 -0
  33. package/src/rich-text-editor/base/rich-text-editor.d.ts +1 -0
  34. package/src/rich-text-editor/base/rich-text-editor.js +26 -23
  35. package/src/rich-text-editor/base/util.js +3 -3
  36. package/src/rich-text-editor/formatter/formatter.js +1 -1
  37. package/src/rich-text-editor/renderer/iframe-content-renderer.js +1 -1
  38. package/src/rich-text-editor/renderer/image-module.js +38 -37
  39. package/src/rich-text-editor/renderer/link-module.js +16 -14
  40. package/src/rich-text-editor/renderer/markdown-renderer.js +2 -1
  41. package/src/rich-text-editor/renderer/table-module.d.ts +3 -0
  42. package/src/rich-text-editor/renderer/table-module.js +132 -55
  43. package/src/rich-text-editor/renderer/toolbar-renderer.js +11 -1
  44. package/src/rich-text-editor/renderer/view-source.js +1 -1
  45. package/styles/fluent-dark.css +1 -0
  46. package/styles/fluent.css +1 -0
  47. package/styles/rich-text-editor/_fluent-definition.scss +1 -0
  48. package/styles/rich-text-editor/_fusionnew-definition.scss +189 -0
  49. package/styles/rich-text-editor/_layout.scss +3 -0
  50. package/styles/rich-text-editor/_material3-definition.scss +189 -0
  51. package/styles/rich-text-editor/fluent-dark.css +1 -0
  52. package/styles/rich-text-editor/fluent.css +1 -0
  53. package/styles/rich-text-editor/icons/_fusionnew.scss +303 -0
  54. 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
@@ -17118,7 +17281,7 @@ const IFRAMEHEADER = `
17118
17281
  h3+h4, h4+h5, h5+h6{margin-top: 00.6em;}
17119
17282
  ul:last-child{margin-bottom: 0;}
17120
17283
  table { border-collapse: collapse; empty-cells: show;}
17121
- 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;}
17122
17285
  table.e-alternate-border tbody tr:nth-child(2n) {background-color: #F5F5F5;}
17123
17286
  table th {background-color: #E0E0E0;}
17124
17287
  table.e-dashed-border td,table.e-dashed-border th { border: 1px dashed #BDBDBD}
@@ -19034,9 +19197,10 @@ class Resize {
19034
19197
  this.parent.on(destroy, this.destroy, this);
19035
19198
  }
19036
19199
  renderResizable() {
19200
+ let enableRtlClass = (this.parent.enableRtl) ? CLS_RTE_RES_WEST : CLS_RTE_RES_EAST;
19037
19201
  this.resizer = this.parent.createElement('div', {
19038
19202
  id: this.parent.getID() + '-resizable', className: 'e-icons'
19039
- + ' ' + CLS_RTE_RES_HANDLE + ' ' + CLS_RTE_RES_EAST
19203
+ + ' ' + CLS_RTE_RES_HANDLE + ' ' + enableRtlClass
19040
19204
  });
19041
19205
  this.parent.element.classList.add(CLS_RTE_RES_CNT);
19042
19206
  this.parent.element.appendChild(this.resizer);
@@ -19067,12 +19231,12 @@ class Resize {
19067
19231
  const boundRect = this.parent.element.getBoundingClientRect();
19068
19232
  if (this.isMouseEvent(e)) {
19069
19233
  this.parent.element.style.height = e.clientY - boundRect.top + 'px';
19070
- 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';
19071
19235
  }
19072
19236
  else {
19073
19237
  const eventType = Browser.info.name !== 'msie' ? e.touches[0] : e;
19074
19238
  this.parent.element.style.height = eventType.clientY - boundRect.top + 'px';
19075
- 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';
19076
19240
  }
19077
19241
  if (!this.parent.toolbarSettings.enable) {
19078
19242
  this.parent.setContentHeight('', false);
@@ -19938,22 +20102,22 @@ class Link {
19938
20102
  const textPlace = this.i10n.getConstant('textPlaceholder');
19939
20103
  const title = this.i10n.getConstant('linkTitle');
19940
20104
  const linkDialogEle = this.parent.createElement('div', {
19941
- className: 'e-rte-link-dialog', id: this.rteID + '_rtelink'
20105
+ className: 'e-rte-link-dialog' + ' ' + this.parent.cssClass, id: this.rteID + '_rtelink'
19942
20106
  });
19943
20107
  this.parent.element.appendChild(linkDialogEle);
19944
20108
  const linkContent = this.parent.createElement('div', {
19945
- className: 'e-rte-linkcontent', id: this.rteID + '_linkContent'
20109
+ className: 'e-rte-linkcontent' + ' ' + this.parent.cssClass, id: this.rteID + '_linkContent'
19946
20110
  });
19947
20111
  const htmlTextbox = (this.parent.editorMode === 'HTML') ? '<label>' + linkTooltip +
19948
- '</label></div><div class="e-rte-field">' +
19949
- '<input type="text" data-role ="none" spellcheck="false" placeholder = "' + title + '" class="e-input e-rte-linkTitle"></div>' +
19950
- '<div class="e-rte-label"></div>' + '<div class="e-rte-field">' +
19951
- '<input type="checkbox" class="e-rte-linkTarget" data-role ="none"></div>' : '';
19952
- const content = '<div class="e-rte-label"><label>' + linkWebAddress + '</label></div>' + '<div class="e-rte-field">' +
19953
- '<input type="text" data-role ="none" spellcheck="false" placeholder="' + urlPlace + '" class="e-input e-rte-linkurl"/></div>' +
19954
- '<div class="e-rte-label">' + '<label>' + linkDisplayText + '</label></div><div class="e-rte-field"> ' +
19955
- '<input type="text" data-role ="none" spellcheck="false" class="e-input e-rte-linkText" placeholder="' + textPlace + '">' +
19956
- '</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;
19957
20121
  const contentElem = parseHtml(content);
19958
20122
  linkContent.appendChild(contentElem);
19959
20123
  const linkTarget = linkContent.querySelector('.e-rte-linkTarget');
@@ -19981,9 +20145,9 @@ class Link {
19981
20145
  isModal: Browser.isDevice,
19982
20146
  buttons: [{
19983
20147
  click: this.insertlink.bind(selectObj),
19984
- buttonModel: { content: linkInsert, cssClass: 'e-flat e-insertLink', isPrimary: true }
20148
+ buttonModel: { content: linkInsert, cssClass: 'e-flat e-insertLink' + ' ' + this.parent.cssClass, isPrimary: true }
19985
20149
  },
19986
- { 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 } }],
19987
20151
  target: (Browser.isDevice) ? document.body : this.parent.element,
19988
20152
  animationSettings: { effect: 'None' },
19989
20153
  close: (event) => {
@@ -20127,8 +20291,10 @@ class Link {
20127
20291
  if (this.parent.formatter.getUndoRedoStack().length === 0) {
20128
20292
  this.parent.formatter.saveData();
20129
20293
  }
20294
+ const selectParentEle = this.getAnchorNode(e.selectParent[0]);
20130
20295
  this.parent.formatter.process(this.parent, e.args, e.args, {
20131
20296
  selectNode: e.selectNode, selectParent: e.selectParent, selection: e.selection,
20297
+ text: selectParentEle.innerText,
20132
20298
  subCommand: e.args.item.subCommand
20133
20299
  });
20134
20300
  if (isIDevice$1() && this.parent.iframeSettings.enable) {
@@ -20143,7 +20309,7 @@ class Link {
20143
20309
  const selectParentEle = this.getAnchorNode(e.selectParent[0]);
20144
20310
  if (selectParentEle.classList.contains('e-rte-anchor') || selectParentEle.tagName === 'A') {
20145
20311
  this.parent.formatter.process(this.parent, e.args, e.args, {
20146
- url: selectParentEle.href,
20312
+ url: selectParentEle.href, text: selectParentEle.innerText,
20147
20313
  target: selectParentEle.target === '' ? '_self' : '_blank', selectNode: e.selectNode,
20148
20314
  subCommand: e.args.item.subCommand
20149
20315
  });
@@ -20461,18 +20627,18 @@ class Image {
20461
20627
  this.resizeBtnInit();
20462
20628
  this.imgEle = e;
20463
20629
  addClass([this.imgEle], 'e-resize');
20464
- 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' });
20465
20631
  this.imgResizeDiv.appendChild(this.parent.createElement('span', {
20466
- 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'
20467
20633
  }));
20468
20634
  this.imgResizeDiv.appendChild(this.parent.createElement('span', {
20469
- 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'
20470
20636
  }));
20471
20637
  this.imgResizeDiv.appendChild(this.parent.createElement('span', {
20472
- 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'
20473
20639
  }));
20474
20640
  this.imgResizeDiv.appendChild(this.parent.createElement('span', {
20475
- 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'
20476
20642
  }));
20477
20643
  if (Browser.isDevice) {
20478
20644
  addClass([this.imgResizeDiv], 'e-mob-rte');
@@ -21134,12 +21300,12 @@ class Image {
21134
21300
  }
21135
21301
  this.imagDialog(e);
21136
21302
  if (!isNullOrUndefined(this.dialogObj)) {
21137
- const linkWrap = this.parent.createElement('div', { className: 'e-img-linkwrap' });
21303
+ const linkWrap = this.parent.createElement('div', { className: 'e-img-linkwrap' + ' ' + this.parent.cssClass });
21138
21304
  const linkUrl = this.i10n.getConstant('linkurl');
21139
- const content = '<div class="e-rte-field">' +
21140
- '<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>' +
21141
21307
  '<div class="e-rte-label"></div>' + '<div class="e-rte-field">' +
21142
- '<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>';
21143
21309
  const contentElem = parseHtml(content);
21144
21310
  linkWrap.appendChild(contentElem);
21145
21311
  const linkTarget = linkWrap.querySelector('.e-rte-linkTarget');
@@ -21178,7 +21344,7 @@ class Image {
21178
21344
  this.insertlink(linkargs);
21179
21345
  },
21180
21346
  buttonModel: {
21181
- content: linkUpdate, cssClass: 'e-flat e-update-link', isPrimary: true
21347
+ content: linkUpdate, cssClass: 'e-flat e-update-link' + ' ' + this.parent.cssClass, isPrimary: true
21182
21348
  }
21183
21349
  }]
21184
21350
  });
@@ -21202,13 +21368,13 @@ class Image {
21202
21368
  this.imagDialog(e);
21203
21369
  const altText = this.i10n.getConstant('altText');
21204
21370
  if (!isNullOrUndefined(this.dialogObj)) {
21205
- const altWrap = this.parent.createElement('div', { className: 'e-img-altwrap' });
21371
+ const altWrap = this.parent.createElement('div', { className: 'e-img-altwrap' + ' ' + this.parent.cssClass });
21206
21372
  const altHeader = this.i10n.getConstant('alternateHeader');
21207
21373
  const linkUpdate = this.i10n.getConstant('dialogUpdate');
21208
21374
  const getAlt = (e.selectNode[0].getAttribute('alt') === null) ? '' :
21209
21375
  e.selectNode[0].getAttribute('alt');
21210
- const content = '<div class="e-rte-field">' +
21211
- '<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 + '"/>' +
21212
21378
  '</div>';
21213
21379
  const contentElem = parseHtml(content);
21214
21380
  altWrap.appendChild(contentElem);
@@ -21225,7 +21391,7 @@ class Image {
21225
21391
  this.insertAlt(altArgs);
21226
21392
  },
21227
21393
  buttonModel: {
21228
- content: linkUpdate, cssClass: 'e-flat e-update-alt', isPrimary: true
21394
+ content: linkUpdate, cssClass: 'e-flat e-update-alt' + ' ' + this.parent.cssClass, isPrimary: true
21229
21395
  }
21230
21396
  }]
21231
21397
  });
@@ -21391,11 +21557,11 @@ class Image {
21391
21557
  }
21392
21558
  else {
21393
21559
  this.captionEle = this.parent.createElement('span', {
21394
- className: CLS_CAPTION + ' ' + CLS_RTE_CAPTION,
21560
+ className: CLS_CAPTION + ' ' + CLS_RTE_CAPTION + ' ' + this.parent.cssClass,
21395
21561
  attrs: { contenteditable: 'false', draggable: 'false', style: 'width:' + this.parent.insertImageSettings.width }
21396
21562
  });
21397
- const imgWrap = this.parent.createElement('span', { className: 'e-img-wrap' });
21398
- 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,
21399
21565
  attrs: { contenteditable: 'true' } });
21400
21566
  const parent = e.selectNode[0].parentElement;
21401
21567
  if (parent.tagName === 'A') {
@@ -21447,7 +21613,7 @@ class Image {
21447
21613
  this.insertSize(selectObj);
21448
21614
  },
21449
21615
  buttonModel: {
21450
- content: linkUpdate, cssClass: 'e-flat e-update-size', isPrimary: true
21616
+ content: linkUpdate, cssClass: 'e-flat e-update-size' + ' ' + this.parent.cssClass, isPrimary: true
21451
21617
  }
21452
21618
  }]
21453
21619
  });
@@ -21491,7 +21657,7 @@ class Image {
21491
21657
  this.dialogObj.hide({ returnValue: true });
21492
21658
  return;
21493
21659
  }
21494
- 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' });
21495
21661
  this.parent.element.appendChild(imgDialog);
21496
21662
  const imgInsert = this.i10n.getConstant('dialogInsert');
21497
21663
  const imglinkCancel = this.i10n.getConstant('dialogCancel');
@@ -21500,7 +21666,7 @@ class Image {
21500
21666
  const selectObj = { selfImage: this, selection: e.selection, args: e.args, selectParent: e.selectParent };
21501
21667
  const dialogModel = {
21502
21668
  header: imgHeader,
21503
- cssClass: CLS_RTE_ELEMENTS,
21669
+ cssClass: CLS_RTE_ELEMENTS + ' ' + this.parent.cssClass,
21504
21670
  enableRtl: this.parent.enableRtl,
21505
21671
  locale: this.parent.locale,
21506
21672
  showCloseIcon: true, closeOnEscape: true, width: (Browser.isDevice) ? '290px' : '340px', height: 'inherit',
@@ -21508,13 +21674,13 @@ class Image {
21508
21674
  isModal: Browser.isDevice,
21509
21675
  buttons: [{
21510
21676
  click: this.insertImageUrl.bind(selectObj),
21511
- 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 }
21512
21678
  },
21513
21679
  {
21514
21680
  click: (e) => {
21515
21681
  this.cancelDialog(e);
21516
21682
  },
21517
- buttonModel: { cssClass: 'e-flat e-cancel', content: imglinkCancel }
21683
+ buttonModel: { cssClass: 'e-flat e-cancel' + ' ' + this.parent.cssClass, content: imglinkCancel }
21518
21684
  }],
21519
21685
  target: (Browser.isDevice) ? document.body : this.parent.element,
21520
21686
  animationSettings: { effect: 'None' },
@@ -21537,12 +21703,12 @@ class Image {
21537
21703
  this.dialogObj = null;
21538
21704
  }
21539
21705
  };
21540
- const dialogContent = this.parent.createElement('div', { className: 'e-img-content' });
21706
+ const dialogContent = this.parent.createElement('div', { className: 'e-img-content' + ' ' + this.parent.cssClass });
21541
21707
  if ((!isNullOrUndefined(this.parent.insertImageSettings.path) && this.parent.editorMode === 'Markdown')
21542
21708
  || this.parent.editorMode === 'HTML') {
21543
21709
  dialogContent.appendChild(this.imgUpload(e));
21544
21710
  }
21545
- const linkHeader = this.parent.createElement('div', { className: 'e-linkheader' });
21711
+ const linkHeader = this.parent.createElement('div', { className: 'e-linkheader' + ' ' + this.parent.cssClass });
21546
21712
  const linkHeaderText = this.i10n.getConstant('imageLinkHeader');
21547
21713
  if (this.parent.editorMode === 'HTML') {
21548
21714
  linkHeader.innerHTML = linkHeaderText;
@@ -21614,7 +21780,8 @@ class Image {
21614
21780
  }
21615
21781
  /* eslint-enable */
21616
21782
  }
21617
- if (!(this.parent.iframeSettings.enable && this.parent.currentTarget.nodeName === 'IMG') && 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 &&
21618
21785
  this.quickToolObj.imageQTBar && this.quickToolObj.imageQTBar.element.contains(e.target)) &&
21619
21786
  this.contentModule.getEditPanel().contains(this.imgResizeDiv)) {
21620
21787
  this.cancelResizeAction();
@@ -21643,10 +21810,10 @@ class Image {
21643
21810
  }
21644
21811
  // eslint-disable-next-line
21645
21812
  imageUrlPopup(e) {
21646
- const imgUrl = this.parent.createElement('div', { className: 'imgUrl' });
21813
+ const imgUrl = this.parent.createElement('div', { className: 'imgUrl' + ' ' + this.parent.cssClass });
21647
21814
  const placeUrl = this.i10n.getConstant('imageUrl');
21648
21815
  this.inputUrl = this.parent.createElement('input', {
21649
- className: 'e-input e-img-url',
21816
+ className: 'e-input e-img-url' + ' ' + this.parent.cssClass,
21650
21817
  attrs: { placeholder: placeUrl, spellcheck: 'false' }
21651
21818
  });
21652
21819
  this.inputUrl.addEventListener('input', () => {
@@ -21712,7 +21879,7 @@ class Image {
21712
21879
  const selectNode = e.selectNode[0];
21713
21880
  const imgHeight = this.i10n.getConstant('imageHeight');
21714
21881
  const imgWidth = this.i10n.getConstant('imageWidth');
21715
- const imgSizeWrap = this.parent.createElement('div', { className: 'e-img-sizewrap' });
21882
+ const imgSizeWrap = this.parent.createElement('div', { className: 'e-img-sizewrap' + ' ' + this.parent.cssClass });
21716
21883
  const widthVal = isNullOrUndefined(this.changedWidthValue) && (selectNode.style.width.toString() === 'auto' ||
21717
21884
  selectNode.style.width !== '') ? selectNode.style.width : !isNullOrUndefined(this.changedWidthValue) ?
21718
21885
  this.changedWidthValue : (parseInt(selectNode.getClientRects()[0].width.toString(), 10)).toString();
@@ -21721,12 +21888,12 @@ class Image {
21721
21888
  this.changedHeightValue : (parseInt(selectNode.getClientRects()[0].height.toString(), 10)).toString();
21722
21889
  this.changedWidthValue = null;
21723
21890
  this.changedHeightValue = null;
21724
- const content = '<div class="e-rte-label"><label>' + imgWidth +
21725
- '</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=' +
21726
21893
  widthVal
21727
21894
  + ' /></div>' +
21728
- '<div class="e-rte-label">' + '<label>' + imgHeight + '</label></div><div class="e-rte-field"> ' +
21729
- '<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=' +
21730
21897
  heightVal
21731
21898
  + ' /></div>';
21732
21899
  const contentElem = parseHtml(content);
@@ -21815,16 +21982,16 @@ class Image {
21815
21982
  save = e.selection;
21816
21983
  selectParent = e.selectParent;
21817
21984
  }
21818
- 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 });
21819
21986
  const deviceImgUpMsg = this.i10n.getConstant('imageDeviceUploadMessage');
21820
21987
  const imgUpMsg = this.i10n.getConstant('imageUploadMessage');
21821
- const span = this.parent.createElement('span', { className: 'e-droptext' });
21988
+ const span = this.parent.createElement('span', { className: 'e-droptext' + ' ' + this.parent.cssClass });
21822
21989
  const spanMsg = this.parent.createElement('span', {
21823
- className: 'e-rte-upload-text', innerHTML: ((Browser.isDevice) ? deviceImgUpMsg : imgUpMsg)
21990
+ className: 'e-rte-upload-text' + ' ' + this.parent.cssClass, innerHTML: ((Browser.isDevice) ? deviceImgUpMsg : imgUpMsg)
21824
21991
  });
21825
21992
  span.appendChild(spanMsg);
21826
21993
  const btnEle = this.parent.createElement('button', {
21827
- 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' }
21828
21995
  });
21829
21996
  span.appendChild(btnEle);
21830
21997
  uploadParentEle.appendChild(span);
@@ -21836,7 +22003,7 @@ class Image {
21836
22003
  const btnClick = (Browser.isDevice) ? span : btnEle;
21837
22004
  EventHandler.add(btnClick, 'click', this.fileSelect, this);
21838
22005
  const uploadEle = this.parent.createElement('input', {
21839
- id: this.rteID + '_upload', attrs: { type: 'File', name: 'UploadFiles' }
22006
+ id: this.rteID + '_upload', attrs: { type: 'File', name: 'UploadFiles' }, className: this.parent.cssClass
21840
22007
  });
21841
22008
  uploadParentEle.appendChild(uploadEle);
21842
22009
  let altText;
@@ -22518,7 +22685,7 @@ class ViewSource {
22518
22685
  this.parent.formatter.editorManager.observer.off(KEY_DOWN_HANDLER, this.onKeyDown);
22519
22686
  }
22520
22687
  getSourceCode() {
22521
- return this.parent.createElement('textarea', { className: 'e-rte-srctextarea' });
22688
+ return this.parent.createElement('textarea', { className: 'e-rte-srctextarea' + ' ' + this.parent.cssClass });
22522
22689
  }
22523
22690
  wireEvent(element) {
22524
22691
  this.keyboardModule = new KeyboardEvents$1(element, {
@@ -22749,6 +22916,8 @@ class Table {
22749
22916
  this.pageX = null;
22750
22917
  this.pageY = null;
22751
22918
  this.moveEle = null;
22919
+ this.currentColumnResize = '';
22920
+ this.currentMarginLeft = 0;
22752
22921
  this.parent = parent;
22753
22922
  this.rteID = parent.element.id;
22754
22923
  this.l10n = serviceLocator.getService('rteLocale');
@@ -22916,6 +23085,7 @@ class Table {
22916
23085
  }
22917
23086
  else if (ele && ele.querySelectorAll('table').length > 0) {
22918
23087
  this.removeResizeElement();
23088
+ this.hideTableQuickToolbar();
22919
23089
  }
22920
23090
  }
22921
23091
  if (ele && ele.tagName !== 'TD' && ele.tagName !== 'TH') {
@@ -23292,7 +23462,7 @@ class Table {
23292
23462
  }
23293
23463
  tableResizeEleCreation(table, e) {
23294
23464
  this.parent.preventDefaultResize(e);
23295
- const columns = Array.prototype.slice.call(table.rows[this.calMaxCol(table)].cells, 1);
23465
+ const columns = table.rows[this.calMaxCol(table)].cells;
23296
23466
  const rows = [];
23297
23467
  for (let i = 0; i < table.rows.length; i++) {
23298
23468
  rows.push(Array.prototype.slice.call(table.rows[i].cells, 0, 1)[0]);
@@ -23300,15 +23470,21 @@ class Table {
23300
23470
  const height = parseInt(getComputedStyle(table).height, 10);
23301
23471
  const width = parseInt(getComputedStyle(table).width, 10);
23302
23472
  const pos = this.calcPos(table);
23303
- for (let i = 0; columns.length > i; i++) {
23473
+ for (let i = 0; columns.length >= i; i++) {
23304
23474
  const colReEle = this.parent.createElement('span', {
23305
23475
  attrs: {
23306
- 'data-col': (i + 1).toString(), 'unselectable': 'on', 'contenteditable': 'false'
23476
+ 'data-col': (i).toString(), 'unselectable': 'on', 'contenteditable': 'false'
23307
23477
  }
23308
23478
  });
23309
23479
  colReEle.classList.add(CLS_RTE_TABLE_RESIZE, CLS_TB_COL_RES);
23310
- colReEle.style.cssText = 'height: ' + height + 'px; width: 4px; top: ' + pos.top +
23311
- '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
+ }
23312
23488
  this.contentModule.getEditPanel().appendChild(colReEle);
23313
23489
  }
23314
23490
  for (let i = 0; rows.length > i; i++) {
@@ -23326,7 +23502,7 @@ class Table {
23326
23502
  this.contentModule.getEditPanel().appendChild(rowReEle);
23327
23503
  }
23328
23504
  const tableReBox = this.parent.createElement('span', {
23329
- className: CLS_TB_BOX_RES, attrs: {
23505
+ className: CLS_TB_BOX_RES + ' ' + this.parent.cssClass, attrs: {
23330
23506
  'data-col': columns.length.toString(), 'unselectable': 'on', 'contenteditable': 'false'
23331
23507
  }
23332
23508
  });
@@ -23424,7 +23600,19 @@ class Table {
23424
23600
  this.hideTableQuickToolbar();
23425
23601
  if (target.classList.contains(CLS_TB_COL_RES)) {
23426
23602
  this.resizeBtnStat.column = true;
23427
- 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
+ }
23428
23616
  this.colIndex = this.columnEle.cellIndex;
23429
23617
  this.moveEle = e.target;
23430
23618
  this.appendHelper();
@@ -23468,7 +23656,7 @@ class Table {
23468
23656
  }
23469
23657
  appendHelper() {
23470
23658
  this.helper = this.parent.createElement('div', {
23471
- className: 'e-table-rhelper'
23659
+ className: 'e-table-rhelper' + ' ' + this.parent.cssClass
23472
23660
  });
23473
23661
  if (Browser.isDevice) {
23474
23662
  this.helper.classList.add('e-reicon');
@@ -23481,7 +23669,8 @@ class Table {
23481
23669
  if (this.resizeBtnStat.column) {
23482
23670
  this.helper.classList.add('e-column-helper');
23483
23671
  this.helper.style.cssText = 'height: ' + getComputedStyle(this.curTable).height + '; top: ' +
23484
- 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;';
23485
23674
  }
23486
23675
  else {
23487
23676
  this.helper.classList.add('e-row-helper');
@@ -23493,7 +23682,8 @@ class Table {
23493
23682
  updateHelper() {
23494
23683
  const pos = this.calcPos(this.curTable);
23495
23684
  if (this.resizeBtnStat.column) {
23496
- 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;
23497
23687
  this.helper.style.left = left + 'px';
23498
23688
  }
23499
23689
  else {
@@ -23515,7 +23705,7 @@ class Table {
23515
23705
  resizing(e) {
23516
23706
  const pageX = this.getPointX(e);
23517
23707
  const pageY = this.getPointY(e);
23518
- const mouseX = (this.parent.enableRtl) ? -(pageX - this.pageX) : (pageX - this.pageX);
23708
+ let mouseX = (this.parent.enableRtl) ? -(pageX - this.pageX) : (pageX - this.pageX);
23519
23709
  const mouseY = (this.parent.enableRtl) ? -(pageY - this.pageY) : (pageY - this.pageY);
23520
23710
  this.pageX = pageX;
23521
23711
  this.pageY = pageY;
@@ -23531,23 +23721,66 @@ class Table {
23531
23721
  const paddingSize = +getComputedStyle(this.contentModule.getEditPanel()).paddingRight.match(/\d/g).join('');
23532
23722
  const rteWidth = this.contentModule.getEditPanel().offsetWidth - (this.contentModule.getEditPanel().offsetWidth -
23533
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
+ }
23534
23734
  if (this.resizeBtnStat.column) {
23535
- const cellColl = this.curTable.rows[this.calMaxCol(this.curTable)].cells;
23536
23735
  const width = parseFloat(this.columnEle.offsetWidth.toString());
23537
- const actualwid = width - mouseX;
23538
- const totalwid = parseFloat(this.columnEle.offsetWidth.toString()) +
23539
- parseFloat(cellColl[this.colIndex - 1].offsetWidth.toString());
23540
- for (let i = 0; i < this.curTable.rows.length; i++) {
23541
- if ((totalwid - actualwid) > 20 && actualwid > 20) {
23542
- const leftColumnWidth = totalwid - actualwid;
23543
- const rightColWidth = actualwid;
23544
- if (!isNullOrUndefined(this.curTable.rows[i].cells[this.colIndex - 1])) {
23545
- this.curTable.rows[i].cells[this.colIndex - 1].style.width =
23546
- 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) + '%';
23751
+ }
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) + '%';
23547
23764
  }
23548
- if (!isNullOrUndefined(this.curTable.rows[i].cells[this.colIndex])) {
23549
- this.curTable.rows[i].cells[this.colIndex].style.width =
23550
- this.convertPixelToPercentage(rightColWidth, tableWidth) + '%';
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
+ }
23551
23784
  }
23552
23785
  }
23553
23786
  }
@@ -23571,7 +23804,7 @@ class Table {
23571
23804
  EventHandler.remove(this.contentModule.getEditPanel(), 'mouseover', this.resizeHelper);
23572
23805
  }
23573
23806
  const widthType = this.curTable.style.width.indexOf('%') > -1;
23574
- this.curTable.style.width = widthType ? this.convertPixelToPercentage(tableWidth + mouseX, rteWidth) + '%'
23807
+ this.curTable.style.width = widthType ? this.convertPixelToPercentage(tableWidth + mouseX, widthCompare) + '%'
23575
23808
  : tableWidth + mouseX + 'px';
23576
23809
  this.curTable.style.height = tableHeight + mouseY + 'px';
23577
23810
  tableReBox.classList.add('e-rbox-select');
@@ -23581,6 +23814,17 @@ class Table {
23581
23814
  }
23582
23815
  });
23583
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
+ }
23584
23828
  convertPixelToPercentage(value, offsetValue) {
23585
23829
  return (value / offsetValue) * 100;
23586
23830
  }
@@ -23599,14 +23843,14 @@ class Table {
23599
23843
  EventHandler.add(this.contentModule.getEditPanel(), 'mouseover', this.resizeHelper, this);
23600
23844
  }
23601
23845
  this.removeResizeElement();
23602
- if (this.helper && this.contentModule.getEditPanel().contains(this.helper)) {
23603
- detach(this.helper);
23604
- this.helper = null;
23605
- }
23606
- this.pageX = null;
23607
- this.pageY = null;
23608
- this.moveEle = null;
23609
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;
23610
23854
  const args = { event: e, requestType: 'table' };
23611
23855
  this.parent.trigger(resizeStop, args);
23612
23856
  this.parent.formatter.saveData();
@@ -23660,16 +23904,16 @@ class Table {
23660
23904
  this.hideTableQuickToolbar();
23661
23905
  const header = '1X1';
23662
23906
  const insertbtn = this.l10n.getConstant('inserttablebtn');
23663
- this.dlgDiv = this.parent.createElement('div', { className: 'e-rte-table-popup', id: this.rteID + '_table' });
23664
- 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 });
23665
23909
  this.tblHeader.innerHTML = header;
23666
23910
  this.dlgDiv.appendChild(this.tblHeader);
23667
- 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 });
23668
23912
  this.drawTable(tableDiv, args);
23669
23913
  this.dlgDiv.appendChild(tableDiv);
23670
- 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 }));
23671
23915
  const btnEle = this.parent.createElement('button', {
23672
- className: 'e-insert-table-btn', id: this.rteID + '_insertTable',
23916
+ className: 'e-insert-table-btn' + ' ' + this.parent.cssClass, id: this.rteID + '_insertTable',
23673
23917
  attrs: { type: 'button', tabindex: '0' }
23674
23918
  });
23675
23919
  if (!isNullOrUndefined(this.parent.getToolbarElement().querySelector('.e-expended-nav'))) {
@@ -23731,7 +23975,7 @@ class Table {
23731
23975
  !target.offsetParent.classList.contains('e-quick-dropdown') &&
23732
23976
  !target.offsetParent.classList.contains('e-rte-backgroundcolor-dropdown') && !closest(target, '.e-rte-dropdown-popup')
23733
23977
  && !closest(target, '.e-rte-elements')) {
23734
- removeClass(this.parent.element.querySelectorAll('table td'), CLS_TABLE_SEL);
23978
+ removeClass(this.parent.inputElement.querySelectorAll('table td'), CLS_TABLE_SEL);
23735
23979
  if (!Browser.isIE) {
23736
23980
  this.hideTableQuickToolbar();
23737
23981
  }
@@ -23745,10 +23989,10 @@ class Table {
23745
23989
  let rowDiv;
23746
23990
  let tableCell;
23747
23991
  for (let row = 0; row < 3; row++) {
23748
- 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 } });
23749
23993
  for (let col = 0; col < 10; col++) {
23750
23994
  const display = (row > 2) ? 'none' : 'inline-block';
23751
- 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 } });
23752
23996
  rowDiv.appendChild(tableCell);
23753
23997
  tableCell.style.display = display;
23754
23998
  if (col === 0 && row === 0) {
@@ -23771,13 +24015,13 @@ class Table {
23771
24015
  height: 'initial', width: '290px', content: editContent, header: editHeader,
23772
24016
  buttons: [{
23773
24017
  click: this.applyProperties.bind(this, args),
23774
- 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 }
23775
24019
  },
23776
24020
  {
23777
24021
  click: (e) => {
23778
24022
  this.cancelDialog(e);
23779
24023
  },
23780
- buttonModel: { cssClass: 'e-flat e-cancel', content: cancel }
24024
+ buttonModel: { cssClass: 'e-flat e-cancel' + ' ' + this.parent.cssClass, content: cancel }
23781
24025
  }],
23782
24026
  cssClass: this.parent.cssClass
23783
24027
  });
@@ -23801,13 +24045,13 @@ class Table {
23801
24045
  height: 'initial', width: '290px', content: dlgContent,
23802
24046
  buttons: [{
23803
24047
  click: proxy.customTable.bind(this, args),
23804
- 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 }
23805
24049
  },
23806
24050
  {
23807
24051
  click: (e) => {
23808
24052
  proxy.cancelDialog(e);
23809
24053
  },
23810
- buttonModel: { cssClass: 'e-flat e-cancel', content: cancel }
24054
+ buttonModel: { cssClass: 'e-flat e-cancel' + ' ' + proxy.parent.cssClass, content: cancel }
23811
24055
  }]
23812
24056
  });
23813
24057
  if (!isNullOrUndefined(proxy.parent.cssClass)) {
@@ -23819,10 +24063,10 @@ class Table {
23819
24063
  tableCellDlgContent() {
23820
24064
  const tableColumn = this.l10n.getConstant('columns');
23821
24065
  const tableRow = this.l10n.getConstant('rows');
23822
- const tableWrap = this.parent.createElement('div', { className: 'e-cell-wrap' });
23823
- const content = '<div class="e-rte-field"><input type="text" '
23824
- + ' data-role ="none" id="tableColumn" class="e-table-column"/></div>'
23825
- + '<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>';
23826
24070
  const contentElem = parseHtml(content);
23827
24071
  tableWrap.appendChild(contentElem);
23828
24072
  this.columnTextBox = new NumericTextBox({
@@ -23865,7 +24109,7 @@ class Table {
23865
24109
  return;
23866
24110
  }
23867
24111
  const tableDialog = this.parent.createElement('div', {
23868
- className: 'e-rte-edit-table', id: this.rteID + '_tabledialog'
24112
+ className: 'e-rte-edit-table' + ' ' + this.parent.cssClass, id: this.rteID + '_tabledialog'
23869
24113
  });
23870
24114
  this.parent.element.appendChild(tableDialog);
23871
24115
  const insert = this.l10n.getConstant('dialogInsert');
@@ -23880,13 +24124,13 @@ class Table {
23880
24124
  position: { X: 'center', Y: (Browser.isDevice) ? 'center' : 'top' },
23881
24125
  isModal: Browser.isDevice,
23882
24126
  buttons: [{
23883
- 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 }
23884
24128
  },
23885
24129
  {
23886
24130
  click: (e) => {
23887
24131
  this.cancelDialog(e);
23888
24132
  },
23889
- buttonModel: { cssClass: 'e-flat e-cancel', content: cancel }
24133
+ buttonModel: { cssClass: 'e-flat e-cancel' + ' ' + this.parent.cssClass, content: cancel }
23890
24134
  }],
23891
24135
  target: (Browser.isDevice) ? document.body : this.parent.element,
23892
24136
  animationSettings: { effect: 'None' },
@@ -23954,13 +24198,13 @@ class Table {
23954
24198
  const tableWidth = this.l10n.getConstant('tableWidth');
23955
24199
  const cellPadding = this.l10n.getConstant('cellpadding');
23956
24200
  const cellSpacing = this.l10n.getConstant('cellspacing');
23957
- const tableWrap = this.parent.createElement('div', { className: 'e-table-sizewrap' });
24201
+ const tableWrap = this.parent.createElement('div', { className: 'e-table-sizewrap' + ' ' + this.parent.cssClass });
23958
24202
  const widthVal = closest(selectNode, 'table').getClientRects()[0].width;
23959
24203
  const padVal = closest(selectNode, 'td').style.padding;
23960
24204
  const brdSpcVal = closest(selectNode, 'table').getAttribute('cellspacing');
23961
- const content = '<div class="e-rte-field"><input type="text" data-role ="none" id="tableWidth" class="e-table-width" '
23962
- + ' /></div>' + '<div class="e-rte-field"><input type="text" data-role ="none" id="cellPadding" class="e-cell-padding" />'
23963
- + ' </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>';
23964
24208
  const contentElem = parseHtml(content);
23965
24209
  tableWrap.appendChild(contentElem);
23966
24210
  this.tableWidthNum = new NumericTextBox({
@@ -24958,24 +25202,6 @@ var __decorate$1 = (undefined && undefined.__decorate) || function (decorators,
24958
25202
  let RichTextEditor = class RichTextEditor extends Component {
24959
25203
  constructor(options, element) {
24960
25204
  super(options, element);
24961
- this.defaultResetValue = null;
24962
- this.isResizeInitialized = false;
24963
- /**
24964
- * @hidden
24965
- * @deprecated
24966
- */
24967
- this.isFocusOut = false;
24968
- /**
24969
- * @hidden
24970
- * @deprecated
24971
- */
24972
- this.isRTE = false;
24973
- /**
24974
- * @hidden
24975
- * @deprecated
24976
- */
24977
- this.isBlur = true;
24978
- this.needsID = true;
24979
25205
  }
24980
25206
  /**
24981
25207
  * To provide the array of modules needed for component rendering
@@ -25056,6 +25282,14 @@ let RichTextEditor = class RichTextEditor extends Component {
25056
25282
  // eslint-disable-next-line
25057
25283
  (this.enabled) ? this.eventInitializer() : this.unWireEvents();
25058
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
+ }
25059
25293
  /**
25060
25294
  * For internal use only - Initialize the event handler;
25061
25295
  *
@@ -25064,6 +25298,7 @@ let RichTextEditor = class RichTextEditor extends Component {
25064
25298
  * @private
25065
25299
  */
25066
25300
  preRender() {
25301
+ this.initializeValue();
25067
25302
  this.onBlurHandler = this.blurHandler.bind(this);
25068
25303
  this.onFocusHandler = this.focusHandler.bind(this);
25069
25304
  this.onResizeHandler = this.resizeHandler.bind(this);
@@ -25120,11 +25355,18 @@ let RichTextEditor = class RichTextEditor extends Component {
25120
25355
  }
25121
25356
  else {
25122
25357
  this.valueContainer = this.createElement('textarea', {
25123
- id: this.getID() + '-value'
25358
+ id: this.getID() + '-value',
25359
+ attrs: { 'aria-labelledby': this.getID() }
25124
25360
  });
25125
25361
  }
25126
25362
  this.valueContainer.name = this.getID();
25127
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
+ }
25128
25370
  this.element.appendChild(this.valueContainer);
25129
25371
  }
25130
25372
  /**
@@ -25383,12 +25625,12 @@ let RichTextEditor = class RichTextEditor extends Component {
25383
25625
  const range = this.getRange();
25384
25626
  const currentStartContainer = range.startContainer;
25385
25627
  const currentEndContainer = range.endContainer;
25386
- let currentStartOffset = range.startOffset;
25387
- let isSameContainer = currentStartContainer === currentEndContainer ? true : false;
25628
+ const currentStartOffset = range.startOffset;
25629
+ const isSameContainer = currentStartContainer === currentEndContainer ? true : false;
25388
25630
  let currentEndOffset;
25389
25631
  const endNode = range.endContainer.nodeName === '#text' ? range.endContainer.parentElement :
25390
25632
  range.endContainer;
25391
- let closestLI = closest(endNode, 'LI');
25633
+ const closestLI = closest(endNode, 'LI');
25392
25634
  if (!isNullOrUndefined(closestLI) && endNode.textContent.length === range.endOffset &&
25393
25635
  !range.collapsed && isNullOrUndefined(endNode.nextElementSibling)) {
25394
25636
  closestLI.textContent = closestLI.textContent.trim();
@@ -25762,6 +26004,12 @@ let RichTextEditor = class RichTextEditor extends Component {
25762
26004
  for (let i = 0; i < this.originalElement.classList.length; i++) {
25763
26005
  addClass([this.element], this.originalElement.classList[i]);
25764
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
+ }
25765
26013
  removeClass([this.element], CLS_RTE_HIDDEN);
25766
26014
  }
25767
26015
  else {
@@ -26136,7 +26384,7 @@ let RichTextEditor = class RichTextEditor extends Component {
26136
26384
  if (this.inputElement && this.placeholder && this.iframeSettings.enable !== true) {
26137
26385
  if (this.editorMode !== 'Markdown') {
26138
26386
  if (!this.placeHolderWrapper) {
26139
- 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 });
26140
26388
  if (this.inputElement) {
26141
26389
  this.inputElement.parentElement.insertBefore(this.placeHolderWrapper, this.inputElement);
26142
26390
  }
@@ -26385,7 +26633,7 @@ let RichTextEditor = class RichTextEditor extends Component {
26385
26633
  this.setProperties({ value: this.valueTemplate });
26386
26634
  }
26387
26635
  else {
26388
- const compiledTemplate = compile(this.valueTemplate)("", this, 'valueTemplate');
26636
+ const compiledTemplate = compile(this.valueTemplate)('', this, 'valueTemplate');
26389
26637
  for (let i = 0; i < compiledTemplate.length; i++) {
26390
26638
  const item = compiledTemplate[i];
26391
26639
  append([item], this.element);
@@ -27335,5 +27583,5 @@ RichTextEditor = __decorate$1([
27335
27583
  * Rich Text Editor component exported items
27336
27584
  */
27337
27585
 
27338
- 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 };
27339
27587
  //# sourceMappingURL=ej2-richtexteditor.es2015.js.map