@syncfusion/ej2-richtexteditor 24.2.4 → 24.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/ej2-richtexteditor.min.js +2 -2
  3. package/dist/ej2-richtexteditor.umd.min.js +2 -2
  4. package/dist/ej2-richtexteditor.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-richtexteditor.es2015.js +669 -272
  6. package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
  7. package/dist/es6/ej2-richtexteditor.es5.js +662 -269
  8. package/dist/es6/ej2-richtexteditor.es5.js.map +1 -1
  9. package/dist/global/ej2-richtexteditor.min.js +2 -2
  10. package/dist/global/ej2-richtexteditor.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/package.json +12 -12
  13. package/src/common/util.js +4 -1
  14. package/src/editor-manager/plugin/dom-node.js +3 -1
  15. package/src/editor-manager/plugin/format-painter-actions.d.ts +1 -0
  16. package/src/editor-manager/plugin/format-painter-actions.js +18 -0
  17. package/src/editor-manager/plugin/formats.d.ts +1 -0
  18. package/src/editor-manager/plugin/formats.js +37 -2
  19. package/src/editor-manager/plugin/inserthtml.js +15 -2
  20. package/src/editor-manager/plugin/lists.js +85 -63
  21. package/src/editor-manager/plugin/ms-word-clean-up.js +87 -18
  22. package/src/editor-manager/plugin/nodecutter.js +1 -1
  23. package/src/editor-manager/plugin/selection-commands.d.ts +1 -0
  24. package/src/editor-manager/plugin/selection-commands.js +56 -1
  25. package/src/editor-manager/plugin/table.js +1 -1
  26. package/src/rich-text-editor/actions/base-quick-toolbar.js +4 -4
  27. package/src/rich-text-editor/actions/color-picker.d.ts +1 -0
  28. package/src/rich-text-editor/actions/color-picker.js +10 -0
  29. package/src/rich-text-editor/actions/enter-key.js +2 -2
  30. package/src/rich-text-editor/actions/html-editor.js +25 -12
  31. package/src/rich-text-editor/actions/paste-clean-up.d.ts +1 -0
  32. package/src/rich-text-editor/actions/paste-clean-up.js +26 -5
  33. package/src/rich-text-editor/actions/toolbar-action.js +1 -1
  34. package/src/rich-text-editor/actions/toolbar.js +4 -1
  35. package/src/rich-text-editor/base/constant.d.ts +5 -0
  36. package/src/rich-text-editor/base/constant.js +5 -0
  37. package/src/rich-text-editor/base/interface.d.ts +0 -8
  38. package/src/rich-text-editor/base/rich-text-editor-model.d.ts +1 -1
  39. package/src/rich-text-editor/base/rich-text-editor.d.ts +1 -1
  40. package/src/rich-text-editor/base/rich-text-editor.js +33 -7
  41. package/src/rich-text-editor/base/util.js +3 -0
  42. package/src/rich-text-editor/models/default-locale.js +3 -2
  43. package/src/rich-text-editor/renderer/dialog-renderer.js +5 -1
  44. package/src/rich-text-editor/renderer/iframe-content-renderer.js +1 -1
  45. package/src/rich-text-editor/renderer/image-module.js +31 -10
  46. package/src/rich-text-editor/renderer/table-module.d.ts +4 -1
  47. package/src/rich-text-editor/renderer/table-module.js +200 -131
  48. package/src/rich-text-editor/renderer/toolbar-renderer.js +13 -13
  49. package/styles/bootstrap-dark.css +57 -22
  50. package/styles/bootstrap.css +61 -29
  51. package/styles/bootstrap4.css +48 -17
  52. package/styles/bootstrap5-dark.css +47 -18
  53. package/styles/bootstrap5.css +47 -18
  54. package/styles/fabric-dark.css +43 -12
  55. package/styles/fabric.css +43 -12
  56. package/styles/fluent-dark.css +51 -14
  57. package/styles/fluent.css +51 -14
  58. package/styles/highcontrast-light.css +43 -12
  59. package/styles/highcontrast.css +46 -12
  60. package/styles/material-dark.css +47 -12
  61. package/styles/material.css +47 -12
  62. package/styles/material3-dark.css +45 -14
  63. package/styles/material3.css +45 -14
  64. package/styles/rich-text-editor/_bootstrap-dark-definition.scss +12 -10
  65. package/styles/rich-text-editor/_bootstrap-definition.scss +18 -16
  66. package/styles/rich-text-editor/_bootstrap4-definition.scss +8 -6
  67. package/styles/rich-text-editor/_bootstrap5-definition.scss +4 -2
  68. package/styles/rich-text-editor/_fabric-dark-definition.scss +4 -2
  69. package/styles/rich-text-editor/_fabric-definition.scss +4 -2
  70. package/styles/rich-text-editor/_fluent-definition.scss +5 -3
  71. package/styles/rich-text-editor/_fusionnew-definition.scss +4 -2
  72. package/styles/rich-text-editor/_highcontrast-definition.scss +4 -2
  73. package/styles/rich-text-editor/_highcontrast-light-definition.scss +4 -2
  74. package/styles/rich-text-editor/_layout.scss +46 -6
  75. package/styles/rich-text-editor/_material-dark-definition.scss +4 -2
  76. package/styles/rich-text-editor/_material-definition.scss +4 -2
  77. package/styles/rich-text-editor/_material3-definition.scss +6 -4
  78. package/styles/rich-text-editor/_tailwind-definition.scss +21 -19
  79. package/styles/rich-text-editor/_theme.scss +65 -16
  80. package/styles/rich-text-editor/bootstrap-dark.css +57 -22
  81. package/styles/rich-text-editor/bootstrap.css +61 -29
  82. package/styles/rich-text-editor/bootstrap4.css +48 -17
  83. package/styles/rich-text-editor/bootstrap5-dark.css +47 -18
  84. package/styles/rich-text-editor/bootstrap5.css +47 -18
  85. package/styles/rich-text-editor/fabric-dark.css +43 -12
  86. package/styles/rich-text-editor/fabric.css +43 -12
  87. package/styles/rich-text-editor/fluent-dark.css +51 -14
  88. package/styles/rich-text-editor/fluent.css +51 -14
  89. package/styles/rich-text-editor/highcontrast-light.css +43 -12
  90. package/styles/rich-text-editor/highcontrast.css +46 -12
  91. package/styles/rich-text-editor/material-dark.css +47 -12
  92. package/styles/rich-text-editor/material.css +47 -12
  93. package/styles/rich-text-editor/material3-dark.css +45 -14
  94. package/styles/rich-text-editor/material3.css +45 -14
  95. package/styles/rich-text-editor/tailwind-dark.css +98 -35
  96. package/styles/rich-text-editor/tailwind.css +98 -35
  97. package/styles/tailwind-dark.css +98 -35
  98. package/styles/tailwind.css +98 -35
  99. package/.github/PULL_REQUEST_TEMPLATE/Bug.md +0 -41
  100. package/.github/PULL_REQUEST_TEMPLATE/Feature.md +0 -27
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * filename: index.d.ts
3
- * version : 24.2.4
3
+ * version : 24.2.8
4
4
  * Copyright Syncfusion Inc. 2001 - 2023. All rights reserved.
5
5
  * Use of this code is subject to the terms of our license.
6
6
  * A copy of the current license can be obtained at any time by e-mailing
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "_from": "@syncfusion/ej2-richtexteditor@*",
3
- "_id": "@syncfusion/ej2-richtexteditor@24.2.3",
3
+ "_id": "@syncfusion/ej2-richtexteditor@24.2.7",
4
4
  "_inBundle": false,
5
- "_integrity": "sha512-qjy4z7YGj17wCO4I5dW2kqGyRSaUxHXprYekBaF78kmtSAbFQjy8QFO9+15bOUEcNTPaTaPWHNvZ61Vm3+qOEw==",
5
+ "_integrity": "sha512-LAwzVB7DsDIemywqqLxTjUPWekzjmy1o9UDLYXMT+MHewJcUqD6wVlupgs4/Tej+ZAE275Bt25VKHA/Zl06IMg==",
6
6
  "_location": "/@syncfusion/ej2-richtexteditor",
7
7
  "_phantomChildren": {},
8
8
  "_requested": {
@@ -25,8 +25,8 @@
25
25
  "/@syncfusion/ej2-react-richtexteditor",
26
26
  "/@syncfusion/ej2-vue-richtexteditor"
27
27
  ],
28
- "_resolved": "https://nexus.syncfusion.com/repository/ej2-hotfix-new/@syncfusion/ej2-richtexteditor/-/ej2-richtexteditor-24.2.3.tgz",
29
- "_shasum": "c6180082b7903ea03940e96f5911e093ee6fab92",
28
+ "_resolved": "https://nexus.syncfusioninternal.com/repository/ej2-hotfix-new/@syncfusion/ej2-richtexteditor/-/ej2-richtexteditor-24.2.7.tgz",
29
+ "_shasum": "4baefba0381f2363ff721f0972d9319c4edf05ab",
30
30
  "_spec": "@syncfusion/ej2-richtexteditor@*",
31
31
  "_where": "/jenkins/workspace/elease-automation_release_24.1.1/packages/included",
32
32
  "author": {
@@ -37,13 +37,13 @@
37
37
  },
38
38
  "bundleDependencies": false,
39
39
  "dependencies": {
40
- "@syncfusion/ej2-base": "~24.2.3",
41
- "@syncfusion/ej2-buttons": "~24.2.3",
42
- "@syncfusion/ej2-filemanager": "~24.2.3",
43
- "@syncfusion/ej2-inputs": "~24.2.4",
44
- "@syncfusion/ej2-navigations": "~24.2.4",
45
- "@syncfusion/ej2-popups": "~24.2.3",
46
- "@syncfusion/ej2-splitbuttons": "~24.2.3"
40
+ "@syncfusion/ej2-base": "~24.2.7",
41
+ "@syncfusion/ej2-buttons": "~24.2.7",
42
+ "@syncfusion/ej2-filemanager": "~24.2.7",
43
+ "@syncfusion/ej2-inputs": "~24.2.7",
44
+ "@syncfusion/ej2-navigations": "~24.2.8",
45
+ "@syncfusion/ej2-popups": "~24.2.8",
46
+ "@syncfusion/ej2-splitbuttons": "~24.2.7"
47
47
  },
48
48
  "deprecated": false,
49
49
  "description": "Essential JS 2 RichTextEditor component",
@@ -69,6 +69,6 @@
69
69
  "url": "git+https://github.com/syncfusion/ej2-javascript-ui-controls.git"
70
70
  },
71
71
  "typings": "index.d.ts",
72
- "version": "24.2.4",
72
+ "version": "24.2.8",
73
73
  "sideEffects": false
74
74
  }
@@ -86,7 +86,7 @@ export function updateTextNode(value, enterAction) {
86
86
  tableElm[i].classList.add('e-rte-paste-table');
87
87
  if (tableElm[i].classList.contains('e-rte-paste-word-table')) {
88
88
  tableElm[i].classList.remove('e-rte-paste-word-table');
89
- continue; // Sking the removal of the border if the source is from word.
89
+ continue; // Skiping the removal of the border if the source is from word.
90
90
  }
91
91
  else if (tableElm[i].classList.contains('e-rte-paste-excel-table')) {
92
92
  tableElm[i].classList.remove('e-rte-paste-excel-table');
@@ -120,6 +120,9 @@ export function updateTextNode(value, enterAction) {
120
120
  }
121
121
  var imageElm = resultElm.querySelectorAll('img');
122
122
  for (var i = 0; i < imageElm.length; i++) {
123
+ if (imageElm[i].classList.contains('e-rte-image-unsupported')) {
124
+ continue; // Should not add the class if the image is Broken.
125
+ }
123
126
  if (!imageElm[i].classList.contains('e-rte-image')) {
124
127
  imageElm[i].classList.add('e-rte-image');
125
128
  }
@@ -490,9 +490,11 @@ var DOMNode = /** @class */ (function () {
490
490
  var range = save.range;
491
491
  var startChildNodes = range.startContainer.childNodes;
492
492
  var isTableStart = startChildNodes.length > 1 && startChildNodes[0].nodeName === 'TABLE';
493
+ var isImgOnlySelected = startChildNodes.length > 1 && startChildNodes[0].nodeName === 'IMAGE' &&
494
+ range.endOffset === 1 && range.endContainer.nodeName === '#text' && range.endContainer.textContent.length === 0;
493
495
  var start = ((isTableStart ? getLastTextNode(startChildNodes[range.startOffset + 1]) :
494
496
  startChildNodes[(range.startOffset > 0) ? (range.startOffset - 1) : range.startOffset]) || range.startContainer);
495
- var end = (range.endContainer.childNodes[(range.endOffset > 0) ? (range.endOffset - 1) : range.endOffset]
497
+ var end = (range.endContainer.childNodes[(range.endOffset > 0) ? (isImgOnlySelected ? range.endOffset : (range.endOffset - 1)) : range.endOffset]
496
498
  || range.endContainer);
497
499
  if ((start.nodeType === Node.ELEMENT_NODE && end.nodeType === Node.ELEMENT_NODE) && (start.contains(end) || end.contains(start))) {
498
500
  var existNode = start.contains(end) ? start : end;
@@ -35,6 +35,7 @@ export declare class FormatPainterActions implements IFormatPainterEditor {
35
35
  private validateELementTag;
36
36
  private findCurrentContext;
37
37
  private insertFormatNode;
38
+ private isListCopied;
38
39
  private insertBlockNode;
39
40
  private insertNewList;
40
41
  private insertSameList;
@@ -363,6 +363,14 @@ var FormatPainterActions = /** @class */ (function () {
363
363
  var range = this.parent.nodeSelection.getRange(docElement);
364
364
  var isCollapsed = range.collapsed;
365
365
  var blockNodes = this.parent.domNode.blockNodes();
366
+ var isListCopied = this.isListCopied();
367
+ if (isListCopied) {
368
+ for (var i = 0; i < blockNodes.length; i++) {
369
+ if (closest(blockNodes[i], 'li')) {
370
+ blockNodes[i] = closest(blockNodes[i], 'li');
371
+ }
372
+ }
373
+ }
366
374
  var isFullNodeSelected = false;
367
375
  if (blockNodes.length === 1) {
368
376
  isFullNodeSelected = blockNodes[0].textContent.trim() === range.toString().trim();
@@ -371,6 +379,16 @@ var FormatPainterActions = /** @class */ (function () {
371
379
  this.insertBlockNode(clonedElem, range, docElement, blockNodes);
372
380
  }
373
381
  };
382
+ FormatPainterActions.prototype.isListCopied = function () {
383
+ var isListCopied = false;
384
+ for (var i = 0; i < this.copyCollection.length; i++) {
385
+ if (this.copyCollection[i].tagName === 'OL' || this.copyCollection[i].tagName === 'UL') {
386
+ isListCopied = true;
387
+ break;
388
+ }
389
+ }
390
+ return isListCopied;
391
+ };
374
392
  FormatPainterActions.prototype.insertBlockNode = function (element, range, docElement, nodes) {
375
393
  var domSelection = this.parent.nodeSelection;
376
394
  var saveSelection = domSelection.save(range, docElement);
@@ -18,6 +18,7 @@ export declare class Formats {
18
18
  private addEventListener;
19
19
  private getParentNode;
20
20
  private onKeyUp;
21
+ private getBlockParent;
21
22
  private onKeyDown;
22
23
  private removeCodeContent;
23
24
  private deleteContent;
@@ -52,6 +52,14 @@ var Formats = /** @class */ (function () {
52
52
  }
53
53
  }
54
54
  };
55
+ Formats.prototype.getBlockParent = function (node, endNode) {
56
+ var currentParent;
57
+ while (node != endNode) {
58
+ currentParent = node;
59
+ node = node.parentElement;
60
+ }
61
+ return currentParent;
62
+ };
55
63
  Formats.prototype.onKeyDown = function (e) {
56
64
  if (e.event.which === 13) {
57
65
  var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);
@@ -61,6 +69,8 @@ var Formats = /** @class */ (function () {
61
69
  ? range.endContainer : range.endContainer.parentElement;
62
70
  var preElem = closest(startCon, 'pre');
63
71
  var endPreElem = closest(endCon, 'pre');
72
+ var blockquoteEle = closest(startCon, 'blockquote');
73
+ var endBlockquoteEle = closest(endCon, 'blockquote');
64
74
  var liParent = !isNOU(preElem) && !isNOU(preElem.parentElement) && preElem.parentElement.tagName === 'LI';
65
75
  if (liParent) {
66
76
  return;
@@ -72,6 +82,17 @@ var Formats = /** @class */ (function () {
72
82
  range = this.parent.nodeSelection.getRange(this.parent.currentDocument);
73
83
  this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, endCon, 0);
74
84
  }
85
+ if (e.event.which === 13 && ((!isNOU(blockquoteEle) && !isNOU(endBlockquoteEle)) || (!isNOU(blockquoteEle) && isNOU(endBlockquoteEle)))) {
86
+ var startParent = this.getBlockParent(range.startContainer, blockquoteEle);
87
+ if ((startParent.textContent.charCodeAt(0) === 8203 &&
88
+ startParent.textContent.length === 1) || startParent.textContent.length === 0) {
89
+ if (isNOU(startParent.nextSibling) && ((startParent.previousSibling.textContent.charCodeAt(0) === 8203 &&
90
+ startParent.previousSibling.textContent.length === 1) || startParent.previousSibling.textContent.length === 0)) {
91
+ e.event.preventDefault();
92
+ this.paraFocus(startParent.parentElement); //Revert from blockquotes while pressing enter key
93
+ }
94
+ }
95
+ }
75
96
  if (e.event.which === 13 && !isNOU(preElem) && !isNOU(endPreElem)) {
76
97
  e.event.preventDefault();
77
98
  this.deleteContent(range);
@@ -295,7 +316,7 @@ var Formats = /** @class */ (function () {
295
316
  replaceHTML = parentNode.innerHTML;
296
317
  }
297
318
  if ((e.subCommand.toLowerCase() === parentNode.tagName.toLowerCase() &&
298
- (e.subCommand.toLowerCase() !== 'pre' ||
319
+ (e.subCommand.toLowerCase() !== 'pre' && e.subCommand.toLowerCase() !== 'blockquote' ||
299
320
  (!isNOU(e.exeValue) && e.exeValue.name === 'dropDownSelect'))) ||
300
321
  isNOU(parentNode.parentNode) ||
301
322
  (parentNode.tagName === 'TABLE' && e.subCommand.toLowerCase() === 'pre')) {
@@ -304,7 +325,21 @@ var Formats = /** @class */ (function () {
304
325
  this.cleanFormats(parentNode, e.subCommand);
305
326
  var replaceNode = (e.subCommand.toLowerCase() === 'pre' && parentNode.tagName.toLowerCase() === 'pre') ?
306
327
  'p' : e.subCommand;
307
- var replaceTag = this.parent.domNode.createTagString(replaceNode, parentNode, replaceHTML.replace(/>\s+</g, '><'));
328
+ var isToggleBlockquoteList = e.subCommand.toLowerCase() === parentNode.tagName.toLowerCase() &&
329
+ e.subCommand.toLowerCase() === 'blockquote' && this.parent.domNode.isList(parentNode.firstElementChild);
330
+ var isToggleBlockquote = e.subCommand.toLowerCase() === parentNode.tagName.toLowerCase()
331
+ && e.subCommand.toLowerCase() === 'blockquote';
332
+ var replaceTag = void 0;
333
+ if (isToggleBlockquoteList) {
334
+ replaceTag = replaceHTML.replace(/>\s+</g, '><');
335
+ }
336
+ else if (isToggleBlockquote) {
337
+ var tagWrap = (e.enterAction == 'BR' || e.enterAction == 'P') ? 'P' : e.enterAction;
338
+ replaceTag = this.parent.domNode.createTagString(tagWrap, parentNode, replaceHTML.replace(/>\s+</g, '><'));
339
+ }
340
+ else {
341
+ replaceTag = this.parent.domNode.createTagString(replaceNode, parentNode, replaceHTML.replace(/>\s+</g, '><'));
342
+ }
308
343
  if (parentNode.tagName === 'LI') {
309
344
  parentNode.innerHTML = '';
310
345
  parentNode.insertAdjacentHTML('beforeend', replaceTag);
@@ -248,12 +248,17 @@ var InsertHtml = /** @class */ (function () {
248
248
  preNode.parentNode.replaceChild(fragment, preNode);
249
249
  }
250
250
  else {
251
+ var startContainerParent = range.startContainer.parentNode;
252
+ // Get the index of the start container among its siblings
253
+ var startIndex = Array.prototype.indexOf.call(startContainerParent.childNodes, range.startContainer);
251
254
  range.deleteContents();
255
+ range.setStart(startContainerParent, startIndex);
256
+ range.setEnd(startContainerParent, startIndex);
252
257
  if (!isNOU(lasNode)) {
253
258
  detach(lasNode);
254
259
  }
255
260
  // eslint-disable-next-line
256
- !isNOU(sibNode) ? sibNode.parentNode.appendChild(fragment) : editNode.appendChild(fragment);
261
+ !isNOU(sibNode) ? (sibNode.parentNode === editNode ? sibNode.appendChild(fragment) : sibNode.parentNode.appendChild(fragment)) : range.insertNode(fragment);
257
262
  }
258
263
  }
259
264
  else {
@@ -478,7 +483,15 @@ var InsertHtml = /** @class */ (function () {
478
483
  };
479
484
  InsertHtml.imageFocus = function (node, nodeSelection, docElement) {
480
485
  var focusNode = document.createTextNode(' ');
481
- node.parentNode.insertBefore(focusNode, node.nextSibling);
486
+ if (node.parentNode && node.parentNode.nodeName === 'A') {
487
+ var anchorTag = node.parentNode;
488
+ var parentNode = anchorTag.parentNode;
489
+ parentNode.insertBefore(focusNode, anchorTag.nextSibling);
490
+ parentNode.insertBefore(node, focusNode);
491
+ }
492
+ else {
493
+ node.parentNode.insertBefore(focusNode, node.nextSibling);
494
+ }
482
495
  nodeSelection.setSelectionText(docElement, node.nextSibling, node.nextSibling, 0, 0);
483
496
  };
484
497
  // eslint-disable-next-line
@@ -72,14 +72,21 @@ var Lists = /** @class */ (function () {
72
72
  var preElementOLTest = this.testList(preElement);
73
73
  var nextElementOLTest = this.testList(nextElement);
74
74
  if (!preElementOLTest && !nextElementOLTest && preElemULStart !== '*' && nextElemULStart !== '*') {
75
+ var brElement = createElement('br');
75
76
  if (startElementOLTest) {
76
77
  range.startContainer.textContent = range.startContainer.textContent.slice(range.startOffset, range.startContainer.textContent.length);
78
+ if (range.startContainer.nodeName === '#text' && range.startContainer.textContent.length === 0) {
79
+ this.parent.domNode.insertAfter(brElement, range.startContainer);
80
+ }
77
81
  this.applyListsHandler({ subCommand: 'OL', callBack: e.callBack });
78
82
  e.event.preventDefault();
79
83
  }
80
84
  else if (range.startContainer.textContent.replace(/\u200B/g, '').slice(0, range.startOffset).trim() === '*' ||
81
85
  range.startContainer.textContent.replace(/\u200B/g, '').slice(0, range.startOffset).trim() === '-') {
82
86
  range.startContainer.textContent = range.startContainer.textContent.slice(range.startOffset, range.startContainer.textContent.length);
87
+ if (range.startContainer.nodeName === '#text' && range.startContainer.textContent.length === 0) {
88
+ this.parent.domNode.insertAfter(brElement, range.startContainer);
89
+ }
83
90
  this.applyListsHandler({ subCommand: 'UL', callBack: e.callBack });
84
91
  e.event.preventDefault();
85
92
  }
@@ -190,11 +197,11 @@ var Lists = /** @class */ (function () {
190
197
  };
191
198
  Lists.prototype.removeList = function (range, e) {
192
199
  var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);
193
- var endNode = this.parent.domNode.getSelectedNode(range.endContainer, range.endOffset);
200
+ var endNode = (!isNOU(range.endContainer.parentElement.closest('li')) && range.endContainer.parentElement.closest('li').childElementCount > 1 && range.endContainer.nodeName === '#text') ? range.endContainer : this.parent.domNode.getSelectedNode(range.endContainer, range.endOffset);
194
201
  startNode = startNode.nodeName === 'BR' ? startNode.parentElement : startNode;
195
202
  endNode = endNode.nodeName === 'BR' ? endNode.parentElement : endNode;
196
203
  startNode = startNode.nodeName !== 'LI' && !isNOU(startNode.closest('LI')) ? startNode.closest('LI') : startNode;
197
- endNode = endNode.nodeName !== 'LI' && !isNOU(endNode.closest('LI')) ? endNode.closest('LI') : endNode;
204
+ endNode = endNode.nodeName !== 'LI' && endNode.nodeName !== '#text' && !isNOU(endNode.closest('LI')) ? endNode.closest('LI') : endNode;
198
205
  if (((range.commonAncestorContainer.nodeName === 'OL' || range.commonAncestorContainer.nodeName === 'UL' || range.commonAncestorContainer.nodeName === 'LI') &&
199
206
  isNOU(endNode.nextElementSibling) && endNode.textContent.length === range.endOffset &&
200
207
  isNOU(startNode.previousElementSibling) && range.startOffset === 0) ||
@@ -600,7 +607,7 @@ var Lists = /** @class */ (function () {
600
607
  };
601
608
  Lists.prototype.applyLists = function (elements, type, selector, item, e) {
602
609
  var isReverse = true;
603
- if (this.isRevert(elements, type, item) && isNOU(item)) {
610
+ if (this.isRevert(elements, type, item) && isNOU(item) || (!isNOU(item) && item.listStyle === 'none')) {
604
611
  this.revertList(elements, e);
605
612
  this.removeEmptyListElements();
606
613
  }
@@ -675,6 +682,9 @@ var Lists = /** @class */ (function () {
675
682
  isNOU(item) && nodes[i].parentNode.style.listStyleType !== '') {
676
683
  isRevert = false;
677
684
  }
685
+ if (nodes[i].parentNode.tagName === tagName && nodes[i].parentNode.style.listStyleType !== '') {
686
+ isRevert = true;
687
+ }
678
688
  }
679
689
  return isRevert;
680
690
  };
@@ -787,72 +797,84 @@ var Lists = /** @class */ (function () {
787
797
  var viewNode = [];
788
798
  for (var i = 0; i < elements.length; i++) {
789
799
  var element = elements[i];
790
- if (this.domNode.contents(element)[0].nodeType === 3 && this.domNode.contents(element)[0].textContent.trim().length === 0) {
791
- detach(this.domNode.contents(element)[0]);
792
- }
793
- var parentNode = elements[i].parentNode;
794
- var className = element.getAttribute('class');
795
- if (temp.length === 0) {
796
- var siblingList = elements[i].querySelectorAll('ul, ol');
797
- var firstNode = siblingList[0];
798
- if (firstNode) {
799
- var child = firstNode
800
- .querySelectorAll('li');
801
- if (child) {
802
- var nestedElement = createElement(firstNode.tagName);
803
- append([nestedElement], firstNode.parentNode);
804
- var nestedElementLI = createElement('li', { styles: 'list-style-type: none;' });
805
- append([nestedElementLI], nestedElement);
806
- append([firstNode], nestedElementLI);
807
- }
808
- }
809
- }
810
- if (element.parentNode.insertBefore(this.closeTag(parentNode.tagName), element),
811
- 'LI' === parentNode.parentNode.tagName || 'OL' === parentNode.parentNode.tagName ||
812
- 'UL' === parentNode.parentNode.tagName) {
813
- element.parentNode.insertBefore(this.closeTag('LI'), element);
814
- }
815
- else {
816
- var classAttr = '';
817
- if (className) {
818
- // eslint-disable-next-line
819
- classAttr += ' class="' + className + '"';
820
- }
821
- if (CONSTANT.DEFAULT_TAG && 0 === element.querySelectorAll(CONSTANT.BLOCK_TAGS.join(', ')).length) {
822
- var wrapperclass = isNullOrUndefined(className) ? ' class="e-rte-wrap-inner"' :
823
- ' class="' + className + ' e-rte-wrap-inner"';
824
- var wrapper = '<' + CONSTANT.DEFAULT_TAG + wrapperclass +
825
- this.domNode.attributes(parentNode) + '></' + CONSTANT.DEFAULT_TAG + '>';
826
- if (e.enterAction !== 'BR') {
827
- this.domNode.wrapInner(element, this.domNode.parseHTMLFragment(wrapper));
800
+ if ((isNullOrUndefined(e.item)) || ((element.nodeName === 'LI' && e.item.listStyle === 'none'))) {
801
+ if (this.domNode.contents(element)[0].nodeType === 3 && this.domNode.contents(element)[0].textContent.trim().length === 0) {
802
+ detach(this.domNode.contents(element)[0]);
803
+ }
804
+ var parentNode = elements[i].parentNode;
805
+ var className = element.getAttribute('class');
806
+ if (temp.length === 0) {
807
+ var siblingList = elements[i].querySelectorAll('ul, ol');
808
+ var firstNode = siblingList[0];
809
+ if (firstNode) {
810
+ var child = firstNode
811
+ .querySelectorAll('li');
812
+ if (child) {
813
+ var nestedElement = createElement(firstNode.tagName);
814
+ append([nestedElement], firstNode.parentNode);
815
+ var nestedElementLI = createElement('li', { styles: 'list-style-type: none;' });
816
+ append([nestedElementLI], nestedElement);
817
+ append([firstNode], nestedElementLI);
818
+ }
828
819
  }
829
820
  }
830
- else if (this.domNode.contents(element)[0].nodeType === 3) {
831
- var replace = this.domNode.createTagString(CONSTANT.DEFAULT_TAG, parentNode, this.parent.domNode.encode(this.domNode.contents(element)[0].textContent));
832
- this.domNode.replaceWith(this.domNode.contents(element)[0], replace);
833
- }
834
- else if (this.domNode.contents(element)[0].classList.contains(markerClassName.startSelection) ||
835
- this.domNode.contents(element)[0].classList.contains(markerClassName.endSelection)) {
836
- var replace = this.domNode.createTagString(CONSTANT.DEFAULT_TAG, parentNode, this.domNode.contents(element)[0].outerHTML);
837
- this.domNode.replaceWith(this.domNode.contents(element)[0], replace);
821
+ if (element.parentNode.insertBefore(this.closeTag(parentNode.tagName), element),
822
+ 'LI' === parentNode.parentNode.tagName || 'OL' === parentNode.parentNode.tagName ||
823
+ 'UL' === parentNode.parentNode.tagName) {
824
+ element.parentNode.insertBefore(this.closeTag('LI'), element);
838
825
  }
839
826
  else {
840
- var childNode = element.firstChild;
841
- className = childNode.getAttribute('class');
842
- attributes(childNode, this.domNode.rawAttributes(parentNode));
843
- if (className && childNode.getAttribute('class')) {
844
- attributes(childNode, { 'class': className + ' ' + childNode.getAttribute('class') });
827
+ var classAttr = '';
828
+ if (className) {
829
+ // eslint-disable-next-line
830
+ classAttr += ' class="' + className + '"';
845
831
  }
832
+ if (CONSTANT.DEFAULT_TAG && 0 === element.querySelectorAll(CONSTANT.BLOCK_TAGS.join(', ')).length) {
833
+ var wrapperclass = isNullOrUndefined(className) ? ' class="e-rte-wrap-inner"' :
834
+ ' class="' + className + ' e-rte-wrap-inner"';
835
+ var parentElement = parentNode;
836
+ if (!isNOU(parentElement.style.listStyleType)) {
837
+ parentNode.style.removeProperty("list-style-type");
838
+ }
839
+ if (!isNOU(parentElement.style.listStyleImage)) {
840
+ parentNode.style.removeProperty("list-style-image");
841
+ }
842
+ if (parentElement.style.length === 0) {
843
+ parentNode.removeAttribute("style");
844
+ }
845
+ var wrapper = '<' + CONSTANT.DEFAULT_TAG + wrapperclass +
846
+ this.domNode.attributes(parentElement) + '></' + CONSTANT.DEFAULT_TAG + '>';
847
+ if (e.enterAction !== 'BR') {
848
+ this.domNode.wrapInner(element, this.domNode.parseHTMLFragment(wrapper));
849
+ }
850
+ }
851
+ else if (this.domNode.contents(element)[0].nodeType === 3) {
852
+ var replace = this.domNode.createTagString(CONSTANT.DEFAULT_TAG, parentNode, this.parent.domNode.encode(this.domNode.contents(element)[0].textContent));
853
+ this.domNode.replaceWith(this.domNode.contents(element)[0], replace);
854
+ }
855
+ else if (this.domNode.contents(element)[0].classList.contains(markerClassName.startSelection) ||
856
+ this.domNode.contents(element)[0].classList.contains(markerClassName.endSelection)) {
857
+ var replace = this.domNode.createTagString(CONSTANT.DEFAULT_TAG, parentNode, this.domNode.contents(element)[0].outerHTML);
858
+ this.domNode.replaceWith(this.domNode.contents(element)[0], replace);
859
+ }
860
+ else {
861
+ var childNode = element.firstChild;
862
+ className = childNode.getAttribute('class');
863
+ attributes(childNode, this.domNode.rawAttributes(parentNode));
864
+ if (className && childNode.getAttribute('class')) {
865
+ attributes(childNode, { 'class': className + ' ' + childNode.getAttribute('class') });
866
+ }
867
+ }
868
+ append([this.openTag('LI')], element);
869
+ prepend([this.closeTag('LI')], element);
870
+ }
871
+ this.domNode.insertAfter(this.openTag(parentNode.tagName), element);
872
+ if (parentNode.parentNode.tagName === 'LI') {
873
+ parentNode = parentNode.parentNode.parentNode;
874
+ }
875
+ if (viewNode.indexOf(parentNode) < 0) {
876
+ viewNode.push(parentNode);
846
877
  }
847
- append([this.openTag('LI')], element);
848
- prepend([this.closeTag('LI')], element);
849
- }
850
- this.domNode.insertAfter(this.openTag(parentNode.tagName), element);
851
- if (parentNode.parentNode.tagName === 'LI') {
852
- parentNode = parentNode.parentNode.parentNode;
853
- }
854
- if (viewNode.indexOf(parentNode) < 0) {
855
- viewNode.push(parentNode);
856
878
  }
857
879
  }
858
880
  for (var i = 0; i < viewNode.length; i++) {