@syncfusion/ej2-richtexteditor 27.1.52 → 27.1.57-637881

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 (178) hide show
  1. package/README.md +1 -1
  2. package/dist/ej2-richtexteditor.min.js +1 -0
  3. package/dist/ej2-richtexteditor.umd.min.js +1 -10
  4. package/dist/ej2-richtexteditor.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-richtexteditor.es2015.js +298 -83
  6. package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
  7. package/dist/es6/ej2-richtexteditor.es5.js +299 -82
  8. package/dist/es6/ej2-richtexteditor.es5.js.map +1 -1
  9. package/dist/global/ej2-richtexteditor.min.js +1 -10
  10. package/dist/global/ej2-richtexteditor.min.js.map +1 -1
  11. package/dist/global/index.d.ts +0 -9
  12. package/package.json +84 -84
  13. package/src/common/config.d.ts +7 -0
  14. package/src/common/config.js +12 -0
  15. package/src/common/interface.d.ts +8 -8
  16. package/src/editor-manager/base/classes.d.ts +1 -1
  17. package/src/editor-manager/base/classes.js +1 -1
  18. package/src/editor-manager/base/editor-manager.d.ts +3 -3
  19. package/src/editor-manager/base/editor-manager.js +4 -4
  20. package/src/editor-manager/base/enum.d.ts +2 -2
  21. package/src/editor-manager/base/interface.d.ts +11 -11
  22. package/src/editor-manager/base/types.d.ts +1 -1
  23. package/src/editor-manager/plugin/alignments.d.ts +2 -2
  24. package/src/editor-manager/plugin/alignments.js +2 -2
  25. package/src/editor-manager/plugin/audio.d.ts +3 -3
  26. package/src/editor-manager/plugin/audio.js +3 -3
  27. package/src/editor-manager/plugin/clearformat-exec.d.ts +2 -2
  28. package/src/editor-manager/plugin/clearformat-exec.js +2 -2
  29. package/src/editor-manager/plugin/clearformat.d.ts +1 -1
  30. package/src/editor-manager/plugin/clearformat.js +2 -2
  31. package/src/editor-manager/plugin/dom-node.d.ts +36 -36
  32. package/src/editor-manager/plugin/dom-node.js +37 -37
  33. package/src/editor-manager/plugin/format-painter-actions.d.ts +1 -1
  34. package/src/editor-manager/plugin/format-painter-actions.js +1 -1
  35. package/src/editor-manager/plugin/formats.d.ts +2 -2
  36. package/src/editor-manager/plugin/formats.js +2 -2
  37. package/src/editor-manager/plugin/image.d.ts +3 -3
  38. package/src/editor-manager/plugin/image.js +5 -3
  39. package/src/editor-manager/plugin/indents.d.ts +2 -2
  40. package/src/editor-manager/plugin/indents.js +2 -2
  41. package/src/editor-manager/plugin/insert-methods.d.ts +4 -4
  42. package/src/editor-manager/plugin/insert-methods.js +4 -4
  43. package/src/editor-manager/plugin/insert-text.d.ts +2 -2
  44. package/src/editor-manager/plugin/insert-text.js +2 -2
  45. package/src/editor-manager/plugin/inserthtml-exec.d.ts +2 -2
  46. package/src/editor-manager/plugin/inserthtml-exec.js +2 -2
  47. package/src/editor-manager/plugin/inserthtml.d.ts +3 -2
  48. package/src/editor-manager/plugin/inserthtml.js +36 -12
  49. package/src/editor-manager/plugin/isformatted.d.ts +9 -9
  50. package/src/editor-manager/plugin/isformatted.js +9 -9
  51. package/src/editor-manager/plugin/link.d.ts +2 -2
  52. package/src/editor-manager/plugin/link.js +4 -4
  53. package/src/editor-manager/plugin/lists.d.ts +2 -2
  54. package/src/editor-manager/plugin/lists.js +3 -3
  55. package/src/editor-manager/plugin/ms-word-clean-up.d.ts +2 -1
  56. package/src/editor-manager/plugin/ms-word-clean-up.js +17 -1
  57. package/src/editor-manager/plugin/nodecutter.d.ts +6 -6
  58. package/src/editor-manager/plugin/nodecutter.js +6 -6
  59. package/src/editor-manager/plugin/selection-commands.d.ts +1 -1
  60. package/src/editor-manager/plugin/selection-commands.js +3 -3
  61. package/src/editor-manager/plugin/selection-exec.d.ts +2 -2
  62. package/src/editor-manager/plugin/selection-exec.js +2 -2
  63. package/src/editor-manager/plugin/table.d.ts +2 -2
  64. package/src/editor-manager/plugin/table.js +2 -2
  65. package/src/editor-manager/plugin/toolbar-status.d.ts +2 -2
  66. package/src/editor-manager/plugin/toolbar-status.js +3 -3
  67. package/src/editor-manager/plugin/undo.d.ts +6 -6
  68. package/src/editor-manager/plugin/undo.js +9 -9
  69. package/src/editor-manager/plugin/video.d.ts +3 -3
  70. package/src/editor-manager/plugin/video.js +3 -3
  71. package/src/markdown-parser/base/interface.d.ts +10 -10
  72. package/src/markdown-parser/base/markdown-parser.d.ts +3 -3
  73. package/src/markdown-parser/base/markdown-parser.js +3 -3
  74. package/src/markdown-parser/base/types.d.ts +1 -1
  75. package/src/markdown-parser/plugin/clearformat.d.ts +2 -2
  76. package/src/markdown-parser/plugin/clearformat.js +2 -2
  77. package/src/markdown-parser/plugin/formats.d.ts +2 -2
  78. package/src/markdown-parser/plugin/formats.js +2 -2
  79. package/src/markdown-parser/plugin/insert-text.d.ts +2 -2
  80. package/src/markdown-parser/plugin/insert-text.js +2 -2
  81. package/src/markdown-parser/plugin/link.d.ts +2 -2
  82. package/src/markdown-parser/plugin/link.js +2 -2
  83. package/src/markdown-parser/plugin/markdown-selection.d.ts +14 -14
  84. package/src/markdown-parser/plugin/markdown-selection.js +14 -14
  85. package/src/markdown-parser/plugin/md-selection-formats.d.ts +1 -1
  86. package/src/markdown-parser/plugin/md-selection-formats.js +1 -1
  87. package/src/markdown-parser/plugin/table.d.ts +3 -3
  88. package/src/markdown-parser/plugin/table.js +3 -3
  89. package/src/markdown-parser/plugin/undo.d.ts +6 -6
  90. package/src/markdown-parser/plugin/undo.js +6 -6
  91. package/src/rich-text-editor/actions/base-quick-toolbar.d.ts +9 -9
  92. package/src/rich-text-editor/actions/base-quick-toolbar.js +9 -9
  93. package/src/rich-text-editor/actions/base-toolbar.d.ts +3 -3
  94. package/src/rich-text-editor/actions/base-toolbar.js +3 -3
  95. package/src/rich-text-editor/actions/color-picker.d.ts +2 -2
  96. package/src/rich-text-editor/actions/color-picker.js +2 -2
  97. package/src/rich-text-editor/actions/count.d.ts +3 -3
  98. package/src/rich-text-editor/actions/count.js +3 -3
  99. package/src/rich-text-editor/actions/dropdown-buttons.d.ts +2 -2
  100. package/src/rich-text-editor/actions/dropdown-buttons.js +2 -2
  101. package/src/rich-text-editor/actions/emoji-picker.d.ts +1 -1
  102. package/src/rich-text-editor/actions/emoji-picker.js +1 -1
  103. package/src/rich-text-editor/actions/enter-key.js +10 -5
  104. package/src/rich-text-editor/actions/full-screen.d.ts +3 -3
  105. package/src/rich-text-editor/actions/full-screen.js +3 -3
  106. package/src/rich-text-editor/actions/html-editor.d.ts +3 -3
  107. package/src/rich-text-editor/actions/html-editor.js +5 -5
  108. package/src/rich-text-editor/actions/import-export.js +1 -1
  109. package/src/rich-text-editor/actions/keyboard.d.ts +1 -1
  110. package/src/rich-text-editor/actions/keyboard.js +1 -1
  111. package/src/rich-text-editor/actions/markdown-editor.d.ts +2 -2
  112. package/src/rich-text-editor/actions/markdown-editor.js +2 -2
  113. package/src/rich-text-editor/actions/paste-clean-up.d.ts +1 -1
  114. package/src/rich-text-editor/actions/paste-clean-up.js +47 -23
  115. package/src/rich-text-editor/actions/quick-toolbar.d.ts +9 -9
  116. package/src/rich-text-editor/actions/quick-toolbar.js +9 -9
  117. package/src/rich-text-editor/actions/resize.d.ts +3 -0
  118. package/src/rich-text-editor/actions/resize.js +17 -0
  119. package/src/rich-text-editor/actions/toolbar.d.ts +13 -13
  120. package/src/rich-text-editor/actions/toolbar.js +13 -13
  121. package/src/rich-text-editor/actions/xhtml-validation.d.ts +1 -1
  122. package/src/rich-text-editor/actions/xhtml-validation.js +1 -1
  123. package/src/rich-text-editor/base/classes.d.ts +125 -125
  124. package/src/rich-text-editor/base/classes.js +125 -125
  125. package/src/rich-text-editor/base/constant.d.ts +158 -158
  126. package/src/rich-text-editor/base/constant.js +158 -158
  127. package/src/rich-text-editor/base/enum.d.ts +1 -1
  128. package/src/rich-text-editor/base/enum.js +1 -1
  129. package/src/rich-text-editor/base/interface.d.ts +64 -52
  130. package/src/rich-text-editor/base/interface.js +1 -1
  131. package/src/rich-text-editor/base/rich-text-editor-model.d.ts +1 -1
  132. package/src/rich-text-editor/base/rich-text-editor.d.ts +62 -62
  133. package/src/rich-text-editor/base/rich-text-editor.js +48 -34
  134. package/src/rich-text-editor/base/util.d.ts +1 -1
  135. package/src/rich-text-editor/base/util.js +1 -1
  136. package/src/rich-text-editor/formatter/formatter.d.ts +8 -8
  137. package/src/rich-text-editor/formatter/formatter.js +8 -8
  138. package/src/rich-text-editor/formatter/html-formatter.d.ts +2 -2
  139. package/src/rich-text-editor/formatter/html-formatter.js +2 -2
  140. package/src/rich-text-editor/formatter/markdown-formatter.d.ts +2 -2
  141. package/src/rich-text-editor/formatter/markdown-formatter.js +2 -2
  142. package/src/rich-text-editor/renderer/audio-module.d.ts +1 -1
  143. package/src/rich-text-editor/renderer/audio-module.js +8 -2
  144. package/src/rich-text-editor/renderer/content-renderer.d.ts +6 -6
  145. package/src/rich-text-editor/renderer/content-renderer.js +6 -6
  146. package/src/rich-text-editor/renderer/dialog-renderer.d.ts +2 -2
  147. package/src/rich-text-editor/renderer/dialog-renderer.js +2 -2
  148. package/src/rich-text-editor/renderer/iframe-content-renderer.d.ts +4 -4
  149. package/src/rich-text-editor/renderer/iframe-content-renderer.js +4 -4
  150. package/src/rich-text-editor/renderer/image-module.d.ts +1 -1
  151. package/src/rich-text-editor/renderer/image-module.js +64 -23
  152. package/src/rich-text-editor/renderer/link-module.d.ts +1 -1
  153. package/src/rich-text-editor/renderer/link-module.js +9 -2
  154. package/src/rich-text-editor/renderer/markdown-renderer.d.ts +6 -6
  155. package/src/rich-text-editor/renderer/markdown-renderer.js +6 -6
  156. package/src/rich-text-editor/renderer/popup-renderer.d.ts +5 -5
  157. package/src/rich-text-editor/renderer/popup-renderer.js +5 -5
  158. package/src/rich-text-editor/renderer/render.d.ts +2 -2
  159. package/src/rich-text-editor/renderer/render.js +2 -2
  160. package/src/rich-text-editor/renderer/slash-menu.js +1 -1
  161. package/src/rich-text-editor/renderer/table-module.d.ts +1 -1
  162. package/src/rich-text-editor/renderer/table-module.js +4 -3
  163. package/src/rich-text-editor/renderer/toolbar-renderer.d.ts +9 -9
  164. package/src/rich-text-editor/renderer/toolbar-renderer.js +9 -9
  165. package/src/rich-text-editor/renderer/video-module.d.ts +1 -1
  166. package/src/rich-text-editor/renderer/video-module.js +9 -3
  167. package/src/rich-text-editor/renderer/view-source.d.ts +5 -5
  168. package/src/rich-text-editor/renderer/view-source.js +5 -5
  169. package/src/rich-text-editor/services/renderer-factory.d.ts +3 -3
  170. package/src/rich-text-editor/services/renderer-factory.js +3 -3
  171. package/src/rich-text-editor/services/service-locator.d.ts +3 -3
  172. package/src/rich-text-editor/services/service-locator.js +3 -3
  173. package/src/selection/selection.d.ts +27 -22
  174. package/src/selection/selection.js +66 -23
  175. package/styles/material3-dark.scss +1 -1
  176. package/styles/material3.scss +1 -1
  177. package/styles/rich-text-editor/material3-dark.scss +1 -1
  178. package/styles/rich-text-editor/material3.scss +1 -1
@@ -4251,9 +4251,10 @@ const PASTE_SOURCE = ['word', 'excel', 'onenote'];
4251
4251
  * `Selection` module is used to handle RTE Selections.
4252
4252
  */
4253
4253
  class NodeSelection {
4254
- constructor() {
4254
+ constructor(editElement) {
4255
4255
  this.startNodeName = [];
4256
4256
  this.endNodeName = [];
4257
+ this.editableElement = editElement;
4257
4258
  }
4258
4259
  saveInstance(range, body) {
4259
4260
  this.range = range.cloneRange();
@@ -4333,6 +4334,9 @@ class NodeSelection {
4333
4334
  return false;
4334
4335
  }
4335
4336
  getNode(startNode, endNode, nodeCollection) {
4337
+ if (this.editableElement && (!this.editableElement.contains(startNode) || this.editableElement === startNode)) {
4338
+ return null;
4339
+ }
4336
4340
  if (endNode === startNode &&
4337
4341
  (startNode.nodeType === 3 || !startNode.firstChild || nodeCollection.indexOf(startNode.firstChild) !== -1
4338
4342
  || this.isChildNode(nodeCollection, startNode))) {
@@ -4367,6 +4371,12 @@ class NodeSelection {
4367
4371
  || range.startContainer;
4368
4372
  const endNode = range.endContainer.childNodes[(range.endOffset > 0) ? (range.endOffset - 1) : range.endOffset]
4369
4373
  || range.endContainer;
4374
+ const tableCursor = this.processedTableImageCursor(range);
4375
+ if (tableCursor.start || tableCursor.end) {
4376
+ if (tableCursor.startName === 'TABLE' || tableCursor.endName === 'TABLE') {
4377
+ return [];
4378
+ }
4379
+ }
4370
4380
  if ((startNode === endNode || (startNode.nodeName === 'BR' && startNode === range.endContainer.childNodes[range.endOffset])) &&
4371
4381
  startNode.childNodes.length === 0) {
4372
4382
  return [startNode];
@@ -4686,6 +4696,39 @@ class NodeSelection {
4686
4696
  selection.removeAllRanges();
4687
4697
  selection.addRange(range);
4688
4698
  }
4699
+ isTableOrImageStart(range) {
4700
+ const customHandlerElements = ['TABLE'];
4701
+ const startContainer = range.startContainer;
4702
+ const startOffset = range.startOffset;
4703
+ const isCursorAtStart = range.collapsed && (startContainer.nodeType === 1) &&
4704
+ startContainer.isContentEditable && startContainer.childNodes[startOffset] &&
4705
+ (customHandlerElements.indexOf(startContainer.childNodes[startOffset].nodeName) > -1);
4706
+ if (isCursorAtStart) {
4707
+ return { start: isCursorAtStart, startNodeName: startContainer.childNodes[startOffset].nodeName };
4708
+ }
4709
+ else {
4710
+ return { start: false, startNodeName: '' };
4711
+ }
4712
+ }
4713
+ isTableOrImageEnd(range) {
4714
+ const customHandlerElements = ['TABLE'];
4715
+ const startContainer = range.startContainer;
4716
+ const startOffset = range.startOffset;
4717
+ const isCursorAtEnd = range.collapsed && (startContainer.nodeType === 1) &&
4718
+ startContainer.isContentEditable && startContainer.childNodes[startOffset - 1] &&
4719
+ (customHandlerElements.indexOf(startContainer.childNodes[startOffset - 1].nodeName) > -1);
4720
+ if (isCursorAtEnd) {
4721
+ return { end: isCursorAtEnd, endNodeName: startContainer.childNodes[startOffset - 1].nodeName };
4722
+ }
4723
+ else {
4724
+ return { end: false, endNodeName: '' };
4725
+ }
4726
+ }
4727
+ processedTableImageCursor(range) {
4728
+ const { start, startNodeName } = this.isTableOrImageStart(range);
4729
+ const { end, endNodeName } = this.isTableOrImageEnd(range);
4730
+ return { start, startName: startNodeName, end, endName: endNodeName };
4731
+ }
4689
4732
  }
4690
4733
 
4691
4734
  /**
@@ -5038,7 +5081,7 @@ class ToolbarStatus {
5038
5081
  static get(docElement, rootNode, formatNode, fontSize, fontName, documentNode) {
5039
5082
  let formatCollection = JSON.parse(JSON.stringify(statusCollection));
5040
5083
  const nodeCollection = JSON.parse(JSON.stringify(statusCollection));
5041
- const nodeSelection = new NodeSelection();
5084
+ const nodeSelection = new NodeSelection(rootNode);
5042
5085
  const range = nodeSelection.getRange(docElement);
5043
5086
  const nodes = documentNode ? [documentNode] : range.collapsed ? nodeSelection.getNodeCollection(range) :
5044
5087
  nodeSelection.getSelectionNodeCollectionBr(range);
@@ -6572,6 +6615,9 @@ class Link {
6572
6615
  if (document.body.contains(proxy.dialogObj.element)) {
6573
6616
  this.selfLink.dialogObj.hide({ returnValue: false });
6574
6617
  }
6618
+ if (this.selfLink.dialogObj !== null) {
6619
+ return;
6620
+ }
6575
6621
  if (isIDevice$1() && proxy.parent.iframeSettings.enable) {
6576
6622
  select('iframe', proxy.parent.element).contentWindow.focus();
6577
6623
  }
@@ -6636,11 +6682,15 @@ class Link {
6636
6682
  openLink(e) {
6637
6683
  const selectParentEle = this.getAnchorNode(e.selectParent[0]);
6638
6684
  if (selectParentEle.classList.contains('e-rte-anchor') || selectParentEle.tagName === 'A') {
6685
+ const sanitizedHTML = this.parent.htmlEditorModule.sanitizeHelper(selectParentEle.outerHTML);
6686
+ const tempEle = document.createElement('div');
6687
+ tempEle.innerHTML = sanitizedHTML;
6639
6688
  this.parent.formatter.process(this.parent, e.args, e.args, {
6640
- url: selectParentEle.href, text: selectParentEle.innerText,
6689
+ url: tempEle.firstChild.href, text: selectParentEle.innerText,
6641
6690
  target: selectParentEle.target === '' ? '_self' : '_blank', selectNode: e.selectNode,
6642
6691
  subCommand: e.args.item.subCommand
6643
6692
  });
6693
+ tempEle.remove();
6644
6694
  }
6645
6695
  }
6646
6696
  getAnchorNode(element) {
@@ -6864,6 +6914,18 @@ const imageResizeFactor = {
6864
6914
  botRight: [1, 1],
6865
6915
  botLeft: [-1, 1]
6866
6916
  };
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
+ };
6867
6929
  /**
6868
6930
  * Mention restrict key configuration.
6869
6931
  *
@@ -7076,8 +7138,14 @@ class Image$1 {
7076
7138
  if (this.parent.formatter.getUndoRedoStack().length === 0) {
7077
7139
  this.parent.formatter.saveData();
7078
7140
  }
7079
- this.pageX = this.getPointX(e);
7080
- this.pageY = this.getPointY(e);
7141
+ if (this.parent.iframeSettings.enable) {
7142
+ this.pageX = e.screenX;
7143
+ this.pageY = e.screenY;
7144
+ }
7145
+ else {
7146
+ this.pageX = this.getPointX(e);
7147
+ this.pageY = this.getPointY(e);
7148
+ }
7081
7149
  e.preventDefault();
7082
7150
  e.stopImmediatePropagation();
7083
7151
  this.resizeBtnInit();
@@ -7306,7 +7374,7 @@ class Image$1 {
7306
7374
  width = Math.round(height * aspectRatio);
7307
7375
  height = Math.round(width / aspectRatio);
7308
7376
  }
7309
- return { width, height };
7377
+ return { width: width, height: height };
7310
7378
  }
7311
7379
  pixToPerc(expected, parentEle) {
7312
7380
  return expected / parseFloat(getComputedStyle(parentEle).width) * 100;
@@ -7341,29 +7409,50 @@ class Image$1 {
7341
7409
  return;
7342
7410
  }
7343
7411
  if (this.resizeBtnStat.botRight || this.resizeBtnStat.botLeft || this.resizeBtnStat.topRight || this.resizeBtnStat.topLeft) {
7344
- const pageX = this.getPointX(e);
7345
- const pageY = this.getPointY(e);
7346
- const resizeFactor = this.getResizeFactor(this.currentResizeHandler);
7347
- const diffX = (pageX - this.pageX);
7348
- const diffY = (pageY - this.pageY);
7349
- const currentWidth = this.imgEle.clientWidth;
7350
- const currentHeight = this.imgEle.clientHeight;
7351
- const width = diffX * resizeFactor[0] + currentWidth;
7352
- const height = diffY * resizeFactor[1] + currentHeight;
7353
- const dimensions = this.adjustDimensions(width, height, diffX, diffY, this.aspectRatio);
7354
- this.pageX = pageX;
7355
- this.pageY = pageY;
7356
- this.imgDupMouseMove(dimensions.width + 'px', dimensions.height + 'px', e);
7412
+ if (this.parent.iframeSettings.enable) {
7413
+ const resizeFactor = this.getResizeFactor(this.currentResizeHandler);
7414
+ const currentScreenX = e.screenX;
7415
+ const currentScreenY = e.screenY;
7416
+ const currentWidth = this.imgEle.clientWidth;
7417
+ const currentHeight = this.imgEle.clientHeight;
7418
+ const deltaX = currentScreenX - this.pageX;
7419
+ const deltaY = currentScreenY - this.pageY;
7420
+ const width = deltaX * resizeFactor[0] + currentWidth;
7421
+ const height = deltaY * resizeFactor[1] + currentHeight;
7422
+ const dimensions = this.adjustDimensions(width, height, deltaX, deltaY, this.aspectRatio);
7423
+ this.pageX = currentScreenX;
7424
+ this.pageY = currentScreenY;
7425
+ this.imgDupMouseMove(dimensions.width + 'px', dimensions.height + 'px', e);
7426
+ this.parent.autoResize();
7427
+ }
7428
+ else {
7429
+ const pageX = this.getPointX(e);
7430
+ const pageY = this.getPointY(e);
7431
+ const resizeFactor = this.getResizeFactor(this.currentResizeHandler);
7432
+ const diffX = (pageX - this.pageX);
7433
+ const diffY = (pageY - this.pageY);
7434
+ const currentWidth = this.imgEle.clientWidth;
7435
+ const currentHeight = this.imgEle.clientHeight;
7436
+ const width = diffX * resizeFactor[0] + currentWidth;
7437
+ const height = diffY * resizeFactor[1] + currentHeight;
7438
+ const dimensions = this.adjustDimensions(width, height, diffX, diffY, this.aspectRatio);
7439
+ this.pageX = pageX;
7440
+ this.pageY = pageY;
7441
+ this.imgDupMouseMove(dimensions.width + 'px', dimensions.height + 'px', e);
7442
+ }
7357
7443
  }
7358
7444
  }
7359
7445
  adjustDimensions(width, height, diffX, diffY, aspectRatio) {
7360
7446
  width = (width < 16) ? 16 : width;
7361
7447
  height = (height < 16) ? 16 : height;
7362
- const isWidthPrimary = Math.abs(diffX) > Math.abs(diffY);
7448
+ const isWidthPrimary = width > height;
7363
7449
  const dimensions = this.adjustDimensionsByAspectRatio(width, height, aspectRatio, isWidthPrimary);
7364
7450
  return dimensions;
7365
7451
  }
7366
7452
  getResizeFactor(value) {
7453
+ if (this.parent.iframeSettings.enable) {
7454
+ return iframeResizeFactor[value];
7455
+ }
7367
7456
  return imageResizeFactor[value];
7368
7457
  }
7369
7458
  findAspectRatio(image) {
@@ -7435,11 +7524,15 @@ class Image$1 {
7435
7524
  }
7436
7525
  }
7437
7526
  openImgLink(e) {
7527
+ const sanitizedHTML = this.parent.htmlEditorModule.sanitizeHelper(e.selectParent[0].parentNode.outerHTML);
7528
+ const tempEle = document.createElement('div');
7529
+ tempEle.innerHTML = sanitizedHTML;
7438
7530
  const target = e.selectParent[0].parentNode.target === '' ? '_self' : '_blank';
7439
7531
  this.parent.formatter.process(this.parent, e.args, e.args, {
7440
- url: e.selectParent[0].parentNode.href, target: target, selectNode: e.selectNode,
7532
+ url: tempEle.firstChild.href, target: target, selectNode: e.selectNode,
7441
7533
  subCommand: e.args.item.subCommand
7442
7534
  });
7535
+ tempEle.remove();
7443
7536
  }
7444
7537
  editImgLink(e) {
7445
7538
  const selectParentEle = e.selectParent[0].parentNode;
@@ -7526,7 +7619,7 @@ class Image$1 {
7526
7619
  }
7527
7620
  }
7528
7621
  if (originalEvent.keyCode === 8 || originalEvent.keyCode === 46) {
7529
- if (selectNodeEle && selectNodeEle[0].nodeName === 'IMG' && selectNodeEle.length < 1) {
7622
+ if (selectNodeEle && selectNodeEle[0] && selectNodeEle[0].nodeName === 'IMG' && selectNodeEle.length < 1) {
7530
7623
  if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection)) {
7531
7624
  save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());
7532
7625
  }
@@ -7774,7 +7867,9 @@ class Image$1 {
7774
7867
  this.parent.formatter.editorManager.nodeSelection.Clear(this.contentModule.getDocument());
7775
7868
  this.parent.formatter.editorManager.nodeSelection.setSelectionContents(this.contentModule.getDocument(), target);
7776
7869
  this.quickToolObj.imageQTBar.showPopup(args.pageX, pageY, target);
7777
- this.resizeStart(e.args, target);
7870
+ if (this.parent.insertImageSettings.resize === true) {
7871
+ this.resizeStart(e.args, target);
7872
+ }
7778
7873
  }, 400);
7779
7874
  }
7780
7875
  else {
@@ -8446,6 +8541,9 @@ class Image$1 {
8446
8541
  proxy.uploadUrl.cssClass = (proxy.parent.insertImageSettings.display === 'inline' ?
8447
8542
  CLS_IMGINLINE : CLS_IMGBREAK);
8448
8543
  proxy.dialogObj.hide({ returnValue: false });
8544
+ if (proxy.dialogObj !== null) {
8545
+ return;
8546
+ }
8449
8547
  proxy.parent.formatter.process(proxy.parent, this.args, this.args.originalEvent, proxy.uploadUrl);
8450
8548
  proxy.uploadUrl.url = '';
8451
8549
  if (proxy.contentModule.getEditPanel().querySelector('.e-img-resize')) {
@@ -8476,8 +8574,11 @@ class Image$1 {
8476
8574
  maxHeight: proxy.parent.insertImageSettings.maxHeight
8477
8575
  }
8478
8576
  };
8479
- proxy.parent.formatter.process(proxy.parent, this.args, this.args.originalEvent, value);
8480
8577
  proxy.dialogObj.hide({ returnValue: false });
8578
+ if (proxy.dialogObj !== null) {
8579
+ return;
8580
+ }
8581
+ proxy.parent.formatter.process(proxy.parent, this.args, this.args.originalEvent, value);
8481
8582
  }
8482
8583
  }
8483
8584
  imgsizeInput(e) {
@@ -9234,7 +9335,9 @@ class Image$1 {
9234
9335
  if (imageElement) {
9235
9336
  this.showImageQTbarTime = setTimeout(() => {
9236
9337
  this.showImageQuickToolbar(args);
9237
- this.resizeStart(e.args, imageElement);
9338
+ if (this.parent.insertImageSettings.resize) {
9339
+ this.resizeStart(e.args, imageElement);
9340
+ }
9238
9341
  }, 0);
9239
9342
  }
9240
9343
  }
@@ -10122,6 +10225,9 @@ class Audio {
10122
10225
  proxy.uploadUrl.cssClass = (proxy.parent.insertAudioSettings.layoutOption === 'Inline' ?
10123
10226
  CLS_AUDIOINLINE : CLS_AUDIOBREAK);
10124
10227
  proxy.dialogObj.hide({ returnValue: false });
10228
+ if (proxy.dialogObj !== null) {
10229
+ return;
10230
+ }
10125
10231
  proxy.parent.formatter.process(proxy.parent, this.args, this.args.originalEvent, proxy.uploadUrl);
10126
10232
  proxy.uploadUrl.url = '';
10127
10233
  }
@@ -10140,8 +10246,11 @@ class Audio {
10140
10246
  url: url, selection: this.selection, fileName: name,
10141
10247
  selectParent: this.selectParent
10142
10248
  };
10143
- proxy.parent.formatter.process(proxy.parent, this.args, this.args.originalEvent, value);
10144
10249
  proxy.dialogObj.hide({ returnValue: false });
10250
+ if (proxy.dialogObj !== null) {
10251
+ return;
10252
+ }
10253
+ proxy.parent.formatter.process(proxy.parent, this.args, this.args.originalEvent, value);
10145
10254
  }
10146
10255
  }
10147
10256
  /* eslint-disable */
@@ -10837,7 +10946,7 @@ class Video {
10837
10946
  this.undoStack({ subCommand: (originalEvent.keyCode === 90 ? 'undo' : 'redo') });
10838
10947
  }
10839
10948
  if (originalEvent.keyCode === 8 || originalEvent.keyCode === 46) {
10840
- if (selectNodeEle && (selectNodeEle[0].nodeName === 'VIDEO' || this.isEmbedVidElem(selectNodeEle[0])) && selectNodeEle.length < 1) {
10949
+ if (selectNodeEle && selectNodeEle[0] && (selectNodeEle[0].nodeName === 'VIDEO' || this.isEmbedVidElem(selectNodeEle[0])) && selectNodeEle.length < 1) {
10841
10950
  if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection)) {
10842
10951
  save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());
10843
10952
  }
@@ -11606,6 +11715,9 @@ class Video {
11606
11715
  maxHeight: proxy.parent.insertVideoSettings.maxHeight
11607
11716
  };
11608
11717
  proxy.dialogObj.hide({ returnValue: false });
11718
+ if (proxy.dialogObj !== null) {
11719
+ return;
11720
+ }
11609
11721
  proxy.parent.formatter.process(proxy.parent, this.args, this.args.originalEvent, proxy.uploadUrl);
11610
11722
  proxy.uploadUrl.url = '';
11611
11723
  }
@@ -11632,8 +11744,11 @@ class Video {
11632
11744
  maxHeight: proxy.parent.insertVideoSettings.maxHeight
11633
11745
  }
11634
11746
  };
11635
- proxy.parent.formatter.process(proxy.parent, this.args, this.args.originalEvent, value);
11636
11747
  proxy.dialogObj.hide({ returnValue: false });
11748
+ if (proxy.dialogObj !== null) {
11749
+ return;
11750
+ }
11751
+ proxy.parent.formatter.process(proxy.parent, this.args, this.args.originalEvent, value);
11637
11752
  }
11638
11753
  }
11639
11754
  /* eslint-disable */
@@ -13645,7 +13760,8 @@ class Table {
13645
13760
  else {
13646
13761
  const tableReBox = this.contentModule.getEditPanel().querySelector('.e-table-box');
13647
13762
  const tableWidth = parseInt(getComputedStyle(this.curTable).width, 10);
13648
- const tableHeight = parseInt(getComputedStyle(this.curTable).height, 10);
13763
+ const tableHeight = !isNaN(parseInt(this.curTable.style.height, 10)) ?
13764
+ parseInt(this.curTable.style.height, 10) : parseInt(getComputedStyle(this.curTable).height, 10);
13649
13765
  const paddingSize = +getComputedStyle(this.contentModule.getEditPanel()).paddingRight.match(/\d/g).join('');
13650
13766
  const rteWidth = this.contentModule.getEditPanel().offsetWidth -
13651
13767
  (this.contentModule.getEditPanel().offsetWidth -
@@ -13790,7 +13906,7 @@ class Table {
13790
13906
  this.curTable.style.height = tableHeight + mouseY + 'px';
13791
13907
  if (!isNullOrUndefined(tableReBox)) {
13792
13908
  tableReBox.classList.add('e-rbox-select');
13793
- tableReBox.style.cssText = 'top: ' + (this.calcPos(this.curTable).top + tableHeight - 4) +
13909
+ tableReBox.style.cssText = 'top: ' + (this.calcPos(this.curTable).top + parseInt(getComputedStyle(this.curTable).height, 10) - 4) +
13794
13910
  'px; left:' + (this.calcPos(this.curTable).left + tableWidth - 4) + 'px;';
13795
13911
  }
13796
13912
  if (this.curTable.closest('li')) {
@@ -15545,7 +15661,7 @@ class SlashMenu {
15545
15661
  this.parent = options;
15546
15662
  this.currentDocument = this.parent.element.ownerDocument;
15547
15663
  this.L10n = serviceLocator.getService('rteLocale');
15548
- this.savedSelection = new NodeSelection();
15664
+ this.savedSelection = new NodeSelection(this.parent.inputElement);
15549
15665
  this.defaultItems = defaultSlashMenuDataModel;
15550
15666
  this.injectibleItems = injectibleSlashMenuDataModel;
15551
15667
  this.parent.on(modelChanged, this.onPropertyChanged, this);
@@ -21627,7 +21743,7 @@ class DOMNode {
21627
21743
  */
21628
21744
  constructor(parent, currentDocument) {
21629
21745
  this.parent = parent;
21630
- this.nodeSelection = new NodeSelection();
21746
+ this.nodeSelection = new NodeSelection(parent);
21631
21747
  this.currentDocument = currentDocument;
21632
21748
  this.tableSelection = new TableSelection(parent, currentDocument);
21633
21749
  }
@@ -22942,7 +23058,7 @@ class Lists {
22942
23058
  if (e.event.which === 8) {
22943
23059
  this.backspaceList(e);
22944
23060
  }
22945
- if ((e.event.which === 46 && e.event.action === 'delete') || (e.event.which === 88 && e.event.action === 'cut')) {
23061
+ if ((e.event.which === 46 && e.event.action === 'delete')) {
22946
23062
  const range = this.parent.nodeSelection.getRange(this.parent.currentDocument);
22947
23063
  const commonAncestor = range.commonAncestorContainer;
22948
23064
  const startEle = range.startContainer;
@@ -24461,7 +24577,7 @@ class InsertHtml {
24461
24577
  node = insertNode;
24462
24578
  }
24463
24579
  }
24464
- const nodeSelection = new NodeSelection();
24580
+ const nodeSelection = new NodeSelection(editNode);
24465
24581
  const nodeCutter = new NodeCutter();
24466
24582
  let range = nodeSelection.getRange(docElement);
24467
24583
  if (range.startContainer === editNode && range.startContainer === range.endContainer && range.startOffset === 0 &&
@@ -24825,6 +24941,24 @@ class InsertHtml {
24825
24941
  this.cursorPos(lastSelectionNode, node, nodeSelection, docElement, editNode, enterAction);
24826
24942
  }
24827
24943
  this.alignCheck(editNode);
24944
+ const currentRange = nodeSelection.getRange(docElement);
24945
+ this.listCleanUp(currentRange);
24946
+ }
24947
+ static listCleanUp(range) {
24948
+ if (range.startContainer.parentElement.closest('ol,ul') !== null && range.endContainer.parentElement.closest('ol,ul') !== null) {
24949
+ const liElems = range.startContainer.parentElement.closest('ol,ul').querySelectorAll('li');
24950
+ if (liElems.length > 0) {
24951
+ liElems.forEach((item) => {
24952
+ if (!isNullOrUndefined(item.firstChild) && (item.firstChild.nodeName === 'OL' || item.firstChild.nodeName === 'UL')) {
24953
+ item.style.listStyleType = 'none';
24954
+ }
24955
+ const nestedLi = Array.from(item.children).find((child) => child.tagName === 'LI' && (child.parentElement && child.parentElement.tagName !== 'OL' && child.parentElement.tagName !== 'UL'));
24956
+ if (nestedLi) {
24957
+ item.parentNode.replaceChild(nestedLi, item);
24958
+ }
24959
+ });
24960
+ }
24961
+ }
24828
24962
  }
24829
24963
  static placeCursorEnd(lastSelectionNode, node, nodeSelection, docElement, editNode) {
24830
24964
  lastSelectionNode = lastSelectionNode.nodeName === 'BR' ? (isNullOrUndefined(lastSelectionNode.previousSibling) ? lastSelectionNode.parentNode
@@ -24889,7 +25023,7 @@ class InsertHtml {
24889
25023
  blockNode = range.endContainer;
24890
25024
  range.setEnd(blockNode, range.endContainer.textContent.length);
24891
25025
  }
24892
- if (blockNode && blockNode.nodeName === 'BODY' && range.startContainer === range.endContainer && range.startContainer.nodeType === 1) {
25026
+ if (blockNode && blockNode.nodeName === 'BODY' || blockNode.nodeName === 'DIV' && range.startContainer === range.endContainer && range.startContainer.nodeType === 1) {
24893
25027
  blockNode = range.startContainer;
24894
25028
  }
24895
25029
  if (blockNode && blockNode.closest('LI') && editNode.contains(blockNode.closest('LI')) && blockNode.nodeName !== 'TD' && blockNode.nodeName !== 'TH' && blockNode.nodeName !== 'TR' && node && node.firstElementChild &&
@@ -24909,12 +25043,12 @@ class InsertHtml {
24909
25043
  tempSpan.parentNode.replaceChild(node, tempSpan);
24910
25044
  }
24911
25045
  else {
24912
- const nodeSelection = new NodeSelection();
25046
+ const nodeSelection = new NodeSelection(editNode);
24913
25047
  const currentNode = this.getNodeCollection(range, nodeSelection, node)[this.getNodeCollection(range, nodeSelection, node).length - 1];
24914
25048
  let splitedElm;
24915
- if ((currentNode.nodeName === 'BR' || currentNode.nodeName === 'HR' ||
25049
+ if (currentNode && ((currentNode.nodeName === 'BR' || currentNode.nodeName === 'HR' ||
24916
25050
  (currentNode.nodeName === '#text' && !isNullOrUndefined(currentNode.parentElement) && currentNode.parentElement.nodeName === 'LI')) &&
24917
- (!isNullOrUndefined(currentNode.parentElement) && currentNode.parentElement.textContent.trim().length === 0)) {
25051
+ (!isNullOrUndefined(currentNode.parentElement) && currentNode.parentElement.textContent.trim().length === 0))) {
24918
25052
  splitedElm = currentNode;
24919
25053
  if (currentNode.parentElement.nodeName === 'LI' && !isNullOrUndefined(currentNode.nextSibling) &&
24920
25054
  currentNode.nextSibling.nodeName === 'BR') {
@@ -24927,16 +25061,20 @@ class InsertHtml {
24927
25061
  return;
24928
25062
  }
24929
25063
  }
24930
- else if ((currentNode.nodeName === '#text' || currentNode.nodeName === 'BR') && !isNullOrUndefined(currentNode.parentElement) &&
25064
+ else if (currentNode && ((currentNode.nodeName === '#text' || currentNode.nodeName === 'BR') && !isNullOrUndefined(currentNode.parentElement) &&
24931
25065
  (currentNode.parentElement.nodeName === 'LI' || currentNode.parentElement.closest('LI') || (blockNode === editNode && currentNode.parentElement === blockNode)) &&
24932
- currentNode.parentElement.textContent.trim().length > 0) {
25066
+ currentNode.parentElement.textContent.trim().length > 0)) {
24933
25067
  splitedElm = currentNode;
24934
25068
  if (currentNode.parentElement.nodeName === 'LI' && !isNullOrUndefined(currentNode.nextSibling) &&
24935
25069
  currentNode.nextSibling.nodeName === 'BR') {
24936
25070
  detach(currentNode.nextSibling);
24937
25071
  }
24938
25072
  if (!range.collapsed) {
25073
+ const startContainer = range.startContainer;
25074
+ const startOffset = range.startOffset;
24939
25075
  this.removeListfromPaste(range);
25076
+ range.setStart(startContainer, startOffset);
25077
+ range.setEnd(startContainer, startOffset);
24940
25078
  }
24941
25079
  range.insertNode(node);
24942
25080
  this.contentsDeleted = true;
@@ -24976,9 +25114,9 @@ class InsertHtml {
24976
25114
  }
24977
25115
  // eslint-disable-next-line
24978
25116
  static getImmediateBlockNode(node, editNode) {
24979
- do {
25117
+ while (node && BLOCK_TAGS.indexOf(node.nodeName.toLocaleLowerCase()) < 0) {
24980
25118
  node = node.parentNode;
24981
- } while (node && BLOCK_TAGS.indexOf(node.nodeName.toLocaleLowerCase()) < 0);
25119
+ }
24982
25120
  return node;
24983
25121
  }
24984
25122
  static removingComments(elm) {
@@ -25092,7 +25230,7 @@ class InsertHtml {
25092
25230
  const value = range.startContainer;
25093
25231
  if (!isNullOrUndefined(value) && value.nodeName === 'LI' && !isNullOrUndefined(value.parentElement) && (value.parentElement.nodeName === 'OL' || value.parentElement.nodeName === 'UL') && value.textContent.trim() === '') {
25094
25232
  value.parentElement.querySelectorAll('li').forEach((item) => {
25095
- if (item.textContent.trim() === '') {
25233
+ if (item.textContent.trim() === '' && item !== value) {
25096
25234
  item.remove();
25097
25235
  }
25098
25236
  });
@@ -25194,7 +25332,7 @@ class LinkCommand {
25194
25332
  }
25195
25333
  }
25196
25334
  else {
25197
- const domSelection = new NodeSelection();
25335
+ const domSelection = new NodeSelection(this.parent.editableElement);
25198
25336
  let range = domSelection.getRange(this.parent.currentDocument);
25199
25337
  if (range.endContainer.nodeName === '#text' && range.startContainer.textContent.length === (range.endOffset + 1) &&
25200
25338
  range.endContainer.textContent.charAt(range.endOffset) === ' ' && (!isNullOrUndefined(range.endContainer.nextSibling) && range.endContainer.nextSibling.nodeName === 'A')) {
@@ -25240,7 +25378,7 @@ class LinkCommand {
25240
25378
  }
25241
25379
  }
25242
25380
  createLinkNode(e) {
25243
- const domSelection = new NodeSelection();
25381
+ const domSelection = new NodeSelection(this.parent.editableElement);
25244
25382
  const nodeCutter = new NodeCutter();
25245
25383
  const range = domSelection.getRange(this.parent.currentDocument);
25246
25384
  const nodes = this.getSelectionNodes(domSelection.getNodeCollection(range));
@@ -25811,6 +25949,8 @@ class ImageCommand {
25811
25949
  (Browser.isIE ? selectedNode.previousSibling : selectedNode.previousElementSibling);
25812
25950
  const onImageLoadEvent = () => {
25813
25951
  if (!isNullOrUndefined(this.parent.currentDocument)) {
25952
+ imgElm.setAttribute('width', imgElm.offsetWidth.toString());
25953
+ imgElm.setAttribute('height', imgElm.offsetHeight.toString());
25814
25954
  e.callBack({
25815
25955
  requestType: (e.value === 'Replace') ? (e.item.subCommand = 'Replace', 'Replace') : 'Images',
25816
25956
  editorMode: 'HTML',
@@ -27634,7 +27774,7 @@ class SelectionCommands {
27634
27774
  if (format === 'backgroundcolor' && value === '') {
27635
27775
  value = 'transparent';
27636
27776
  }
27637
- let domSelection = new NodeSelection();
27777
+ let domSelection = new NodeSelection(endNode);
27638
27778
  const domNode = new DOMNode(endNode, docElement);
27639
27779
  const nodeCutter = new NodeCutter();
27640
27780
  const isFormatted = new IsFormatted();
@@ -27843,7 +27983,7 @@ class SelectionCommands {
27843
27983
  if (cursorNodes.length === 1 && range.startOffset === 0 && (cursorNodes[0].nodeName === 'BR' || (isNullOrUndefined(cursorNodes[0].nextSibling) ? false : cursorNodes[0].nextSibling.nodeName === 'BR'))) {
27844
27984
  detach(cursorNodes[0].nodeName === '#text' ? cursorNodes[0].nextSibling : cursorNodes[0]);
27845
27985
  }
27846
- if (!isNullOrUndefined(cursorNodes[0].parentElement) && IsFormatted.inlineTags.
27986
+ if (!isNullOrUndefined(cursorNodes[0] && cursorNodes[0].parentElement) && IsFormatted.inlineTags.
27847
27987
  indexOf((cursorNodes[0].parentElement).tagName.toLowerCase()) !== -1 && cursorNodes[0].textContent.includes('\u200B')) {
27848
27988
  const element = this.GetFormatNode(format, value);
27849
27989
  const tempNode = cursorNodes[0];
@@ -28751,7 +28891,7 @@ class ClearFormat$1 {
28751
28891
  static clear(docElement, endNode, enterAction, selector, command) {
28752
28892
  this.domNode = new DOMNode(endNode, docElement);
28753
28893
  this.defaultTag = enterAction === 'P' ? this.defaultTag : 'div';
28754
- const nodeSelection = new NodeSelection();
28894
+ const nodeSelection = new NodeSelection(endNode);
28755
28895
  const nodeCutter = new NodeCutter();
28756
28896
  let range = nodeSelection.getRange(docElement);
28757
28897
  const nodes = range.collapsed ? nodeSelection.getSelectionNodeCollection(range) :
@@ -29180,7 +29320,7 @@ class UndoRedoManager {
29180
29320
  if (!this.parent.currentDocument) {
29181
29321
  return;
29182
29322
  }
29183
- let range = new NodeSelection().getRange(this.parent.currentDocument);
29323
+ let range = new NodeSelection(this.parent.editableElement).getRange(this.parent.currentDocument);
29184
29324
  const currentContainer = this.parent.editableElement === range.startContainer.parentElement ?
29185
29325
  range.startContainer.parentElement : range.startContainer;
29186
29326
  for (let i = currentContainer.childNodes.length - 1; i >= 0; i--) {
@@ -29190,8 +29330,8 @@ class UndoRedoManager {
29190
29330
  detach(currentContainer.childNodes[i]);
29191
29331
  }
29192
29332
  }
29193
- range = new NodeSelection().getRange(this.parent.currentDocument);
29194
- const save = new NodeSelection().save(range, this.parent.currentDocument);
29333
+ range = new NodeSelection(this.parent.editableElement).getRange(this.parent.currentDocument);
29334
+ const save = new NodeSelection(this.parent.editableElement).save(range, this.parent.currentDocument);
29195
29335
  const clonedElement = this.parent.editableElement.cloneNode(true);
29196
29336
  const fragment = document.createDocumentFragment();
29197
29337
  while (clonedElement.firstChild) {
@@ -29403,6 +29543,9 @@ class MsWordPaste {
29403
29543
  e.callBack(elm.innerHTML, this.cropImageDimensions, source);
29404
29544
  }
29405
29545
  else {
29546
+ if (source === PASTE_SOURCE[2]) {
29547
+ this.handleOneNoteContent(elm);
29548
+ }
29406
29549
  e.callBack(elm.innerHTML, null, source);
29407
29550
  }
29408
29551
  }
@@ -30397,6 +30540,18 @@ class MsWordPaste {
30397
30540
  }
30398
30541
  return 'html';
30399
30542
  }
30543
+ handleOneNoteContent(element) {
30544
+ const allListElements = element.querySelectorAll('ul, ol');
30545
+ if (allListElements.length > 0) {
30546
+ for (let i = 0; i < allListElements.length; i++) {
30547
+ // Removing the ul and ol parent node for the p tag
30548
+ const currentList = allListElements[i];
30549
+ if (currentList.querySelectorAll('li').length === 0 && currentList.childNodes.length > 0) {
30550
+ InsertMethods.unwrap(currentList);
30551
+ }
30552
+ }
30553
+ }
30554
+ }
30400
30555
  destroy() {
30401
30556
  this.removeEventListener();
30402
30557
  }
@@ -31168,7 +31323,7 @@ class EditorManager {
31168
31323
  constructor(options) {
31169
31324
  this.currentDocument = options.document;
31170
31325
  this.editableElement = options.editableElement;
31171
- this.nodeSelection = new NodeSelection();
31326
+ this.nodeSelection = new NodeSelection(this.editableElement);
31172
31327
  this.nodeCutter = new NodeCutter();
31173
31328
  this.domNode = new DOMNode(this.editableElement, this.currentDocument);
31174
31329
  this.observer = new Observer(this);
@@ -31836,7 +31991,7 @@ class HtmlEditor {
31836
31991
  if (this.parent.isDestroyed) {
31837
31992
  return;
31838
31993
  }
31839
- this.nodeSelectionObj = new NodeSelection();
31994
+ this.nodeSelectionObj = new NodeSelection(this.parent.inputElement);
31840
31995
  this.parent.on(initialLoad, this.instantiateRenderer, this);
31841
31996
  this.parent.on(htmlToolbarClick, this.onToolbarClick, this);
31842
31997
  this.parent.on(keyDown, this.onKeyDown, this);
@@ -32543,7 +32698,7 @@ class HtmlEditor {
32543
32698
  urlText = urlText.slice(0, urlTextRange);
32544
32699
  // eslint-disable-next-line
32545
32700
  const regex = new RegExp(/([^\S]|^)(((https?\:\/\/)|(www\.))(\S+))/gi);
32546
- if (selectNodeEle[0].nodeName !== 'A' && urlText.match(regex)) {
32701
+ if (selectNodeEle[0] && selectNodeEle[0].nodeName !== 'A' && urlText.match(regex)) {
32547
32702
  const selection = this.nodeSelectionObj.save(range, this.parent.contentModule.getDocument());
32548
32703
  const url = urlText.indexOf('http') > -1 ? urlText : 'http://' + urlText;
32549
32704
  const selectParent = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);
@@ -32902,7 +33057,7 @@ class PasteCleanup {
32902
33057
  this.isDestroyed = false;
32903
33058
  }
32904
33059
  addEventListener() {
32905
- this.nodeSelectionObj = new NodeSelection();
33060
+ this.nodeSelectionObj = new NodeSelection(this.parent.inputElement);
32906
33061
  if (this.parent.isDestroyed) {
32907
33062
  return;
32908
33063
  }
@@ -33067,38 +33222,62 @@ class PasteCleanup {
33067
33222
  }
33068
33223
  }
33069
33224
  splitBreakLine(value) {
33070
- const enterSplitText = value.split('\n');
33071
- let contentInnerElem = '';
33225
+ const enterSplitText = value.split('\r\n\r\n');
33226
+ let finalText = '';
33072
33227
  const startNode = this.parent.enterKey === 'P' ? '<p>' : (this.parent.enterKey === 'DIV' ? '<div>' : '');
33073
33228
  const endNode = this.parent.enterKey === 'P' ? '</p>' : (this.parent.enterKey === 'DIV' ? '</div>' : '<br>');
33074
33229
  for (let i = 0; i < enterSplitText.length; i++) {
33075
- if (enterSplitText[i].trim() === '') {
33076
- contentInnerElem += getDefaultValue(this.parent);
33230
+ const content = enterSplitText[i];
33231
+ const contentWithSpace = this.makeSpace(content);
33232
+ const contentWithLineBreak = contentWithSpace.replace(/\r\n|\n/g, '<br>');
33233
+ if (i === 0) {
33234
+ if (this.parent.enterKey === 'BR') {
33235
+ finalText += (contentWithLineBreak + endNode);
33236
+ }
33237
+ else {
33238
+ finalText += contentWithLineBreak; // In order to merge the content in current line. No P/Div tag is added.
33239
+ }
33077
33240
  }
33078
33241
  else {
33079
- const contentWithSpace = this.makeSpace(enterSplitText[i]);
33080
- contentInnerElem += (i === 0 && this.parent.enterKey !== 'BR' ? '<span>' : startNode) +
33081
- (contentWithSpace.trim() === '' ? '<br>' : contentWithSpace.trim()) +
33082
- (enterSplitText.length - 1 === i && this.parent.enterKey === 'BR' ? '' : (i === 0 && this.parent.enterKey !== 'BR' ? '</span>' : endNode));
33242
+ if (this.parent.enterKey === 'BR') {
33243
+ if (i === enterSplitText.length - 1) {
33244
+ finalText += (contentWithLineBreak + endNode);
33245
+ }
33246
+ else {
33247
+ finalText += (contentWithLineBreak + endNode + endNode);
33248
+ }
33249
+ }
33250
+ else {
33251
+ finalText += startNode + contentWithLineBreak + endNode;
33252
+ }
33083
33253
  }
33084
33254
  }
33085
- return contentInnerElem;
33255
+ return finalText;
33086
33256
  }
33087
- makeSpace(enterSplitText) {
33088
- let contentWithSpace = '';
33089
- let spaceBetweenContent = true;
33090
- enterSplitText = enterSplitText.replace(/\t/g, '&nbsp;&nbsp;&nbsp;&nbsp;');
33091
- const spaceSplit = enterSplitText.split(' ');
33092
- for (let j = 0; j < spaceSplit.length; j++) {
33093
- if (spaceSplit[j].trim() === '') {
33094
- contentWithSpace += spaceBetweenContent ? '&nbsp;' : ' ';
33257
+ makeSpace(text) {
33258
+ let spacedContent = '';
33259
+ if (text === '') {
33260
+ return text;
33261
+ }
33262
+ const lineBreakSplitText = text.split(' ');
33263
+ for (let i = 0; i < lineBreakSplitText.length; i++) {
33264
+ const currentText = lineBreakSplitText[i];
33265
+ if (currentText === '') {
33266
+ spacedContent += '&nbsp;';
33267
+ }
33268
+ else if (currentText === '\t') {
33269
+ spacedContent += '&nbsp;&nbsp;&nbsp;&nbsp;';
33095
33270
  }
33096
33271
  else {
33097
- spaceBetweenContent = false;
33098
- contentWithSpace += spaceSplit[j] + ' ';
33272
+ if (i > 0 && i < lineBreakSplitText.length) {
33273
+ spacedContent += ' ';
33274
+ }
33275
+ spacedContent += currentText;
33099
33276
  }
33100
33277
  }
33101
- return contentWithSpace;
33278
+ spacedContent = spacedContent.replace(/\t/g, '&nbsp;&nbsp;&nbsp;&nbsp;');
33279
+ spacedContent = spacedContent.replace(/&nbsp;&nbsp;/g, '&nbsp; ');
33280
+ return spacedContent;
33102
33281
  }
33103
33282
  imgUploading(elm) {
33104
33283
  const allImgElm = elm.querySelectorAll('.pasteContent_Img');
@@ -34056,6 +34235,8 @@ class Resize {
34056
34235
  this.parent = parent;
34057
34236
  this.addEventListener();
34058
34237
  this.isDestroyed = false;
34238
+ this.isResizing = false;
34239
+ this.iframeMouseUpBoundFn = this.iframeMouseUp.bind(this);
34059
34240
  }
34060
34241
  addEventListener() {
34061
34242
  if (this.parent.isDestroyed) {
@@ -34075,12 +34256,14 @@ class Resize {
34075
34256
  this.parent.rootContainer.classList.add('e-resize-enabled');
34076
34257
  if (this.parent.iframeSettings.enable) {
34077
34258
  this.parent.inputElement.classList.add('e-resize-enabled');
34259
+ this.parent.contentModule.getDocument().addEventListener('mouseup', this.iframeMouseUpBoundFn);
34078
34260
  }
34079
34261
  this.touchStartEvent = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';
34080
34262
  EventHandler.add(this.resizer, 'mousedown', this.resizeStart, this);
34081
34263
  EventHandler.add(this.resizer, this.touchStartEvent, this.resizeStart, this);
34082
34264
  }
34083
34265
  resizeStart(e) {
34266
+ this.isResizing = false;
34084
34267
  if (e.cancelable) {
34085
34268
  e.preventDefault();
34086
34269
  }
@@ -34094,6 +34277,7 @@ class Resize {
34094
34277
  });
34095
34278
  }
34096
34279
  performResize(e) {
34280
+ this.isResizing = true;
34097
34281
  const args = { event: e, requestType: 'editor' };
34098
34282
  this.parent.trigger(onResize, args, (resizingArgs) => {
34099
34283
  if (resizingArgs.cancel) {
@@ -34120,9 +34304,14 @@ class Resize {
34120
34304
  this.parent.element.style.height = eventType.clientY - boundRect.top + 'px';
34121
34305
  this.parent.element.style.width = (!this.parent.enableRtl) ? eventType.clientX - boundRect.left + 'px' : boundRect.right - eventType.clientX + 'px';
34122
34306
  }
34307
+ const rteContent = this.parent.element.querySelector('#' + this.parent.getID() + '_source-view');
34308
+ if (!isNullOrUndefined(rteContent)) {
34309
+ rteContent.style.height = this.parent.element.style.height;
34310
+ }
34123
34311
  this.parent.refreshUI();
34124
34312
  }
34125
34313
  stopResize(e) {
34314
+ this.isResizing = false;
34126
34315
  this.parent.refreshUI();
34127
34316
  this.unwireResizeEvents();
34128
34317
  const args = { event: e, requestType: 'editor' };
@@ -34172,6 +34361,7 @@ class Resize {
34172
34361
  }
34173
34362
  if (this.parent.iframeSettings.enable && !isNullOrUndefined(this.parent.inputElement)) {
34174
34363
  this.parent.inputElement.classList.remove('e-resize-enabled');
34364
+ this.parent.contentModule.getDocument().removeEventListener('mouseup', this.iframeMouseUpBoundFn);
34175
34365
  }
34176
34366
  if (this.resizer) {
34177
34367
  EventHandler.remove(this.resizer, 'mousedown', this.resizeStart);
@@ -34179,6 +34369,12 @@ class Resize {
34179
34369
  detach(this.resizer);
34180
34370
  }
34181
34371
  this.parent.off(destroy, this.destroy);
34372
+ this.iframeMouseUpBoundFn = null;
34373
+ }
34374
+ iframeMouseUp(e) {
34375
+ if (this.isResizing) {
34376
+ this.stopResize(e);
34377
+ }
34182
34378
  }
34183
34379
  /**
34184
34380
  * For internal use only - Get the module name.
@@ -35682,7 +35878,7 @@ class ImportExport {
35682
35878
  saveUrl: this.parent.importWord.serviceUrl
35683
35879
  },
35684
35880
  success: (args) => {
35685
- this.parent.executeCommand('insertHTML', args.e.currentTarget.response, { undo: true });
35881
+ this.parent.executeCommand('importWord', args.e.currentTarget.response, { undo: true });
35686
35882
  }
35687
35883
  });
35688
35884
  this.parent.setProperties({ enableXhtml: true }, true);
@@ -36972,11 +37168,16 @@ class EnterKeyAction {
36972
37168
  else if (!isNullOrUndefined(currentParent) && currentParent !== this.parent.inputElement && currentParent.nodeName !== 'BR') {
36973
37169
  if (currentParent.textContent.trim().length === 0 || (currentParent.textContent.trim().length === 1 &&
36974
37170
  currentParent.textContent.charCodeAt(0) === 8203)) {
36975
- const newElem = this.parent.formatter.editorManager.nodeCutter.SplitNode(this.range, currentParent, true).cloneNode(true);
36976
- this.parent.formatter.editorManager.domNode.insertAfter(newElem, currentParent);
36977
- const outerBRElem = this.parent.createElement('br');
36978
- newElem.parentElement.insertBefore(outerBRElem, newElem);
36979
- this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), newElem, 0);
37171
+ if (currentParent.childElementCount > 1 && currentParent.lastElementChild.nodeName === 'IMG') {
37172
+ this.insertBRElement();
37173
+ }
37174
+ else {
37175
+ const newElem = this.parent.formatter.editorManager.nodeCutter.SplitNode(this.range, currentParent, true).cloneNode(true);
37176
+ this.parent.formatter.editorManager.domNode.insertAfter(newElem, currentParent);
37177
+ const outerBRElem = this.parent.createElement('br');
37178
+ newElem.parentElement.insertBefore(outerBRElem, newElem);
37179
+ this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), newElem, 0);
37180
+ }
36980
37181
  }
36981
37182
  else {
36982
37183
  let newElem;
@@ -37519,6 +37720,17 @@ let RichTextEditor = class RichTextEditor extends Component {
37519
37720
  * @public
37520
37721
  */
37521
37722
  executeCommand(commandName, value, option) {
37723
+ if (commandName === 'importWord') {
37724
+ const importContainer = this.createElement('div');
37725
+ importContainer.innerHTML = value;
37726
+ const tableElement = importContainer.querySelectorAll('table:not(.e-rte-table):not(.e-rte-paste-table)');
37727
+ for (let i = 0; i < tableElement.length; i++) {
37728
+ tableElement[i].classList.add('e-rte-paste-table');
37729
+ }
37730
+ value = importContainer.innerHTML;
37731
+ importContainer.remove();
37732
+ commandName = 'insertHTML';
37733
+ }
37522
37734
  value = this.htmlPurifier(commandName, value);
37523
37735
  let internalValue;
37524
37736
  if (this.editorMode === 'HTML') {
@@ -38981,7 +39193,10 @@ let RichTextEditor = class RichTextEditor extends Component {
38981
39193
  const item = compiledTemplate[i];
38982
39194
  append([item], appendElem);
38983
39195
  }
38984
- this.setProperties({ value: appendElem.innerHTML.trim() });
39196
+ const content = appendElem.innerHTML.trim();
39197
+ if (content.length > 0) {
39198
+ this.setProperties({ value: content });
39199
+ }
38985
39200
  this.renderReactTemplates();
38986
39201
  }
38987
39202
  }
@@ -40123,5 +40338,5 @@ RichTextEditor = __decorate$5([
40123
40338
  NotifyPropertyChanges
40124
40339
  ], RichTextEditor);
40125
40340
 
40126
- 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, 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 };
40341
+ 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 };
40127
40342
  //# sourceMappingURL=ej2-richtexteditor.es2015.js.map