@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.
- package/CHANGELOG.md +34 -0
- package/dist/ej2-richtexteditor.min.js +2 -2
- package/dist/ej2-richtexteditor.umd.min.js +2 -2
- package/dist/ej2-richtexteditor.umd.min.js.map +1 -1
- package/dist/es6/ej2-richtexteditor.es2015.js +669 -272
- package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
- package/dist/es6/ej2-richtexteditor.es5.js +662 -269
- package/dist/es6/ej2-richtexteditor.es5.js.map +1 -1
- package/dist/global/ej2-richtexteditor.min.js +2 -2
- package/dist/global/ej2-richtexteditor.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +12 -12
- package/src/common/util.js +4 -1
- package/src/editor-manager/plugin/dom-node.js +3 -1
- package/src/editor-manager/plugin/format-painter-actions.d.ts +1 -0
- package/src/editor-manager/plugin/format-painter-actions.js +18 -0
- package/src/editor-manager/plugin/formats.d.ts +1 -0
- package/src/editor-manager/plugin/formats.js +37 -2
- package/src/editor-manager/plugin/inserthtml.js +15 -2
- package/src/editor-manager/plugin/lists.js +85 -63
- package/src/editor-manager/plugin/ms-word-clean-up.js +87 -18
- package/src/editor-manager/plugin/nodecutter.js +1 -1
- package/src/editor-manager/plugin/selection-commands.d.ts +1 -0
- package/src/editor-manager/plugin/selection-commands.js +56 -1
- package/src/editor-manager/plugin/table.js +1 -1
- package/src/rich-text-editor/actions/base-quick-toolbar.js +4 -4
- package/src/rich-text-editor/actions/color-picker.d.ts +1 -0
- package/src/rich-text-editor/actions/color-picker.js +10 -0
- package/src/rich-text-editor/actions/enter-key.js +2 -2
- package/src/rich-text-editor/actions/html-editor.js +25 -12
- package/src/rich-text-editor/actions/paste-clean-up.d.ts +1 -0
- package/src/rich-text-editor/actions/paste-clean-up.js +26 -5
- package/src/rich-text-editor/actions/toolbar-action.js +1 -1
- package/src/rich-text-editor/actions/toolbar.js +4 -1
- package/src/rich-text-editor/base/constant.d.ts +5 -0
- package/src/rich-text-editor/base/constant.js +5 -0
- package/src/rich-text-editor/base/interface.d.ts +0 -8
- package/src/rich-text-editor/base/rich-text-editor-model.d.ts +1 -1
- package/src/rich-text-editor/base/rich-text-editor.d.ts +1 -1
- package/src/rich-text-editor/base/rich-text-editor.js +33 -7
- package/src/rich-text-editor/base/util.js +3 -0
- package/src/rich-text-editor/models/default-locale.js +3 -2
- package/src/rich-text-editor/renderer/dialog-renderer.js +5 -1
- package/src/rich-text-editor/renderer/iframe-content-renderer.js +1 -1
- package/src/rich-text-editor/renderer/image-module.js +31 -10
- package/src/rich-text-editor/renderer/table-module.d.ts +4 -1
- package/src/rich-text-editor/renderer/table-module.js +200 -131
- package/src/rich-text-editor/renderer/toolbar-renderer.js +13 -13
- package/styles/bootstrap-dark.css +57 -22
- package/styles/bootstrap.css +61 -29
- package/styles/bootstrap4.css +48 -17
- package/styles/bootstrap5-dark.css +47 -18
- package/styles/bootstrap5.css +47 -18
- package/styles/fabric-dark.css +43 -12
- package/styles/fabric.css +43 -12
- package/styles/fluent-dark.css +51 -14
- package/styles/fluent.css +51 -14
- package/styles/highcontrast-light.css +43 -12
- package/styles/highcontrast.css +46 -12
- package/styles/material-dark.css +47 -12
- package/styles/material.css +47 -12
- package/styles/material3-dark.css +45 -14
- package/styles/material3.css +45 -14
- package/styles/rich-text-editor/_bootstrap-dark-definition.scss +12 -10
- package/styles/rich-text-editor/_bootstrap-definition.scss +18 -16
- package/styles/rich-text-editor/_bootstrap4-definition.scss +8 -6
- package/styles/rich-text-editor/_bootstrap5-definition.scss +4 -2
- package/styles/rich-text-editor/_fabric-dark-definition.scss +4 -2
- package/styles/rich-text-editor/_fabric-definition.scss +4 -2
- package/styles/rich-text-editor/_fluent-definition.scss +5 -3
- package/styles/rich-text-editor/_fusionnew-definition.scss +4 -2
- package/styles/rich-text-editor/_highcontrast-definition.scss +4 -2
- package/styles/rich-text-editor/_highcontrast-light-definition.scss +4 -2
- package/styles/rich-text-editor/_layout.scss +46 -6
- package/styles/rich-text-editor/_material-dark-definition.scss +4 -2
- package/styles/rich-text-editor/_material-definition.scss +4 -2
- package/styles/rich-text-editor/_material3-definition.scss +6 -4
- package/styles/rich-text-editor/_tailwind-definition.scss +21 -19
- package/styles/rich-text-editor/_theme.scss +65 -16
- package/styles/rich-text-editor/bootstrap-dark.css +57 -22
- package/styles/rich-text-editor/bootstrap.css +61 -29
- package/styles/rich-text-editor/bootstrap4.css +48 -17
- package/styles/rich-text-editor/bootstrap5-dark.css +47 -18
- package/styles/rich-text-editor/bootstrap5.css +47 -18
- package/styles/rich-text-editor/fabric-dark.css +43 -12
- package/styles/rich-text-editor/fabric.css +43 -12
- package/styles/rich-text-editor/fluent-dark.css +51 -14
- package/styles/rich-text-editor/fluent.css +51 -14
- package/styles/rich-text-editor/highcontrast-light.css +43 -12
- package/styles/rich-text-editor/highcontrast.css +46 -12
- package/styles/rich-text-editor/material-dark.css +47 -12
- package/styles/rich-text-editor/material.css +47 -12
- package/styles/rich-text-editor/material3-dark.css +45 -14
- package/styles/rich-text-editor/material3.css +45 -14
- package/styles/rich-text-editor/tailwind-dark.css +98 -35
- package/styles/rich-text-editor/tailwind.css +98 -35
- package/styles/tailwind-dark.css +98 -35
- package/styles/tailwind.css +98 -35
- package/.github/PULL_REQUEST_TEMPLATE/Bug.md +0 -41
- package/.github/PULL_REQUEST_TEMPLATE/Feature.md +0 -27
package/dist/global/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* filename: index.d.ts
|
|
3
|
-
* version : 24.2.
|
|
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
|
+
"_id": "@syncfusion/ej2-richtexteditor@24.2.7",
|
|
4
4
|
"_inBundle": false,
|
|
5
|
-
"_integrity": "sha512-
|
|
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.
|
|
29
|
-
"_shasum": "
|
|
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.
|
|
41
|
-
"@syncfusion/ej2-buttons": "~24.2.
|
|
42
|
-
"@syncfusion/ej2-filemanager": "~24.2.
|
|
43
|
-
"@syncfusion/ej2-inputs": "~24.2.
|
|
44
|
-
"@syncfusion/ej2-navigations": "~24.2.
|
|
45
|
-
"@syncfusion/ej2-popups": "~24.2.
|
|
46
|
-
"@syncfusion/ej2-splitbuttons": "~24.2.
|
|
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.
|
|
72
|
+
"version": "24.2.8",
|
|
73
73
|
"sideEffects": false
|
|
74
74
|
}
|
package/src/common/util.js
CHANGED
|
@@ -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; //
|
|
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);
|
|
@@ -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
|
|
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) :
|
|
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
|
|
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 (
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
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
|
-
|
|
831
|
-
|
|
832
|
-
|
|
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
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
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++) {
|