@syncfusion/ej2-richtexteditor 25.1.41 → 25.2.3

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 (69) hide show
  1. package/CHANGELOG.md +38 -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 +226 -90
  6. package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
  7. package/dist/es6/ej2-richtexteditor.es5.js +226 -91
  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 +23 -13
  13. package/src/common/util.d.ts +8 -0
  14. package/src/common/util.js +52 -0
  15. package/src/editor-manager/plugin/inserthtml.js +8 -2
  16. package/src/editor-manager/plugin/lists.d.ts +1 -0
  17. package/src/editor-manager/plugin/lists.js +97 -51
  18. package/src/editor-manager/plugin/ms-word-clean-up.js +2 -2
  19. package/src/editor-manager/plugin/nodecutter.js +2 -2
  20. package/src/editor-manager/plugin/undo.js +3 -1
  21. package/src/rich-text-editor/actions/emoji-picker.js +1 -1
  22. package/src/rich-text-editor/actions/enter-key.js +9 -0
  23. package/src/rich-text-editor/actions/html-editor.js +10 -12
  24. package/src/rich-text-editor/actions/paste-clean-up.js +13 -9
  25. package/src/rich-text-editor/base/enum.d.ts +4 -4
  26. package/src/rich-text-editor/base/enum.js +9 -9
  27. package/src/rich-text-editor/base/interface.d.ts +3 -3
  28. package/src/rich-text-editor/base/rich-text-editor.js +7 -0
  29. package/src/rich-text-editor/renderer/iframe-content-renderer.js +1 -1
  30. package/src/rich-text-editor/renderer/image-module.js +3 -3
  31. package/src/rich-text-editor/renderer/link-module.js +3 -0
  32. package/src/rich-text-editor/renderer/table-module.js +3 -0
  33. package/src/rich-text-editor/renderer/toolbar-renderer.d.ts +2 -0
  34. package/src/rich-text-editor/renderer/toolbar-renderer.js +7 -1
  35. package/styles/bootstrap-dark.css +7 -6
  36. package/styles/bootstrap.css +7 -6
  37. package/styles/bootstrap4.css +7 -6
  38. package/styles/bootstrap5-dark.css +7 -6
  39. package/styles/bootstrap5.css +7 -6
  40. package/styles/fabric-dark.css +7 -6
  41. package/styles/fabric.css +7 -6
  42. package/styles/fluent-dark.css +7 -6
  43. package/styles/fluent.css +7 -6
  44. package/styles/highcontrast-light.css +7 -6
  45. package/styles/highcontrast.css +7 -6
  46. package/styles/material-dark.css +7 -6
  47. package/styles/material.css +7 -6
  48. package/styles/material3-dark.css +7 -6
  49. package/styles/material3.css +7 -6
  50. package/styles/rich-text-editor/_layout.scss +7 -6
  51. package/styles/rich-text-editor/bootstrap-dark.css +7 -6
  52. package/styles/rich-text-editor/bootstrap.css +7 -6
  53. package/styles/rich-text-editor/bootstrap4.css +7 -6
  54. package/styles/rich-text-editor/bootstrap5-dark.css +7 -6
  55. package/styles/rich-text-editor/bootstrap5.css +7 -6
  56. package/styles/rich-text-editor/fabric-dark.css +7 -6
  57. package/styles/rich-text-editor/fabric.css +7 -6
  58. package/styles/rich-text-editor/fluent-dark.css +7 -6
  59. package/styles/rich-text-editor/fluent.css +7 -6
  60. package/styles/rich-text-editor/highcontrast-light.css +7 -6
  61. package/styles/rich-text-editor/highcontrast.css +7 -6
  62. package/styles/rich-text-editor/material-dark.css +7 -6
  63. package/styles/rich-text-editor/material.css +7 -6
  64. package/styles/rich-text-editor/material3-dark.css +7 -6
  65. package/styles/rich-text-editor/material3.css +7 -6
  66. package/styles/rich-text-editor/tailwind-dark.css +7 -6
  67. package/styles/rich-text-editor/tailwind.css +7 -6
  68. package/styles/tailwind-dark.css +7 -6
  69. package/styles/tailwind.css +7 -6
@@ -1651,15 +1651,15 @@ var DialogType;
1651
1651
  /**
1652
1652
  * Defines types to be used as inserted image.
1653
1653
  */
1654
- var UploadRequest;
1655
- (function (UploadRequest) {
1656
- /** Defines UploadRequest as Uploaded */
1657
- UploadRequest["Uploaded"] = "Uploaded";
1658
- /** Defines UploadRequest as Dropped */
1659
- UploadRequest["Dropped"] = "Dropped";
1660
- /** Defines UploadRequest as Pasted */
1661
- UploadRequest["Pasted"] = "Pasted";
1662
- })(UploadRequest || (UploadRequest = {}));
1654
+ var ImageInputSource;
1655
+ (function (ImageInputSource) {
1656
+ /** Defines ImageInputSource as Uploaded */
1657
+ ImageInputSource["Uploaded"] = "Uploaded";
1658
+ /** Defines ImageInputSource as Dropped */
1659
+ ImageInputSource["Dropped"] = "Dropped";
1660
+ /** Defines ImageInputSource as Pasted */
1661
+ ImageInputSource["Pasted"] = "Pasted";
1662
+ })(ImageInputSource || (ImageInputSource = {}));
1663
1663
 
1664
1664
  /* eslint-disable */
1665
1665
  /**
@@ -4477,6 +4477,10 @@ function updateTextNode$1(value, enterAction) {
4477
4477
  tableElm[i].classList.remove('e-rte-paste-onenote-table');
4478
4478
  continue;
4479
4479
  }
4480
+ else if (tableElm[i].classList.contains('e-rte-paste-html-table')) {
4481
+ tableElm[i].classList.remove('e-rte-paste-html-table');
4482
+ continue;
4483
+ }
4480
4484
  }
4481
4485
  }
4482
4486
  const imageElm = resultElm.querySelectorAll('img');
@@ -4581,6 +4585,54 @@ function nestedListCleanUp(range) {
4581
4585
  }
4582
4586
  }
4583
4587
  }
4588
+ /**
4589
+ * Method to scroll the content to the cursor position
4590
+ *
4591
+ * @param {Document} document - specifies the document.
4592
+ * @param {HTMLElement | HTMLBodyElement} inputElement - specifies the input element.
4593
+ * @returns {void}
4594
+ */
4595
+ function scrollToCursor(document, inputElement) {
4596
+ const rootElement = inputElement.nodeName === 'BODY' ?
4597
+ inputElement.ownerDocument.defaultView.frameElement.closest('.e-richtexteditor') :
4598
+ inputElement.closest('.e-richtexteditor');
4599
+ const height = rootElement.style.height;
4600
+ if (document.getSelection().rangeCount === 0) {
4601
+ return;
4602
+ }
4603
+ const range = document.getSelection().getRangeAt(0);
4604
+ const finalFocusElement = range.startContainer.nodeName === '#text' ? range.startContainer.parentElement :
4605
+ range.startContainer;
4606
+ const rect = finalFocusElement.getBoundingClientRect();
4607
+ const cursorTop = rect.top;
4608
+ const cursorBottom = rect.bottom;
4609
+ const rootRect = rootElement.getBoundingClientRect();
4610
+ const hasMargin = rootElement.querySelectorAll('.e-count-enabled, .e-resize-enabled').length > 0;
4611
+ if (inputElement.nodeName === 'BODY') {
4612
+ if (height === 'auto') {
4613
+ if (window.innerHeight < cursorTop) {
4614
+ finalFocusElement.scrollIntoView(false);
4615
+ }
4616
+ }
4617
+ else {
4618
+ if (cursorTop > inputElement.getBoundingClientRect().height) {
4619
+ finalFocusElement.scrollIntoView({ block: 'nearest', inline: 'nearest' });
4620
+ }
4621
+ }
4622
+ }
4623
+ else {
4624
+ if (height === 'auto') {
4625
+ if (window.innerHeight < cursorTop) {
4626
+ finalFocusElement.scrollIntoView({ block: 'end', inline: 'nearest' });
4627
+ }
4628
+ }
4629
+ else {
4630
+ if (cursorBottom > rootRect.bottom) {
4631
+ rootElement.querySelector('.e-rte-content').scrollTop += (cursorBottom - rootRect.bottom) + (hasMargin ? 20 : 0);
4632
+ }
4633
+ }
4634
+ }
4635
+ }
4584
4636
 
4585
4637
  /**
4586
4638
  * Update Toolbar Status
@@ -5091,6 +5143,7 @@ class ToolbarRenderer {
5091
5143
  openDelay: 400,
5092
5144
  opensOn: 'Hover',
5093
5145
  beforeRender: this.tooltipBeforeRender.bind(this),
5146
+ beforeOpen: this.tooltipBeforeOpen.bind(this),
5094
5147
  cssClass: this.parent.getCssClass(),
5095
5148
  windowCollision: true,
5096
5149
  position: 'BottomCenter'
@@ -5212,7 +5265,7 @@ class ToolbarRenderer {
5212
5265
  if ((divNode.textContent.trim() !== ''
5213
5266
  && args.element.childNodes[index].textContent.trim() === divNode.textContent.trim()) ||
5214
5267
  ((args.items[0].command === 'Formats' && !isNullOrUndefined(toolbarStatus.formats) && this.parent.format.types[index].value.toLowerCase() === toolbarStatus.formats.toLowerCase() && args.element.childNodes[index].classList.contains(this.parent.format.types[index].cssClass))
5215
- || (args.items[0].command === 'Font' && !isNullOrUndefined(toolbarStatus.fontname) && this.parent.fontFamily.items[index].value.toLowerCase() === toolbarStatus.fontname.toLowerCase() && args.element.childNodes[index].classList.contains(this.parent.fontFamily.items[index].cssClass)))) {
5268
+ || (args.items[0].subCommand === 'FontName' && args.items[0].command === 'Font' && !isNullOrUndefined(toolbarStatus.fontname) && !isNullOrUndefined(this.parent.fontFamily.items[index]) && this.parent.fontFamily.items[index].value.toLowerCase() === toolbarStatus.fontname.toLowerCase() && args.element.childNodes[index].classList.contains(this.parent.fontFamily.items[index].cssClass)))) {
5216
5269
  if (!args.element.childNodes[index].classList.contains('e-active')) {
5217
5270
  addClass([args.element.childNodes[index]], 'e-active');
5218
5271
  }
@@ -5595,6 +5648,11 @@ class ToolbarRenderer {
5595
5648
  colorPicker.appendTo(document.getElementById(args.target));
5596
5649
  return colorPicker;
5597
5650
  }
5651
+ tooltipBeforeOpen(args) {
5652
+ if (args.element) {
5653
+ args.element.setAttribute('data-rte-id', this.parent.getID());
5654
+ }
5655
+ }
5598
5656
  /**
5599
5657
  * The function is used to render Rich Text Editor toolbar
5600
5658
  *
@@ -13347,58 +13405,36 @@ class Lists {
13347
13405
  let listsNodes = this.domNode.blockNodes(true);
13348
13406
  if (e.enterAction === 'BR') {
13349
13407
  this.setSelectionBRConfig();
13350
- const allSelectedNode = this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument);
13351
- const selectedNodes = this.parent.nodeSelection.getSelectionNodes(allSelectedNode);
13352
- const currentFormatNodes = [];
13353
- if (selectedNodes.length === 0) {
13354
- selectedNodes.push(listsNodes[0]);
13355
- }
13356
- for (let i = 0; i < selectedNodes.length; i++) {
13357
- let currentNode = selectedNodes[i];
13358
- let previousCurrentNode;
13359
- while (!this.parent.domNode.isBlockNode(currentNode) && currentNode !== this.parent.editableElement) {
13360
- previousCurrentNode = currentNode;
13361
- currentNode = currentNode.parentElement;
13362
- }
13363
- if (this.parent.domNode.isBlockNode(currentNode) && currentNode === this.parent.editableElement) {
13364
- currentFormatNodes.push(previousCurrentNode);
13408
+ const selectedNodes = this.parent.domNode.blockNodes();
13409
+ if (selectedNodes.length > 1) {
13410
+ let i = 0;
13411
+ let currentAlignmentNode = selectedNodes[0];
13412
+ while (!isNullOrUndefined(currentAlignmentNode)) {
13413
+ if (currentAlignmentNode.nodeName === 'BR') {
13414
+ const nextNode = currentAlignmentNode.nextSibling;
13415
+ detach(currentAlignmentNode);
13416
+ currentAlignmentNode = nextNode;
13417
+ }
13418
+ if (!isNullOrUndefined(currentAlignmentNode)) {
13419
+ selectedNodes[i] = currentAlignmentNode.nodeName === 'LI' || this.parent.domNode.isBlockNode(currentAlignmentNode) ?
13420
+ currentAlignmentNode : this.gatherElementsAround(currentAlignmentNode);
13421
+ const currentSelectNode = selectedNodes[i].nodeName === 'LI' ? selectedNodes[i].parentElement : selectedNodes[i];
13422
+ const currentElementCheckNode = currentAlignmentNode.nodeName === '#text' ? currentAlignmentNode.parentElement : currentAlignmentNode;
13423
+ currentAlignmentNode = !isNullOrUndefined(currentElementCheckNode.querySelector('.e-editor-select-end')) ||
13424
+ !isNullOrUndefined(closest(currentAlignmentNode, '.e-editor-select-end')) ?
13425
+ null : currentSelectNode.nextSibling;
13426
+ if (currentAlignmentNode === null && !isNullOrUndefined(currentSelectNode.nextSibling) && currentSelectNode.nextSibling.nodeName === 'BR') {
13427
+ detach(currentSelectNode.nextSibling);
13428
+ }
13429
+ }
13430
+ i++;
13365
13431
  }
13366
13432
  }
13367
- for (let i = 0; i < currentFormatNodes.length; i++) {
13368
- if (!this.parent.domNode.isBlockNode(currentFormatNodes[i])) {
13369
- let currentNode = currentFormatNodes[i];
13370
- let previousNode = currentNode;
13371
- while (currentNode === this.parent.editableElement) {
13372
- previousNode = currentNode;
13373
- currentNode = currentNode.parentElement;
13374
- }
13375
- let tempElem;
13376
- if (this.parent.domNode.isBlockNode(previousNode.parentElement) &&
13377
- previousNode.parentElement === this.parent.editableElement) {
13378
- tempElem = createElement('p');
13379
- previousNode.parentElement.insertBefore(tempElem, previousNode);
13380
- tempElem.appendChild(previousNode);
13381
- }
13382
- else {
13383
- tempElem = previousNode;
13384
- }
13385
- let preNode = tempElem.previousSibling;
13386
- while (!isNullOrUndefined(preNode) && preNode.nodeName !== 'BR' &&
13387
- !this.parent.domNode.isBlockNode(preNode)) {
13388
- tempElem.firstChild.parentElement.insertBefore(preNode, tempElem.firstChild);
13389
- preNode = tempElem.previousSibling;
13390
- }
13391
- if (!isNullOrUndefined(preNode) && preNode.nodeName === 'BR') {
13392
- detach(preNode);
13393
- }
13394
- let postNode = tempElem.nextSibling;
13395
- while (!isNullOrUndefined(postNode) && postNode.nodeName !== 'BR' &&
13396
- !this.parent.domNode.isBlockNode(postNode)) {
13397
- tempElem.appendChild(postNode);
13398
- postNode = tempElem.nextSibling;
13399
- }
13400
- if (!isNullOrUndefined(postNode) && postNode.nodeName === 'BR') {
13401
- detach(postNode);
13433
+ else {
13434
+ if (!this.parent.domNode.isBlockNode(selectedNodes[0])) {
13435
+ selectedNodes[0] = this.gatherElementsAround(selectedNodes[0]);
13436
+ if (!isNullOrUndefined(selectedNodes[0].nextSibling) && (selectedNodes[0].nextSibling.nodeName === 'BR')) {
13437
+ detach(selectedNodes[0].nextSibling);
13402
13438
  }
13403
13439
  }
13404
13440
  }
@@ -13500,6 +13536,16 @@ class Lists {
13500
13536
  }
13501
13537
  }
13502
13538
  this.cleanNode();
13539
+ if (e.enterAction === 'BR') {
13540
+ const spansToRemove = document.querySelectorAll('span#removeSpan');
13541
+ spansToRemove.forEach((span) => {
13542
+ const fragment = document.createDocumentFragment();
13543
+ while (span.firstChild) {
13544
+ fragment.appendChild(span.firstChild);
13545
+ }
13546
+ span.parentNode.replaceChild(fragment, span);
13547
+ });
13548
+ }
13503
13549
  this.parent.editableElement.focus();
13504
13550
  if (isIDevice$1()) {
13505
13551
  setEditFrameFocus(this.parent.editableElement, selector);
@@ -13697,6 +13743,12 @@ class Lists {
13697
13743
  if (e.enterAction !== 'BR') {
13698
13744
  this.domNode.wrapInner(element, this.domNode.parseHTMLFragment(wrapper));
13699
13745
  }
13746
+ else {
13747
+ const wrapperSpan = '<span class=e-rte-wrap-inner id=removeSpan></span>';
13748
+ const br = document.createElement('br');
13749
+ this.domNode.wrapInner(element, this.domNode.parseHTMLFragment(wrapperSpan));
13750
+ element.appendChild(br);
13751
+ }
13700
13752
  }
13701
13753
  else if (this.domNode.contents(element)[0].nodeType === 3) {
13702
13754
  const replace = this.domNode.createTagString(DEFAULT_TAG, parentNode, this.parent.domNode.encode(this.domNode.contents(element)[0].textContent));
@@ -13709,8 +13761,18 @@ class Lists {
13709
13761
  }
13710
13762
  else {
13711
13763
  const childNode = element.firstChild;
13764
+ if (childNode) {
13765
+ const attributes$$1 = element.parentElement.attributes;
13766
+ if (attributes$$1.length > 0) {
13767
+ for (let d = 0; d < attributes$$1.length; d++) {
13768
+ const e = attributes$$1[d];
13769
+ const existingValue = childNode.getAttribute(e.nodeName);
13770
+ const parentValue = (element.parentElement).getAttribute(e.nodeName);
13771
+ childNode.setAttribute(e.nodeName, existingValue ? parentValue + ' ' + existingValue : parentValue);
13772
+ }
13773
+ }
13774
+ }
13712
13775
  className = childNode.getAttribute('class');
13713
- attributes(childNode, this.domNode.rawAttributes(parentNode));
13714
13776
  if (className && childNode.getAttribute('class')) {
13715
13777
  attributes(childNode, { 'class': className + ' ' + childNode.getAttribute('class') });
13716
13778
  }
@@ -13751,6 +13813,48 @@ class Lists {
13751
13813
  closeTag(type) {
13752
13814
  return this.domNode.parseHTMLFragment('<span class="e-rte-list-close-' + type.toLowerCase() + '"></span>');
13753
13815
  }
13816
+ gatherElementsAround(node) {
13817
+ const pWrap = document.createElement('p');
13818
+ // Insert the new div before the current node
13819
+ let currentNode = node.previousSibling;
13820
+ const classNode = node.parentNode;
13821
+ if (classNode.className === 'e-editor-select-start') {
13822
+ node.parentNode.parentNode.insertBefore(pWrap, node.parentNode);
13823
+ }
13824
+ else if (node.parentNode) {
13825
+ node.parentNode.insertBefore(pWrap, node);
13826
+ }
13827
+ // Gather text and inline elements before the currentNode
13828
+ let i = 0;
13829
+ while (currentNode !== null && currentNode.nodeName !== 'BR' &&
13830
+ !this.parent.domNode.isBlockNode(currentNode)) {
13831
+ const prevSibling = currentNode.previousSibling;
13832
+ if (currentNode.nodeType === 3 || currentNode.nodeType === 1) {
13833
+ if (i === 0) {
13834
+ pWrap.appendChild(currentNode);
13835
+ }
13836
+ else {
13837
+ pWrap.insertBefore(currentNode, pWrap.firstChild);
13838
+ }
13839
+ }
13840
+ currentNode = prevSibling;
13841
+ i++;
13842
+ }
13843
+ // Add the current node to the new p
13844
+ pWrap.appendChild(node);
13845
+ // Gather text and inline elements after the currentNode
13846
+ currentNode = pWrap.nextSibling ? pWrap.nextSibling : pWrap.parentElement.nextSibling;
13847
+ while (currentNode !== null && currentNode.nodeName !== 'BR' &&
13848
+ !this.parent.domNode.isBlockNode(currentNode)) {
13849
+ const nextSibling = currentNode.nextSibling ?
13850
+ currentNode.nextSibling : currentNode.parentElement.nextSibling;
13851
+ if (currentNode.nodeType === 3 || currentNode.nodeType === 1) {
13852
+ pWrap.appendChild(currentNode);
13853
+ }
13854
+ currentNode = nextSibling;
13855
+ }
13856
+ return pWrap;
13857
+ }
13754
13858
  }
13755
13859
 
13756
13860
  /**
@@ -13875,7 +13979,7 @@ class NodeCutter {
13875
13979
  fragment = this.spliceEmptyNode(fragment, false);
13876
13980
  if (fragment && fragment.childNodes.length > 0) {
13877
13981
  const isEmpty = (fragment.childNodes.length === 1 && fragment.childNodes[0].nodeName !== 'IMG' && !(fragment.querySelectorAll('img').length > 0)
13878
- && this.isRteElm(fragment) && fragment.textContent === '') ? true : false;
13982
+ && this.isRteElm(fragment) && fragment.textContent.trim() === '') ? true : false;
13879
13983
  if (!isEmpty) {
13880
13984
  if (node) {
13881
13985
  InsertMethods.AppendBefore(fragment, node);
@@ -13896,7 +14000,7 @@ class NodeCutter {
13896
14000
  fragment = this.spliceEmptyNode(fragment, true);
13897
14001
  if (fragment && fragment.childNodes.length > 0) {
13898
14002
  const isEmpty = (fragment.childNodes.length === 1 && fragment.childNodes[0].nodeName !== 'IMG'
13899
- && this.isRteElm(fragment) && fragment.textContent === '') ? true : false;
14003
+ && this.isRteElm(fragment) && fragment.textContent.trim() === '') ? true : false;
13900
14004
  if (!isEmpty) {
13901
14005
  if (node) {
13902
14006
  InsertMethods.AppendBefore(fragment, node, true);
@@ -14498,7 +14602,7 @@ class InsertHtml {
14498
14602
  range.startContainer === range.endContainer;
14499
14603
  const isCollapsed = range.collapsed;
14500
14604
  const nodes = this.getNodeCollection(range, nodeSelection, node);
14501
- const closestParentNode = (node.nodeName.toLowerCase() === 'table') ? this.closestEle(nodes[0].parentNode, editNode) : nodes[0];
14605
+ const closestParentNode = (node.nodeName.toLowerCase() === 'table') ? (!isNullOrUndefined(nodes[0]) ? this.closestEle(nodes[0].parentNode, editNode) : range.startContainer) : nodes[0];
14502
14606
  if (closestParentNode && closestParentNode.nodeName === 'LI' && node.nodeName.toLowerCase() === 'table') {
14503
14607
  this.insertTableInList(range, node, closestParentNode, nodes[0], nodeCutter);
14504
14608
  return;
@@ -14543,7 +14647,7 @@ class InsertHtml {
14543
14647
  nodes[index].parentNode.removeChild(nodes[index]);
14544
14648
  }
14545
14649
  }
14546
- if (sibNode) {
14650
+ if (!isNullOrUndefined(sibNode) && !isNullOrUndefined(sibNode.parentNode)) {
14547
14651
  InsertMethods.AppendBefore(node, sibNode, true);
14548
14652
  }
14549
14653
  else {
@@ -14794,6 +14898,12 @@ class InsertHtml {
14794
14898
  node.parentNode.replaceChild(fragment, node);
14795
14899
  }
14796
14900
  }
14901
+ if (lastSelectionNode.nodeName === 'TABLE') {
14902
+ const pTag = createElement('p');
14903
+ pTag.appendChild(createElement('br'));
14904
+ lastSelectionNode.parentElement.insertBefore(pTag, lastSelectionNode.nextSibling);
14905
+ lastSelectionNode = pTag;
14906
+ }
14797
14907
  if (lastSelectionNode.nodeName === '#text') {
14798
14908
  this.placeCursorEnd(lastSelectionNode, node, nodeSelection, docElement, editNode);
14799
14909
  }
@@ -18895,6 +19005,7 @@ class UndoRedoManager {
18895
19005
  this.parent.editableElement.innerHTML = '';
18896
19006
  this.parent.editableElement.appendChild(removedContent.cloneNode(true));
18897
19007
  this.parent.editableElement.focus();
19008
+ scrollToCursor(this.parent.currentDocument, this.parent.editableElement);
18898
19009
  if (isIDevice$1()) {
18899
19010
  setEditFrameFocus(this.parent.editableElement, e.selector);
18900
19011
  }
@@ -18927,6 +19038,7 @@ class UndoRedoManager {
18927
19038
  this.parent.editableElement.innerHTML = '';
18928
19039
  this.parent.editableElement.appendChild(addedContent.cloneNode(true));
18929
19040
  this.parent.editableElement.focus();
19041
+ scrollToCursor(this.parent.currentDocument, this.parent.editableElement);
18930
19042
  if (isIDevice$1()) {
18931
19043
  setEditFrameFocus(this.parent.editableElement, e.selector);
18932
19044
  }
@@ -19027,9 +19139,9 @@ class MsWordPaste {
19027
19139
  const patern2 = /class="?Mso|style="[^ ]*\bmso-/i;
19028
19140
  const patern3 = /(class="?Mso|class='?Mso|class="?Xl|class='?Xl|class=Xl|style="[^"]*\bmso-|style='[^']*\bmso-|w:WordDocument)/gi;
19029
19141
  const pattern4 = /style='mso-width-source:/i;
19142
+ const source = this.findSource(elm);
19030
19143
  if (patern.test(tempHTMLContent) || patern2.test(tempHTMLContent) || patern3.test(tempHTMLContent) ||
19031
19144
  pattern4.test(tempHTMLContent)) {
19032
- const source = this.findSource(elm);
19033
19145
  tempHTMLContent = tempHTMLContent.replace(/<img[^>]+>/i, '');
19034
19146
  this.addListClass(elm);
19035
19147
  listNodes = this.cleanUp(elm, listNodes);
@@ -19054,7 +19166,7 @@ class MsWordPaste {
19054
19166
  e.callBack(elm.innerHTML, this.cropImageDimensions, source);
19055
19167
  }
19056
19168
  else {
19057
- e.callBack(elm.innerHTML);
19169
+ e.callBack(elm.innerHTML, null, source);
19058
19170
  }
19059
19171
  }
19060
19172
  addDoubleBr(elm) {
@@ -21256,6 +21368,7 @@ const IFRAMEHEADER = `
21256
21368
  overflow-x: auto;padding: 16px;position: relative;text-align: inherit;z-index: 2;}
21257
21369
  p{margin: 0 0 10px;margin-bottom: 10px;}
21258
21370
  li{margin-bottom: 10px;}
21371
+ table{margin-bottom: 10px;}
21259
21372
  h1{font-size: 2.17em;font-weight: 400;line-height: 1;margin: 10px 0;}
21260
21373
  h2{font-size: 1.74em;font-weight: 400;margin: 10px 0;}
21261
21374
  h3{font-size: 1.31em;font-weight: 400;margin: 10px 0;}
@@ -21738,8 +21851,14 @@ class HtmlEditor {
21738
21851
  range.insertNode(tempSpan);
21739
21852
  }
21740
21853
  let currentChild = this.parent.inputElement.firstChild;
21741
- while (!isNullOrUndefined(currentChild) && currentChild.textContent.replace(regEx, '').trim().length > 0) {
21742
- currentChild.innerHTML = currentChild.innerHTML.replace(regEx, '');
21854
+ while (!isNullOrUndefined(currentChild)) {
21855
+ if (currentChild.nodeName === '#text') {
21856
+ currentChild = currentChild.nextElementSibling;
21857
+ continue;
21858
+ }
21859
+ if (currentChild.textContent.replace(regEx, '').trim().length > 0) {
21860
+ currentChild.innerHTML = currentChild.innerHTML.replace(regEx, '');
21861
+ }
21743
21862
  currentChild = currentChild.nextElementSibling;
21744
21863
  }
21745
21864
  let tempSpanToRemove = this.parent.inputElement.querySelector('.tempSpan');
@@ -21837,15 +21956,7 @@ class HtmlEditor {
21837
21956
  }
21838
21957
  else {
21839
21958
  this.parent.notify(enterHandler, { args: e.args });
21840
- const newRange = this.parent.getRange();
21841
- if (!isNullOrUndefined(newRange.startContainer) && this.parent.height !== 'auto' && newRange.startContainer.nodeName !== '#text'
21842
- && !this.parent.iframeSettings.enable && newRange.startContainer.getBoundingClientRect().bottom > this.parent.element.getBoundingClientRect().bottom) {
21843
- this.parent.element.querySelector('.e-rte-content').scrollTop += newRange.startContainer.getBoundingClientRect().bottom - this.parent.element.getBoundingClientRect().bottom;
21844
- }
21845
- else if (!isNullOrUndefined(newRange.startContainer) && this.parent.height === 'auto' && newRange.startContainer.nodeName !== '#text'
21846
- && !this.parent.iframeSettings.enable && window.innerHeight < newRange.startContainer.getBoundingClientRect().top) {
21847
- newRange.startContainer.scrollIntoView({ block: 'end', inline: 'nearest' });
21848
- }
21959
+ scrollToCursor(this.parent.contentModule.getDocument(), this.parent.inputElement);
21849
21960
  }
21850
21961
  }
21851
21962
  }
@@ -22877,12 +22988,14 @@ class PasteCleanup {
22877
22988
  popupObj.close();
22878
22989
  }
22879
22990
  this.parent.trigger(imageUploadFailed, e);
22880
- uploadObj.destroy();
22991
+ if (uploadObj && document.body.contains(uploadObj.element)) {
22992
+ uploadObj.destroy();
22993
+ }
22881
22994
  }
22882
22995
  popupClose(popupObj, uploadObj, imgElem, e) {
22883
22996
  this.parent.inputElement.contentEditable = 'true';
22884
22997
  e.element = imgElem;
22885
- e.requestType = UploadRequest.Pasted;
22998
+ e.detectImageSource = ImageInputSource.Pasted;
22886
22999
  this.parent.trigger(imageUploadSuccess, e, (e) => {
22887
23000
  if (!isNullOrUndefined(this.parent.insertImageSettings.path)) {
22888
23001
  const url = this.parent.insertImageSettings.path + e.file.name;
@@ -22892,7 +23005,7 @@ class PasteCleanup {
22892
23005
  });
22893
23006
  popupObj.close();
22894
23007
  imgElem.style.opacity = '1';
22895
- if (!uploadObj.isDestroyed) {
23008
+ if (uploadObj && document.body.contains(uploadObj.element)) {
22896
23009
  uploadObj.destroy();
22897
23010
  }
22898
23011
  this.toolbarEnableDisable(false);
@@ -23190,6 +23303,7 @@ class PasteCleanup {
23190
23303
  extend(args, { elements: returnArgs.elements, imageElements: returnArgs.imgElem }, true);
23191
23304
  this.parent.formatter.onSuccess(this.parent, args);
23192
23305
  }, clipBoardElem, null, null, this.parent.enterKey);
23306
+ scrollToCursor(this.parent.contentModule.getDocument(), this.parent.inputElement);
23193
23307
  this.removeTempClass();
23194
23308
  this.parent.notify(toolbarRefresh, {});
23195
23309
  this.cropImageHandler(this.parent.inputElement);
@@ -23240,15 +23354,15 @@ class PasteCleanup {
23240
23354
  }
23241
23355
  }
23242
23356
  addTableClass(element, source) {
23243
- source = isNullOrUndefined(source) ? '' : source;
23244
23357
  const tableElement = element.querySelectorAll('table');
23245
23358
  for (let i = 0; i < tableElement.length; i++) {
23246
- if (!tableElement[i].classList.contains('e-rte-table') && (source === 'html' || source === '')) {
23247
- tableElement[i].classList.add('e-rte-table');
23248
- }
23249
- else if (source && source !== 'html') {
23359
+ const isMSTeamsTable = tableElement[i].parentElement.nodeName === 'FIGURE';
23360
+ if (this.parent.pasteCleanupSettings.keepFormat && source && !isMSTeamsTable) {
23250
23361
  tableElement[i].classList.add('e-rte-paste-' + source + '-table');
23251
23362
  }
23363
+ else if (!tableElement[i].classList.contains('e-rte-table')) {
23364
+ tableElement[i].classList.add('e-rte-table');
23365
+ }
23252
23366
  }
23253
23367
  return element;
23254
23368
  }
@@ -25142,7 +25256,7 @@ class EmojiPicker {
25142
25256
  const popupHeight = 330;
25143
25257
  let popupTop = cursorTop;
25144
25258
  const popupLeft = cursorLeft + rect.width;
25145
- if (rteEle.getBoundingClientRect().top < 0) {
25259
+ if (rteEle.getBoundingClientRect().top < 0 && !this.parent.inlineMode.enable) {
25146
25260
  popupTop = popupTop + rteContent.getBoundingClientRect().top - toolbarHeight;
25147
25261
  }
25148
25262
  if (rect.top < popupHeight) {
@@ -25809,7 +25923,10 @@ class Link {
25809
25923
  this.selection.restore();
25810
25924
  }
25811
25925
  else {
25926
+ const x = window.scrollX;
25927
+ const y = window.scrollY;
25812
25928
  this.selfLink.parent.contentModule.getEditPanel().focus();
25929
+ window.scrollTo(x, y);
25813
25930
  }
25814
25931
  }
25815
25932
  onDocumentClick(e) {
@@ -27634,7 +27751,7 @@ class Image$1 {
27634
27751
  }
27635
27752
  },
27636
27753
  success: (e) => {
27637
- e.requestType = UploadRequest.Uploaded;
27754
+ e.detectImageSource = ImageInputSource.Uploaded;
27638
27755
  this.parent.trigger(imageUploadSuccess, e, (e) => {
27639
27756
  if (!isNullOrUndefined(this.parent.insertImageSettings.path)) {
27640
27757
  const url = this.parent.insertImageSettings.path + e.file.name;
@@ -28074,7 +28191,7 @@ class Image$1 {
28074
28191
  imageElement.style.opacity = '1';
28075
28192
  imageElement.classList.add(CLS_IMG_FOCUS);
28076
28193
  e.element = imageElement;
28077
- e.requestType = UploadRequest.Dropped;
28194
+ e.detectImageSource = ImageInputSource.Dropped;
28078
28195
  this.parent.trigger(imageUploadSuccess, e, (e) => {
28079
28196
  if (!isNullOrUndefined(this.parent.insertImageSettings.path)) {
28080
28197
  const url = this.parent.insertImageSettings.path + e.file.name;
@@ -31341,8 +31458,11 @@ class Table {
31341
31458
  if (proxy.editdlgObj) {
31342
31459
  proxy.editdlgObj.hide();
31343
31460
  }
31461
+ const x = window.scrollX;
31462
+ const y = window.scrollY;
31344
31463
  proxy.parent.formatter.process(proxy.parent, selectionObj.args, selectionObj.args.originalEvent, value);
31345
31464
  proxy.contentModule.getEditPanel().focus();
31465
+ window.scrollTo(x, y);
31346
31466
  proxy.parent.on(mouseDown, proxy.cellSelect, proxy);
31347
31467
  }
31348
31468
  cellSelect(e) {
@@ -33575,6 +33695,7 @@ class EnterKeyAction {
33575
33695
  else {
33576
33696
  currentParent = this.startNode;
33577
33697
  }
33698
+ const currentParentStyle = window.getComputedStyle(currentParent);
33578
33699
  this.removeBRElement(currentParent);
33579
33700
  let currentParentLastChild = currentParent.lastChild;
33580
33701
  while (!isNullOrUndefined(currentParentLastChild) && !(currentParentLastChild.nodeName === '#text' || currentParentLastChild.nodeName === 'BR'
@@ -33638,6 +33759,14 @@ class EnterKeyAction {
33638
33759
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
33639
33760
 
33640
33761
  }
33762
+ else if (currentParent !== this.parent.inputElement &&
33763
+ (currentParentStyle.display === 'inline' || currentParentStyle.display === 'inline-block')) {
33764
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
33765
+ newElem = this.parent.formatter.editorManager.nodeCutter.SplitNode(this.range, currentParent, true).cloneNode(true);
33766
+ currentParent.parentElement.insertBefore(outerBRElem, currentParent);
33767
+ this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), currentParent, 0);
33768
+ this.insertFocusContent();
33769
+ }
33641
33770
  else {
33642
33771
  this.insertBRElement();
33643
33772
  }
@@ -34771,6 +34900,13 @@ let RichTextEditor = class RichTextEditor extends Component {
34771
34900
  clearInterval(this.timeInterval);
34772
34901
  this.timeInterval = null;
34773
34902
  }
34903
+ const tooltipElements = document.querySelectorAll('[data-rte-id="' + this.getID() + '"]');
34904
+ for (let i = 0; i < tooltipElements.length; i++) {
34905
+ const tooltipEle = tooltipElements[i];
34906
+ if (this.getID() === tooltipEle.getAttribute('data-rte-id')) {
34907
+ detach(tooltipEle);
34908
+ }
34909
+ }
34774
34910
  if (this.element.offsetParent === null) {
34775
34911
  if (!isNullOrUndefined(this.toolbarModule)) {
34776
34912
  this.toolbarModule.destroy();
@@ -36622,5 +36758,5 @@ RichTextEditor = __decorate$1([
36622
36758
  * Rich Text Editor component exported items
36623
36759
  */
36624
36760
 
36625
- 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, UploadRequest, 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, closeTooltip, 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_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, 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, imageResizeFactor, 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 };
36761
+ 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, ImageInputSource, 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, closeTooltip, 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_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, 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, imageResizeFactor, 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 };
36626
36762
  //# sourceMappingURL=ej2-richtexteditor.es2015.js.map