@syncfusion/ej2-richtexteditor 24.2.7 → 24.2.8

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 (71) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/ej2-richtexteditor.min.js +2 -2
  3. package/dist/ej2-richtexteditor.umd.min.js +2 -2
  4. package/dist/ej2-richtexteditor.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-richtexteditor.es2015.js +294 -147
  6. package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
  7. package/dist/es6/ej2-richtexteditor.es5.js +295 -146
  8. package/dist/es6/ej2-richtexteditor.es5.js.map +1 -1
  9. package/dist/global/ej2-richtexteditor.min.js +2 -2
  10. package/dist/global/ej2-richtexteditor.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/package.json +7 -7
  13. package/src/editor-manager/plugin/dom-node.js +3 -1
  14. package/src/editor-manager/plugin/format-painter-actions.d.ts +1 -0
  15. package/src/editor-manager/plugin/format-painter-actions.js +18 -0
  16. package/src/editor-manager/plugin/lists.js +79 -70
  17. package/src/rich-text-editor/actions/base-quick-toolbar.js +2 -2
  18. package/src/rich-text-editor/actions/color-picker.d.ts +1 -0
  19. package/src/rich-text-editor/actions/color-picker.js +10 -0
  20. package/src/rich-text-editor/actions/toolbar.js +3 -0
  21. package/src/rich-text-editor/base/constant.d.ts +5 -0
  22. package/src/rich-text-editor/base/constant.js +5 -0
  23. package/src/rich-text-editor/base/rich-text-editor.js +21 -5
  24. package/src/rich-text-editor/models/default-locale.js +1 -1
  25. package/src/rich-text-editor/renderer/dialog-renderer.js +5 -1
  26. package/src/rich-text-editor/renderer/iframe-content-renderer.js +1 -1
  27. package/src/rich-text-editor/renderer/image-module.js +28 -7
  28. package/src/rich-text-editor/renderer/table-module.d.ts +3 -1
  29. package/src/rich-text-editor/renderer/table-module.js +111 -50
  30. package/src/rich-text-editor/renderer/toolbar-renderer.js +13 -13
  31. package/styles/bootstrap-dark.css +32 -13
  32. package/styles/bootstrap.css +36 -20
  33. package/styles/bootstrap4.css +18 -3
  34. package/styles/bootstrap5-dark.css +22 -9
  35. package/styles/bootstrap5.css +22 -9
  36. package/styles/fabric-dark.css +18 -3
  37. package/styles/fabric.css +18 -3
  38. package/styles/fluent-dark.css +24 -3
  39. package/styles/fluent.css +24 -3
  40. package/styles/highcontrast-light.css +18 -3
  41. package/styles/highcontrast.css +21 -3
  42. package/styles/material-dark.css +22 -3
  43. package/styles/material.css +22 -3
  44. package/styles/material3-dark.css +19 -4
  45. package/styles/material3.css +19 -4
  46. package/styles/rich-text-editor/_bootstrap-dark-definition.scss +8 -8
  47. package/styles/rich-text-editor/_bootstrap-definition.scss +14 -14
  48. package/styles/rich-text-editor/_layout.scss +11 -0
  49. package/styles/rich-text-editor/_material3-definition.scss +1 -1
  50. package/styles/rich-text-editor/_theme.scss +47 -13
  51. package/styles/rich-text-editor/bootstrap-dark.css +32 -13
  52. package/styles/rich-text-editor/bootstrap.css +36 -20
  53. package/styles/rich-text-editor/bootstrap4.css +18 -3
  54. package/styles/rich-text-editor/bootstrap5-dark.css +22 -9
  55. package/styles/rich-text-editor/bootstrap5.css +22 -9
  56. package/styles/rich-text-editor/fabric-dark.css +18 -3
  57. package/styles/rich-text-editor/fabric.css +18 -3
  58. package/styles/rich-text-editor/fluent-dark.css +24 -3
  59. package/styles/rich-text-editor/fluent.css +24 -3
  60. package/styles/rich-text-editor/highcontrast-light.css +18 -3
  61. package/styles/rich-text-editor/highcontrast.css +21 -3
  62. package/styles/rich-text-editor/material-dark.css +22 -3
  63. package/styles/rich-text-editor/material.css +22 -3
  64. package/styles/rich-text-editor/material3-dark.css +19 -4
  65. package/styles/rich-text-editor/material3.css +19 -4
  66. package/styles/rich-text-editor/tailwind-dark.css +30 -3
  67. package/styles/rich-text-editor/tailwind.css +30 -3
  68. package/styles/tailwind-dark.css +30 -3
  69. package/styles/tailwind.css +30 -3
  70. package/.github/PULL_REQUEST_TEMPLATE/Bug.md +0 -41
  71. package/.github/PULL_REQUEST_TEMPLATE/Feature.md +0 -27
@@ -764,6 +764,11 @@ const updateValueOnIdle = 'updateValueOnIdle';
764
764
  * @deprecated
765
765
  */
766
766
  const documentClickClosedBy = 'documentClickClosedBy';
767
+ /**
768
+ * @hidden
769
+ * @deprecated
770
+ */
771
+ const showColorPicker = 'showColorPicker';
767
772
  /**
768
773
  * @hidden
769
774
  * @deprecated
@@ -2714,7 +2719,7 @@ let defaultLocale = {
2714
2719
  'browse': 'Browse',
2715
2720
  'imageUrl': 'http://example.com/image.png',
2716
2721
  'audioUrl': 'http://example.com/audio.mp3',
2717
- 'videoUrl': 'http://example.com/video.mp3',
2722
+ 'videoUrl': 'http://example.com/video.mp4',
2718
2723
  'webUrl': 'Web URL',
2719
2724
  'embedUrl': 'Embed Code',
2720
2725
  'imageCaption': 'Caption',
@@ -3675,6 +3680,19 @@ class ToolbarRenderer {
3675
3680
  addClass([listEle[1], listEle[2]], 'e-disabled');
3676
3681
  }
3677
3682
  }
3683
+ if (this.parent.showTooltip) {
3684
+ this.dropdownTooltip = new Tooltip({
3685
+ target: '[aria-owns="' + this.parent.getID() + '"].e-rte-elements [title]',
3686
+ showTipPointer: true,
3687
+ openDelay: 400,
3688
+ opensOn: 'Hover',
3689
+ beforeRender: this.tooltipBeforeRender.bind(this),
3690
+ cssClass: this.parent.getCssClass(),
3691
+ windowCollision: true,
3692
+ position: 'BottomCenter'
3693
+ });
3694
+ this.dropdownTooltip.appendTo(args.element);
3695
+ }
3678
3696
  this.parent.notify(selectionSave, args);
3679
3697
  }
3680
3698
  dropDownClose(args) {
@@ -3719,19 +3737,6 @@ class ToolbarRenderer {
3719
3737
  });
3720
3738
  this.tooltip.appendTo(args.target);
3721
3739
  }
3722
- if (this.parent.showTooltip) {
3723
- this.dropdownTooltip = new Tooltip({
3724
- target: '[aria-owns="' + this.parent.getID() + '"].e-rte-elements [title]',
3725
- showTipPointer: true,
3726
- openDelay: 400,
3727
- opensOn: 'Hover',
3728
- beforeRender: this.tooltipBeforeRender.bind(this),
3729
- cssClass: this.parent.getCssClass(),
3730
- windowCollision: true,
3731
- position: 'BottomCenter'
3732
- });
3733
- this.dropdownTooltip.appendTo(document.body);
3734
- }
3735
3740
  }
3736
3741
  /**
3737
3742
  * renderDropDownButton method
@@ -5143,6 +5148,9 @@ class Toolbar$2 {
5143
5148
  if (e.target.classList.contains('e-hor-nav')) {
5144
5149
  this.adjustContentHeight(e.target, true);
5145
5150
  }
5151
+ if (!isNullOrUndefined(e.target) && (e.target.classList.contains("e-rte-fontcolor-dropdown") || e.target.classList.contains("e-rte-backgroundcolor-dropdown"))) {
5152
+ this.parent.notify(showColorPicker, { toolbarClick: e.target.classList.contains("e-rte-fontcolor-dropdown") ? "fontcolor" : "backgroundcolor" });
5153
+ }
5146
5154
  }
5147
5155
  }
5148
5156
  createToolbarElement() {
@@ -6181,6 +6189,15 @@ class ColorPickerInput {
6181
6189
  this.parent.on(destroyColorPicker, this.destroyColorPicker, this);
6182
6190
  this.parent.on(modelChanged, this.onPropertyChanged, this);
6183
6191
  this.parent.on(bindCssClass, this.setCssClass, this);
6192
+ this.parent.on(showColorPicker, this.showColorPicker, this);
6193
+ }
6194
+ showColorPicker(e) {
6195
+ if (!isNullOrUndefined(this.fontColorPicker) && (e.toolbarClick === "fontcolor")) {
6196
+ this.fontColorDropDown.toggle();
6197
+ }
6198
+ else if (!isNullOrUndefined(this.backgroundColorPicker) && (e.toolbarClick === "backgroundcolor")) {
6199
+ this.backgroundColorDropDown.toggle();
6200
+ }
6184
6201
  }
6185
6202
  onPropertyChanged(model) {
6186
6203
  const newProp = model.newProp;
@@ -6251,6 +6268,7 @@ class ColorPickerInput {
6251
6268
  this.parent.off(destroyColorPicker, this.destroyColorPicker);
6252
6269
  this.parent.off(modelChanged, this.onPropertyChanged);
6253
6270
  this.parent.off(bindCssClass, this.setCssClass);
6271
+ this.parent.off(showColorPicker, this.showColorPicker);
6254
6272
  }
6255
6273
  }
6256
6274
 
@@ -6509,9 +6527,9 @@ class BaseQuickToolbar {
6509
6527
  parentData: parent.getBoundingClientRect(),
6510
6528
  tBarElementHeight: tBarHeight
6511
6529
  };
6512
- if (target.tagName === 'IMG' || target.tagName === 'AUDIO' || target.tagName === 'VIDEO' || target.tagName === 'IFRAME' || (target.classList &&
6530
+ if ((target.tagName === 'IMG' || target.tagName === 'AUDIO' || target.tagName === 'VIDEO' || target.tagName === 'IFRAME' || (target.classList &&
6513
6531
  (target.classList.contains(CLS_AUDIOWRAP) || target.classList.contains(CLS_CLICKELEM) ||
6514
- target.classList.contains(CLS_VID_CLICK_ELEM)))) {
6532
+ target.classList.contains(CLS_VID_CLICK_ELEM)))) && (x == beforeQuickToolbarArgs.positionX || y == beforeQuickToolbarArgs.positionY)) {
6515
6533
  this.setPosition(showPopupData);
6516
6534
  }
6517
6535
  if (!this.parent.inlineMode.enable) {
@@ -11698,9 +11716,11 @@ class DOMNode {
11698
11716
  const range = save.range;
11699
11717
  const startChildNodes = range.startContainer.childNodes;
11700
11718
  const isTableStart = startChildNodes.length > 1 && startChildNodes[0].nodeName === 'TABLE';
11719
+ const isImgOnlySelected = startChildNodes.length > 1 && startChildNodes[0].nodeName === 'IMAGE' &&
11720
+ range.endOffset === 1 && range.endContainer.nodeName === '#text' && range.endContainer.textContent.length === 0;
11701
11721
  let start = ((isTableStart ? getLastTextNode(startChildNodes[range.startOffset + 1]) :
11702
11722
  startChildNodes[(range.startOffset > 0) ? (range.startOffset - 1) : range.startOffset]) || range.startContainer);
11703
- let end = (range.endContainer.childNodes[(range.endOffset > 0) ? (range.endOffset - 1) : range.endOffset]
11723
+ let end = (range.endContainer.childNodes[(range.endOffset > 0) ? (isImgOnlySelected ? range.endOffset : (range.endOffset - 1)) : range.endOffset]
11704
11724
  || range.endContainer);
11705
11725
  if ((start.nodeType === Node.ELEMENT_NODE && end.nodeType === Node.ELEMENT_NODE) && (start.contains(end) || end.contains(start))) {
11706
11726
  const existNode = start.contains(end) ? start : end;
@@ -12048,14 +12068,21 @@ class Lists {
12048
12068
  const preElementOLTest = this.testList(preElement);
12049
12069
  const nextElementOLTest = this.testList(nextElement);
12050
12070
  if (!preElementOLTest && !nextElementOLTest && preElemULStart !== '*' && nextElemULStart !== '*') {
12071
+ const brElement = createElement('br');
12051
12072
  if (startElementOLTest) {
12052
12073
  range.startContainer.textContent = range.startContainer.textContent.slice(range.startOffset, range.startContainer.textContent.length);
12074
+ if (range.startContainer.nodeName === '#text' && range.startContainer.textContent.length === 0) {
12075
+ this.parent.domNode.insertAfter(brElement, range.startContainer);
12076
+ }
12053
12077
  this.applyListsHandler({ subCommand: 'OL', callBack: e.callBack });
12054
12078
  e.event.preventDefault();
12055
12079
  }
12056
12080
  else if (range.startContainer.textContent.replace(/\u200B/g, '').slice(0, range.startOffset).trim() === '*' ||
12057
12081
  range.startContainer.textContent.replace(/\u200B/g, '').slice(0, range.startOffset).trim() === '-') {
12058
12082
  range.startContainer.textContent = range.startContainer.textContent.slice(range.startOffset, range.startContainer.textContent.length);
12083
+ if (range.startContainer.nodeName === '#text' && range.startContainer.textContent.length === 0) {
12084
+ this.parent.domNode.insertAfter(brElement, range.startContainer);
12085
+ }
12059
12086
  this.applyListsHandler({ subCommand: 'UL', callBack: e.callBack });
12060
12087
  e.event.preventDefault();
12061
12088
  }
@@ -12166,11 +12193,11 @@ class Lists {
12166
12193
  }
12167
12194
  removeList(range, e) {
12168
12195
  let startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);
12169
- let endNode = this.parent.domNode.getSelectedNode(range.endContainer, range.endOffset);
12196
+ let endNode = (!isNullOrUndefined(range.endContainer.parentElement.closest('li')) && range.endContainer.parentElement.closest('li').childElementCount > 1 && range.endContainer.nodeName === '#text') ? range.endContainer : this.parent.domNode.getSelectedNode(range.endContainer, range.endOffset);
12170
12197
  startNode = startNode.nodeName === 'BR' ? startNode.parentElement : startNode;
12171
12198
  endNode = endNode.nodeName === 'BR' ? endNode.parentElement : endNode;
12172
12199
  startNode = startNode.nodeName !== 'LI' && !isNullOrUndefined(startNode.closest('LI')) ? startNode.closest('LI') : startNode;
12173
- endNode = endNode.nodeName !== 'LI' && !isNullOrUndefined(endNode.closest('LI')) ? endNode.closest('LI') : endNode;
12200
+ endNode = endNode.nodeName !== 'LI' && endNode.nodeName !== '#text' && !isNullOrUndefined(endNode.closest('LI')) ? endNode.closest('LI') : endNode;
12174
12201
  if (((range.commonAncestorContainer.nodeName === 'OL' || range.commonAncestorContainer.nodeName === 'UL' || range.commonAncestorContainer.nodeName === 'LI') &&
12175
12202
  isNullOrUndefined(endNode.nextElementSibling) && endNode.textContent.length === range.endOffset &&
12176
12203
  isNullOrUndefined(startNode.previousElementSibling) && range.startOffset === 0) ||
@@ -12575,7 +12602,7 @@ class Lists {
12575
12602
  }
12576
12603
  }
12577
12604
  applyLists(elements, type, selector, item, e) {
12578
- if (this.isRevert(elements, type, item) && isNullOrUndefined(item)) {
12605
+ if (this.isRevert(elements, type, item) && isNullOrUndefined(item) || (!isNullOrUndefined(item) && item.listStyle === 'none')) {
12579
12606
  this.revertList(elements, e);
12580
12607
  this.removeEmptyListElements();
12581
12608
  }
@@ -12763,76 +12790,78 @@ class Lists {
12763
12790
  const viewNode = [];
12764
12791
  for (let i = 0; i < elements.length; i++) {
12765
12792
  const element = elements[i];
12766
- if (this.domNode.contents(element)[0].nodeType === 3 && this.domNode.contents(element)[0].textContent.trim().length === 0) {
12767
- detach(this.domNode.contents(element)[0]);
12768
- }
12769
- let parentNode = elements[i].parentNode;
12770
- let className = element.getAttribute('class');
12771
- if (temp.length === 0) {
12772
- const siblingList = elements[i].querySelectorAll('ul, ol');
12773
- const firstNode = siblingList[0];
12774
- if (firstNode) {
12775
- const child = firstNode
12776
- .querySelectorAll('li');
12777
- if (child) {
12778
- const nestedElement = createElement(firstNode.tagName);
12779
- append([nestedElement], firstNode.parentNode);
12780
- const nestedElementLI = createElement('li', { styles: 'list-style-type: none;' });
12781
- append([nestedElementLI], nestedElement);
12782
- append([firstNode], nestedElementLI);
12793
+ if ((isNullOrUndefined(e.item)) || ((element.nodeName === 'LI' && e.item.listStyle === 'none'))) {
12794
+ if (this.domNode.contents(element)[0].nodeType === 3 && this.domNode.contents(element)[0].textContent.trim().length === 0) {
12795
+ detach(this.domNode.contents(element)[0]);
12796
+ }
12797
+ let parentNode = elements[i].parentNode;
12798
+ let className = element.getAttribute('class');
12799
+ if (temp.length === 0) {
12800
+ const siblingList = elements[i].querySelectorAll('ul, ol');
12801
+ const firstNode = siblingList[0];
12802
+ if (firstNode) {
12803
+ const child = firstNode
12804
+ .querySelectorAll('li');
12805
+ if (child) {
12806
+ const nestedElement = createElement(firstNode.tagName);
12807
+ append([nestedElement], firstNode.parentNode);
12808
+ const nestedElementLI = createElement('li', { styles: 'list-style-type: none;' });
12809
+ append([nestedElementLI], nestedElement);
12810
+ append([firstNode], nestedElementLI);
12811
+ }
12783
12812
  }
12784
12813
  }
12785
- }
12786
- if (element.parentNode.insertBefore(this.closeTag(parentNode.tagName), element), 'LI' === parentNode.parentNode.tagName || 'OL' === parentNode.parentNode.tagName ||
12787
- 'UL' === parentNode.parentNode.tagName) {
12788
- element.parentNode.insertBefore(this.closeTag('LI'), element);
12789
- }
12790
- else {
12791
- if (DEFAULT_TAG && 0 === element.querySelectorAll(BLOCK_TAGS.join(', ')).length) {
12792
- const wrapperclass = isNullOrUndefined(className) ? ' class="e-rte-wrap-inner"' :
12793
- ' class="' + className + ' e-rte-wrap-inner"';
12794
- let parentElement = parentNode;
12795
- if (!isNullOrUndefined(parentElement.style.listStyleType)) {
12796
- parentNode.style.removeProperty("list-style-type");
12814
+ if (element.parentNode.insertBefore(this.closeTag(parentNode.tagName), element), 'LI' === parentNode.parentNode.tagName || 'OL' === parentNode.parentNode.tagName ||
12815
+ 'UL' === parentNode.parentNode.tagName) {
12816
+ element.parentNode.insertBefore(this.closeTag('LI'), element);
12817
+ }
12818
+ else {
12819
+ if (DEFAULT_TAG && 0 === element.querySelectorAll(BLOCK_TAGS.join(', ')).length) {
12820
+ const wrapperclass = isNullOrUndefined(className) ? ' class="e-rte-wrap-inner"' :
12821
+ ' class="' + className + ' e-rte-wrap-inner"';
12822
+ let parentElement = parentNode;
12823
+ if (!isNullOrUndefined(parentElement.style.listStyleType)) {
12824
+ parentNode.style.removeProperty("list-style-type");
12825
+ }
12826
+ if (!isNullOrUndefined(parentElement.style.listStyleImage)) {
12827
+ parentNode.style.removeProperty("list-style-image");
12828
+ }
12829
+ if (parentElement.style.length === 0) {
12830
+ parentNode.removeAttribute("style");
12831
+ }
12832
+ const wrapper = '<' + DEFAULT_TAG + wrapperclass +
12833
+ this.domNode.attributes(parentElement) + '></' + DEFAULT_TAG + '>';
12834
+ if (e.enterAction !== 'BR') {
12835
+ this.domNode.wrapInner(element, this.domNode.parseHTMLFragment(wrapper));
12836
+ }
12797
12837
  }
12798
- if (!isNullOrUndefined(parentElement.style.listStyleImage)) {
12799
- parentNode.style.removeProperty("list-style-image");
12838
+ else if (this.domNode.contents(element)[0].nodeType === 3) {
12839
+ const replace = this.domNode.createTagString(DEFAULT_TAG, parentNode, this.parent.domNode.encode(this.domNode.contents(element)[0].textContent));
12840
+ this.domNode.replaceWith(this.domNode.contents(element)[0], replace);
12800
12841
  }
12801
- if (parentElement.style.length === 0) {
12802
- parentNode.removeAttribute("style");
12842
+ else if (this.domNode.contents(element)[0].classList.contains(markerClassName.startSelection) ||
12843
+ this.domNode.contents(element)[0].classList.contains(markerClassName.endSelection)) {
12844
+ const replace = this.domNode.createTagString(DEFAULT_TAG, parentNode, this.domNode.contents(element)[0].outerHTML);
12845
+ this.domNode.replaceWith(this.domNode.contents(element)[0], replace);
12803
12846
  }
12804
- const wrapper = '<' + DEFAULT_TAG + wrapperclass +
12805
- this.domNode.attributes(parentElement) + '></' + DEFAULT_TAG + '>';
12806
- if (e.enterAction !== 'BR') {
12807
- this.domNode.wrapInner(element, this.domNode.parseHTMLFragment(wrapper));
12847
+ else {
12848
+ const childNode = element.firstChild;
12849
+ className = childNode.getAttribute('class');
12850
+ attributes(childNode, this.domNode.rawAttributes(parentNode));
12851
+ if (className && childNode.getAttribute('class')) {
12852
+ attributes(childNode, { 'class': className + ' ' + childNode.getAttribute('class') });
12853
+ }
12808
12854
  }
12855
+ append([this.openTag('LI')], element);
12856
+ prepend([this.closeTag('LI')], element);
12809
12857
  }
12810
- else if (this.domNode.contents(element)[0].nodeType === 3) {
12811
- const replace = this.domNode.createTagString(DEFAULT_TAG, parentNode, this.parent.domNode.encode(this.domNode.contents(element)[0].textContent));
12812
- this.domNode.replaceWith(this.domNode.contents(element)[0], replace);
12813
- }
12814
- else if (this.domNode.contents(element)[0].classList.contains(markerClassName.startSelection) ||
12815
- this.domNode.contents(element)[0].classList.contains(markerClassName.endSelection)) {
12816
- const replace = this.domNode.createTagString(DEFAULT_TAG, parentNode, this.domNode.contents(element)[0].outerHTML);
12817
- this.domNode.replaceWith(this.domNode.contents(element)[0], replace);
12858
+ this.domNode.insertAfter(this.openTag(parentNode.tagName), element);
12859
+ if (parentNode.parentNode.tagName === 'LI') {
12860
+ parentNode = parentNode.parentNode.parentNode;
12818
12861
  }
12819
- else {
12820
- const childNode = element.firstChild;
12821
- className = childNode.getAttribute('class');
12822
- attributes(childNode, this.domNode.rawAttributes(parentNode));
12823
- if (className && childNode.getAttribute('class')) {
12824
- attributes(childNode, { 'class': className + ' ' + childNode.getAttribute('class') });
12825
- }
12862
+ if (viewNode.indexOf(parentNode) < 0) {
12863
+ viewNode.push(parentNode);
12826
12864
  }
12827
- append([this.openTag('LI')], element);
12828
- prepend([this.closeTag('LI')], element);
12829
- }
12830
- this.domNode.insertAfter(this.openTag(parentNode.tagName), element);
12831
- if (parentNode.parentNode.tagName === 'LI') {
12832
- parentNode = parentNode.parentNode.parentNode;
12833
- }
12834
- if (viewNode.indexOf(parentNode) < 0) {
12835
- viewNode.push(parentNode);
12836
12865
  }
12837
12866
  }
12838
12867
  for (let i = 0; i < viewNode.length; i++) {
@@ -19935,6 +19964,14 @@ class FormatPainterActions {
19935
19964
  const range = this.parent.nodeSelection.getRange(docElement);
19936
19965
  const isCollapsed = range.collapsed;
19937
19966
  const blockNodes = this.parent.domNode.blockNodes();
19967
+ const isListCopied = this.isListCopied();
19968
+ if (isListCopied) {
19969
+ for (let i = 0; i < blockNodes.length; i++) {
19970
+ if (closest(blockNodes[i], 'li')) {
19971
+ blockNodes[i] = closest(blockNodes[i], 'li');
19972
+ }
19973
+ }
19974
+ }
19938
19975
  let isFullNodeSelected = false;
19939
19976
  if (blockNodes.length === 1) {
19940
19977
  isFullNodeSelected = blockNodes[0].textContent.trim() === range.toString().trim();
@@ -19943,6 +19980,16 @@ class FormatPainterActions {
19943
19980
  this.insertBlockNode(clonedElem, range, docElement, blockNodes);
19944
19981
  }
19945
19982
  }
19983
+ isListCopied() {
19984
+ let isListCopied = false;
19985
+ for (let i = 0; i < this.copyCollection.length; i++) {
19986
+ if (this.copyCollection[i].tagName === 'OL' || this.copyCollection[i].tagName === 'UL') {
19987
+ isListCopied = true;
19988
+ break;
19989
+ }
19990
+ }
19991
+ return isListCopied;
19992
+ }
19946
19993
  insertBlockNode(element, range, docElement, nodes) {
19947
19994
  const domSelection = this.parent.nodeSelection;
19948
19995
  const saveSelection = domSelection.save(range, docElement);
@@ -20639,7 +20686,8 @@ const IFRAMEHEADER = `
20639
20686
  block;float: none;height: auto;margin: 5px auto;max-width: 100%;position: relative;}
20640
20687
  .e-rte-audio {border: 0;cursor: pointer;display:
20641
20688
  block;float: none;margin: 5px auto;max-width: 100%;position: relative;}
20642
- .e-rte-image.e-imginline, .e-rte-audio.e-audio-inline, .e-rte-video.e-video-inline {display: inline-block;float: none;max-width: calc(100% - (2 * 5px));padding: 1px;vertical-align: bottom;}
20689
+ .e-rte-image.e-imginline, .e-rte-audio.e-audio-inline, .e-rte-video.e-video-inline {display: inline-block;float: none;
20690
+ margin-left: 5px;margin-right: 5px;max-width: calc(100% - (2 * 5px));padding: 1px;vertical-align: bottom;}
20643
20691
  .e-rte-image.e-imgcenter, .e-rte-video.e-video-center {cursor: pointer;display: block;float: none;margin: 5px auto;max-width: 100%;position: relative;}
20644
20692
  .e-rte-image.e-imgright, .e-rte-video.e-video-right { float: right; margin: 0 auto;margin-left: 5px;text-align: right;}
20645
20693
  .e-rte-image.e-imgleft, .e-rte-video.e-video-left {float: left;margin: 0 auto;margin-right: 5px;text-align: left;}
@@ -25509,6 +25557,7 @@ class Image$1 {
25509
25557
  }
25510
25558
  });
25511
25559
  }
25560
+ EventHandler.add(this.contentModule.getDocument(), Browser.touchMoveEvent, this.resizing, this);
25512
25561
  EventHandler.add(this.contentModule.getDocument(), Browser.touchEndEvent, this.resizeEnd, this);
25513
25562
  }
25514
25563
  }
@@ -25560,7 +25609,6 @@ class Image$1 {
25560
25609
  this.imgResizePos(e, this.imgResizeDiv);
25561
25610
  this.resizeImgDupPos(e);
25562
25611
  this.contentModule.getEditPanel().appendChild(this.imgResizeDiv);
25563
- EventHandler.add(this.contentModule.getDocument(), Browser.touchMoveEvent, this.resizing, this);
25564
25612
  }
25565
25613
  getPointX(e) {
25566
25614
  if (e.touches && e.touches.length) {
@@ -25918,7 +25966,9 @@ class Image$1 {
25918
25966
  }
25919
25967
  }
25920
25968
  if (originalEvent.ctrlKey && (originalEvent.keyCode === 89 || originalEvent.keyCode === 90)) {
25921
- this.undoStack({ subCommand: (originalEvent.keyCode === 90 ? 'undo' : 'redo') });
25969
+ if (this.parent.editorMode !== 'Markdown') {
25970
+ this.undoStack({ subCommand: (originalEvent.keyCode === 90 ? 'undo' : 'redo') });
25971
+ }
25922
25972
  }
25923
25973
  if (originalEvent.keyCode === 8 || originalEvent.keyCode === 46) {
25924
25974
  if (selectNodeEle && selectNodeEle[0].nodeName === 'IMG' && selectNodeEle.length < 1) {
@@ -26440,7 +26490,29 @@ class Image$1 {
26440
26490
  if (this.parent.formatter.getUndoRedoStack().length === 0) {
26441
26491
  this.parent.formatter.saveData();
26442
26492
  }
26443
- e.selection.restore();
26493
+ let restoreStartElement = e.selection.range.startContainer;
26494
+ if (e.selection.range.startContainer.nodeName === 'SPAN' &&
26495
+ restoreStartElement.classList.contains('e-img-wrap') &&
26496
+ restoreStartElement.parentElement.classList.contains('e-img-caption')) {
26497
+ restoreStartElement = restoreStartElement.parentElement;
26498
+ if (!isNullOrUndefined(restoreStartElement.previousSibling)) {
26499
+ let lastNode = restoreStartElement.previousSibling;
26500
+ while (lastNode.nodeName !== '#text' && lastNode.nodeName !== 'BR') {
26501
+ lastNode = lastNode.lastChild;
26502
+ }
26503
+ this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.contentModule.getDocument(), lastNode, lastNode.nodeName !== 'BR' ? lastNode.textContent.length : 0);
26504
+ }
26505
+ else if (!isNullOrUndefined(restoreStartElement.nextSibling)) {
26506
+ let firstNode = restoreStartElement.nextSibling;
26507
+ while (firstNode.nodeName !== '#text' && firstNode.nodeName !== 'BR') {
26508
+ firstNode = firstNode.firstChild;
26509
+ }
26510
+ this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.contentModule.getDocument(), firstNode, 0);
26511
+ }
26512
+ }
26513
+ else {
26514
+ e.selection.restore();
26515
+ }
26444
26516
  if (this.contentModule.getEditPanel().querySelector('.e-img-resize')) {
26445
26517
  this.removeResizeEle();
26446
26518
  }
@@ -26652,7 +26724,7 @@ class Image$1 {
26652
26724
  animationSettings: { effect: 'None' },
26653
26725
  close: (event) => {
26654
26726
  if (this.isImgUploaded) {
26655
- this.uploadObj.removing();
26727
+ this.uploadObj.remove();
26656
26728
  }
26657
26729
  this.parent.isBlur = false;
26658
26730
  if (event && event.event.returnValue) {
@@ -26720,9 +26792,6 @@ class Image$1 {
26720
26792
  cancelDialog(e) {
26721
26793
  this.parent.isBlur = false;
26722
26794
  this.dialogObj.hide({ returnValue: true });
26723
- if (this.isImgUploaded) {
26724
- this.uploadObj.removing();
26725
- }
26726
26795
  }
26727
26796
  onDocumentClick(e) {
26728
26797
  const target = e.target;
@@ -30138,7 +30207,6 @@ class Table {
30138
30207
  this.pageY = null;
30139
30208
  this.moveEle = null;
30140
30209
  this.currentColumnResize = '';
30141
- this.currentMarginLeft = 0;
30142
30210
  this.parent = parent;
30143
30211
  this.rteID = parent.element.id;
30144
30212
  this.l10n = serviceLocator.getService('rteLocale');
@@ -30754,7 +30822,7 @@ class Table {
30754
30822
  }
30755
30823
  tableResizeEleCreation(table, e) {
30756
30824
  this.parent.preventDefaultResize(e);
30757
- const columns = table.rows[this.calMaxCol(table)].cells;
30825
+ const columns = this.calMaxCol(this.curTable);
30758
30826
  const rows = [];
30759
30827
  for (let i = 0; i < table.rows.length; i++) {
30760
30828
  for (let j = 0; j < table.rows[i].cells.length; j++) {
@@ -30885,6 +30953,7 @@ class Table {
30885
30953
  if (target.classList.contains(CLS_TB_COL_RES) ||
30886
30954
  target.classList.contains(CLS_TB_ROW_RES) ||
30887
30955
  target.classList.contains(CLS_TB_BOX_RES)) {
30956
+ this.resetResizeHelper(this.curTable);
30888
30957
  e.preventDefault();
30889
30958
  this.parent.preventDefaultResize(e);
30890
30959
  removeClass(this.curTable.querySelectorAll('td,th'), CLS_TABLE_SEL);
@@ -30895,9 +30964,10 @@ class Table {
30895
30964
  this.hideTableQuickToolbar();
30896
30965
  if (target.classList.contains(CLS_TB_COL_RES)) {
30897
30966
  this.resizeBtnStat.column = true;
30898
- if (parseInt(target.getAttribute('data-col'), 10) === this.curTable.rows[this.calMaxCol(this.curTable)].cells.length) {
30967
+ if (parseInt(target.getAttribute('data-col'), 10) === this.calMaxCol(this.curTable).length) {
30899
30968
  this.currentColumnResize = 'last';
30900
- this.columnEle = this.curTable.rows[this.calMaxCol(this.curTable)].cells[parseInt(target.getAttribute('data-col'), 10) - 1];
30969
+ this.colIndex = parseInt(target.getAttribute('data-col'), 10) - 1;
30970
+ this.columnEle = this.calMaxCol(this.curTable)[this.colIndex];
30901
30971
  }
30902
30972
  else {
30903
30973
  if (parseInt(target.getAttribute('data-col'), 10) === 0) {
@@ -30944,9 +31014,9 @@ class Table {
30944
31014
  }
30945
31015
  }
30946
31016
  }
30947
- this.columnEle = this.curTable.rows[this.calMaxCol(this.curTable)].cells[parseInt(target.getAttribute('data-col'), 10)];
31017
+ this.colIndex = parseInt(target.getAttribute('data-col'), 10);
31018
+ this.columnEle = this.calMaxCol(this.curTable)[this.colIndex];
30948
31019
  }
30949
- this.colIndex = this.columnEle.cellIndex;
30950
31020
  this.moveEle = e.target;
30951
31021
  this.appendHelper();
30952
31022
  }
@@ -31035,16 +31105,33 @@ class Table {
31035
31105
  this.helper.style.top = top + 'px';
31036
31106
  }
31037
31107
  }
31038
- calMaxCol(element) {
31039
- let max = 0;
31040
- let maxRowIndex;
31041
- for (let i = 0; i < element.rows.length; i++) {
31042
- if (max < element.rows[i].cells.length) {
31043
- maxRowIndex = i;
31044
- max = element.rows[i].cells.length;
31108
+ calMaxCol(curTable) {
31109
+ const cellColl = curTable.rows[0].cells;
31110
+ let cellCount = 0;
31111
+ for (let cell = 0; cell < cellColl.length; cell++) {
31112
+ cellCount = cellCount + cellColl[cell].colSpan;
31113
+ }
31114
+ const cells = new Array(cellCount);
31115
+ const rowSpanCells = new Map();
31116
+ for (let i = 0; i < curTable.rows.length; i++) {
31117
+ let currentColIndex = 0;
31118
+ for (let k = 0; k < curTable.rows[i].cells.length; k++) {
31119
+ for (let l = 1; l < curTable.rows[i].cells[k].rowSpan; l++) {
31120
+ const key = `${i + l}${currentColIndex}`;
31121
+ rowSpanCells.set(key, curTable.rows[i].cells[k]);
31122
+ }
31123
+ const cellIndex = this.getCellIndex(rowSpanCells, i, k);
31124
+ if (cellIndex > currentColIndex) {
31125
+ currentColIndex = cellIndex;
31126
+ }
31127
+ const width = curTable.rows[i].cells[k].offsetWidth;
31128
+ if (!cells[currentColIndex] || width < cells[currentColIndex].offsetWidth) {
31129
+ cells[currentColIndex] = curTable.rows[i].cells[k];
31130
+ }
31131
+ currentColIndex += 1 + curTable.rows[i].cells[k].colSpan - 1;
31045
31132
  }
31046
31133
  }
31047
- return maxRowIndex;
31134
+ return cells;
31048
31135
  }
31049
31136
  resizing(e) {
31050
31137
  const pageX = this.getPointX(e);
@@ -31081,7 +31168,6 @@ class Table {
31081
31168
  }
31082
31169
  if (this.resizeBtnStat.column) {
31083
31170
  const colGroup = this.curTable.querySelectorAll('colgroup > col');
31084
- const cellRow = this.curTable.rows[0].cells[0].nodeName === 'TH' ? 1 : 0;
31085
31171
  let currentTableWidth;
31086
31172
  if (this.curTable.style.width !== '' && this.curTable.style.width.includes('%')) {
31087
31173
  currentTableWidth = parseFloat(this.curTable.style.width.split('%')[0]);
@@ -31089,7 +31175,8 @@ class Table {
31089
31175
  else {
31090
31176
  currentTableWidth = this.getCurrentTableWidth(this.curTable.offsetWidth, this.parent.inputElement.offsetWidth);
31091
31177
  }
31092
- const currentColumnCellWidth = parseFloat(this.curTable.rows[cellRow].cells[this.colIndex >= this.curTable.rows[cellRow].cells.length ? this.curTable.rows[cellRow].cells.length - 1 : this.colIndex].style.width.split('%')[0]);
31178
+ const currentCol = this.calMaxCol(this.curTable)[this.colIndex];
31179
+ let currentColResizableWidth = this.getCurrentColWidth(currentCol, tableWidth);
31093
31180
  if (this.currentColumnResize === 'first') {
31094
31181
  mouseX = mouseX - 0.75; //This was done for to make the gripper and the table first/last column will be close.
31095
31182
  this.removeResizeElement();
@@ -31098,16 +31185,25 @@ class Table {
31098
31185
  this.curTable.style.maxWidth = maxiumWidth + 'px';
31099
31186
  }
31100
31187
  // Below the value '100' is the 100% width of the parent element.
31101
- if (((mouseX !== 0 && 5 < currentColumnCellWidth) || mouseX < 0) && currentTableWidth <= 100 &&
31188
+ if (((mouseX !== 0 && 5 < currentColResizableWidth) || mouseX < 0) && currentTableWidth <= 100 &&
31102
31189
  this.convertPixelToPercentage(tableWidth - mouseX, widthCompare) <= 100) {
31103
31190
  const firstColumnsCell = this.findFirstLastColCells(this.curTable, true);
31104
31191
  this.curTable.style.width = this.convertPixelToPercentage(tableWidth - mouseX, widthCompare) > 100 ? (100 + '%') :
31105
31192
  (this.convertPixelToPercentage(tableWidth - mouseX, widthCompare) + '%');
31106
31193
  const differenceWidth = currentTableWidth - this.convertPixelToPercentage(tableWidth - mouseX, widthCompare);
31107
- this.currentMarginLeft = this.currentMarginLeft + differenceWidth;
31108
- this.curTable.style.marginLeft = 'calc(' + (this.curTable.style.width === '100%' ? 0 : this.currentMarginLeft) + '%)';
31194
+ let preMarginLeft = 0;
31195
+ if (!isNullOrUndefined(this.curTable.style.marginLeft) && this.curTable.style.marginLeft !== '') {
31196
+ const regex = /[-+]?\d*\.\d+|\d+/;
31197
+ const value = this.curTable.style.marginLeft.match(regex);
31198
+ if (!isNullOrUndefined(value)) {
31199
+ preMarginLeft = parseFloat(value[0]);
31200
+ }
31201
+ }
31202
+ const currentMarginLeft = preMarginLeft + differenceWidth;
31203
+ this.curTable.style.marginLeft = 'calc(' + (this.curTable.style.width === '100%' ? 0 : currentMarginLeft) + '%)';
31109
31204
  for (let i = 0; i < firstColumnsCell.length; i++) {
31110
- this.curTable.rows[i].cells[this.colIndex].style.width = (currentColumnCellWidth - differenceWidth) + '%';
31205
+ const currentColumnCellWidth = this.getCurrentColWidth(firstColumnsCell[i], tableWidth);
31206
+ firstColumnsCell[i].style.width = (currentColumnCellWidth - differenceWidth) + '%';
31111
31207
  }
31112
31208
  }
31113
31209
  }
@@ -31119,16 +31215,14 @@ class Table {
31119
31215
  this.curTable.style.maxWidth = maxiumWidth + 'px';
31120
31216
  }
31121
31217
  // Below the value '100' is the 100% width of the parent element.
31122
- if (((mouseX !== 0 && 5 < currentColumnCellWidth) || mouseX > 0) &&
31218
+ if (((mouseX !== 0 && 5 < currentColResizableWidth) || mouseX > 0) &&
31123
31219
  currentTableWidth <= 100 && this.convertPixelToPercentage(tableWidth + mouseX, widthCompare) <= 100) {
31124
31220
  const lastColumnsCell = this.findFirstLastColCells(this.curTable, false);
31125
31221
  this.curTable.style.width = this.convertPixelToPercentage(tableWidth + mouseX, widthCompare) > 100 ? (100 + '%') : (this.convertPixelToPercentage(tableWidth + mouseX, widthCompare) + '%');
31126
31222
  const differenceWidth = currentTableWidth - this.convertPixelToPercentage(tableWidth + mouseX, widthCompare);
31127
31223
  for (let i = 0; i < lastColumnsCell.length; i++) {
31128
- if (this.curTable.rows[i].cells[this.colIndex]) {
31129
- this.curTable.rows[i].cells[this.curTable.rows[i].cells.length === this.colIndex ?
31130
- this.colIndex - 1 : this.colIndex].style.width = (currentColumnCellWidth - differenceWidth) + '%';
31131
- }
31224
+ const currentColumnCellWidth = this.getCurrentColWidth(lastColumnsCell[i], tableWidth);
31225
+ lastColumnsCell[i].style.width = (currentColumnCellWidth - differenceWidth) + '%';
31132
31226
  }
31133
31227
  }
31134
31228
  }
@@ -31154,7 +31248,7 @@ class Table {
31154
31248
  tableTrElementPixel[i] = (parseFloat(currentTableTrElement[i].clientHeight.toString()));
31155
31249
  }
31156
31250
  }
31157
- this.curTable.style.height = (parseFloat(this.curTable.clientHeight.toString()) + mouseY) + 'px';
31251
+ this.curTable.style.height = (parseFloat(this.curTable.clientHeight.toString()) + ((mouseY > 0) ? 0 : mouseY)) + 'px';
31158
31252
  for (let i = 0; i < currentTableTrElement.length; i++) {
31159
31253
  if (this.rowEle === currentTableTrElement[i]) {
31160
31254
  currentTableTrElement[i].style.height = (parseFloat(currentTableTrElement[i].clientHeight.toString()) + mouseY) + 'px';
@@ -31189,6 +31283,16 @@ class Table {
31189
31283
  }
31190
31284
  });
31191
31285
  }
31286
+ getCurrentColWidth(col, tableWidth) {
31287
+ let currentColWidth = 0;
31288
+ if (col.style.width !== '' && col.style.width.includes('%')) {
31289
+ currentColWidth = parseFloat(col.style.width.split('%')[0]);
31290
+ }
31291
+ else {
31292
+ currentColWidth = this.convertPixelToPercentage(col.offsetWidth, tableWidth);
31293
+ }
31294
+ return currentColWidth;
31295
+ }
31192
31296
  getCurrentTableWidth(tableWidth, parentWidth) {
31193
31297
  let currentTableWidth = 0;
31194
31298
  currentTableWidth = tableWidth / parentWidth * 100;
@@ -31196,11 +31300,18 @@ class Table {
31196
31300
  }
31197
31301
  findFirstLastColCells(table, isFirst) {
31198
31302
  const resultColumns = [];
31199
- const rows = table.querySelectorAll('tr');
31303
+ const rows = table.rows;
31304
+ const rowSpanCellIndexs = new Array();
31200
31305
  for (let i = 0; i < rows.length; i++) {
31201
- if (rows[i].closest('table') === table) {
31202
- const columns = rows[i].querySelectorAll('th, td');
31203
- resultColumns.push(isFirst ? columns[0] : columns[columns.length - 1]);
31306
+ const cellIndex = isFirst ? 0 : rows[i].cells.length - 1;
31307
+ const column = rows[i].cells[cellIndex];
31308
+ for (let rowSpan = 1; rowSpan < column.rowSpan; rowSpan++) {
31309
+ const key = `${i + rowSpan}-${cellIndex}`;
31310
+ rowSpanCellIndexs.push(key);
31311
+ }
31312
+ const spannedCellKey = `${i}-${cellIndex}`;
31313
+ if (rowSpanCellIndexs.length === 0 || (isFirst && rowSpanCellIndexs.indexOf(spannedCellKey) === -1) || (!isFirst && rowSpanCellIndexs.indexOf(spannedCellKey) === -1 && rowSpanCellIndexs.every((key) => key.split('-')[0] !== i.toString()))) {
31314
+ resultColumns.push(column);
31204
31315
  }
31205
31316
  }
31206
31317
  return resultColumns;
@@ -31225,22 +31336,7 @@ class Table {
31225
31336
  detach(this.helper);
31226
31337
  this.helper = null;
31227
31338
  }
31228
- const colHelper = this.parent.element.querySelectorAll('.e-table-rhelper.e-column-helper');
31229
- Array.from(colHelper).forEach((element) => {
31230
- if (element.parentNode) {
31231
- element.parentNode.removeChild(element);
31232
- }
31233
- });
31234
- for (let i = 0; i < this.curTable.rows.length; i++) {
31235
- for (let k = 0; k < this.curTable.rows[i].cells.length; k++) {
31236
- const width = this.convertPixelToPercentage(this.curTable.rows[i].cells[k].offsetWidth, parseInt(getComputedStyle(this.curTable).width, 10)) + '%';
31237
- this.curTable.rows[i].cells[k].style.width = width;
31238
- }
31239
- }
31240
- const colGroup = this.curTable.querySelector('colgroup');
31241
- if (colGroup) {
31242
- this.curTable.removeChild(colGroup);
31243
- }
31339
+ this.resetResizeHelper(this.curTable);
31244
31340
  this.pageX = null;
31245
31341
  this.pageY = null;
31246
31342
  this.moveEle = null;
@@ -31257,6 +31353,30 @@ class Table {
31257
31353
  this.parent.trigger(resizeStop, args);
31258
31354
  this.parent.formatter.saveData();
31259
31355
  }
31356
+ resetResizeHelper(curTable) {
31357
+ const colHelper = this.parent.element.querySelectorAll('.e-table-rhelper.e-column-helper');
31358
+ Array.from(colHelper).forEach((element) => {
31359
+ if (element.parentNode) {
31360
+ element.parentNode.removeChild(element);
31361
+ }
31362
+ });
31363
+ const rowHelper = this.parent.element.querySelectorAll('.e-table-rhelper.e-row-helper');
31364
+ Array.from(rowHelper).forEach((element) => {
31365
+ if (element.parentNode) {
31366
+ element.parentNode.removeChild(element);
31367
+ }
31368
+ });
31369
+ const colGroup = curTable.querySelector('colgroup');
31370
+ if (colGroup) {
31371
+ for (let i = 0; i < curTable.rows.length; i++) {
31372
+ for (let k = 0; k < curTable.rows[i].cells.length; k++) {
31373
+ const width = this.convertPixelToPercentage(curTable.rows[i].cells[k].offsetWidth, parseInt(getComputedStyle(curTable).width, 10)) + '%';
31374
+ curTable.rows[i].cells[k].style.width = width;
31375
+ }
31376
+ }
31377
+ curTable.removeChild(colGroup);
31378
+ }
31379
+ }
31260
31380
  resizeBtnInit() {
31261
31381
  return this.resizeBtnStat = { column: false, row: false, tableBox: false };
31262
31382
  }
@@ -31365,6 +31485,7 @@ class Table {
31365
31485
  if (!isNullOrUndefined(this.parent.cssClass)) {
31366
31486
  addClass([this.popupObj.element], this.parent.getCssClass());
31367
31487
  }
31488
+ btnEle.focus();
31368
31489
  this.popupObj.refreshPosition(target);
31369
31490
  }
31370
31491
  onIframeMouseDown() {
@@ -31694,12 +31815,18 @@ class Table {
31694
31815
  afterKeyDown(e) {
31695
31816
  if (this.curTable) {
31696
31817
  setTimeout(() => {
31697
- const mouseOverEvent = document.createEvent('MouseEvents');
31698
- mouseOverEvent.initEvent('mouseover', true, true);
31699
- this.curTable.dispatchEvent(mouseOverEvent);
31818
+ this.updateResizeIconPosition();
31700
31819
  }, 1);
31701
31820
  }
31702
31821
  }
31822
+ updateResizeIconPosition() {
31823
+ const tableReBox = this.parent.contentModule.getEditPanel().querySelector('.e-table-box');
31824
+ if (!isNullOrUndefined(tableReBox)) {
31825
+ const tablePosition = this.calcPos(this.curTable);
31826
+ tableReBox.style.cssText = 'top: ' + (tablePosition.top + parseInt(getComputedStyle(this.curTable).height, 10) - 4) +
31827
+ 'px; left:' + (tablePosition.left + parseInt(getComputedStyle(this.curTable).width, 10) - 4) + 'px;';
31828
+ }
31829
+ }
31703
31830
  }
31704
31831
 
31705
31832
  /**
@@ -31738,7 +31865,11 @@ class DialogRenderer {
31738
31865
  let dlgObj;
31739
31866
  e.beforeOpen = this.beforeOpen.bind(this);
31740
31867
  e.open = this.open.bind(this);
31741
- e.position = { X: 'center', Y: this.getDialogPosition() };
31868
+ e.position = {
31869
+ X: 'center',
31870
+ Y: (e.target !== 'string' && e.target.nodeName === 'BODY' &&
31871
+ !isNullOrUndefined(e.position)) ? e.position.Y : this.getDialogPosition()
31872
+ };
31742
31873
  if (isNullOrUndefined(e.close)) {
31743
31874
  e.close = this.close.bind(this);
31744
31875
  }
@@ -33812,11 +33943,14 @@ let RichTextEditor = class RichTextEditor extends Component {
33812
33943
  clientX: touch.clientX, clientY: touch.clientY }
33813
33944
  });
33814
33945
  if (this.inputElement && ((this.editorMode === 'HTML' && this.inputElement.textContent.length !== 0) ||
33815
- (this.editorMode === 'Markdown' && this.inputElement.value.length !== 0)) || (e.target && (e.target.nodeName === 'VIDEO'
33816
- || e.target.querySelectorAll('.' + CLS_VIDEOWRAP).length > 0) || (e.target && e.target.nodeName !== 'BR' &&
33817
- (e.target.classList.contains(CLS_AUDIOWRAP) ||
33818
- e.target.classList.contains(CLS_CLICKELEM) ||
33819
- e.target.classList.contains(CLS_VID_CLICK_ELEM))))) {
33946
+ (this.editorMode === 'Markdown' && this.inputElement.value.length !== 0)) ||
33947
+ (e.target && !isNullOrUndefined(closest(e.target, 'table'))) ||
33948
+ (e.target && (e.target.nodeName === 'VIDEO' ||
33949
+ e.target.querySelectorAll('.' + CLS_VIDEOWRAP).length > 0) ||
33950
+ (e.target && e.target.nodeName !== 'BR' &&
33951
+ (e.target.classList.contains(CLS_AUDIOWRAP) ||
33952
+ e.target.classList.contains(CLS_CLICKELEM) ||
33953
+ e.target.classList.contains(CLS_VID_CLICK_ELEM))))) {
33820
33954
  this.notify(toolbarRefresh, { args: e });
33821
33955
  }
33822
33956
  this.triggerEditArea(e);
@@ -34695,7 +34829,14 @@ let RichTextEditor = class RichTextEditor extends Component {
34695
34829
  // eslint-disable-next-line
34696
34830
  const imgPadding = 12;
34697
34831
  const imgResizeBorder = 2;
34698
- const editEle = this.contentModule.getEditPanel();
34832
+ let editEle = this.contentModule.getEditPanel();
34833
+ if (this.editorMode === "HTML" && !isNullOrUndefined(this.formatter.editorManager.nodeSelection) && !isNullOrUndefined(this.formatter.editorManager.nodeSelection.range)) {
34834
+ const currentRange = this.formatter.editorManager.nodeSelection.range;
34835
+ if (currentRange.startContainer.nodeType !== 3 && currentRange.startContainer.closest &&
34836
+ !isNullOrUndefined(currentRange.startContainer.closest('TD'))) {
34837
+ editEle = currentRange.startContainer;
34838
+ }
34839
+ }
34699
34840
  const eleStyle = window.getComputedStyle(editEle);
34700
34841
  const editEleMaxWidth = editEle.offsetWidth - (imgPadding + imgResizeBorder +
34701
34842
  parseFloat(eleStyle.paddingLeft.split('px')[0]) + parseFloat(eleStyle.paddingRight.split('px')[0]) +
@@ -35138,7 +35279,13 @@ let RichTextEditor = class RichTextEditor extends Component {
35138
35279
  blurHandler(e) {
35139
35280
  let trg = e.relatedTarget;
35140
35281
  if (trg) {
35141
- const rteElement = closest(trg, '.' + CLS_RTE);
35282
+ let rteElement = closest(trg, '.' + CLS_RTE);
35283
+ if (!rteElement && this.iframeSettings.enable) {
35284
+ const iframeElement = this.element.querySelector('#' + this.getID() + '_rte-view');
35285
+ if (iframeElement && iframeElement.contentWindow.document.body.contains(trg)) {
35286
+ rteElement = closest(iframeElement, '.' + CLS_RTE);
35287
+ }
35288
+ }
35142
35289
  if (rteElement && rteElement === this.element) {
35143
35290
  this.isBlur = false;
35144
35291
  if (trg === this.getToolbarElement()) {
@@ -35799,5 +35946,5 @@ RichTextEditor = __decorate$1([
35799
35946
  * Rich Text Editor component exported items
35800
35947
  */
35801
35948
 
35802
- 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, FormatPainter, EmojiPicker, HTMLFormatter, Formatter, MarkdownFormatter, ContentRender, Render, ToolbarRenderer, Link, Image$1 as Image, Audio, Video, ViewSource, Table, DialogRenderer, IframeContentRender, MarkdownRender, PopupRenderer, RichTextEditor, RenderType, ToolbarType, DialogType, executeGroup, created, destroyed, tableclass, load, initialLoad, contentChanged, initialEnd, iframeMouseDown, destroy, toolbarClick, toolbarRefresh, refreshBegin, toolbarUpdated, bindOnEnd, renderColorPicker, htmlToolbarClick, markdownToolbarClick, destroyColorPicker, modelChanged, tableModulekeyUp, keyUp, keyDown, mouseUp, toolbarCreated, toolbarRenderComplete, enableFullScreen, disableFullScreen, dropDownSelect, beforeDropDownItemRender, execCommandCallBack, imageToolbarAction, audioToolbarAction, videoToolbarAction, linkToolbarAction, windowResize, resizeStart, onResize, resizeStop, undo, redo, insertLink, unLink, editLink, openLink, actionBegin, actionComplete, updatedToolbarStatus, actionSuccess, updateToolbarItem, insertImage, insertAudio, insertVideo, insertCompleted, imageLeft, imageRight, imageCenter, imageBreak, imageInline, imageLink, imageAlt, imageDelete, audioDelete, videoDelete, imageCaption, imageSize, videoSize, 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, moduleDestroy, pasteClean, enterHandler, beforeDialogOpen, clearDialogObj, dialogOpen, beforeDialogClose, dialogClose, beforeQuickToolbarOpen, quickToolbarOpen, quickToolbarClose, popupHide, imageSelected, imageUploading, imageUploadSuccess, imageUploadFailed, imageRemoving, fileSelected, fileUploading, fileUploadSuccess, fileUploadFailed, fileRemoving, afterImageDelete, afterMediaDelete, drop, xhtmlValidation, beforeImageUpload, beforeFileUpload, resizeInitialized, renderFileManager, beforeImageDrop, dynamicModule, beforePasteCleanup, afterPasteCleanup, updateTbItemsStatus, showLinkDialog, closeLinkDialog, showImageDialog, showAudioDialog, showVideoDialog, closeImageDialog, closeAudioDialog, closeVideoDialog, showTableDialog, closeTableDialog, bindCssClass, formatPainterClick, formatPainterDoubleClick, emojiPicker, destroyTooltip, hidePopup, cleanupResizeElements, afterKeyDown, updateValueOnIdle, documentClickClosedBy, blockEmptyNodes, inlineEmptyNodes, supportedUnits, conversionFactors, onHandleFontsizeChange, 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_TEXT_QUICK_TB, CLS_POP, CLS_TB_STATIC, CLS_QUICK_POP, CLS_QUICK_DROPDOWN, CLS_IMAGE_POP, CLS_TEXT_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_AUDIOBREAK, CLS_CLICKELEM, CLS_VID_CLICK_ELEM, CLS_AUDIOWRAP, CLS_VIDEOWRAP, CLS_VIDEOBREAK, CLS_CAPTION, CLS_RTE_CAPTION, CLS_CAPINLINE, CLS_IMGINLINE, CLS_AUDIOINLINE, CLS_VIDEOINLINE, 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_AUD_FOCUS, CLS_VID_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, CLS_RTE_SOURCE_CODE_TXTAREA, getIndex, hasClass, getDropDownValue, isIDevice, getFormattedFontSize, pageYOffset, getTooltipText, getTooltipTextDropdownItems, getQuickToolbarTooltipText, setToolbarStatus, getCollection, getTBarItemsIndex, updateUndoRedoStatus, dispatchEvent, parseHtml, getTextNodesUnder, toObjectLowerCase, getEditValue, updateTextNode, getDefaultValue, isEditableValueEmpty, decode, sanitizeHelper, convertToBlob, getLocaleFontFormat, updateDropDownFontFormatLocale, ServiceLocator, RendererFactory, EditorManager, IMAGE, AUDIO, VIDEO, 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, PASTE_SOURCE, CLASS_IMAGE_RIGHT, CLASS_IMAGE_LEFT, CLASS_IMAGE_CENTER, CLASS_VIDEO_RIGHT, CLASS_VIDEO_LEFT, CLASS_VIDEO_CENTER, CLASS_IMAGE_BREAK, CLASS_AUDIO_BREAK, CLASS_VIDEO_BREAK, CLASS_CAPTION, CLASS_RTE_CAPTION, CLASS_CAPTION_INLINE, CLASS_IMAGE_INLINE, CLASS_AUDIO_INLINE, CLASS_CLICK_ELEM, CLASS_VIDEO_CLICK_ELEM, CLASS_AUDIO, CLASS_VIDEO, CLASS_AUDIO_WRAP, CLASS_VIDEO_WRAP, CLASS_EMBED_VIDEO_WRAP, CLASS_AUDIO_FOCUS, CLASS_VIDEO_FOCUS, CLASS_VIDEO_INLINE, Lists, markerClassName, DOMNode, Alignments, Indents, Formats, LinkCommand, InsertMethods, InsertTextExec, InsertHtmlExec, InsertHtml, IsFormatted, MsWordPaste, NodeCutter, ImageCommand, AudioCommand, VideoCommand, SelectionCommands, SelectionBasedExec, ClearFormatExec, UndoRedoManager, TableCommand, statusCollection, ToolbarStatus, FormatPainterActions, EmojiPickerAction, 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, FORMAT_PAINTER_ACTIONS, EMOJI_PICKER_ACTIONS, MOUSE_DOWN };
35949
+ 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, FormatPainter, EmojiPicker, HTMLFormatter, Formatter, MarkdownFormatter, ContentRender, Render, ToolbarRenderer, Link, Image$1 as Image, Audio, Video, ViewSource, Table, DialogRenderer, IframeContentRender, MarkdownRender, PopupRenderer, RichTextEditor, RenderType, ToolbarType, DialogType, executeGroup, created, destroyed, tableclass, load, initialLoad, contentChanged, initialEnd, iframeMouseDown, destroy, toolbarClick, toolbarRefresh, refreshBegin, toolbarUpdated, bindOnEnd, renderColorPicker, htmlToolbarClick, markdownToolbarClick, destroyColorPicker, modelChanged, tableModulekeyUp, keyUp, keyDown, mouseUp, toolbarCreated, toolbarRenderComplete, enableFullScreen, disableFullScreen, dropDownSelect, beforeDropDownItemRender, execCommandCallBack, imageToolbarAction, audioToolbarAction, videoToolbarAction, linkToolbarAction, windowResize, resizeStart, onResize, resizeStop, undo, redo, insertLink, unLink, editLink, openLink, actionBegin, actionComplete, updatedToolbarStatus, actionSuccess, updateToolbarItem, insertImage, insertAudio, insertVideo, insertCompleted, imageLeft, imageRight, imageCenter, imageBreak, imageInline, imageLink, imageAlt, imageDelete, audioDelete, videoDelete, imageCaption, imageSize, videoSize, 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, moduleDestroy, pasteClean, enterHandler, beforeDialogOpen, clearDialogObj, dialogOpen, beforeDialogClose, dialogClose, beforeQuickToolbarOpen, quickToolbarOpen, quickToolbarClose, popupHide, imageSelected, imageUploading, imageUploadSuccess, imageUploadFailed, imageRemoving, fileSelected, fileUploading, fileUploadSuccess, fileUploadFailed, fileRemoving, afterImageDelete, afterMediaDelete, drop, xhtmlValidation, beforeImageUpload, beforeFileUpload, resizeInitialized, renderFileManager, beforeImageDrop, dynamicModule, beforePasteCleanup, afterPasteCleanup, updateTbItemsStatus, showLinkDialog, closeLinkDialog, showImageDialog, showAudioDialog, showVideoDialog, closeImageDialog, closeAudioDialog, closeVideoDialog, showTableDialog, closeTableDialog, bindCssClass, formatPainterClick, formatPainterDoubleClick, emojiPicker, destroyTooltip, hidePopup, cleanupResizeElements, afterKeyDown, updateValueOnIdle, documentClickClosedBy, showColorPicker, blockEmptyNodes, inlineEmptyNodes, supportedUnits, conversionFactors, onHandleFontsizeChange, 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_TEXT_QUICK_TB, CLS_POP, CLS_TB_STATIC, CLS_QUICK_POP, CLS_QUICK_DROPDOWN, CLS_IMAGE_POP, CLS_TEXT_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_AUDIOBREAK, CLS_CLICKELEM, CLS_VID_CLICK_ELEM, CLS_AUDIOWRAP, CLS_VIDEOWRAP, CLS_VIDEOBREAK, CLS_CAPTION, CLS_RTE_CAPTION, CLS_CAPINLINE, CLS_IMGINLINE, CLS_AUDIOINLINE, CLS_VIDEOINLINE, 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_AUD_FOCUS, CLS_VID_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, CLS_RTE_SOURCE_CODE_TXTAREA, getIndex, hasClass, getDropDownValue, isIDevice, getFormattedFontSize, pageYOffset, getTooltipText, getTooltipTextDropdownItems, getQuickToolbarTooltipText, setToolbarStatus, getCollection, getTBarItemsIndex, updateUndoRedoStatus, dispatchEvent, parseHtml, getTextNodesUnder, toObjectLowerCase, getEditValue, updateTextNode, getDefaultValue, isEditableValueEmpty, decode, sanitizeHelper, convertToBlob, getLocaleFontFormat, updateDropDownFontFormatLocale, ServiceLocator, RendererFactory, EditorManager, IMAGE, AUDIO, VIDEO, 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, PASTE_SOURCE, CLASS_IMAGE_RIGHT, CLASS_IMAGE_LEFT, CLASS_IMAGE_CENTER, CLASS_VIDEO_RIGHT, CLASS_VIDEO_LEFT, CLASS_VIDEO_CENTER, CLASS_IMAGE_BREAK, CLASS_AUDIO_BREAK, CLASS_VIDEO_BREAK, CLASS_CAPTION, CLASS_RTE_CAPTION, CLASS_CAPTION_INLINE, CLASS_IMAGE_INLINE, CLASS_AUDIO_INLINE, CLASS_CLICK_ELEM, CLASS_VIDEO_CLICK_ELEM, CLASS_AUDIO, CLASS_VIDEO, CLASS_AUDIO_WRAP, CLASS_VIDEO_WRAP, CLASS_EMBED_VIDEO_WRAP, CLASS_AUDIO_FOCUS, CLASS_VIDEO_FOCUS, CLASS_VIDEO_INLINE, Lists, markerClassName, DOMNode, Alignments, Indents, Formats, LinkCommand, InsertMethods, InsertTextExec, InsertHtmlExec, InsertHtml, IsFormatted, MsWordPaste, NodeCutter, ImageCommand, AudioCommand, VideoCommand, SelectionCommands, SelectionBasedExec, ClearFormatExec, UndoRedoManager, TableCommand, statusCollection, ToolbarStatus, FormatPainterActions, EmojiPickerAction, 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, FORMAT_PAINTER_ACTIONS, EMOJI_PICKER_ACTIONS, MOUSE_DOWN };
35803
35950
  //# sourceMappingURL=ej2-richtexteditor.es2015.js.map