@syncfusion/ej2-richtexteditor 27.1.57 → 27.2.2

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 (32) hide show
  1. package/dist/ej2-richtexteditor.min.js +2 -2
  2. package/dist/ej2-richtexteditor.umd.min.js +2 -2
  3. package/dist/ej2-richtexteditor.umd.min.js.map +1 -1
  4. package/dist/es6/ej2-richtexteditor.es2015.js +241 -100
  5. package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
  6. package/dist/es6/ej2-richtexteditor.es5.js +231 -77
  7. package/dist/es6/ej2-richtexteditor.es5.js.map +1 -1
  8. package/dist/global/ej2-richtexteditor.min.js +2 -2
  9. package/dist/global/ej2-richtexteditor.min.js.map +1 -1
  10. package/dist/global/index.d.ts +1 -1
  11. package/package.json +13 -13
  12. package/src/common/config.d.ts +0 -7
  13. package/src/common/config.js +0 -12
  14. package/src/common/editor-styles.js +1 -1
  15. package/src/common/interface.d.ts +2 -0
  16. package/src/common/util.js +2 -1
  17. package/src/editor-manager/base/constant.d.ts +4 -0
  18. package/src/editor-manager/base/constant.js +4 -0
  19. package/src/editor-manager/plugin/formats.d.ts +1 -0
  20. package/src/editor-manager/plugin/formats.js +25 -0
  21. package/src/editor-manager/plugin/image.js +8 -2
  22. package/src/editor-manager/plugin/inserthtml.d.ts +2 -0
  23. package/src/editor-manager/plugin/inserthtml.js +96 -17
  24. package/src/editor-manager/plugin/nodecutter.js +2 -2
  25. package/src/rich-text-editor/actions/html-editor.js +9 -1
  26. package/src/rich-text-editor/actions/paste-clean-up.js +48 -21
  27. package/src/rich-text-editor/base/rich-text-editor.js +5 -2
  28. package/src/rich-text-editor/renderer/image-module.js +7 -6
  29. package/src/rich-text-editor/renderer/slash-menu.js +9 -0
  30. package/src/rich-text-editor/renderer/table-module.js +1 -1
  31. package/src/selection/selection.d.ts +2 -1
  32. package/src/selection/selection.js +15 -12
@@ -4246,6 +4246,10 @@ const SELF_CLOSING_TAGS = ['area', 'base', 'br', 'embed', 'hr', 'img', 'input',
4246
4246
  * @hidden
4247
4247
  */
4248
4248
  const PASTE_SOURCE = ['word', 'excel', 'onenote'];
4249
+ /**
4250
+ * @hidden
4251
+ */
4252
+ const ALLOWED_TABLE_BLOCK_TAGS = ['article', 'aside', 'blockquote', 'body', 'canvas', 'details', 'div', 'fieldset', 'figure', 'footer', 'form', 'header', 'li', 'main', 'nav', 'noscript', 'section'];
4249
4253
 
4250
4254
  /**
4251
4255
  * `Selection` module is used to handle RTE Selections.
@@ -4374,7 +4378,8 @@ class NodeSelection {
4374
4378
  const tableCursor = this.processedTableImageCursor(range);
4375
4379
  if (tableCursor.start || tableCursor.end) {
4376
4380
  if (tableCursor.startName === 'TABLE' || tableCursor.endName === 'TABLE') {
4377
- return [];
4381
+ const tableNode = tableCursor.start ? tableCursor.startNode : tableCursor.endNode;
4382
+ return [tableNode];
4378
4383
  }
4379
4384
  }
4380
4385
  if ((startNode === endNode || (startNode.nodeName === 'BR' && startNode === range.endContainer.childNodes[range.endOffset])) &&
@@ -4700,34 +4705,36 @@ class NodeSelection {
4700
4705
  const customHandlerElements = ['TABLE'];
4701
4706
  const startContainer = range.startContainer;
4702
4707
  const startOffset = range.startOffset;
4708
+ const startNode = startContainer.childNodes[startOffset];
4703
4709
  const isCursorAtStart = range.collapsed && (startContainer.nodeType === 1) &&
4704
- startContainer.isContentEditable && startContainer.childNodes[startOffset] &&
4705
- (customHandlerElements.indexOf(startContainer.childNodes[startOffset].nodeName) > -1);
4710
+ startContainer.isContentEditable && startNode &&
4711
+ (customHandlerElements.indexOf(startNode.nodeName) > -1);
4706
4712
  if (isCursorAtStart) {
4707
- return { start: isCursorAtStart, startNodeName: startContainer.childNodes[startOffset].nodeName };
4713
+ return { start: isCursorAtStart, startNodeName: startNode.nodeName, startNode: startNode };
4708
4714
  }
4709
4715
  else {
4710
- return { start: false, startNodeName: '' };
4716
+ return { start: false, startNodeName: '', startNode: undefined };
4711
4717
  }
4712
4718
  }
4713
4719
  isTableOrImageEnd(range) {
4714
4720
  const customHandlerElements = ['TABLE'];
4715
4721
  const startContainer = range.startContainer;
4716
4722
  const startOffset = range.startOffset;
4723
+ const endNode = startContainer.childNodes[startOffset - 1];
4717
4724
  const isCursorAtEnd = range.collapsed && (startContainer.nodeType === 1) &&
4718
- startContainer.isContentEditable && startContainer.childNodes[startOffset - 1] &&
4719
- (customHandlerElements.indexOf(startContainer.childNodes[startOffset - 1].nodeName) > -1);
4725
+ startContainer.isContentEditable && endNode &&
4726
+ (customHandlerElements.indexOf(endNode.nodeName) > -1);
4720
4727
  if (isCursorAtEnd) {
4721
- return { end: isCursorAtEnd, endNodeName: startContainer.childNodes[startOffset - 1].nodeName };
4728
+ return { end: isCursorAtEnd, endNodeName: endNode.nodeName, endNode: endNode };
4722
4729
  }
4723
4730
  else {
4724
- return { end: false, endNodeName: '' };
4731
+ return { end: false, endNodeName: '', endNode: undefined };
4725
4732
  }
4726
4733
  }
4727
4734
  processedTableImageCursor(range) {
4728
- const { start, startNodeName } = this.isTableOrImageStart(range);
4729
- const { end, endNodeName } = this.isTableOrImageEnd(range);
4730
- return { start, startName: startNodeName, end, endName: endNodeName };
4735
+ const { start, startNodeName, startNode } = this.isTableOrImageStart(range);
4736
+ const { end, endNodeName, endNode } = this.isTableOrImageEnd(range);
4737
+ return { start, startName: startNodeName, end, endName: endNodeName, startNode, endNode };
4731
4738
  }
4732
4739
  }
4733
4740
 
@@ -4814,7 +4821,8 @@ function updateTextNode$1(value, enterAction) {
4814
4821
  }
4815
4822
  const tableElm = resultElm.querySelectorAll('table');
4816
4823
  for (let i = 0; i < tableElm.length; i++) {
4817
- if (tableElm[i].classList.length > 0 && !tableElm[i].classList.contains('e-rte-table')) {
4824
+ if (tableElm[i].classList.length > 0 && !tableElm[i].classList.contains('e-rte-table') &&
4825
+ !tableElm[i].classList.contains('e-rte-custom-table')) {
4818
4826
  tableElm[i].classList.add('e-rte-paste-table');
4819
4827
  if (tableElm[i].classList.contains('e-rte-paste-word-table')) {
4820
4828
  tableElm[i].classList.remove('e-rte-paste-word-table');
@@ -6914,18 +6922,6 @@ const imageResizeFactor = {
6914
6922
  botRight: [1, 1],
6915
6923
  botLeft: [-1, 1]
6916
6924
  };
6917
- /**
6918
- * Resize factor for image in iframe editor.
6919
- *
6920
- *@hidden
6921
- *
6922
- */
6923
- const iframeResizeFactor = {
6924
- topLeft: [-1.2, -1.2],
6925
- topRight: [1.2, -1.2],
6926
- botRight: [1.2, 1.2],
6927
- botLeft: [-1.2, 1.2]
6928
- };
6929
6925
  /**
6930
6926
  * Mention restrict key configuration.
6931
6927
  *
@@ -7450,9 +7446,6 @@ class Image$1 {
7450
7446
  return dimensions;
7451
7447
  }
7452
7448
  getResizeFactor(value) {
7453
- if (this.parent.iframeSettings.enable) {
7454
- return iframeResizeFactor[value];
7455
- }
7456
7449
  return imageResizeFactor[value];
7457
7450
  }
7458
7451
  findAspectRatio(image) {
@@ -7867,7 +7860,9 @@ class Image$1 {
7867
7860
  this.parent.formatter.editorManager.nodeSelection.Clear(this.contentModule.getDocument());
7868
7861
  this.parent.formatter.editorManager.nodeSelection.setSelectionContents(this.contentModule.getDocument(), target);
7869
7862
  this.quickToolObj.imageQTBar.showPopup(args.pageX, pageY, target);
7870
- this.resizeStart(e.args, target);
7863
+ if (this.parent.insertImageSettings.resize === true) {
7864
+ this.resizeStart(e.args, target);
7865
+ }
7871
7866
  }, 400);
7872
7867
  }
7873
7868
  else {
@@ -9333,7 +9328,9 @@ class Image$1 {
9333
9328
  if (imageElement) {
9334
9329
  this.showImageQTbarTime = setTimeout(() => {
9335
9330
  this.showImageQuickToolbar(args);
9336
- this.resizeStart(e.args, imageElement);
9331
+ if (this.parent.insertImageSettings.resize) {
9332
+ this.resizeStart(e.args, imageElement);
9333
+ }
9337
9334
  }, 0);
9338
9335
  }
9339
9336
  }
@@ -13407,7 +13404,7 @@ class Table {
13407
13404
  return;
13408
13405
  }
13409
13406
  const target = e.target || e.targetTouches[0].target;
13410
- const closestTable = closest(target, 'table.e-rte-table, table.e-rte-paste-table');
13407
+ const closestTable = closest(target, 'table.e-rte-table, table.e-rte-paste-table, table.e-rte-custom-table');
13411
13408
  const isResizing = this.parent.contentModule.getEditPanel().querySelectorAll('.e-table-box.e-rbox-select, .e-table-rhelper.e-column-helper, .e-table-rhelper.e-row-helper').length > 0;
13412
13409
  if (!isResizing && !isNullOrUndefined(this.curTable) && !isNullOrUndefined(closestTable) && closestTable !== this.curTable &&
13413
13410
  this.parent.contentModule.getEditPanel().contains(closestTable)) {
@@ -14654,6 +14651,10 @@ class DialogRenderer {
14654
14651
  const IFRAME_EDITOR_STYLES = `
14655
14652
  @charset "UTF-8";
14656
14653
 
14654
+ * {
14655
+ box-sizing: border-box;
14656
+ }
14657
+
14657
14658
  html {
14658
14659
  height: auto;
14659
14660
  }
@@ -14669,7 +14670,6 @@ body {
14669
14670
 
14670
14671
  .e-content {
14671
14672
  background: unset;
14672
- box-sizing: border-box;
14673
14673
  min-height: 100px;
14674
14674
  outline: 0 solid transparent;
14675
14675
  padding: 16px;
@@ -14798,18 +14798,6 @@ body {
14798
14798
  list-style-type: square;
14799
14799
  }
14800
14800
 
14801
- .e-rte-image,
14802
- .e-rte-video {
14803
- border: 0;
14804
- cursor: pointer;
14805
- display: block;
14806
- float: none;
14807
- height: auto;
14808
- margin: 5px auto;
14809
- max-width: 100%;
14810
- position: relative;
14811
- }
14812
-
14813
14801
  .e-content p:last-child,
14814
14802
  .e-content pre:last-child,
14815
14803
  .e-content blockquote:last-child {
@@ -14861,7 +14849,6 @@ table .e-cell-select {
14861
14849
  height: 20px;
14862
14850
  min-width: 20px;
14863
14851
  padding: 2px 5px;
14864
- box-sizing: border-box;
14865
14852
  }
14866
14853
 
14867
14854
  .e-rte-table td.e-cell-select.e-multi-cells-select,
@@ -14902,12 +14889,14 @@ th.e-multi-cells-select {
14902
14889
  background-color: #F5F5F5;
14903
14890
  }
14904
14891
 
14905
- .e-rte-audio {
14892
+ .e-rte-image,
14893
+ .e-rte-audio,
14894
+ .e-rte-video {
14906
14895
  border: 0;
14907
14896
  cursor: pointer;
14908
14897
  display: block;
14909
14898
  float: none;
14910
- margin: 5px auto;
14899
+ margin: auto;
14911
14900
  max-width: 100%;
14912
14901
  position: relative;
14913
14902
  }
@@ -14915,11 +14904,11 @@ th.e-multi-cells-select {
14915
14904
  .e-rte-image.e-imginline,
14916
14905
  .e-rte-audio.e-audio-inline,
14917
14906
  .e-rte-video.e-video-inline {
14918
- display: inline-block;
14919
- float: none;
14920
14907
  margin-left: 5px;
14921
14908
  margin-right: 5px;
14922
- max-width: calc(100% - (2 * 5px));
14909
+ display: inline-block;
14910
+ float: none;
14911
+ max-width: 100%;
14923
14912
  padding: 1px;
14924
14913
  vertical-align: bottom;
14925
14914
  }
@@ -14950,17 +14939,15 @@ th.e-multi-cells-select {
14950
14939
  text-align: left;
14951
14940
  }
14952
14941
 
14953
- .e-img-caption {
14942
+ .e-rte-img-caption {
14954
14943
  display: inline-block;
14955
- float: none;
14956
14944
  margin: 5px auto;
14957
14945
  max-width: 100%;
14958
14946
  position: relative;
14959
14947
  }
14960
14948
 
14961
- .e-img-caption.e-caption-inline {
14949
+ .e-rte-img-caption.e-caption-inline {
14962
14950
  display: inline-block;
14963
- float: none;
14964
14951
  margin: 5px auto;
14965
14952
  margin-left: 5px;
14966
14953
  margin-right: 5px;
@@ -14992,13 +14979,13 @@ th.e-multi-cells-select {
14992
14979
  display: contents;
14993
14980
  }
14994
14981
 
14995
- .e-img-inner {
14996
- box-sizing: border-box;
14982
+ .e-rte-img-caption .e-img-inner {
14997
14983
  display: block;
14998
14984
  font-size: 16px;
14999
14985
  font-weight: initial;
15000
14986
  margin: auto;
15001
14987
  opacity: .9;
14988
+ position: relative;
15002
14989
  text-align: center;
15003
14990
  width: 100%;
15004
14991
  }
@@ -15048,7 +15035,6 @@ th.e-multi-cells-select {
15048
15035
  float: none;
15049
15036
  margin-left: 5px;
15050
15037
  margin-right: 5px;
15051
- max-width: calc(100% - (2 * 5px));
15052
15038
  vertical-align: bottom;
15053
15039
  }
15054
15040
 
@@ -15795,6 +15781,15 @@ class SlashMenu {
15795
15781
  break;
15796
15782
  }
15797
15783
  }
15784
+ else {
15785
+ if (this.parent.inputElement.classList.contains('e-mention')) {
15786
+ const slashMenuPopup = this.parent.inputElement.ownerDocument.getElementById(this.parent.inputElement.id + '_slash_menu_popup');
15787
+ const isSlashMenuPopupOpen = slashMenuPopup && slashMenuPopup.classList.contains('e-popup-open');
15788
+ if (isSlashMenuPopupOpen) {
15789
+ this.mention.hidePopup();
15790
+ }
15791
+ }
15792
+ }
15798
15793
  }
15799
15794
  });
15800
15795
  }
@@ -23875,7 +23870,7 @@ class NodeCutter {
23875
23870
  fragment = this.spliceEmptyNode(fragment, false);
23876
23871
  if (fragment && fragment.childNodes.length > 0) {
23877
23872
  const isEmpty = (fragment.childNodes.length === 1 && fragment.childNodes[0].nodeName !== 'IMG' && !(fragment.querySelectorAll('img').length > 0)
23878
- && this.isRteElm(fragment) && fragment.textContent.trim() === '') ? true : false;
23873
+ && this.isRteElm(fragment) && fragment.textContent.trim() === '' && fragment.textContent !== ' ' && fragment.textContent.charCodeAt(0) !== 160) ? true : false;
23879
23874
  if (!isEmpty) {
23880
23875
  if (node) {
23881
23876
  InsertMethods.AppendBefore(fragment, node);
@@ -23896,7 +23891,7 @@ class NodeCutter {
23896
23891
  fragment = this.spliceEmptyNode(fragment, true);
23897
23892
  if (fragment && fragment.childNodes.length > 0) {
23898
23893
  const isEmpty = (fragment.childNodes.length === 1 && fragment.childNodes[0].nodeName !== 'IMG'
23899
- && this.isRteElm(fragment) && fragment.textContent.trim() === '') ? true : false;
23894
+ && this.isRteElm(fragment) && fragment.textContent.trim() === '' && fragment.textContent !== ' ' && fragment.textContent.charCodeAt(0) !== 160) ? true : false;
23900
23895
  if (!isEmpty) {
23901
23896
  if (node) {
23902
23897
  InsertMethods.AppendBefore(fragment, node, true);
@@ -24295,6 +24290,14 @@ class Formats {
24295
24290
  }
24296
24291
  applyFormats(e) {
24297
24292
  const range = this.parent.nodeSelection.getRange(this.parent.currentDocument);
24293
+ const tableCursor = this.parent.nodeSelection.processedTableImageCursor(range);
24294
+ if (tableCursor.start || tableCursor.end) {
24295
+ if (tableCursor.startName === 'TABLE' || tableCursor.endName === 'TABLE') {
24296
+ const tableNode = tableCursor.start ? tableCursor.startNode : tableCursor.endNode;
24297
+ this.applyTableSidesFormat(e, tableCursor.start, tableNode);
24298
+ return;
24299
+ }
24300
+ }
24298
24301
  let isSelectAll = false;
24299
24302
  if (this.parent.editableElement === range.endContainer &&
24300
24303
  !isNullOrUndefined(this.parent.editableElement.children[range.endOffset - 1]) &&
@@ -24543,6 +24546,23 @@ class Formats {
24543
24546
  element.style.removeProperty(ignoreAttr[i]);
24544
24547
  }
24545
24548
  }
24549
+ applyTableSidesFormat(e, start, table) {
24550
+ const formatNode = createElement(e.subCommand);
24551
+ if (!(e.enterAction === 'BR')) {
24552
+ formatNode.appendChild(createElement('br'));
24553
+ }
24554
+ table.insertAdjacentElement(start ? 'beforebegin' : 'afterend', formatNode);
24555
+ this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, formatNode, 0);
24556
+ if (e.callBack) {
24557
+ e.callBack({
24558
+ requestType: e.subCommand,
24559
+ editorMode: 'HTML',
24560
+ event: e.event,
24561
+ range: this.parent.nodeSelection.getRange(this.parent.currentDocument),
24562
+ elements: this.parent.domNode.blockNodes()
24563
+ });
24564
+ }
24565
+ }
24546
24566
  destroy() {
24547
24567
  this.removeEventListener();
24548
24568
  }
@@ -24649,7 +24669,12 @@ class InsertHtml {
24649
24669
  }
24650
24670
  }
24651
24671
  if (!isNullOrUndefined(sibNode) && !isNullOrUndefined(sibNode.parentNode)) {
24652
- InsertMethods.AppendBefore(node, sibNode, true);
24672
+ if (docElement.contains(sibNode)) {
24673
+ InsertMethods.AppendBefore(node, sibNode, true);
24674
+ }
24675
+ else {
24676
+ range.insertNode(node);
24677
+ }
24653
24678
  }
24654
24679
  else {
24655
24680
  let previousNode = null;
@@ -24937,24 +24962,95 @@ class InsertHtml {
24937
24962
  this.cursorPos(lastSelectionNode, node, nodeSelection, docElement, editNode, enterAction);
24938
24963
  }
24939
24964
  this.alignCheck(editNode);
24940
- const currentRange = nodeSelection.getRange(docElement);
24941
- this.listCleanUp(currentRange);
24965
+ this.listCleanUp(nodeSelection, docElement);
24942
24966
  }
24943
- static listCleanUp(range) {
24967
+ static listCleanUp(nodeSelection, docElement) {
24968
+ const range = nodeSelection.getRange(docElement);
24969
+ const startContainer = range.startContainer;
24970
+ const startOffset = range.startOffset;
24944
24971
  if (range.startContainer.parentElement.closest('ol,ul') !== null && range.endContainer.parentElement.closest('ol,ul') !== null) {
24945
- const liElems = range.startContainer.parentElement.closest('ol,ul').querySelectorAll('li');
24946
- if (liElems.length > 0) {
24947
- liElems.forEach((item) => {
24948
- if (!isNullOrUndefined(item.firstChild) && (item.firstChild.nodeName === 'OL' || item.firstChild.nodeName === 'UL')) {
24949
- item.style.listStyleType = 'none';
24950
- }
24951
- const nestedLi = Array.from(item.children).find((child) => child.tagName === 'LI' && (child.parentElement && child.parentElement.tagName !== 'OL' && child.parentElement.tagName !== 'UL'));
24952
- if (nestedLi) {
24953
- item.parentNode.replaceChild(nestedLi, item);
24972
+ const haslistCleanUp = this.cleanUpListItems(range.startContainer.parentElement.closest('ol,ul'));
24973
+ const haslistContainerCleanUp = this.cleanUpListContainer(range.startContainer.parentElement.closest('ol,ul'));
24974
+ if (haslistCleanUp || haslistContainerCleanUp) {
24975
+ range.setStart(startContainer, startOffset);
24976
+ range.setEnd(startContainer, startOffset);
24977
+ }
24978
+ }
24979
+ }
24980
+ static cleanUpListItems(parentContainer) {
24981
+ let hasListCleanUp = false;
24982
+ const listItems = parentContainer.closest('ol, ul').querySelectorAll('li');
24983
+ if (listItems.length === 0) {
24984
+ return false;
24985
+ }
24986
+ let nearestListItem = null;
24987
+ listItems.forEach((listItem) => {
24988
+ if (!isNullOrUndefined(listItem.firstChild) && (listItem.firstChild.nodeName === 'OL' || listItem.firstChild.nodeName === 'UL')) {
24989
+ listItem.style.listStyleType = 'none';
24990
+ }
24991
+ const parentElement = listItem.parentElement;
24992
+ if (!isNullOrUndefined(parentElement) && parentElement.nodeName !== 'OL' && parentElement.nodeName !== 'UL') {
24993
+ if (isNullOrUndefined(nearestListItem)) {
24994
+ nearestListItem = parentElement.closest('li');
24995
+ }
24996
+ if (!isNullOrUndefined(nearestListItem)) {
24997
+ const nextSibling = listItem.nextSibling;
24998
+ if (!isNullOrUndefined(nextSibling) && nextSibling.nodeName !== 'LI') {
24999
+ const startIndex = Array.prototype.indexOf.call(parentElement.childNodes, nextSibling);
25000
+ const clonedParent = parentElement.cloneNode(false);
25001
+ const totalChildren = parentElement.childNodes.length;
25002
+ for (let i = startIndex; i < totalChildren; i++) {
25003
+ clonedParent.appendChild(parentElement.childNodes[startIndex]);
25004
+ }
25005
+ if (clonedParent.childNodes.length > 0) {
25006
+ const newListItem = document.createElement('li');
25007
+ newListItem.appendChild(clonedParent);
25008
+ nearestListItem.insertAdjacentElement('afterend', newListItem);
25009
+ }
25010
+ else {
25011
+ clonedParent.remove();
25012
+ }
24954
25013
  }
24955
- });
25014
+ const closestList = parentElement.closest('ol, ul');
25015
+ nearestListItem.insertAdjacentElement('afterend', listItem);
25016
+ nearestListItem = nearestListItem.nextSibling;
25017
+ this.removeEmptyElements(closestList);
25018
+ hasListCleanUp = true;
25019
+ }
24956
25020
  }
25021
+ const nestedLi = Array.from(listItem.children).find((child) => child.tagName === 'LI' && (child.parentElement && child.parentElement.tagName !== 'OL' && child.parentElement.tagName !== 'UL'));
25022
+ if (nestedLi && listItem.parentNode) {
25023
+ listItem.parentNode.replaceChild(nestedLi, listItem);
25024
+ hasListCleanUp = true;
25025
+ }
25026
+ });
25027
+ return hasListCleanUp;
25028
+ }
25029
+ static cleanUpListContainer(parentList) {
25030
+ let hasListContainerCleanUp = false;
25031
+ let nonLiElementCollection = [];
25032
+ const replacements = [];
25033
+ if (!isNullOrUndefined(parentList)) {
25034
+ parentList.childNodes.forEach((childNode) => {
25035
+ if (childNode.nodeName.toLocaleUpperCase() !== 'LI') {
25036
+ nonLiElementCollection.push(childNode);
25037
+ }
25038
+ if ((childNode.nodeName.toLocaleUpperCase() === 'LI' || parentList.lastChild === childNode) && nonLiElementCollection.length > 0) {
25039
+ replacements.push({ elements: [...nonLiElementCollection] });
25040
+ nonLiElementCollection = [];
25041
+ }
25042
+ });
25043
+ replacements.forEach(({ elements }) => {
25044
+ const newListItem = document.createElement('li');
25045
+ elements[0].parentNode.replaceChild(newListItem, elements[0]);
25046
+ elements.forEach((child) => newListItem.appendChild(child));
25047
+ if (newListItem.textContent && newListItem.textContent.trim() === '') {
25048
+ parentList.removeChild(newListItem);
25049
+ }
25050
+ hasListContainerCleanUp = true;
25051
+ });
24957
25052
  }
25053
+ return hasListContainerCleanUp;
24958
25054
  }
24959
25055
  static placeCursorEnd(lastSelectionNode, node, nodeSelection, docElement, editNode) {
24960
25056
  lastSelectionNode = lastSelectionNode.nodeName === 'BR' ? (isNullOrUndefined(lastSelectionNode.previousSibling) ? lastSelectionNode.parentNode
@@ -25168,7 +25264,8 @@ class InsertHtml {
25168
25264
  while (el && el.nodeType === 1) {
25169
25265
  if (el.parentNode === editNode ||
25170
25266
  (!isNullOrUndefined(el.parentNode.tagName) &&
25171
- IGNORE_BLOCK_TAGS.indexOf(el.parentNode.tagName.toLocaleLowerCase()) !== -1)) {
25267
+ (IGNORE_BLOCK_TAGS.indexOf(el.parentNode.tagName.toLocaleLowerCase()) !== -1
25268
+ || ALLOWED_TABLE_BLOCK_TAGS.indexOf(el.parentNode.tagName.toLocaleLowerCase()) !== -1))) {
25172
25269
  return el;
25173
25270
  }
25174
25271
  el = el.parentNode;
@@ -25945,8 +26042,14 @@ class ImageCommand {
25945
26042
  (Browser.isIE ? selectedNode.previousSibling : selectedNode.previousElementSibling);
25946
26043
  const onImageLoadEvent = () => {
25947
26044
  if (!isNullOrUndefined(this.parent.currentDocument)) {
25948
- imgElm.setAttribute('width', imgElm.offsetWidth.toString());
25949
- imgElm.setAttribute('height', imgElm.offsetHeight.toString());
26045
+ const imgWidth = imgElm.getAttribute('width');
26046
+ const imgHeight = imgElm.getAttribute('height');
26047
+ if (isNullOrUndefined(imgWidth) || imgWidth === 'auto') {
26048
+ imgElm.setAttribute('width', imgElm.offsetWidth.toString());
26049
+ }
26050
+ if (isNullOrUndefined(imgHeight) || imgHeight === 'auto') {
26051
+ imgElm.setAttribute('height', imgElm.offsetHeight.toString());
26052
+ }
25950
26053
  e.callBack({
25951
26054
  requestType: (e.value === 'Replace') ? (e.item.subCommand = 'Replace', 'Replace') : 'Images',
25952
26055
  editorMode: 'HTML',
@@ -32029,7 +32132,11 @@ class HtmlEditor {
32029
32132
  isTableClassAdded() {
32030
32133
  const tableElement = this.parent.inputElement.querySelectorAll('table');
32031
32134
  for (let i = 0; i < tableElement.length; i++) {
32032
- if (!tableElement[i].classList.contains('e-rte-table') && !tableElement[i].classList.contains('e-rte-paste-table')) {
32135
+ // e-rte-table class is added to the table element for styling.
32136
+ // e-rte-paste-table class is added for pasted table element from MS Word and other sources such as Web will not have any styles.
32137
+ // e-rte-custom-table class is added for custom table element will not have any styles.
32138
+ if (!tableElement[i].classList.contains('e-rte-table') && !tableElement[i].classList.contains('e-rte-paste-table')
32139
+ && !tableElement[i].classList.contains('e-rte-custom-table')) {
32033
32140
  tableElement[i].classList.add('e-rte-table');
32034
32141
  }
32035
32142
  }
@@ -32542,12 +32649,16 @@ class HtmlEditor {
32542
32649
  }
32543
32650
  const brNode = this.deleteRangeElement.querySelector('BR');
32544
32651
  const brLastChildNode = this.deleteRangeElement.lastChild;
32652
+ const brParentNode = brLastChildNode.parentNode;
32545
32653
  if (brNode && brNode.classList.contains('e-rte-image-remove-focus')) {
32546
32654
  removeClass([brNode], ['e-rte-image-focus']);
32547
32655
  return;
32548
32656
  }
32549
32657
  else if (brNode && brLastChildNode && brLastChildNode.nodeName === 'BR') {
32550
32658
  detach(brLastChildNode);
32659
+ if (!isNullOrUndefined(brParentNode) && brParentNode.childNodes.length === 0) {
32660
+ detach(brParentNode);
32661
+ }
32551
32662
  e.args.preventDefault();
32552
32663
  }
32553
32664
  if (!isNullOrUndefined(this.deleteRangeElement) && (this.deleteOldRangeElement.tagName !== 'OL' && this.deleteOldRangeElement.tagName !== 'UL')
@@ -33218,38 +33329,62 @@ class PasteCleanup {
33218
33329
  }
33219
33330
  }
33220
33331
  splitBreakLine(value) {
33221
- const enterSplitText = value.split('\n');
33222
- let contentInnerElem = '';
33332
+ const enterSplitText = value.split('\r\n\r\n');
33333
+ let finalText = '';
33223
33334
  const startNode = this.parent.enterKey === 'P' ? '<p>' : (this.parent.enterKey === 'DIV' ? '<div>' : '');
33224
33335
  const endNode = this.parent.enterKey === 'P' ? '</p>' : (this.parent.enterKey === 'DIV' ? '</div>' : '<br>');
33225
33336
  for (let i = 0; i < enterSplitText.length; i++) {
33226
- if (enterSplitText[i].trim() === '') {
33227
- contentInnerElem += getDefaultValue(this.parent);
33337
+ const content = enterSplitText[i];
33338
+ const contentWithSpace = this.makeSpace(content);
33339
+ const contentWithLineBreak = contentWithSpace.replace(/\r\n|\n/g, '<br>');
33340
+ if (i === 0) {
33341
+ if (this.parent.enterKey === 'BR') {
33342
+ finalText += (contentWithLineBreak + endNode);
33343
+ }
33344
+ else {
33345
+ finalText += contentWithLineBreak; // In order to merge the content in current line. No P/Div tag is added.
33346
+ }
33228
33347
  }
33229
33348
  else {
33230
- const contentWithSpace = this.makeSpace(enterSplitText[i]);
33231
- contentInnerElem += (i === 0 && this.parent.enterKey !== 'BR' ? '<span>' : startNode) +
33232
- (contentWithSpace.trim() === '' ? '<br>' : contentWithSpace.trim()) +
33233
- (enterSplitText.length - 1 === i && this.parent.enterKey === 'BR' ? '' : (i === 0 && this.parent.enterKey !== 'BR' ? '</span>' : endNode));
33349
+ if (this.parent.enterKey === 'BR') {
33350
+ if (i === enterSplitText.length - 1) {
33351
+ finalText += (contentWithLineBreak + endNode);
33352
+ }
33353
+ else {
33354
+ finalText += (contentWithLineBreak + endNode + endNode);
33355
+ }
33356
+ }
33357
+ else {
33358
+ finalText += startNode + contentWithLineBreak + endNode;
33359
+ }
33234
33360
  }
33235
33361
  }
33236
- return contentInnerElem;
33362
+ return finalText;
33237
33363
  }
33238
- makeSpace(enterSplitText) {
33239
- let contentWithSpace = '';
33240
- let spaceBetweenContent = true;
33241
- enterSplitText = enterSplitText.replace(/\t/g, '&nbsp;&nbsp;&nbsp;&nbsp;');
33242
- const spaceSplit = enterSplitText.split(' ');
33243
- for (let j = 0; j < spaceSplit.length; j++) {
33244
- if (spaceSplit[j].trim() === '') {
33245
- contentWithSpace += spaceBetweenContent ? '&nbsp;' : ' ';
33364
+ makeSpace(text) {
33365
+ let spacedContent = '';
33366
+ if (text === '') {
33367
+ return text;
33368
+ }
33369
+ const lineBreakSplitText = text.split(' ');
33370
+ for (let i = 0; i < lineBreakSplitText.length; i++) {
33371
+ const currentText = lineBreakSplitText[i];
33372
+ if (currentText === '') {
33373
+ spacedContent += '&nbsp;';
33374
+ }
33375
+ else if (currentText === '\t') {
33376
+ spacedContent += '&nbsp;&nbsp;&nbsp;&nbsp;';
33246
33377
  }
33247
33378
  else {
33248
- spaceBetweenContent = false;
33249
- contentWithSpace += spaceSplit[j] + ' ';
33379
+ if (i > 0 && i < lineBreakSplitText.length) {
33380
+ spacedContent += ' ';
33381
+ }
33382
+ spacedContent += currentText;
33250
33383
  }
33251
33384
  }
33252
- return contentWithSpace;
33385
+ spacedContent = spacedContent.replace(/\t/g, '&nbsp;&nbsp;&nbsp;&nbsp;');
33386
+ spacedContent = spacedContent.replace(/&nbsp;&nbsp;/g, '&nbsp; ');
33387
+ return spacedContent;
33253
33388
  }
33254
33389
  imgUploading(elm) {
33255
33390
  const allImgElm = elm.querySelectorAll('.pasteContent_Img');
@@ -33823,6 +33958,9 @@ class PasteCleanup {
33823
33958
  const tableElement = element.querySelectorAll('table');
33824
33959
  for (let i = 0; i < tableElement.length; i++) {
33825
33960
  const isMSTeamsTable = tableElement[i].parentElement.nodeName === 'FIGURE';
33961
+ if (tableElement[i].classList.length > 0 && tableElement[i].classList.contains('e-rte-custom-table')) {
33962
+ continue; // Skip the custom table class
33963
+ }
33826
33964
  if (this.parent.pasteCleanupSettings.keepFormat && source && !isMSTeamsTable) {
33827
33965
  tableElement[i].classList.add('e-rte-paste-' + source + '-table');
33828
33966
  }
@@ -38115,7 +38253,7 @@ let RichTextEditor = class RichTextEditor extends Component {
38115
38253
  }
38116
38254
  const notFormatPainterCopy = isNullOrUndefined(e.action) ? true : (e.action !== 'format-copy' ? true : false);
38117
38255
  if (this.formatter.getUndoRedoStack().length === 0 && notFormatPainterCopy &&
38118
- !(e.altKey || e.shiftKey || (e.altKey && e.shiftKey && e.which === 67))) {
38256
+ !(e.altKey || (e.shiftKey && e.which === 16) || (e.altKey && e.shiftKey && e.which === 67))) {
38119
38257
  this.formatter.saveData();
38120
38258
  }
38121
38259
  let preventingMention = false;
@@ -39165,7 +39303,10 @@ let RichTextEditor = class RichTextEditor extends Component {
39165
39303
  const item = compiledTemplate[i];
39166
39304
  append([item], appendElem);
39167
39305
  }
39168
- this.setProperties({ value: appendElem.innerHTML.trim() });
39306
+ const content = appendElem.innerHTML.trim();
39307
+ if (content.length > 0) {
39308
+ this.setProperties({ value: content });
39309
+ }
39169
39310
  this.renderReactTemplates();
39170
39311
  }
39171
39312
  }
@@ -40307,5 +40448,5 @@ RichTextEditor = __decorate$5([
40307
40448
  NotifyPropertyChanges
40308
40449
  ], RichTextEditor);
40309
40450
 
40310
- export { ACTION, ALIGNMENT_TYPE, ALLOWED_ACTIONKEYS, AUDIO, Alignments, Audio, AudioCommand, BLOCKQUOTE_LIST_HANDLE, BLOCK_TAGS, BaseQuickToolbar, BaseToolbar, CLASS_AUDIO, CLASS_AUDIO_BREAK, CLASS_AUDIO_FOCUS, CLASS_AUDIO_INLINE, CLASS_AUDIO_WRAP, CLASS_CAPTION, CLASS_CAPTION_INLINE, CLASS_CLICK_ELEM, CLASS_EMBED_VIDEO_WRAP, CLASS_IMAGE_BREAK, CLASS_IMAGE_CENTER, CLASS_IMAGE_INLINE, CLASS_IMAGE_LEFT, CLASS_IMAGE_RIGHT, CLASS_RTE_CAPTION, CLASS_VIDEO, CLASS_VIDEO_BREAK, CLASS_VIDEO_CENTER, CLASS_VIDEO_CLICK_ELEM, CLASS_VIDEO_FOCUS, CLASS_VIDEO_INLINE, CLASS_VIDEO_LEFT, CLASS_VIDEO_RIGHT, CLASS_VIDEO_WRAP, CLEAR_COMMAND, CLEAR_TYPE, CLS_ACTIVE, CLS_ALIGN_TB_BTN, CLS_AUDIOBREAK, CLS_AUDIOINLINE, CLS_AUDIOWRAP, CLS_AUD_FOCUS, CLS_BACK, CLS_BACKGROUND_COLOR_DROPDOWN, CLS_BACKGROUND_COLOR_PICKER, CLS_BACKGROUND_COLOR_TARGET, CLS_BULLETFORMATLIST_TB_BTN, CLS_CAPINLINE, CLS_CAPTION, CLS_CLICKELEM, CLS_COLOR_CONTENT, CLS_COLOR_PALETTE, CLS_CONTENT, CLS_COUNT, CLS_CUSTOM_TILE, CLS_DISABLED, CLS_DROPAREA, CLS_DROPDOWN_BTN, CLS_DROPDOWN_ICONS, CLS_DROPDOWN_ITEMS, CLS_DROPDOWN_POPUP, CLS_ERROR, CLS_EXPAND_OPEN, CLS_FOCUS, CLS_FONT_COLOR_DROPDOWN, CLS_FONT_COLOR_PICKER, CLS_FONT_COLOR_TARGET, CLS_FONT_NAME_TB_BTN, CLS_FONT_SIZE_TB_BTN, CLS_FORMATS_TB_BTN, CLS_FULL_SCREEN, CLS_HIDE, CLS_HR_SEPARATOR, CLS_ICONS, CLS_IMAGE_POP, CLS_IMGBREAK, CLS_IMGCENTER, CLS_IMGINLINE, CLS_IMGLEFT, CLS_IMGRIGHT, CLS_IMG_FOCUS, CLS_IMG_INNER, CLS_IMG_RESIZE, CLS_INLINE, CLS_INLINE_DROPDOWN, CLS_INLINE_POP, CLS_LIST_PRIMARY_CONTENT, CLS_MAXIMIZE, CLS_MINIMIZE, CLS_NOCOLOR_ITEM, CLS_NUMBERFORMATLIST_TB_BTN, CLS_POP, CLS_POPUP, CLS_POPUP_OPEN, CLS_QUICK_DROPDOWN, CLS_QUICK_POP, CLS_QUICK_TB, CLS_RESIZE, CLS_RM_WHITE_SPACE, CLS_RTE, CLS_RTE_CAPTION, CLS_RTE_CONTAINER, CLS_RTE_CONTENT, CLS_RTE_DIALOG_MIN_HEIGHT, CLS_RTE_DIALOG_UPLOAD, CLS_RTE_DRAG_IMAGE, CLS_RTE_ELEMENTS, CLS_RTE_EXPAND_TB, CLS_RTE_FIXED_TB_EXPAND, CLS_RTE_HIDDEN, CLS_RTE_IMAGE, CLS_RTE_PASTE_CANCEL, CLS_RTE_PASTE_KEEP_FORMAT, CLS_RTE_PASTE_OK, CLS_RTE_PASTE_PLAIN_FORMAT, CLS_RTE_PASTE_REMOVE_FORMAT, CLS_RTE_READONLY, CLS_RTE_RES_CNT, CLS_RTE_RES_EAST, CLS_RTE_RES_HANDLE, CLS_RTE_RES_WEST, CLS_RTE_SOURCE_CODE_TXTAREA, CLS_RTE_TABLE_RESIZE, CLS_RTE_TB_ENABLED, CLS_RTE_UPLOAD_POPUP, CLS_RTL, CLS_SCRIPT_SHEET, CLS_SEPARATOR, CLS_SHOW, CLS_STYLE_SHEET, CLS_TABLE, CLS_TABLE_BORDER, CLS_TABLE_MULTI_CELL, CLS_TABLE_SEL, CLS_TABLE_SEL_END, CLS_TB_ALT_BOR, CLS_TB_BOX_RES, CLS_TB_BTN, CLS_TB_COL_RES, CLS_TB_DASH_BOR, CLS_TB_EXTENDED, CLS_TB_FIXED, CLS_TB_FLOAT, CLS_TB_INLINE, CLS_TB_IOS_FIX, CLS_TB_ITEM, CLS_TB_ROW_RES, CLS_TB_STATIC, CLS_TB_WRAP, CLS_TEXT_POP, CLS_TEXT_QUICK_TB, CLS_TOOLBAR, CLS_UPLOAD_FILES, CLS_VIDEOBREAK, CLS_VIDEOINLINE, CLS_VIDEOWRAP, CLS_VID_CLICK_ELEM, CLS_VID_FOCUS, CLS_VISIBLE, CLS_WARNING, ClearFormat, ClearFormatExec, ColorPickerInput, ContentRender, Count, DEFAULT_TAG, DELETECOLUMN, DELETEROW, DESTROY, DOMNode, DialogRenderer, DialogType, DropDownButtons, EMOJI_PICKER_ACTIONS, EditorManager, EmojiPicker, EmojiPickerAction, ExecCommandCallBack, FORMAT_PAINTER_ACTIONS, FORMAT_TYPE, FileManager, FormatPainter, FormatPainterActions, Formats, Formatter, FullScreen, HTMLFormatter, HtmlEditor, HtmlToolbarStatus, IGNORE_BLOCK_TAGS, IMAGE, INDENT_TYPE, INSERTHTML_TYPE, INSERT_COLUMN, INSERT_ROW, INSERT_TEXT_COMMAND, INSERT_TEXT_TYPE, INTERNAL_DESTROY, IframeContentRender, Image$1 as Image, ImageCommand, ImageInputSource, ImportExport, Indents, InsertHtml, InsertHtmlExec, InsertMethods, InsertTextExec, IsFormatted, KEY_DOWN, KEY_DOWN_HANDLER, KEY_UP, KEY_UP_HANDLER, KeyboardEvents, LINK, LINK_COMMAND, LISTS_COMMAND, LIST_TYPE, Link, LinkCommand, Lists, MDFormats, MDLink, MDLists, MDSelectionFormats, MDTable, MD_TABLE, MODEL_CHANGED, MODEL_CHANGED_PLUGIN, MOUSE_DOWN, MS_WORD_CLEANUP, MS_WORD_CLEANUP_PLUGIN, MarkdownEditor, MarkdownFormatter, MarkdownParser, MarkdownRender, MarkdownSelection, MarkdownToolbarStatus, MsWordPaste, NodeCutter, NodeSelection, ON_BEGIN, PASTE_SOURCE, PasteCleanup, PopupRenderer, QuickToolbar, REMOVETABLE, Render, RenderType, RendererFactory, Resize, RichTextEditor, SELECTION_TYPE, SELF_CLOSING_TAGS, SPACE_ACTION, SelectionBasedExec, SelectionCommands, ServiceLocator, SlashMenu, TABLE, TABLEHEADER, TABLE_BLOCK_TAGS, TABLE_HORIZONTAL_SPLIT, TABLE_MERGE, TABLE_MOVE, TABLE_VERTICAL_ALIGN, TABLE_VERTICAL_SPLIT, Table, TableCommand, Toolbar, ToolbarAction, ToolbarRenderer, ToolbarStatus, ToolbarType, UndoRedoCommands, UndoRedoManager, VIDEO, Video, VideoCommand, ViewSource, XhtmlValidation, actionBegin, actionComplete, actionSuccess, afterImageDelete, afterKeyDown, afterMediaDelete, afterPasteCleanup, audioDelete, audioToolbarAction, autoResize, beforeDialogClose, beforeDialogOpen, beforeDropDownItemRender, beforeDropDownOpen, beforeFileUpload, beforeImageDrop, beforeImageUpload, beforePasteCleanup, beforeQuickToolbarOpen, bindCssClass, bindOnEnd, blockEmptyNodes, checkUndo, cleanupResizeElements, clearDialogObj, closeAudioDialog, closeImageDialog, closeLinkDialog, closeTableDialog, closeTooltip, closeVideoDialog, colorPickerChanged, contentBlur, contentChanged, contentFocus, contentscroll, conversionFactors, convertToBlob, count, createTable, created, decode, destroy, destroyTooltip, destroyed, dialogClose, dialogOpen, disableFullScreen, dispatchEvent, docClick, documentClickClosedBy, drop, dropDownSelect, dynamicModule, editAreaClick, editLink, emojiPicker, enableFullScreen, enterHandler, execCommandCallBack, executeGroup, expandPopupClick, fileRemoving, fileSelected, fileUploadFailed, fileUploadSuccess, fileUploading, focusChange, formatPainterClick, formatPainterDoubleClick, getCollection, getDefaultValue, getDropDownValue, getEditValue, getFormattedFontSize, getIndex, getLocaleFontFormat, getSelectedHtml, getTBarItemsIndex, getTextNodesUnder, getTooltipText, hasClass, hidePopup, htmlKeyConfig, htmlToolbarClick, iframeMouseDown, iframeResizeFactor, imageAlt, imageBreak, imageCaption, imageCenter, imageDelete, imageInline, imageLeft, imageLink, imageRemoving, imageResizeFactor, imageRight, imageSelected, imageSize, imageToolbarAction, imageUploadFailed, imageUploadSuccess, imageUploading, imgModule, initialEnd, initialLoad, inlineEmptyNodes, insertAudio, insertCompleted, insertImage, insertLink, insertVideo, isEditableValueEmpty, isIDevice, keyDown, keyUp, linkToolbarAction, listConversionFilters, load, markdownFormatTags, markdownKeyConfig, markdownListsTags, markdownSelectionTags, markdownToolbarClick, markerClassName, mentionRestrictKeys, modelChanged, mouseDown, mouseUp, onExport, onHandleFontsizeChange, onImport, onResize, openLink, pageYOffset, parseHtml, paste, pasteClean, pasteCleanupGroupingTags, popupHide, quickToolbarClose, quickToolbarOpen, readOnlyMode, redo, refreshBegin, renderFileManager, renderInlineToolbar, resizeInitialized, resizeStart, resizeStop, rtlMode, sanitizeHelper, scroll, selectAll, selectRange, selectionCommand, selectionRestore, selectionSave, selfClosingTags, setAttributes, setToolbarStatus, showAudioDialog, showColorPicker, showImageDialog, showLinkDialog, showTableDialog, showVideoDialog, sourceCode, sourceCodeMouseDown, statusCollection, supportedUnits, tableColorPickerChanged, tableModulekeyUp, tableToolbarAction, tableclass, toObjectLowerCase, toolbarClick, toolbarCreated, toolbarOpen, toolbarRefresh, toolbarRenderComplete, toolbarUpdated, unLink, undo, updateDropDownFontFormatLocale, updateSource, updateTbItemsStatus, updateTextNode, updateToolbarItem, updateUndoRedoStatus, updateValueOnIdle, updatedToolbarStatus, videoDelete, videoSize, videoToolbarAction, windowResize, xhtmlValidation };
40451
+ export { ACTION, ALIGNMENT_TYPE, ALLOWED_ACTIONKEYS, ALLOWED_TABLE_BLOCK_TAGS, AUDIO, Alignments, Audio, AudioCommand, BLOCKQUOTE_LIST_HANDLE, BLOCK_TAGS, BaseQuickToolbar, BaseToolbar, CLASS_AUDIO, CLASS_AUDIO_BREAK, CLASS_AUDIO_FOCUS, CLASS_AUDIO_INLINE, CLASS_AUDIO_WRAP, CLASS_CAPTION, CLASS_CAPTION_INLINE, CLASS_CLICK_ELEM, CLASS_EMBED_VIDEO_WRAP, CLASS_IMAGE_BREAK, CLASS_IMAGE_CENTER, CLASS_IMAGE_INLINE, CLASS_IMAGE_LEFT, CLASS_IMAGE_RIGHT, CLASS_RTE_CAPTION, CLASS_VIDEO, CLASS_VIDEO_BREAK, CLASS_VIDEO_CENTER, CLASS_VIDEO_CLICK_ELEM, CLASS_VIDEO_FOCUS, CLASS_VIDEO_INLINE, CLASS_VIDEO_LEFT, CLASS_VIDEO_RIGHT, CLASS_VIDEO_WRAP, CLEAR_COMMAND, CLEAR_TYPE, CLS_ACTIVE, CLS_ALIGN_TB_BTN, CLS_AUDIOBREAK, CLS_AUDIOINLINE, CLS_AUDIOWRAP, CLS_AUD_FOCUS, CLS_BACK, CLS_BACKGROUND_COLOR_DROPDOWN, CLS_BACKGROUND_COLOR_PICKER, CLS_BACKGROUND_COLOR_TARGET, CLS_BULLETFORMATLIST_TB_BTN, CLS_CAPINLINE, CLS_CAPTION, CLS_CLICKELEM, CLS_COLOR_CONTENT, CLS_COLOR_PALETTE, CLS_CONTENT, CLS_COUNT, CLS_CUSTOM_TILE, CLS_DISABLED, CLS_DROPAREA, CLS_DROPDOWN_BTN, CLS_DROPDOWN_ICONS, CLS_DROPDOWN_ITEMS, CLS_DROPDOWN_POPUP, CLS_ERROR, CLS_EXPAND_OPEN, CLS_FOCUS, CLS_FONT_COLOR_DROPDOWN, CLS_FONT_COLOR_PICKER, CLS_FONT_COLOR_TARGET, CLS_FONT_NAME_TB_BTN, CLS_FONT_SIZE_TB_BTN, CLS_FORMATS_TB_BTN, CLS_FULL_SCREEN, CLS_HIDE, CLS_HR_SEPARATOR, CLS_ICONS, CLS_IMAGE_POP, CLS_IMGBREAK, CLS_IMGCENTER, CLS_IMGINLINE, CLS_IMGLEFT, CLS_IMGRIGHT, CLS_IMG_FOCUS, CLS_IMG_INNER, CLS_IMG_RESIZE, CLS_INLINE, CLS_INLINE_DROPDOWN, CLS_INLINE_POP, CLS_LIST_PRIMARY_CONTENT, CLS_MAXIMIZE, CLS_MINIMIZE, CLS_NOCOLOR_ITEM, CLS_NUMBERFORMATLIST_TB_BTN, CLS_POP, CLS_POPUP, CLS_POPUP_OPEN, CLS_QUICK_DROPDOWN, CLS_QUICK_POP, CLS_QUICK_TB, CLS_RESIZE, CLS_RM_WHITE_SPACE, CLS_RTE, CLS_RTE_CAPTION, CLS_RTE_CONTAINER, CLS_RTE_CONTENT, CLS_RTE_DIALOG_MIN_HEIGHT, CLS_RTE_DIALOG_UPLOAD, CLS_RTE_DRAG_IMAGE, CLS_RTE_ELEMENTS, CLS_RTE_EXPAND_TB, CLS_RTE_FIXED_TB_EXPAND, CLS_RTE_HIDDEN, CLS_RTE_IMAGE, CLS_RTE_PASTE_CANCEL, CLS_RTE_PASTE_KEEP_FORMAT, CLS_RTE_PASTE_OK, CLS_RTE_PASTE_PLAIN_FORMAT, CLS_RTE_PASTE_REMOVE_FORMAT, CLS_RTE_READONLY, CLS_RTE_RES_CNT, CLS_RTE_RES_EAST, CLS_RTE_RES_HANDLE, CLS_RTE_RES_WEST, CLS_RTE_SOURCE_CODE_TXTAREA, CLS_RTE_TABLE_RESIZE, CLS_RTE_TB_ENABLED, CLS_RTE_UPLOAD_POPUP, CLS_RTL, CLS_SCRIPT_SHEET, CLS_SEPARATOR, CLS_SHOW, CLS_STYLE_SHEET, CLS_TABLE, CLS_TABLE_BORDER, CLS_TABLE_MULTI_CELL, CLS_TABLE_SEL, CLS_TABLE_SEL_END, CLS_TB_ALT_BOR, CLS_TB_BOX_RES, CLS_TB_BTN, CLS_TB_COL_RES, CLS_TB_DASH_BOR, CLS_TB_EXTENDED, CLS_TB_FIXED, CLS_TB_FLOAT, CLS_TB_INLINE, CLS_TB_IOS_FIX, CLS_TB_ITEM, CLS_TB_ROW_RES, CLS_TB_STATIC, CLS_TB_WRAP, CLS_TEXT_POP, CLS_TEXT_QUICK_TB, CLS_TOOLBAR, CLS_UPLOAD_FILES, CLS_VIDEOBREAK, CLS_VIDEOINLINE, CLS_VIDEOWRAP, CLS_VID_CLICK_ELEM, CLS_VID_FOCUS, CLS_VISIBLE, CLS_WARNING, ClearFormat, ClearFormatExec, ColorPickerInput, ContentRender, Count, DEFAULT_TAG, DELETECOLUMN, DELETEROW, DESTROY, DOMNode, DialogRenderer, DialogType, DropDownButtons, EMOJI_PICKER_ACTIONS, EditorManager, EmojiPicker, EmojiPickerAction, ExecCommandCallBack, FORMAT_PAINTER_ACTIONS, FORMAT_TYPE, FileManager, FormatPainter, FormatPainterActions, Formats, Formatter, FullScreen, HTMLFormatter, HtmlEditor, HtmlToolbarStatus, IGNORE_BLOCK_TAGS, IMAGE, INDENT_TYPE, INSERTHTML_TYPE, INSERT_COLUMN, INSERT_ROW, INSERT_TEXT_COMMAND, INSERT_TEXT_TYPE, INTERNAL_DESTROY, IframeContentRender, Image$1 as Image, ImageCommand, ImageInputSource, ImportExport, Indents, InsertHtml, InsertHtmlExec, InsertMethods, InsertTextExec, IsFormatted, KEY_DOWN, KEY_DOWN_HANDLER, KEY_UP, KEY_UP_HANDLER, KeyboardEvents, LINK, LINK_COMMAND, LISTS_COMMAND, LIST_TYPE, Link, LinkCommand, Lists, MDFormats, MDLink, MDLists, MDSelectionFormats, MDTable, MD_TABLE, MODEL_CHANGED, MODEL_CHANGED_PLUGIN, MOUSE_DOWN, MS_WORD_CLEANUP, MS_WORD_CLEANUP_PLUGIN, MarkdownEditor, MarkdownFormatter, MarkdownParser, MarkdownRender, MarkdownSelection, MarkdownToolbarStatus, MsWordPaste, NodeCutter, NodeSelection, ON_BEGIN, PASTE_SOURCE, PasteCleanup, PopupRenderer, QuickToolbar, REMOVETABLE, Render, RenderType, RendererFactory, Resize, RichTextEditor, SELECTION_TYPE, SELF_CLOSING_TAGS, SPACE_ACTION, SelectionBasedExec, SelectionCommands, ServiceLocator, SlashMenu, TABLE, TABLEHEADER, TABLE_BLOCK_TAGS, TABLE_HORIZONTAL_SPLIT, TABLE_MERGE, TABLE_MOVE, TABLE_VERTICAL_ALIGN, TABLE_VERTICAL_SPLIT, Table, TableCommand, Toolbar, ToolbarAction, ToolbarRenderer, ToolbarStatus, ToolbarType, UndoRedoCommands, UndoRedoManager, VIDEO, Video, VideoCommand, ViewSource, XhtmlValidation, actionBegin, actionComplete, actionSuccess, afterImageDelete, afterKeyDown, afterMediaDelete, afterPasteCleanup, audioDelete, audioToolbarAction, autoResize, beforeDialogClose, beforeDialogOpen, beforeDropDownItemRender, beforeDropDownOpen, beforeFileUpload, beforeImageDrop, beforeImageUpload, beforePasteCleanup, beforeQuickToolbarOpen, bindCssClass, bindOnEnd, blockEmptyNodes, checkUndo, cleanupResizeElements, clearDialogObj, closeAudioDialog, closeImageDialog, closeLinkDialog, closeTableDialog, closeTooltip, closeVideoDialog, colorPickerChanged, contentBlur, contentChanged, contentFocus, contentscroll, conversionFactors, convertToBlob, count, createTable, created, decode, destroy, destroyTooltip, destroyed, dialogClose, dialogOpen, disableFullScreen, dispatchEvent, docClick, documentClickClosedBy, drop, dropDownSelect, dynamicModule, editAreaClick, editLink, emojiPicker, enableFullScreen, enterHandler, execCommandCallBack, executeGroup, expandPopupClick, fileRemoving, fileSelected, fileUploadFailed, fileUploadSuccess, fileUploading, focusChange, formatPainterClick, formatPainterDoubleClick, getCollection, getDefaultValue, getDropDownValue, getEditValue, getFormattedFontSize, getIndex, getLocaleFontFormat, getSelectedHtml, getTBarItemsIndex, getTextNodesUnder, getTooltipText, hasClass, hidePopup, htmlKeyConfig, htmlToolbarClick, iframeMouseDown, imageAlt, imageBreak, imageCaption, imageCenter, imageDelete, imageInline, imageLeft, imageLink, imageRemoving, imageResizeFactor, imageRight, imageSelected, imageSize, imageToolbarAction, imageUploadFailed, imageUploadSuccess, imageUploading, imgModule, initialEnd, initialLoad, inlineEmptyNodes, insertAudio, insertCompleted, insertImage, insertLink, insertVideo, isEditableValueEmpty, isIDevice, keyDown, keyUp, linkToolbarAction, listConversionFilters, load, markdownFormatTags, markdownKeyConfig, markdownListsTags, markdownSelectionTags, markdownToolbarClick, markerClassName, mentionRestrictKeys, modelChanged, mouseDown, mouseUp, onExport, onHandleFontsizeChange, onImport, onResize, openLink, pageYOffset, parseHtml, paste, pasteClean, pasteCleanupGroupingTags, popupHide, quickToolbarClose, quickToolbarOpen, readOnlyMode, redo, refreshBegin, renderFileManager, renderInlineToolbar, resizeInitialized, resizeStart, resizeStop, rtlMode, sanitizeHelper, scroll, selectAll, selectRange, selectionCommand, selectionRestore, selectionSave, selfClosingTags, setAttributes, setToolbarStatus, showAudioDialog, showColorPicker, showImageDialog, showLinkDialog, showTableDialog, showVideoDialog, sourceCode, sourceCodeMouseDown, statusCollection, supportedUnits, tableColorPickerChanged, tableModulekeyUp, tableToolbarAction, tableclass, toObjectLowerCase, toolbarClick, toolbarCreated, toolbarOpen, toolbarRefresh, toolbarRenderComplete, toolbarUpdated, unLink, undo, updateDropDownFontFormatLocale, updateSource, updateTbItemsStatus, updateTextNode, updateToolbarItem, updateUndoRedoStatus, updateValueOnIdle, updatedToolbarStatus, videoDelete, videoSize, videoToolbarAction, windowResize, xhtmlValidation };
40311
40452
  //# sourceMappingURL=ej2-richtexteditor.es2015.js.map