@syncfusion/ej2-richtexteditor 19.4.54 → 20.1.47

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 (79) hide show
  1. package/CHANGELOG.md +2 -58
  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 +125 -42
  5. package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
  6. package/dist/es6/ej2-richtexteditor.es5.js +122 -39
  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/package.json +12 -12
  12. package/src/editor-manager/plugin/clearformat.js +3 -2
  13. package/src/editor-manager/plugin/image.js +6 -1
  14. package/src/editor-manager/plugin/inserthtml.js +8 -2
  15. package/src/editor-manager/plugin/link.js +5 -0
  16. package/src/editor-manager/plugin/lists.js +22 -6
  17. package/src/editor-manager/plugin/selection-commands.js +8 -2
  18. package/src/editor-manager/plugin/table.js +6 -5
  19. package/src/rich-text-editor/actions/count.js +2 -2
  20. package/src/rich-text-editor/actions/dropdown-buttons.js +1 -1
  21. package/src/rich-text-editor/actions/html-editor.js +4 -1
  22. package/src/rich-text-editor/base/classes.d.ts +5 -0
  23. package/src/rich-text-editor/base/classes.js +5 -0
  24. package/src/rich-text-editor/base/rich-text-editor.js +4 -3
  25. package/src/rich-text-editor/renderer/image-module.js +23 -7
  26. package/src/rich-text-editor/renderer/table-module.js +21 -6
  27. package/src/selection/selection.js +3 -0
  28. package/styles/bootstrap-dark.css +6 -3
  29. package/styles/bootstrap.css +6 -3
  30. package/styles/bootstrap4.css +2 -2
  31. package/styles/bootstrap5-dark.css +30 -6
  32. package/styles/bootstrap5.css +31 -7
  33. package/styles/fabric-dark.css +2 -2
  34. package/styles/fabric.css +2 -2
  35. package/styles/fluent-dark.css +3001 -0
  36. package/styles/fluent-dark.scss +1 -0
  37. package/styles/fluent.css +3001 -0
  38. package/styles/fluent.scss +1 -0
  39. package/styles/highcontrast-light.css +2 -2
  40. package/styles/highcontrast.css +2 -2
  41. package/styles/material-dark.css +2 -2
  42. package/styles/material.css +2 -2
  43. package/styles/rich-text-editor/_bootstrap-dark-definition.scss +19 -0
  44. package/styles/rich-text-editor/_bootstrap-definition.scss +19 -0
  45. package/styles/rich-text-editor/_bootstrap4-definition.scss +19 -0
  46. package/styles/rich-text-editor/_bootstrap5-definition.scss +24 -3
  47. package/styles/rich-text-editor/_fabric-dark-definition.scss +19 -0
  48. package/styles/rich-text-editor/_fabric-definition.scss +19 -0
  49. package/styles/rich-text-editor/_fluent-dark-definition.scss +1 -0
  50. package/styles/rich-text-editor/_fluent-definition.scss +42 -19
  51. package/styles/rich-text-editor/_highcontrast-definition.scss +19 -0
  52. package/styles/rich-text-editor/_highcontrast-light-definition.scss +19 -0
  53. package/styles/rich-text-editor/_layout.scss +96 -6
  54. package/styles/rich-text-editor/_material-dark-definition.scss +18 -1
  55. package/styles/rich-text-editor/_material-definition.scss +19 -0
  56. package/styles/rich-text-editor/_tailwind-definition.scss +26 -6
  57. package/styles/rich-text-editor/_theme.scss +17 -2
  58. package/styles/rich-text-editor/bootstrap-dark.css +6 -3
  59. package/styles/rich-text-editor/bootstrap.css +6 -3
  60. package/styles/rich-text-editor/bootstrap4.css +2 -2
  61. package/styles/rich-text-editor/bootstrap5-dark.css +30 -6
  62. package/styles/rich-text-editor/bootstrap5.css +31 -7
  63. package/styles/rich-text-editor/fabric-dark.css +2 -2
  64. package/styles/rich-text-editor/fabric.css +2 -2
  65. package/styles/rich-text-editor/fluent-dark.css +3001 -0
  66. package/styles/rich-text-editor/fluent-dark.scss +4 -0
  67. package/styles/rich-text-editor/fluent.css +3001 -0
  68. package/styles/rich-text-editor/fluent.scss +4 -0
  69. package/styles/rich-text-editor/highcontrast-light.css +2 -2
  70. package/styles/rich-text-editor/highcontrast.css +2 -2
  71. package/styles/rich-text-editor/icons/_fluent-dark.scss +1 -0
  72. package/styles/rich-text-editor/icons/_fluent.scss +74 -74
  73. package/styles/rich-text-editor/icons/_tailwind.scss +73 -74
  74. package/styles/rich-text-editor/material-dark.css +2 -2
  75. package/styles/rich-text-editor/material.css +2 -2
  76. package/styles/rich-text-editor/tailwind-dark.css +104 -85
  77. package/styles/rich-text-editor/tailwind.css +105 -86
  78. package/styles/tailwind-dark.css +104 -85
  79. package/styles/tailwind.css +105 -86
@@ -933,6 +933,11 @@ const CLS_FONT_NAME_TB_BTN = 'e-font-name-tbar-btn';
933
933
  * @deprecated
934
934
  */
935
935
  const CLS_FONT_SIZE_TB_BTN = 'e-font-size-tbar-btn';
936
+ /**
937
+ * @hidden
938
+ * @deprecated
939
+ */
940
+ const CLS_ALIGN_TB_BTN = 'e-alignment-tbar-btn';
936
941
  /**
937
942
  * @hidden
938
943
  * @deprecated
@@ -3547,7 +3552,7 @@ class DropDownButtons {
3547
3552
  }
3548
3553
  this.alignDropDown = this.toolbarRenderer.renderDropDownButton({
3549
3554
  iconCss: 'e-justify-left e-icons',
3550
- cssClass: CLS_DROPDOWN_POPUP + ' ' + CLS_DROPDOWN_ITEMS,
3555
+ cssClass: CLS_DROPDOWN_POPUP + ' ' + CLS_DROPDOWN_ITEMS + ' ' + CLS_ALIGN_TB_BTN,
3551
3556
  itemName: 'Alignments', items: alignmentItems, element: targetElement
3552
3557
  });
3553
3558
  break;
@@ -6059,8 +6064,8 @@ class Count {
6059
6064
  }
6060
6065
  }
6061
6066
  appendCount() {
6062
- const htmlText = this.parent.editorMode === 'Markdown' ? this.editPanel.value.trim() :
6063
- this.editPanel.textContent.trim();
6067
+ const htmlText = this.parent.editorMode === 'Markdown' ? this.editPanel.value :
6068
+ this.editPanel.textContent;
6064
6069
  if (this.parent.editorMode !== 'Markdown' && htmlText.indexOf('\u200B') !== -1) {
6065
6070
  this.htmlLength = htmlText.replace(/\u200B/g, '').length;
6066
6071
  }
@@ -9510,11 +9515,14 @@ class NodeSelection {
9510
9515
  setRangePoint(range, isvalid, num, size) {
9511
9516
  let node = this.rootNode;
9512
9517
  let index = num.length;
9513
- const constant = size;
9518
+ let constant = size;
9514
9519
  for (; index--; null) {
9515
9520
  node = node && node.childNodes[num[index]];
9516
9521
  }
9517
9522
  if (node && constant >= 0 && node.nodeName !== 'html') {
9523
+ if (node.nodeType === 3 && node.nodeValue.replace(/\u00a0/g, ' ') === ' ') {
9524
+ constant = node.textContent.length;
9525
+ }
9518
9526
  range[isvalid ? 'setStart' : 'setEnd'](node, constant);
9519
9527
  }
9520
9528
  return range;
@@ -10514,6 +10522,9 @@ class Lists {
10514
10522
  range.endContainer.parentElement.closest('LI');
10515
10523
  if (!isNullOrUndefined(startNode) && !isNullOrUndefined(endNode) && startNode === endNode && startNode.tagName === 'LI' &&
10516
10524
  startNode.textContent.trim() === '' && startNode.querySelectorAll('IMG').length === 0) {
10525
+ if (startNode.innerHTML.indexOf(' ') >= 0) {
10526
+ return;
10527
+ }
10517
10528
  if (startNode.textContent.charCodeAt(0) === 65279) {
10518
10529
  startNode.textContent = '';
10519
10530
  }
@@ -10655,7 +10666,7 @@ class Lists {
10655
10666
  e.event.stopPropagation();
10656
10667
  this.currentAction = this.getAction(nodes[0]);
10657
10668
  if (e.event.shiftKey) {
10658
- this.revertList(nodes);
10669
+ this.revertList(nodes, e);
10659
10670
  this.revertClean();
10660
10671
  }
10661
10672
  else {
@@ -10817,6 +10828,9 @@ class Lists {
10817
10828
  append([nestedElement], prevSibling);
10818
10829
  append([elements[i]], nestedElement);
10819
10830
  }
10831
+ else if (prevSibling.tagName === 'OL' || prevSibling.tagName === 'UL') {
10832
+ append([elements[i]], prevSibling);
10833
+ }
10820
10834
  }
10821
10835
  }
10822
10836
  else {
@@ -10828,7 +10842,15 @@ class Lists {
10828
10842
  return isNested;
10829
10843
  }
10830
10844
  applyListsHandler(e) {
10831
- const range = this.parent.nodeSelection.getRange(this.parent.currentDocument);
10845
+ let range = this.parent.nodeSelection.getRange(this.parent.currentDocument);
10846
+ if (range.startContainer === range.endContainer && range.startContainer === this.parent.editableElement &&
10847
+ range.startOffset === range.endOffset && range.startOffset === 0 &&
10848
+ this.parent.editableElement.textContent.length === 0 && (this.parent.editableElement.childNodes[0].nodeName != 'TABLE' &&
10849
+ this.parent.editableElement.childNodes[0].nodeName != 'IMG')) {
10850
+ const focusNode = range.startContainer.childNodes[0];
10851
+ this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, focusNode, focusNode, 0, 0);
10852
+ range = this.parent.nodeSelection.getRange(this.parent.currentDocument);
10853
+ }
10832
10854
  this.saveSelection = this.parent.nodeSelection.save(range, this.parent.currentDocument);
10833
10855
  this.currentAction = e.subCommand;
10834
10856
  this.currentAction = e.subCommand = this.currentAction === 'NumberFormatList' ? 'OL' : this.currentAction === 'BulletFormatList' ? 'UL' : this.currentAction;
@@ -10903,7 +10925,7 @@ class Lists {
10903
10925
  listsNodes[i] = listsNodes[i].parentNode;
10904
10926
  }
10905
10927
  }
10906
- this.applyLists(listsNodes, this.currentAction, e.selector, e.item);
10928
+ this.applyLists(listsNodes, this.currentAction, e.selector, e.item, e);
10907
10929
  if (e.callBack) {
10908
10930
  e.callBack({
10909
10931
  requestType: this.currentAction,
@@ -10924,9 +10946,9 @@ class Lists {
10924
10946
  this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, startElem, endElem, 0, 0);
10925
10947
  }
10926
10948
  }
10927
- applyLists(elements, type, selector, item) {
10949
+ applyLists(elements, type, selector, item, e) {
10928
10950
  if (this.isRevert(elements, type) && isNullOrUndefined(item)) {
10929
- this.revertList(elements);
10951
+ this.revertList(elements, e);
10930
10952
  this.removeEmptyListElements();
10931
10953
  }
10932
10954
  else {
@@ -11083,7 +11105,7 @@ class Lists {
11083
11105
  }
11084
11106
  }
11085
11107
  }
11086
- revertList(elements) {
11108
+ revertList(elements, e) {
11087
11109
  const temp = [];
11088
11110
  for (let i = elements.length - 1; i >= 0; i--) {
11089
11111
  for (let j = i - 1; j >= 0; j--) {
@@ -11127,7 +11149,9 @@ class Lists {
11127
11149
  ' class="' + className + ' e-rte-wrap-inner"';
11128
11150
  const wrapper = '<' + DEFAULT_TAG + wrapperclass +
11129
11151
  this.domNode.attributes(parentNode) + '></' + DEFAULT_TAG + '>';
11130
- this.domNode.wrapInner(element, this.domNode.parseHTMLFragment(wrapper));
11152
+ if (e.enterAction !== 'BR') {
11153
+ this.domNode.wrapInner(element, this.domNode.parseHTMLFragment(wrapper));
11154
+ }
11131
11155
  }
11132
11156
  else if (this.domNode.contents(element)[0].nodeType === 3) {
11133
11157
  const replace = this.domNode.createTagString(DEFAULT_TAG, parentNode, this.parent.domNode.encode(this.domNode.contents(element)[0].textContent));
@@ -11861,6 +11885,12 @@ class InsertHtml {
11861
11885
  nodeSelection.setSelectionText(docElement, range.startContainer.children[0], range.startContainer.children[0], 0, 0);
11862
11886
  range = nodeSelection.getRange(docElement);
11863
11887
  }
11888
+ if (range.startContainer.nodeName === 'BR' && range.startOffset === 0 && range.startOffset === range.endOffset &&
11889
+ range.startContainer === range.endContainer) {
11890
+ const currentIndex = Array.prototype.slice.call(range.startContainer.parentElement.children).indexOf(range.startContainer);
11891
+ nodeSelection.setSelectionText(docElement, range.startContainer.parentElement, range.startContainer.parentElement, currentIndex + 1, currentIndex + 1);
11892
+ range = nodeSelection.getRange(docElement);
11893
+ }
11864
11894
  const isCursor = range.startOffset === range.endOffset && range.startOffset === 0 &&
11865
11895
  range.startContainer === range.endContainer;
11866
11896
  const isCollapsed = range.collapsed;
@@ -12044,7 +12074,7 @@ class InsertHtml {
12044
12074
  else {
12045
12075
  const tempSpan = createElement('span', { className: 'tempSpan' });
12046
12076
  const nearestAnchor = closest(range.startContainer.parentElement, 'a');
12047
- if (range.startContainer.nodeType === 3 && nearestAnchor) {
12077
+ if (range.startContainer.nodeType === 3 && nearestAnchor && closest(nearestAnchor, 'span')) {
12048
12078
  const immediateBlockNode = this.getImmediateBlockNode(range.startContainer, editNode);
12049
12079
  if (immediateBlockNode.querySelectorAll('br').length > 0) {
12050
12080
  detach(immediateBlockNode.querySelector('br'));
@@ -12196,7 +12226,7 @@ class InsertHtml {
12196
12226
  let currentNode = nodes[nodes.length - 1];
12197
12227
  let splitedElm;
12198
12228
  if ((currentNode.nodeName === 'BR' || currentNode.nodeName === 'HR') && !isNullOrUndefined(currentNode.parentElement) &&
12199
- currentNode.parentElement.textContent.trim().length === 0 && (currentNode.parentElement === editNode || !node.classList.contains('pasteContent'))) {
12229
+ currentNode.parentElement.textContent.trim().length === 0) {
12200
12230
  splitedElm = currentNode;
12201
12231
  }
12202
12232
  else {
@@ -12358,7 +12388,12 @@ class LinkCommand {
12358
12388
  }
12359
12389
  else {
12360
12390
  const domSelection = new NodeSelection();
12361
- const range = domSelection.getRange(this.parent.currentDocument);
12391
+ let range = domSelection.getRange(this.parent.currentDocument);
12392
+ if (range.endContainer.nodeName === '#text' && range.startContainer.textContent.length === (range.endOffset + 1) &&
12393
+ range.endContainer.textContent.charAt(range.endOffset) === ' ' && range.endContainer.nextSibling.nodeName === 'A') {
12394
+ domSelection.setSelectionText(this.parent.currentDocument, range.startContainer, range.endContainer, range.startOffset, range.endOffset + 1);
12395
+ range = domSelection.getRange(this.parent.currentDocument);
12396
+ }
12362
12397
  const text = isNullOrUndefined(e.item.text) ? true : e.item.text.replace(/ /g, '').localeCompare(range.toString()
12363
12398
  .replace(/\n/g, ' ').replace(/ /g, '')) < 0;
12364
12399
  if (e.event && e.event.type === 'keydown' && (e.event.keyCode === 32
@@ -13012,7 +13047,12 @@ class ImageCommand {
13012
13047
  removeImage(e) {
13013
13048
  if (closest(e.item.selectNode[0], 'a')) {
13014
13049
  if (e.item.selectNode[0].parentElement.nodeName === 'A' && !isNullOrUndefined(e.item.selectNode[0].parentElement.innerText)) {
13015
- detach(e.item.selectNode[0]);
13050
+ if (!isNullOrUndefined(closest(e.item.selectNode[0], '.' + CLASS_CAPTION))) {
13051
+ detach(closest(e.item.selectNode[0], '.' + CLASS_CAPTION));
13052
+ }
13053
+ else {
13054
+ detach(e.item.selectNode[0]);
13055
+ }
13016
13056
  }
13017
13057
  else {
13018
13058
  detach(closest(e.item.selectNode[0], 'a'));
@@ -13333,7 +13373,7 @@ class TableCommand {
13333
13373
  const tdElement = createElement('td');
13334
13374
  tdElement.appendChild(createElement('br'));
13335
13375
  newRow.appendChild(tdElement);
13336
- tdElement.setAttribute('style', allCells[(isHeaderSelect && isBelow) ? (minVal + 1) : minVal][i].getAttribute('style'));
13376
+ tdElement.setAttribute('style', allCells[(isHeaderSelect && isBelow) ? allCells[(minVal + 1)] ? (minVal + 1) : minVal : minVal][i].getAttribute('style'));
13337
13377
  }
13338
13378
  }
13339
13379
  // eslint-disable-next-line
@@ -13717,7 +13757,8 @@ class TableCommand {
13717
13757
  if (min < (max = Math.min(max, eleArray.length - 1))) {
13718
13758
  for (rowValue = min; rowValue <= max; rowValue++) {
13719
13759
  // eslint-disable-next-line
13720
- if (!(min < rowValue && eleArray[rowValue][0] === eleArray[rowValue - 1][0]) && 1 < (index = Math.min(parseInt(eleArray[rowValue][0].getAttribute('rowspan'), 10) || 1, max - min + 1)) && eleArray[rowValue][0] === eleArray[rowValue + 1][0]) {
13760
+ if (!(min < rowValue && eleArray[rowValue][0] === eleArray[rowValue - 1][0]) && eleArray[rowValue][0] &&
13761
+ 1 < (index = Math.min(parseInt(eleArray[rowValue][0].getAttribute('rowspan'), 10) || 1, max - min + 1)) && eleArray[rowValue][0] === eleArray[rowValue + 1][0]) {
13721
13762
  for (count = index - 1, colIndex = 1; colIndex < eleArray[0].length; colIndex++) {
13722
13763
  if (eleArray[rowValue][colIndex] !== eleArray[rowValue][colIndex - 1]) {
13723
13764
  for (rowMin = rowValue; rowMin < rowValue + index; rowMin++) {
@@ -13759,10 +13800,10 @@ class TableCommand {
13759
13800
  }
13760
13801
  mergeCellContent() {
13761
13802
  const selectedCells = this.curTable.querySelectorAll('.e-cell-select');
13762
- let innerHtml = selectedCells[0].innerHTML;
13763
- for (let i = 1; i < selectedCells.length - 1; i++) {
13803
+ let innerHtml = selectedCells[0].innerHTML === '<br>' ? '' : selectedCells[0].innerHTML;
13804
+ for (let i = 1; i < selectedCells.length; i++) {
13764
13805
  if ('<br>' !== selectedCells[i].innerHTML) {
13765
- innerHtml = innerHtml + selectedCells[i].innerHTML;
13806
+ innerHtml = innerHtml ? innerHtml + '<br>' + selectedCells[i].innerHTML : innerHtml + selectedCells[i].innerHTML;
13766
13807
  }
13767
13808
  }
13768
13809
  selectedCells[0].innerHTML = innerHtml;
@@ -14413,6 +14454,7 @@ class SelectionCommands {
14413
14454
  }
14414
14455
  static insertCursorNode(docElement, domSelection, range, isFormatted, nodeCutter, format, value, endNode) {
14415
14456
  const cursorNodes = domSelection.getNodeCollection(range);
14457
+ const domNode = new DOMNode(endNode, docElement);
14416
14458
  const cursorFormat = (cursorNodes.length > 0) ?
14417
14459
  (cursorNodes.length > 1 && range.startContainer === range.endContainer) ?
14418
14460
  this.getCursorFormat(isFormatted, cursorNodes, format, endNode) :
@@ -14420,11 +14462,16 @@ class SelectionCommands {
14420
14462
  let cursorNode = null;
14421
14463
  if (cursorFormat) {
14422
14464
  cursorNode = cursorNodes[0];
14423
- if (cursorFormat.firstChild.textContent.charCodeAt(0) === 8203) {
14465
+ if (cursorFormat.firstChild.textContent.charCodeAt(0) === 8203 && cursorFormat.firstChild.nodeType === 3) {
14424
14466
  const regEx = new RegExp(String.fromCharCode(8203), 'g');
14425
14467
  let emptySpaceNode;
14426
14468
  if (cursorFormat.firstChild === cursorNode) {
14427
- cursorNode.textContent = cursorNode.textContent.replace(regEx, '');
14469
+ cursorNode.textContent = (cursorFormat.parentElement && (domNode.isBlockNode(cursorFormat.parentElement) &&
14470
+ cursorFormat.parentElement.textContent.length <= 1 ? cursorFormat.parentElement.childElementCount > 1 :
14471
+ cursorFormat.childElementCount === 0) &&
14472
+ (cursorFormat.parentElement.textContent.length > 1 ||
14473
+ cursorFormat.parentElement.firstChild && cursorFormat.parentElement.firstChild.nodeType === 1) ?
14474
+ cursorNode.textContent : cursorNode.textContent.replace(regEx, ''));
14428
14475
  emptySpaceNode = cursorNode;
14429
14476
 
14430
14477
  }
@@ -15098,7 +15145,8 @@ class ClearFormat$1 {
15098
15145
  for (let index = 0; index < textNodes.length; index++) {
15099
15146
  let currentInlineNode = textNodes[index];
15100
15147
  let currentNode;
15101
- while (!this.domNode.isBlockNode(currentInlineNode)) {
15148
+ while (!this.domNode.isBlockNode(currentInlineNode) &&
15149
+ (currentInlineNode.parentElement && !currentInlineNode.parentElement.classList.contains('e-img-inner'))) {
15102
15150
  currentNode = currentInlineNode;
15103
15151
  currentInlineNode = currentInlineNode.parentElement;
15104
15152
  }
@@ -15112,7 +15160,7 @@ class ClearFormat$1 {
15112
15160
  static removeInlineParent(textNodes) {
15113
15161
  const nodes = InsertMethods.unwrap(textNodes);
15114
15162
  for (let index = 0; index < nodes.length; index++) {
15115
- if (nodes[index].parentNode.childNodes.length === 1
15163
+ if (nodes[index].parentNode.childNodes.length === 1 && !nodes[index].parentNode.classList.contains('e-img-inner')
15116
15164
  && IsFormatted.inlineTags.indexOf(nodes[index].parentNode.nodeName.toLocaleLowerCase()) > -1) {
15117
15165
  this.removeInlineParent(nodes[index].parentNode);
15118
15166
  }
@@ -17224,7 +17272,9 @@ class HtmlEditor {
17224
17272
  this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), range.startContainer, pointer);
17225
17273
  }
17226
17274
  if (!isNullOrUndefined(range.startContainer.previousSibling) && !isNullOrUndefined(range.startContainer.previousSibling.parentElement) &&
17227
- range.startContainer.parentElement === range.startContainer.previousSibling.parentElement && range.startContainer.previousSibling.textContent.charCodeAt(0) === 8203) {
17275
+ range.startContainer.parentElement === range.startContainer.previousSibling.parentElement &&
17276
+ range.startContainer.previousSibling.textContent.charCodeAt(0) === 8203 &&
17277
+ range.startContainer.previousSibling.textContent.length <= 1) {
17228
17278
  range.startContainer.previousSibling.textContent = range.startContainer.previousSibling.textContent.replace(regEx, '');
17229
17279
  }
17230
17280
  if (range.endContainer.textContent.charCodeAt(range.endOffset) === 8203) {
@@ -17314,6 +17364,7 @@ class HtmlEditor {
17314
17364
  if (!this.isImageDelete) {
17315
17365
  args.preventDefault();
17316
17366
  }
17367
+ args.preventDefault();
17317
17368
  }
17318
17369
  }
17319
17370
  isOrderedList(editorValue) {
@@ -20145,6 +20196,7 @@ class Image {
20145
20196
  calcPos(elem) {
20146
20197
  const ignoreOffset = ['TD', 'TH', 'TABLE', 'A'];
20147
20198
  let parentOffset = { top: 0, left: 0 };
20199
+ let elementOffset;
20148
20200
  const doc = elem.ownerDocument;
20149
20201
  let offsetParent = ((elem.offsetParent && (elem.offsetParent.classList.contains('e-img-caption') ||
20150
20202
  ignoreOffset.indexOf(elem.offsetParent.tagName) > -1)) ?
@@ -20158,10 +20210,19 @@ class Image {
20158
20210
  // eslint-disable-next-line
20159
20211
  parentOffset = offsetParent.getBoundingClientRect();
20160
20212
  }
20161
- return {
20162
- top: elem.offsetTop,
20163
- left: elem.offsetLeft
20164
- };
20213
+ if (elem.offsetParent && (elem.offsetParent.classList.contains('e-img-caption'))) {
20214
+ elementOffset = elem.getBoundingClientRect();
20215
+ return {
20216
+ top: elementOffset.top - parentOffset.top,
20217
+ left: elementOffset.left - parentOffset.left
20218
+ };
20219
+ }
20220
+ else {
20221
+ return {
20222
+ top: elem.offsetTop,
20223
+ left: elem.offsetLeft
20224
+ };
20225
+ }
20165
20226
  }
20166
20227
  setAspectRatio(img, expectedX, expectedY, e) {
20167
20228
  if (isNullOrUndefined(img.width)) {
@@ -20171,7 +20232,7 @@ class Image {
20171
20232
  parseInt(img.style.width, 10) : img.width;
20172
20233
  const height = img.style.height !== '' ? parseInt(img.style.height, 10) : img.height;
20173
20234
  if (width > height) {
20174
- img.style.minWidth = '20px';
20235
+ img.style.minWidth = this.parent.insertImageSettings.minWidth === 0 ? '20px' : formatUnit(this.parent.insertImageSettings.minWidth);
20175
20236
  if (this.parent.insertImageSettings.resizeByPercent) {
20176
20237
  if (parseInt('' + img.getBoundingClientRect().width + '', 10) !== 0 && parseInt('' + width + '', 10) !== 0) {
20177
20238
  const percentageValue = this.pixToPerc((width / height * expectedY), (img.previousElementSibling || img.parentElement));
@@ -20493,6 +20554,10 @@ class Image {
20493
20554
  range.startContainer.querySelector('.' + CLS_CAPTION + '.' + CLS_CAPINLINE))) {
20494
20555
  detach(range.startContainer.querySelector('.' + CLS_CAPTION + '.' + CLS_CAPINLINE));
20495
20556
  }
20557
+ else if (range.startContainer.nodeType === 1 &&
20558
+ range.startContainer.querySelector('.' + CLS_CAPTION + '.' + CLS_IMGBREAK)) {
20559
+ detach(range.startContainer.querySelector('.' + CLS_CAPTION + '.' + CLS_IMGBREAK));
20560
+ }
20496
20561
  }
20497
20562
  break;
20498
20563
  case 'insert-image':
@@ -20662,6 +20727,8 @@ class Image {
20662
20727
  if (this.parent.quickToolbarModule.imageQTBar) {
20663
20728
  if (e.isNotify) {
20664
20729
  setTimeout(() => {
20730
+ this.parent.formatter.editorManager.nodeSelection.Clear(this.contentModule.getDocument());
20731
+ this.parent.formatter.editorManager.nodeSelection.setSelectionContents(this.contentModule.getDocument(), target);
20665
20732
  this.quickToolObj.imageQTBar.showPopup(args.pageX, pageY, target);
20666
20733
  }, 400);
20667
20734
  }
@@ -21693,7 +21760,8 @@ class Image {
21693
21760
  if (activePopupElement) {
21694
21761
  activePopupElement.classList.add(CLS_HIDE);
21695
21762
  }
21696
- if (e.dataTransfer.files.length > 0) { //For external image drag and drop
21763
+ const imgElement = this.parent.inputElement.ownerDocument.querySelector('.' + CLS_RTE_DRAG_IMAGE);
21764
+ if (e.dataTransfer.files.length > 0 && imgElement === null) { //For external image drag and drop
21697
21765
  if (e.dataTransfer.files.length > 1) {
21698
21766
  return;
21699
21767
  }
@@ -21716,7 +21784,6 @@ class Image {
21716
21784
  }
21717
21785
  else { //For internal image drag and drop
21718
21786
  const range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());
21719
- const imgElement = this.parent.inputElement.ownerDocument.querySelector('.' + CLS_RTE_DRAG_IMAGE);
21720
21787
  if (imgElement && imgElement.tagName === 'IMG') {
21721
21788
  if (imgElement.nextElementSibling) {
21722
21789
  if (imgElement.nextElementSibling.classList.contains(CLS_IMG_INNER)) {
@@ -22628,7 +22695,7 @@ class Table {
22628
22695
  ele.classList.add(CLS_TABLE_SEL);
22629
22696
  this.addRow(selection, event, true);
22630
22697
  ele.classList.remove(CLS_TABLE_SEL);
22631
- nextElement = nextElement.parentElement.nextSibling.firstChild;
22698
+ nextElement = nextElement.parentElement.nextSibling ? nextElement.parentElement.nextSibling.firstChild : nextElement.parentElement.firstChild;
22632
22699
  // eslint-disable-next-line
22633
22700
  (nextElement.textContent.trim() !== '' && closest(nextElement, 'td')) ?
22634
22701
  selection.setSelectionNode(this.contentModule.getDocument(), nextElement) :
@@ -22838,7 +22905,7 @@ class Table {
22838
22905
  return;
22839
22906
  }
22840
22907
  const target = e.target || e.targetTouches[0].target;
22841
- const closestTable = closest(target, 'table');
22908
+ const closestTable = closest(target, 'table.e-rte-table');
22842
22909
  if (!isNullOrUndefined(this.curTable) && !isNullOrUndefined(closestTable) && closestTable !== this.curTable) {
22843
22910
  this.removeResizeElement();
22844
22911
  this.removeHelper(e);
@@ -22917,6 +22984,7 @@ class Table {
22917
22984
  const offset = elem.getBoundingClientRect();
22918
22985
  const doc = elem.ownerDocument;
22919
22986
  let offsetParent = elem.offsetParent || doc.documentElement;
22987
+ let isNestedTable = false;
22920
22988
  while (offsetParent &&
22921
22989
  (offsetParent === doc.body || offsetParent === doc.documentElement) &&
22922
22990
  offsetParent.style.position === 'static') {
@@ -22924,15 +22992,29 @@ class Table {
22924
22992
  }
22925
22993
  if (offsetParent.nodeName === 'TD' && elem.nodeName === 'TABLE') {
22926
22994
  offsetParent = closest(offsetParent, '.e-rte-content');
22995
+ isNestedTable = true;
22927
22996
  }
22928
22997
  if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {
22929
22998
  // eslint-disable-next-line
22930
22999
  parentOffset = offsetParent.getBoundingClientRect();
22931
23000
  }
22932
- return {
22933
- top: elem.offsetTop,
22934
- left: elem.offsetLeft
22935
- };
23001
+ if (isNestedTable) {
23002
+ isNestedTable = false;
23003
+ let topValue = this.parent.inputElement && this.parent.inputElement.scrollTop > 0 ?
23004
+ (this.parent.inputElement.scrollTop + offset.top) - parentOffset.top : offset.top - parentOffset.top;
23005
+ let leftValue = this.parent.inputElement && this.parent.inputElement.scrollLeft > 0 ?
23006
+ (this.parent.inputElement.scrollLeft + offset.left) - parentOffset.left : offset.left - parentOffset.left;
23007
+ return {
23008
+ top: topValue,
23009
+ left: leftValue
23010
+ };
23011
+ }
23012
+ else {
23013
+ return {
23014
+ top: elem.offsetTop,
23015
+ left: elem.offsetLeft
23016
+ };
23017
+ }
22936
23018
  }
22937
23019
  getPointX(e) {
22938
23020
  if (e.touches && e.touches.length) {
@@ -25631,7 +25713,7 @@ let RichTextEditor = class RichTextEditor extends Component {
25631
25713
  this.inputElement.parentElement.insertBefore(this.placeHolderWrapper, this.inputElement);
25632
25714
  }
25633
25715
  attributes(this.placeHolderWrapper, {
25634
- 'style': 'font-size: 14px; padding: 16px; margin-left: 0px; margin-right: 0px;'
25716
+ 'style': 'font-size: 14px; margin-left: 0px; margin-right: 0px;'
25635
25717
  });
25636
25718
  }
25637
25719
  this.placeHolderWrapper.innerHTML = this.placeholder;
@@ -25870,7 +25952,8 @@ let RichTextEditor = class RichTextEditor extends Component {
25870
25952
  }
25871
25953
  setValue() {
25872
25954
  if (this.valueTemplate) {
25873
- if (typeof this.valueTemplate === 'string') {
25955
+ const regEx = new RegExp(/<(?=.*? .*?\/ ?>|br|hr|input|!--|wbr)[a-z]+.*?>|<([a-z]+).*?<\/\1>/i);
25956
+ if (regEx.test(this.valueTemplate)) {
25874
25957
  this.setProperties({ value: this.valueTemplate });
25875
25958
  }
25876
25959
  else {
@@ -26453,7 +26536,7 @@ let RichTextEditor = class RichTextEditor extends Component {
26453
26536
  restrict(e) {
26454
26537
  if (this.maxLength >= 0) {
26455
26538
  const element = this.editorMode === 'Markdown' ? this.contentModule.getText() :
26456
- e.currentTarget.textContent.trim();
26539
+ e.currentTarget.textContent;
26457
26540
  const array = [8, 16, 17, 37, 38, 39, 40, 46, 65];
26458
26541
  let arrayKey;
26459
26542
  for (let i = 0; i <= array.length - 1; i++) {
@@ -26823,5 +26906,5 @@ RichTextEditor = __decorate$1([
26823
26906
  * Rich Text Editor component exported items
26824
26907
  */
26825
26908
 
26826
- 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, 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_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, 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 };
26909
+ 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, 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, 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 };
26827
26910
  //# sourceMappingURL=ej2-richtexteditor.es2015.js.map