@syncfusion/ej2-richtexteditor 19.4.55 → 20.1.48

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 (81) hide show
  1. package/CHANGELOG.md +7 -65
  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 +121 -40
  5. package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
  6. package/dist/es6/ej2-richtexteditor.es5.js +119 -38
  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/base/constant.d.ts +6 -0
  13. package/src/editor-manager/base/constant.js +6 -0
  14. package/src/editor-manager/plugin/clearformat.js +3 -2
  15. package/src/editor-manager/plugin/inserthtml.js +9 -5
  16. package/src/editor-manager/plugin/lists.js +18 -6
  17. package/src/editor-manager/plugin/ms-word-clean-up.js +6 -0
  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 +3 -2
  22. package/src/rich-text-editor/actions/paste-clean-up.d.ts +1 -0
  23. package/src/rich-text-editor/actions/paste-clean-up.js +11 -1
  24. package/src/rich-text-editor/base/classes.d.ts +5 -0
  25. package/src/rich-text-editor/base/classes.js +5 -0
  26. package/src/rich-text-editor/base/rich-text-editor.js +4 -3
  27. package/src/rich-text-editor/renderer/image-module.js +21 -5
  28. package/src/rich-text-editor/renderer/table-module.js +20 -5
  29. package/src/selection/selection.js +3 -0
  30. package/styles/bootstrap-dark.css +6 -3
  31. package/styles/bootstrap.css +6 -3
  32. package/styles/bootstrap4.css +2 -2
  33. package/styles/bootstrap5-dark.css +30 -6
  34. package/styles/bootstrap5.css +31 -7
  35. package/styles/fabric-dark.css +2 -2
  36. package/styles/fabric.css +2 -2
  37. package/styles/fluent-dark.css +3001 -0
  38. package/styles/fluent-dark.scss +1 -0
  39. package/styles/fluent.css +3001 -0
  40. package/styles/fluent.scss +1 -0
  41. package/styles/highcontrast-light.css +2 -2
  42. package/styles/highcontrast.css +2 -2
  43. package/styles/material-dark.css +2 -2
  44. package/styles/material.css +2 -2
  45. package/styles/rich-text-editor/_bootstrap-dark-definition.scss +19 -0
  46. package/styles/rich-text-editor/_bootstrap-definition.scss +19 -0
  47. package/styles/rich-text-editor/_bootstrap4-definition.scss +19 -0
  48. package/styles/rich-text-editor/_bootstrap5-definition.scss +24 -3
  49. package/styles/rich-text-editor/_fabric-dark-definition.scss +19 -0
  50. package/styles/rich-text-editor/_fabric-definition.scss +19 -0
  51. package/styles/rich-text-editor/_fluent-dark-definition.scss +1 -0
  52. package/styles/rich-text-editor/_fluent-definition.scss +42 -19
  53. package/styles/rich-text-editor/_highcontrast-definition.scss +19 -0
  54. package/styles/rich-text-editor/_highcontrast-light-definition.scss +19 -0
  55. package/styles/rich-text-editor/_layout.scss +96 -6
  56. package/styles/rich-text-editor/_material-dark-definition.scss +18 -1
  57. package/styles/rich-text-editor/_material-definition.scss +19 -0
  58. package/styles/rich-text-editor/_tailwind-definition.scss +26 -6
  59. package/styles/rich-text-editor/_theme.scss +17 -2
  60. package/styles/rich-text-editor/bootstrap-dark.css +6 -3
  61. package/styles/rich-text-editor/bootstrap.css +6 -3
  62. package/styles/rich-text-editor/bootstrap4.css +2 -2
  63. package/styles/rich-text-editor/bootstrap5-dark.css +30 -6
  64. package/styles/rich-text-editor/bootstrap5.css +31 -7
  65. package/styles/rich-text-editor/fabric-dark.css +2 -2
  66. package/styles/rich-text-editor/fabric.css +2 -2
  67. package/styles/rich-text-editor/fluent-dark.css +3001 -0
  68. package/styles/rich-text-editor/fluent-dark.scss +4 -0
  69. package/styles/rich-text-editor/fluent.css +3001 -0
  70. package/styles/rich-text-editor/fluent.scss +4 -0
  71. package/styles/rich-text-editor/highcontrast-light.css +2 -2
  72. package/styles/rich-text-editor/highcontrast.css +2 -2
  73. package/styles/rich-text-editor/icons/_fluent-dark.scss +1 -0
  74. package/styles/rich-text-editor/icons/_fluent.scss +74 -74
  75. package/styles/rich-text-editor/icons/_tailwind.scss +73 -74
  76. package/styles/rich-text-editor/material-dark.css +2 -2
  77. package/styles/rich-text-editor/material.css +2 -2
  78. package/styles/rich-text-editor/tailwind-dark.css +104 -85
  79. package/styles/rich-text-editor/tailwind.css +105 -86
  80. package/styles/tailwind-dark.css +104 -85
  81. 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
  }
@@ -9219,6 +9224,12 @@ const INSERT_TEXT_TYPE = 'insert-text-type';
9219
9224
  * @hidden
9220
9225
  */
9221
9226
  const CLEAR_TYPE = 'clear-type';
9227
+ /**
9228
+ * Self closing tags
9229
+ *
9230
+ * @hidden
9231
+ */
9232
+ const SELF_CLOSING_TAGS = ['area', 'base', 'br', 'embed', 'hr', 'img', 'input', 'param', 'source', 'track', 'wbr', 'iframe', 'td'];
9222
9233
 
9223
9234
  /**
9224
9235
  * `Selection` module is used to handle RTE Selections.
@@ -9510,11 +9521,14 @@ class NodeSelection {
9510
9521
  setRangePoint(range, isvalid, num, size) {
9511
9522
  let node = this.rootNode;
9512
9523
  let index = num.length;
9513
- const constant = size;
9524
+ let constant = size;
9514
9525
  for (; index--; null) {
9515
9526
  node = node && node.childNodes[num[index]];
9516
9527
  }
9517
9528
  if (node && constant >= 0 && node.nodeName !== 'html') {
9529
+ if (node.nodeType === 3 && node.nodeValue.replace(/\u00a0/g, ' ') === ' ') {
9530
+ constant = node.textContent.length;
9531
+ }
9518
9532
  range[isvalid ? 'setStart' : 'setEnd'](node, constant);
9519
9533
  }
9520
9534
  return range;
@@ -10514,6 +10528,9 @@ class Lists {
10514
10528
  range.endContainer.parentElement.closest('LI');
10515
10529
  if (!isNullOrUndefined(startNode) && !isNullOrUndefined(endNode) && startNode === endNode && startNode.tagName === 'LI' &&
10516
10530
  startNode.textContent.trim() === '' && startNode.querySelectorAll('IMG').length === 0) {
10531
+ if (startNode.innerHTML.indexOf(' ') >= 0) {
10532
+ return;
10533
+ }
10517
10534
  if (startNode.textContent.charCodeAt(0) === 65279) {
10518
10535
  startNode.textContent = '';
10519
10536
  }
@@ -10559,6 +10576,10 @@ class Lists {
10559
10576
  (startNode.textContent.length === 1 && startNode.textContent.charCodeAt(0) === 8203))) {
10560
10577
  startNode.textContent = '';
10561
10578
  }
10579
+ if (startNode === endNode && startNode.tagName === 'LI' && startNode.textContent.length === 0 &&
10580
+ isNullOrUndefined(startNode.previousElementSibling)) {
10581
+ startNode.removeAttribute('style');
10582
+ }
10562
10583
  if (startNode === endNode && startNode.textContent === '') {
10563
10584
  if (startNode.parentElement.tagName === 'LI' && endNode.parentElement.tagName === 'LI') {
10564
10585
  detach(startNode);
@@ -10655,7 +10676,7 @@ class Lists {
10655
10676
  e.event.stopPropagation();
10656
10677
  this.currentAction = this.getAction(nodes[0]);
10657
10678
  if (e.event.shiftKey) {
10658
- this.revertList(nodes);
10679
+ this.revertList(nodes, e);
10659
10680
  this.revertClean();
10660
10681
  }
10661
10682
  else {
@@ -10817,6 +10838,9 @@ class Lists {
10817
10838
  append([nestedElement], prevSibling);
10818
10839
  append([elements[i]], nestedElement);
10819
10840
  }
10841
+ else if (prevSibling.tagName === 'OL' || prevSibling.tagName === 'UL') {
10842
+ append([elements[i]], prevSibling);
10843
+ }
10820
10844
  }
10821
10845
  }
10822
10846
  else {
@@ -10911,7 +10935,7 @@ class Lists {
10911
10935
  listsNodes[i] = listsNodes[i].parentNode;
10912
10936
  }
10913
10937
  }
10914
- this.applyLists(listsNodes, this.currentAction, e.selector, e.item);
10938
+ this.applyLists(listsNodes, this.currentAction, e.selector, e.item, e);
10915
10939
  if (e.callBack) {
10916
10940
  e.callBack({
10917
10941
  requestType: this.currentAction,
@@ -10932,9 +10956,9 @@ class Lists {
10932
10956
  this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, startElem, endElem, 0, 0);
10933
10957
  }
10934
10958
  }
10935
- applyLists(elements, type, selector, item) {
10959
+ applyLists(elements, type, selector, item, e) {
10936
10960
  if (this.isRevert(elements, type) && isNullOrUndefined(item)) {
10937
- this.revertList(elements);
10961
+ this.revertList(elements, e);
10938
10962
  this.removeEmptyListElements();
10939
10963
  }
10940
10964
  else {
@@ -11091,7 +11115,7 @@ class Lists {
11091
11115
  }
11092
11116
  }
11093
11117
  }
11094
- revertList(elements) {
11118
+ revertList(elements, e) {
11095
11119
  const temp = [];
11096
11120
  for (let i = elements.length - 1; i >= 0; i--) {
11097
11121
  for (let j = i - 1; j >= 0; j--) {
@@ -11135,7 +11159,9 @@ class Lists {
11135
11159
  ' class="' + className + ' e-rte-wrap-inner"';
11136
11160
  const wrapper = '<' + DEFAULT_TAG + wrapperclass +
11137
11161
  this.domNode.attributes(parentNode) + '></' + DEFAULT_TAG + '>';
11138
- this.domNode.wrapInner(element, this.domNode.parseHTMLFragment(wrapper));
11162
+ if (e.enterAction !== 'BR') {
11163
+ this.domNode.wrapInner(element, this.domNode.parseHTMLFragment(wrapper));
11164
+ }
11139
11165
  }
11140
11166
  else if (this.domNode.contents(element)[0].nodeType === 3) {
11141
11167
  const replace = this.domNode.createTagString(DEFAULT_TAG, parentNode, this.parent.domNode.encode(this.domNode.contents(element)[0].textContent));
@@ -11869,6 +11895,12 @@ class InsertHtml {
11869
11895
  nodeSelection.setSelectionText(docElement, range.startContainer.children[0], range.startContainer.children[0], 0, 0);
11870
11896
  range = nodeSelection.getRange(docElement);
11871
11897
  }
11898
+ if (range.startContainer.nodeName === 'BR' && range.startOffset === 0 && range.startOffset === range.endOffset &&
11899
+ range.startContainer === range.endContainer) {
11900
+ const currentIndex = Array.prototype.slice.call(range.startContainer.parentElement.children).indexOf(range.startContainer);
11901
+ nodeSelection.setSelectionText(docElement, range.startContainer.parentElement, range.startContainer.parentElement, currentIndex + 1, currentIndex + 1);
11902
+ range = nodeSelection.getRange(docElement);
11903
+ }
11872
11904
  const isCursor = range.startOffset === range.endOffset && range.startOffset === 0 &&
11873
11905
  range.startContainer === range.endContainer;
11874
11906
  const isCollapsed = range.collapsed;
@@ -12052,7 +12084,7 @@ class InsertHtml {
12052
12084
  else {
12053
12085
  const tempSpan = createElement('span', { className: 'tempSpan' });
12054
12086
  const nearestAnchor = closest(range.startContainer.parentElement, 'a');
12055
- if (range.startContainer.nodeType === 3 && nearestAnchor) {
12087
+ if (range.startContainer.nodeType === 3 && nearestAnchor && closest(nearestAnchor, 'span')) {
12056
12088
  const immediateBlockNode = this.getImmediateBlockNode(range.startContainer, editNode);
12057
12089
  if (immediateBlockNode.querySelectorAll('br').length > 0) {
12058
12090
  detach(immediateBlockNode.querySelector('br'));
@@ -12204,7 +12236,7 @@ class InsertHtml {
12204
12236
  let currentNode = nodes[nodes.length - 1];
12205
12237
  let splitedElm;
12206
12238
  if ((currentNode.nodeName === 'BR' || currentNode.nodeName === 'HR') && !isNullOrUndefined(currentNode.parentElement) &&
12207
- currentNode.parentElement.textContent.trim().length === 0 && (currentNode.parentElement === editNode || !node.classList.contains('pasteContent'))) {
12239
+ currentNode.parentElement.textContent.trim().length === 0) {
12208
12240
  splitedElm = currentNode;
12209
12241
  }
12210
12242
  else {
@@ -12261,9 +12293,7 @@ class InsertHtml {
12261
12293
  static removeEmptyElements(element) {
12262
12294
  const emptyElements = element.querySelectorAll(':empty');
12263
12295
  for (let i = 0; i < emptyElements.length; i++) {
12264
- if (emptyElements[i].tagName !== 'IMG' && emptyElements[i].tagName !== 'BR' &&
12265
- emptyElements[i].tagName !== 'IFRAME' && emptyElements[i].tagName !== 'TD' &&
12266
- emptyElements[i].tagName !== 'SOURCE' && emptyElements[i].tagName !== 'HR') {
12296
+ if (SELF_CLOSING_TAGS.indexOf(emptyElements[i].tagName.toLowerCase()) < 0) {
12267
12297
  const detachableElement = this.findDetachEmptyElem(emptyElements[i]);
12268
12298
  if (!isNullOrUndefined(detachableElement)) {
12269
12299
  detach(detachableElement);
@@ -13351,7 +13381,7 @@ class TableCommand {
13351
13381
  const tdElement = createElement('td');
13352
13382
  tdElement.appendChild(createElement('br'));
13353
13383
  newRow.appendChild(tdElement);
13354
- tdElement.setAttribute('style', allCells[(isHeaderSelect && isBelow) ? (minVal + 1) : minVal][i].getAttribute('style'));
13384
+ tdElement.setAttribute('style', allCells[(isHeaderSelect && isBelow) ? allCells[(minVal + 1)] ? (minVal + 1) : minVal : minVal][i].getAttribute('style'));
13355
13385
  }
13356
13386
  }
13357
13387
  // eslint-disable-next-line
@@ -13735,7 +13765,8 @@ class TableCommand {
13735
13765
  if (min < (max = Math.min(max, eleArray.length - 1))) {
13736
13766
  for (rowValue = min; rowValue <= max; rowValue++) {
13737
13767
  // eslint-disable-next-line
13738
- 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]) {
13768
+ if (!(min < rowValue && eleArray[rowValue][0] === eleArray[rowValue - 1][0]) && eleArray[rowValue][0] &&
13769
+ 1 < (index = Math.min(parseInt(eleArray[rowValue][0].getAttribute('rowspan'), 10) || 1, max - min + 1)) && eleArray[rowValue][0] === eleArray[rowValue + 1][0]) {
13739
13770
  for (count = index - 1, colIndex = 1; colIndex < eleArray[0].length; colIndex++) {
13740
13771
  if (eleArray[rowValue][colIndex] !== eleArray[rowValue][colIndex - 1]) {
13741
13772
  for (rowMin = rowValue; rowMin < rowValue + index; rowMin++) {
@@ -13777,10 +13808,10 @@ class TableCommand {
13777
13808
  }
13778
13809
  mergeCellContent() {
13779
13810
  const selectedCells = this.curTable.querySelectorAll('.e-cell-select');
13780
- let innerHtml = selectedCells[0].innerHTML;
13781
- for (let i = 1; i < selectedCells.length - 1; i++) {
13811
+ let innerHtml = selectedCells[0].innerHTML === '<br>' ? '' : selectedCells[0].innerHTML;
13812
+ for (let i = 1; i < selectedCells.length; i++) {
13782
13813
  if ('<br>' !== selectedCells[i].innerHTML) {
13783
- innerHtml = innerHtml + selectedCells[i].innerHTML;
13814
+ innerHtml = innerHtml ? innerHtml + '<br>' + selectedCells[i].innerHTML : innerHtml + selectedCells[i].innerHTML;
13784
13815
  }
13785
13816
  }
13786
13817
  selectedCells[0].innerHTML = innerHtml;
@@ -15122,7 +15153,8 @@ class ClearFormat$1 {
15122
15153
  for (let index = 0; index < textNodes.length; index++) {
15123
15154
  let currentInlineNode = textNodes[index];
15124
15155
  let currentNode;
15125
- while (!this.domNode.isBlockNode(currentInlineNode)) {
15156
+ while (!this.domNode.isBlockNode(currentInlineNode) &&
15157
+ (currentInlineNode.parentElement && !currentInlineNode.parentElement.classList.contains('e-img-inner'))) {
15126
15158
  currentNode = currentInlineNode;
15127
15159
  currentInlineNode = currentInlineNode.parentElement;
15128
15160
  }
@@ -15136,7 +15168,7 @@ class ClearFormat$1 {
15136
15168
  static removeInlineParent(textNodes) {
15137
15169
  const nodes = InsertMethods.unwrap(textNodes);
15138
15170
  for (let index = 0; index < nodes.length; index++) {
15139
- if (nodes[index].parentNode.childNodes.length === 1
15171
+ if (nodes[index].parentNode.childNodes.length === 1 && !nodes[index].parentNode.classList.contains('e-img-inner')
15140
15172
  && IsFormatted.inlineTags.indexOf(nodes[index].parentNode.nodeName.toLocaleLowerCase()) > -1) {
15141
15173
  this.removeInlineParent(nodes[index].parentNode);
15142
15174
  }
@@ -15516,7 +15548,13 @@ class MsWordPaste {
15516
15548
  }
15517
15549
  imageConversion(elm, rtfData) {
15518
15550
  this.checkVShape(elm);
15519
- const imgElem = elm.querySelectorAll('img');
15551
+ let imgElem = elm.querySelectorAll('img');
15552
+ for (let i = 0; i < imgElem.length; i++) {
15553
+ if (!isNullOrUndefined(imgElem[i].getAttribute('v:shapes')) && imgElem[i].getAttribute('v:shapes').indexOf('Picture') < 0) {
15554
+ detach(imgElem[i]);
15555
+ }
15556
+ }
15557
+ imgElem = elm.querySelectorAll('img');
15520
15558
  const imgSrc = [];
15521
15559
  const base64Src = [];
15522
15560
  const imgName = [];
@@ -17340,6 +17378,7 @@ class HtmlEditor {
17340
17378
  if (!this.isImageDelete) {
17341
17379
  args.preventDefault();
17342
17380
  }
17381
+ args.preventDefault();
17343
17382
  }
17344
17383
  }
17345
17384
  isOrderedList(editorValue) {
@@ -17386,8 +17425,8 @@ class HtmlEditor {
17386
17425
  }
17387
17426
  }
17388
17427
  }
17389
- else if (this.rangeElement.tagName === 'TABLE' || (!isNullOrUndefined(this.rangeElement.previousElementSibling) &&
17390
- this.rangeElement.previousElementSibling.tagName === 'TABLE')) {
17428
+ else if (this.rangeElement === this.parent.inputElement || this.rangeElement.tagName === 'TABLE' ||
17429
+ (!isNullOrUndefined(this.rangeElement.previousElementSibling) && this.rangeElement.previousElementSibling.tagName === 'TABLE')) {
17391
17430
  return;
17392
17431
  }
17393
17432
  else {
@@ -17916,7 +17955,9 @@ class PasteCleanup {
17916
17955
  this.containsHtml = htmlRegex.test(value);
17917
17956
  const file = e && e.args.clipboardData &&
17918
17957
  e.args.clipboardData.items.length > 0 ?
17919
- e.args.clipboardData.items[0].getAsFile() : null;
17958
+ (e.args.clipboardData.items[0].getAsFile() === null ?
17959
+ (!isNullOrUndefined(e.args.clipboardData.items[1]) ? e.args.clipboardData.items[1].getAsFile() : null) :
17960
+ e.args.clipboardData.items[0].getAsFile()) : null;
17920
17961
  this.parent.notify(paste, {
17921
17962
  file: file,
17922
17963
  args: e.args,
@@ -18394,12 +18435,20 @@ class PasteCleanup {
18394
18435
  detach(rteDialogWrapper.children[0]);
18395
18436
  }
18396
18437
  }
18438
+ cleanAppleClass(elem) {
18439
+ let appleClassElem = elem.querySelectorAll('br.Apple-interchange-newline');
18440
+ for (let i = 0; i < appleClassElem.length; i++) {
18441
+ detach(appleClassElem[i]);
18442
+ }
18443
+ return elem;
18444
+ }
18397
18445
  formatting(value, clean, args) {
18398
18446
  let clipBoardElem = this.parent.createElement('div', { className: 'pasteContent', styles: 'display:inline;' });
18399
18447
  if (this.isNotFromHtml && this.containsHtml) {
18400
18448
  value = this.splitBreakLine(value);
18401
18449
  }
18402
18450
  clipBoardElem.innerHTML = value;
18451
+ clipBoardElem = this.cleanAppleClass(clipBoardElem);
18403
18452
  if (this.parent.pasteCleanupSettings.deniedTags !== null) {
18404
18453
  clipBoardElem = this.deniedTags(clipBoardElem);
18405
18454
  }
@@ -20171,6 +20220,7 @@ class Image {
20171
20220
  calcPos(elem) {
20172
20221
  const ignoreOffset = ['TD', 'TH', 'TABLE', 'A'];
20173
20222
  let parentOffset = { top: 0, left: 0 };
20223
+ let elementOffset;
20174
20224
  const doc = elem.ownerDocument;
20175
20225
  let offsetParent = ((elem.offsetParent && (elem.offsetParent.classList.contains('e-img-caption') ||
20176
20226
  ignoreOffset.indexOf(elem.offsetParent.tagName) > -1)) ?
@@ -20184,10 +20234,19 @@ class Image {
20184
20234
  // eslint-disable-next-line
20185
20235
  parentOffset = offsetParent.getBoundingClientRect();
20186
20236
  }
20187
- return {
20188
- top: elem.offsetTop,
20189
- left: elem.offsetLeft
20190
- };
20237
+ if (elem.offsetParent && (elem.offsetParent.classList.contains('e-img-caption'))) {
20238
+ elementOffset = elem.getBoundingClientRect();
20239
+ return {
20240
+ top: elementOffset.top - parentOffset.top,
20241
+ left: elementOffset.left - parentOffset.left
20242
+ };
20243
+ }
20244
+ else {
20245
+ return {
20246
+ top: elem.offsetTop,
20247
+ left: elem.offsetLeft
20248
+ };
20249
+ }
20191
20250
  }
20192
20251
  setAspectRatio(img, expectedX, expectedY, e) {
20193
20252
  if (isNullOrUndefined(img.width)) {
@@ -20197,7 +20256,7 @@ class Image {
20197
20256
  parseInt(img.style.width, 10) : img.width;
20198
20257
  const height = img.style.height !== '' ? parseInt(img.style.height, 10) : img.height;
20199
20258
  if (width > height) {
20200
- img.style.minWidth = '20px';
20259
+ img.style.minWidth = this.parent.insertImageSettings.minWidth === 0 ? '20px' : formatUnit(this.parent.insertImageSettings.minWidth);
20201
20260
  if (this.parent.insertImageSettings.resizeByPercent) {
20202
20261
  if (parseInt('' + img.getBoundingClientRect().width + '', 10) !== 0 && parseInt('' + width + '', 10) !== 0) {
20203
20262
  const percentageValue = this.pixToPerc((width / height * expectedY), (img.previousElementSibling || img.parentElement));
@@ -20519,6 +20578,10 @@ class Image {
20519
20578
  range.startContainer.querySelector('.' + CLS_CAPTION + '.' + CLS_CAPINLINE))) {
20520
20579
  detach(range.startContainer.querySelector('.' + CLS_CAPTION + '.' + CLS_CAPINLINE));
20521
20580
  }
20581
+ else if (range.startContainer.nodeType === 1 &&
20582
+ range.startContainer.querySelector('.' + CLS_CAPTION + '.' + CLS_IMGBREAK)) {
20583
+ detach(range.startContainer.querySelector('.' + CLS_CAPTION + '.' + CLS_IMGBREAK));
20584
+ }
20522
20585
  }
20523
20586
  break;
20524
20587
  case 'insert-image':
@@ -20688,6 +20751,8 @@ class Image {
20688
20751
  if (this.parent.quickToolbarModule.imageQTBar) {
20689
20752
  if (e.isNotify) {
20690
20753
  setTimeout(() => {
20754
+ this.parent.formatter.editorManager.nodeSelection.Clear(this.contentModule.getDocument());
20755
+ this.parent.formatter.editorManager.nodeSelection.setSelectionContents(this.contentModule.getDocument(), target);
20691
20756
  this.quickToolObj.imageQTBar.showPopup(args.pageX, pageY, target);
20692
20757
  }, 400);
20693
20758
  }
@@ -22654,7 +22719,7 @@ class Table {
22654
22719
  ele.classList.add(CLS_TABLE_SEL);
22655
22720
  this.addRow(selection, event, true);
22656
22721
  ele.classList.remove(CLS_TABLE_SEL);
22657
- nextElement = nextElement.parentElement.nextSibling.firstChild;
22722
+ nextElement = nextElement.parentElement.nextSibling ? nextElement.parentElement.nextSibling.firstChild : nextElement.parentElement.firstChild;
22658
22723
  // eslint-disable-next-line
22659
22724
  (nextElement.textContent.trim() !== '' && closest(nextElement, 'td')) ?
22660
22725
  selection.setSelectionNode(this.contentModule.getDocument(), nextElement) :
@@ -22943,6 +23008,7 @@ class Table {
22943
23008
  const offset = elem.getBoundingClientRect();
22944
23009
  const doc = elem.ownerDocument;
22945
23010
  let offsetParent = elem.offsetParent || doc.documentElement;
23011
+ let isNestedTable = false;
22946
23012
  while (offsetParent &&
22947
23013
  (offsetParent === doc.body || offsetParent === doc.documentElement) &&
22948
23014
  offsetParent.style.position === 'static') {
@@ -22950,15 +23016,29 @@ class Table {
22950
23016
  }
22951
23017
  if (offsetParent.nodeName === 'TD' && elem.nodeName === 'TABLE') {
22952
23018
  offsetParent = closest(offsetParent, '.e-rte-content');
23019
+ isNestedTable = true;
22953
23020
  }
22954
23021
  if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {
22955
23022
  // eslint-disable-next-line
22956
23023
  parentOffset = offsetParent.getBoundingClientRect();
22957
23024
  }
22958
- return {
22959
- top: elem.offsetTop,
22960
- left: elem.offsetLeft
22961
- };
23025
+ if (isNestedTable) {
23026
+ isNestedTable = false;
23027
+ let topValue = this.parent.inputElement && this.parent.inputElement.scrollTop > 0 ?
23028
+ (this.parent.inputElement.scrollTop + offset.top) - parentOffset.top : offset.top - parentOffset.top;
23029
+ let leftValue = this.parent.inputElement && this.parent.inputElement.scrollLeft > 0 ?
23030
+ (this.parent.inputElement.scrollLeft + offset.left) - parentOffset.left : offset.left - parentOffset.left;
23031
+ return {
23032
+ top: topValue,
23033
+ left: leftValue
23034
+ };
23035
+ }
23036
+ else {
23037
+ return {
23038
+ top: elem.offsetTop,
23039
+ left: elem.offsetLeft
23040
+ };
23041
+ }
22962
23042
  }
22963
23043
  getPointX(e) {
22964
23044
  if (e.touches && e.touches.length) {
@@ -25657,7 +25737,7 @@ let RichTextEditor = class RichTextEditor extends Component {
25657
25737
  this.inputElement.parentElement.insertBefore(this.placeHolderWrapper, this.inputElement);
25658
25738
  }
25659
25739
  attributes(this.placeHolderWrapper, {
25660
- 'style': 'font-size: 14px; padding: 16px; margin-left: 0px; margin-right: 0px;'
25740
+ 'style': 'font-size: 14px; margin-left: 0px; margin-right: 0px;'
25661
25741
  });
25662
25742
  }
25663
25743
  this.placeHolderWrapper.innerHTML = this.placeholder;
@@ -25896,7 +25976,8 @@ let RichTextEditor = class RichTextEditor extends Component {
25896
25976
  }
25897
25977
  setValue() {
25898
25978
  if (this.valueTemplate) {
25899
- if (typeof this.valueTemplate === 'string') {
25979
+ const regEx = new RegExp(/<(?=.*? .*?\/ ?>|br|hr|input|!--|wbr)[a-z]+.*?>|<([a-z]+).*?<\/\1>/i);
25980
+ if (regEx.test(this.valueTemplate)) {
25900
25981
  this.setProperties({ value: this.valueTemplate });
25901
25982
  }
25902
25983
  else {
@@ -26479,7 +26560,7 @@ let RichTextEditor = class RichTextEditor extends Component {
26479
26560
  restrict(e) {
26480
26561
  if (this.maxLength >= 0) {
26481
26562
  const element = this.editorMode === 'Markdown' ? this.contentModule.getText() :
26482
- e.currentTarget.textContent.trim();
26563
+ e.currentTarget.textContent;
26483
26564
  const array = [8, 16, 17, 37, 38, 39, 40, 46, 65];
26484
26565
  let arrayKey;
26485
26566
  for (let i = 0; i <= array.length - 1; i++) {
@@ -26849,5 +26930,5 @@ RichTextEditor = __decorate$1([
26849
26930
  * Rich Text Editor component exported items
26850
26931
  */
26851
26932
 
26852
- 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 };
26933
+ 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, 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 };
26853
26934
  //# sourceMappingURL=ej2-richtexteditor.es2015.js.map