@syncfusion/ej2-richtexteditor 25.2.4 → 25.2.6
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 -2
- 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 +362 -130
- package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
- package/dist/es6/ej2-richtexteditor.es5.js +360 -127
- 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 +11 -11
- package/src/common/interface.d.ts +14 -0
- package/src/common/util.js +4 -1
- package/src/editor-manager/base/editor-manager.js +5 -3
- package/src/editor-manager/plugin/alignments.js +3 -0
- package/src/editor-manager/plugin/dom-node.d.ts +20 -0
- package/src/editor-manager/plugin/dom-node.js +104 -1
- package/src/editor-manager/plugin/formats.js +1 -1
- package/src/editor-manager/plugin/indents.js +3 -0
- package/src/editor-manager/plugin/lists.d.ts +0 -1
- package/src/editor-manager/plugin/lists.js +55 -78
- package/src/editor-manager/plugin/ms-word-clean-up.js +1 -1
- package/src/rich-text-editor/actions/enter-key.d.ts +5 -0
- package/src/rich-text-editor/actions/enter-key.js +98 -13
- package/src/rich-text-editor/actions/full-screen.js +0 -6
- package/src/rich-text-editor/actions/html-editor.d.ts +1 -0
- package/src/rich-text-editor/actions/html-editor.js +63 -10
- package/src/rich-text-editor/actions/paste-clean-up.js +2 -1
- package/src/rich-text-editor/base/rich-text-editor.d.ts +1 -0
- package/src/rich-text-editor/base/rich-text-editor.js +12 -1
- package/src/rich-text-editor/renderer/image-module.js +3 -3
- package/src/rich-text-editor/renderer/toolbar-renderer.js +7 -9
package/dist/global/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* filename: index.d.ts
|
|
3
|
-
* version : 25.2.
|
|
3
|
+
* version : 25.2.6
|
|
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@25.2.
|
|
3
|
+
"_id": "@syncfusion/ej2-richtexteditor@25.2.5",
|
|
4
4
|
"_inBundle": false,
|
|
5
|
-
"_integrity": "sha512-
|
|
5
|
+
"_integrity": "sha512-NonOxrKU+s4Zp5Miu995Sz33nwGR7Fw3cctfKMWUHH7ihn3sQyS8G55fS5//aypH1+fcqioRLz/MmYHsvUCPfA==",
|
|
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.syncfusioninternal.com/repository/ej2-hotfix-new/@syncfusion/ej2-richtexteditor/-/ej2-richtexteditor-25.2.
|
|
29
|
-
"_shasum": "
|
|
28
|
+
"_resolved": "https://nexus.syncfusioninternal.com/repository/ej2-hotfix-new/@syncfusion/ej2-richtexteditor/-/ej2-richtexteditor-25.2.5.tgz",
|
|
29
|
+
"_shasum": "7d9d112209d8b618a69fdceb055dfa89af2472c4",
|
|
30
30
|
"_spec": "@syncfusion/ej2-richtexteditor@*",
|
|
31
31
|
"_where": "/jenkins/workspace/elease-automation_release_25.1.1/packages/included",
|
|
32
32
|
"author": {
|
|
@@ -37,12 +37,12 @@
|
|
|
37
37
|
},
|
|
38
38
|
"bundleDependencies": false,
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@syncfusion/ej2-base": "~25.2.
|
|
41
|
-
"@syncfusion/ej2-buttons": "~25.2.
|
|
42
|
-
"@syncfusion/ej2-filemanager": "~25.2.
|
|
43
|
-
"@syncfusion/ej2-inputs": "~25.2.
|
|
44
|
-
"@syncfusion/ej2-navigations": "~25.2.
|
|
45
|
-
"@syncfusion/ej2-popups": "~25.2.
|
|
40
|
+
"@syncfusion/ej2-base": "~25.2.5",
|
|
41
|
+
"@syncfusion/ej2-buttons": "~25.2.6",
|
|
42
|
+
"@syncfusion/ej2-filemanager": "~25.2.6",
|
|
43
|
+
"@syncfusion/ej2-inputs": "~25.2.6",
|
|
44
|
+
"@syncfusion/ej2-navigations": "~25.2.6",
|
|
45
|
+
"@syncfusion/ej2-popups": "~25.2.6",
|
|
46
46
|
"@syncfusion/ej2-splitbuttons": "~25.2.4"
|
|
47
47
|
},
|
|
48
48
|
"deprecated": false,
|
|
@@ -79,6 +79,6 @@
|
|
|
79
79
|
"url": "git+https://github.com/syncfusion/ej2-javascript-ui-controls.git"
|
|
80
80
|
},
|
|
81
81
|
"typings": "index.d.ts",
|
|
82
|
-
"version": "25.2.
|
|
82
|
+
"version": "25.2.6",
|
|
83
83
|
"sideEffects": false
|
|
84
84
|
}
|
|
@@ -89,3 +89,17 @@ export interface IImageResizeFactor {
|
|
|
89
89
|
botLeft: [number, number];
|
|
90
90
|
botRight: [number, number];
|
|
91
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* The `ImageOrTableCursor` is used to specify the image or table cursor in Enter key Module.
|
|
94
|
+
*
|
|
95
|
+
* @private
|
|
96
|
+
* @hidden
|
|
97
|
+
*
|
|
98
|
+
*
|
|
99
|
+
* */
|
|
100
|
+
export interface ImageOrTableCursor {
|
|
101
|
+
start: boolean;
|
|
102
|
+
startName: string;
|
|
103
|
+
end: boolean;
|
|
104
|
+
endName: string;
|
|
105
|
+
}
|
package/src/common/util.js
CHANGED
|
@@ -213,11 +213,14 @@ export function nestedListCleanUp(range) {
|
|
|
213
213
|
item.remove();
|
|
214
214
|
});
|
|
215
215
|
}
|
|
216
|
+
else {
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
216
219
|
}
|
|
217
220
|
var liElem = (range.startContainer.nodeName === "#text" ? range.startContainer.parentElement : range.startContainer).querySelectorAll("li");
|
|
218
221
|
if (liElem.length > 0) {
|
|
219
222
|
liElem.forEach(function (item) {
|
|
220
|
-
if (item.firstChild.nodeName === "OL" || item.firstChild.nodeName === "UL") {
|
|
223
|
+
if (!isNullOrUndefined(item.firstChild) && (item.firstChild.nodeName === "OL" || item.firstChild.nodeName === "UL")) {
|
|
221
224
|
item.style.listStyleType = "none";
|
|
222
225
|
}
|
|
223
226
|
});
|
|
@@ -115,12 +115,14 @@ var EditorManager = /** @class */ (function () {
|
|
|
115
115
|
case 'alignments':
|
|
116
116
|
this.observer.notify(CONSTANT.ALIGNMENT_TYPE, {
|
|
117
117
|
subCommand: value, event: event, callBack: callBack,
|
|
118
|
-
selector: selector,
|
|
119
|
-
value: exeValue
|
|
118
|
+
selector: selector, value: exeValue, enterAction: enterAction
|
|
120
119
|
});
|
|
121
120
|
break;
|
|
122
121
|
case 'indents':
|
|
123
|
-
this.observer.notify(CONSTANT.INDENT_TYPE, {
|
|
122
|
+
this.observer.notify(CONSTANT.INDENT_TYPE, {
|
|
123
|
+
subCommand: value, event: event, callBack: callBack,
|
|
124
|
+
selector: selector, enterAction: enterAction
|
|
125
|
+
});
|
|
124
126
|
break;
|
|
125
127
|
case 'links':
|
|
126
128
|
this.observer.notify(CONSTANT.LINK, { command: command, value: value, item: exeValue, event: event, callBack: callBack });
|
|
@@ -64,6 +64,9 @@ var Alignments = /** @class */ (function () {
|
|
|
64
64
|
if (!isTableAlign) {
|
|
65
65
|
this.parent.domNode.setMarker(save);
|
|
66
66
|
var alignmentNodes = this.parent.domNode.blockNodes();
|
|
67
|
+
if (e.enterAction === 'BR') {
|
|
68
|
+
alignmentNodes = this.parent.domNode.convertToBlockNodes(alignmentNodes, false);
|
|
69
|
+
}
|
|
67
70
|
for (var i = 0; i < alignmentNodes.length; i++) {
|
|
68
71
|
var parentNode = alignmentNodes[i];
|
|
69
72
|
setStyleAttribute(parentNode, { 'text-align': this.alignments[e.subCommand] });
|
|
@@ -314,6 +314,26 @@ export declare class DOMNode {
|
|
|
314
314
|
|
|
315
315
|
*/
|
|
316
316
|
getImageTagInSelection(): NodeListOf<HTMLImageElement>;
|
|
317
|
+
/**
|
|
318
|
+
* Method to wrap the inline and text node with block node.
|
|
319
|
+
*
|
|
320
|
+
* @param {HTMLElement} node - specifies the element sent to wrap the node around it with block nodes.
|
|
321
|
+
* @param {string} wrapperElement - specifies which block nodes to wrap around.
|
|
322
|
+
* @returns {HTMLElement} - returns the wrapped element.
|
|
323
|
+
* @hidden
|
|
324
|
+
|
|
325
|
+
*/
|
|
326
|
+
gatherElementsAround(node: HTMLElement, wrapperElement: string): HTMLElement;
|
|
327
|
+
/**
|
|
328
|
+
* Method to convert all the inline nodes between the selection to block nodes.
|
|
329
|
+
*
|
|
330
|
+
* @param {Node[]} selectedNodes - specifies the nodes of the start and end selection.
|
|
331
|
+
* @param {boolean} fromList - specifies if the method is called from list module.
|
|
332
|
+
* @returns {Node[]} - returns the selected list of elements as block nodes.
|
|
333
|
+
* @hidden
|
|
334
|
+
|
|
335
|
+
*/
|
|
336
|
+
convertToBlockNodes(selectedNodes: Node[], fromList: boolean): Node[];
|
|
317
337
|
/**
|
|
318
338
|
* blockNodes method
|
|
319
339
|
*
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as CONSTANT from './../base/constant';
|
|
2
|
-
import { append, detach, createElement, isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';
|
|
2
|
+
import { append, detach, createElement, isNullOrUndefined as isNOU, closest } from '@syncfusion/ej2-base';
|
|
3
3
|
import { NodeSelection } from './../../selection/index';
|
|
4
4
|
import { selfClosingTags } from '../../common/config';
|
|
5
5
|
import { getLastTextNode } from '../../common/util';
|
|
@@ -668,6 +668,109 @@ var DOMNode = /** @class */ (function () {
|
|
|
668
668
|
}
|
|
669
669
|
return null;
|
|
670
670
|
};
|
|
671
|
+
/**
|
|
672
|
+
* Method to wrap the inline and text node with block node.
|
|
673
|
+
*
|
|
674
|
+
* @param {HTMLElement} node - specifies the element sent to wrap the node around it with block nodes.
|
|
675
|
+
* @param {string} wrapperElement - specifies which block nodes to wrap around.
|
|
676
|
+
* @returns {HTMLElement} - returns the wrapped element.
|
|
677
|
+
* @hidden
|
|
678
|
+
|
|
679
|
+
*/
|
|
680
|
+
DOMNode.prototype.gatherElementsAround = function (node, wrapperElement) {
|
|
681
|
+
var newWrapElem = createElement(wrapperElement);
|
|
682
|
+
// Insert the new div element before the current node.
|
|
683
|
+
var currentNode = node.previousSibling;
|
|
684
|
+
var currentNodeParent = node.parentElement;
|
|
685
|
+
if (currentNodeParent.className === 'e-editor-select-start') {
|
|
686
|
+
currentNodeParent.parentNode.insertBefore(newWrapElem, currentNodeParent);
|
|
687
|
+
}
|
|
688
|
+
else if (currentNodeParent) {
|
|
689
|
+
currentNodeParent.insertBefore(newWrapElem, node);
|
|
690
|
+
}
|
|
691
|
+
var i = 0;
|
|
692
|
+
while (currentNode !== null && currentNode.nodeName !== 'BR' &&
|
|
693
|
+
!this.isBlockNode(currentNode)) {
|
|
694
|
+
var prevSibling = currentNode.previousSibling;
|
|
695
|
+
if (currentNode.nodeType === 3 || currentNode.nodeType === 1) {
|
|
696
|
+
if (i === 0) {
|
|
697
|
+
newWrapElem.appendChild(currentNode);
|
|
698
|
+
}
|
|
699
|
+
else {
|
|
700
|
+
newWrapElem.insertBefore(currentNode, newWrapElem.firstChild);
|
|
701
|
+
}
|
|
702
|
+
}
|
|
703
|
+
currentNode = prevSibling;
|
|
704
|
+
i++;
|
|
705
|
+
}
|
|
706
|
+
// Add the current node to the new div
|
|
707
|
+
newWrapElem.appendChild(node);
|
|
708
|
+
// Gather text and inline elements after the currentNode
|
|
709
|
+
currentNode = newWrapElem.nextSibling ? newWrapElem.nextSibling :
|
|
710
|
+
newWrapElem.parentElement.nextSibling;
|
|
711
|
+
while (currentNode !== null && currentNode.nodeName !== 'BR' &&
|
|
712
|
+
!this.isBlockNode(currentNode)) {
|
|
713
|
+
var nextSibling = currentNode.nextSibling ?
|
|
714
|
+
currentNode.nextSibling : currentNode.parentElement.nextSibling;
|
|
715
|
+
if (currentNode.nodeType === 3 || currentNode.nodeType === 1) {
|
|
716
|
+
newWrapElem.appendChild(currentNode);
|
|
717
|
+
}
|
|
718
|
+
currentNode = nextSibling;
|
|
719
|
+
}
|
|
720
|
+
return newWrapElem;
|
|
721
|
+
};
|
|
722
|
+
/**
|
|
723
|
+
* Method to convert all the inline nodes between the selection to block nodes.
|
|
724
|
+
*
|
|
725
|
+
* @param {Node[]} selectedNodes - specifies the nodes of the start and end selection.
|
|
726
|
+
* @param {boolean} fromList - specifies if the method is called from list module.
|
|
727
|
+
* @returns {Node[]} - returns the selected list of elements as block nodes.
|
|
728
|
+
* @hidden
|
|
729
|
+
|
|
730
|
+
*/
|
|
731
|
+
DOMNode.prototype.convertToBlockNodes = function (selectedNodes, fromList) {
|
|
732
|
+
if (selectedNodes.length > 1) {
|
|
733
|
+
var i = 0;
|
|
734
|
+
var currentSelectedNode = selectedNodes[0];
|
|
735
|
+
while (!isNOU(currentSelectedNode)) {
|
|
736
|
+
if (currentSelectedNode.nodeName === 'BR') {
|
|
737
|
+
var nextNode = currentSelectedNode.nextSibling;
|
|
738
|
+
detach(currentSelectedNode);
|
|
739
|
+
currentSelectedNode = nextNode;
|
|
740
|
+
}
|
|
741
|
+
if (!isNOU(currentSelectedNode)) {
|
|
742
|
+
if (fromList) {
|
|
743
|
+
selectedNodes[i] = currentSelectedNode.nodeName === 'LI' || this.isBlockNode(currentSelectedNode) ?
|
|
744
|
+
currentSelectedNode :
|
|
745
|
+
this.gatherElementsAround(currentSelectedNode, (fromList ? 'p' : 'div'));
|
|
746
|
+
}
|
|
747
|
+
else {
|
|
748
|
+
selectedNodes[i] = !this.isBlockNode(selectedNodes[i]) ?
|
|
749
|
+
this.gatherElementsAround(currentSelectedNode, (fromList ? 'p' : 'div')) :
|
|
750
|
+
selectedNodes[i];
|
|
751
|
+
}
|
|
752
|
+
var currentProcessNode = selectedNodes[i].nodeName === 'LI' ? selectedNodes[i].parentElement : selectedNodes[i];
|
|
753
|
+
var currentElementCheckNode = currentProcessNode.nodeName === '#text' ? currentProcessNode.parentElement : currentProcessNode;
|
|
754
|
+
currentSelectedNode = !isNOU(currentElementCheckNode.querySelector('.e-editor-select-end')) ||
|
|
755
|
+
!isNOU(closest(currentSelectedNode, '.e-editor-select-end')) ?
|
|
756
|
+
null : currentProcessNode.nextSibling;
|
|
757
|
+
if (currentSelectedNode === null && !isNOU(currentProcessNode.nextSibling) && currentProcessNode.nextSibling.nodeName === 'BR') {
|
|
758
|
+
detach(currentProcessNode.nextSibling);
|
|
759
|
+
}
|
|
760
|
+
}
|
|
761
|
+
i++;
|
|
762
|
+
}
|
|
763
|
+
}
|
|
764
|
+
else {
|
|
765
|
+
if (!this.isBlockNode(selectedNodes[0])) {
|
|
766
|
+
selectedNodes[0] = this.gatherElementsAround(selectedNodes[0], (fromList ? 'p' : 'div'));
|
|
767
|
+
if (!isNOU(selectedNodes[0].nextSibling) && (selectedNodes[0].nextSibling.nodeName === 'BR')) {
|
|
768
|
+
detach(selectedNodes[0].nextSibling);
|
|
769
|
+
}
|
|
770
|
+
}
|
|
771
|
+
}
|
|
772
|
+
return selectedNodes;
|
|
773
|
+
};
|
|
671
774
|
/**
|
|
672
775
|
* blockNodes method
|
|
673
776
|
*
|
|
@@ -51,7 +51,7 @@ var Formats = /** @class */ (function () {
|
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
|
-
if (e.enterAction !== 'BR' && !isNOU(range.startContainer) && !isNOU(range.startContainer.parentElement) && range.startContainer === range.endContainer && range.startContainer.nodeName === '#text' && range.startContainer.parentElement.classList.contains(
|
|
54
|
+
if (e.enterAction !== 'BR' && !isNOU(range.startContainer) && !isNOU(range.startContainer.parentElement) && range.startContainer === range.endContainer && range.startContainer.nodeName === '#text' && range.startContainer.parentElement.classList.contains('e-content') && range.startContainer.parentElement.isContentEditable) {
|
|
55
55
|
var pTag = createElement(e.enterAction);
|
|
56
56
|
range.startContainer.parentElement.insertBefore(pTag, range.startContainer);
|
|
57
57
|
pTag.appendChild(range.startContainer);
|
|
@@ -43,6 +43,9 @@ var Indents = /** @class */ (function () {
|
|
|
43
43
|
var save = this.parent.nodeSelection.save(range, this.parent.currentDocument);
|
|
44
44
|
this.parent.domNode.setMarker(save);
|
|
45
45
|
var indentsNodes = this.parent.domNode.blockNodes();
|
|
46
|
+
if (e.enterAction === 'BR') {
|
|
47
|
+
indentsNodes = this.parent.domNode.convertToBlockNodes(indentsNodes, false);
|
|
48
|
+
}
|
|
46
49
|
var parentNodes = indentsNodes.slice();
|
|
47
50
|
var listsNodes = [];
|
|
48
51
|
for (var i = 0; i < parentNodes.length; i++) {
|
|
@@ -255,7 +255,7 @@ var Lists = /** @class */ (function () {
|
|
|
255
255
|
e.event.preventDefault();
|
|
256
256
|
}
|
|
257
257
|
};
|
|
258
|
-
Lists.prototype.onKeyUp = function () {
|
|
258
|
+
Lists.prototype.onKeyUp = function (e) {
|
|
259
259
|
if (!isNOU(this.commonLIParent) && !isNOU(this.commonLIParent.querySelector('.removeList'))) {
|
|
260
260
|
var currentLIElem = this.commonLIParent.querySelector('.removeList');
|
|
261
261
|
while (!isNOU(currentLIElem.firstChild)) {
|
|
@@ -263,6 +263,14 @@ var Lists = /** @class */ (function () {
|
|
|
263
263
|
}
|
|
264
264
|
detach(currentLIElem);
|
|
265
265
|
}
|
|
266
|
+
if (e.event.keyCode === 13) {
|
|
267
|
+
var listElements = this.parent.editableElement.querySelectorAll('UL, OL');
|
|
268
|
+
for (var i = 0; i < listElements.length; i++) {
|
|
269
|
+
if (!isNullOrUndefined(listElements[i]) && !isNullOrUndefined(listElements[i].parentElement) && !isNullOrUndefined(listElements[i].previousElementSibling) && (listElements[i].parentElement.nodeName === 'UL' || listElements[i].parentElement.nodeName === 'OL')) {
|
|
270
|
+
listElements[i].previousElementSibling.appendChild(listElements[i]);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
266
274
|
};
|
|
267
275
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
268
276
|
Lists.prototype.firstListBackSpace = function (range, _e) {
|
|
@@ -504,6 +512,8 @@ var Lists = /** @class */ (function () {
|
|
|
504
512
|
else {
|
|
505
513
|
if (prevSibling.tagName === 'LI') {
|
|
506
514
|
var nestedElement = createElement(elements[i].parentNode.tagName);
|
|
515
|
+
nestedElement.style.listStyleType =
|
|
516
|
+
elements[i].parentNode.style.listStyleType;
|
|
507
517
|
append([nestedElement], prevSibling);
|
|
508
518
|
append([elements[i]], nestedElement);
|
|
509
519
|
}
|
|
@@ -553,39 +563,7 @@ var Lists = /** @class */ (function () {
|
|
|
553
563
|
var listsNodes = this.domNode.blockNodes(true);
|
|
554
564
|
if (e.enterAction === 'BR') {
|
|
555
565
|
this.setSelectionBRConfig();
|
|
556
|
-
|
|
557
|
-
if (selectedNodes.length > 1) {
|
|
558
|
-
var i = 0;
|
|
559
|
-
var currentAlignmentNode = selectedNodes[0];
|
|
560
|
-
while (!isNOU(currentAlignmentNode)) {
|
|
561
|
-
if (currentAlignmentNode.nodeName === 'BR') {
|
|
562
|
-
var nextNode = currentAlignmentNode.nextSibling;
|
|
563
|
-
detach(currentAlignmentNode);
|
|
564
|
-
currentAlignmentNode = nextNode;
|
|
565
|
-
}
|
|
566
|
-
if (!isNOU(currentAlignmentNode)) {
|
|
567
|
-
selectedNodes[i] = currentAlignmentNode.nodeName === 'LI' || this.parent.domNode.isBlockNode(currentAlignmentNode) ?
|
|
568
|
-
currentAlignmentNode : this.gatherElementsAround(currentAlignmentNode);
|
|
569
|
-
var currentSelectNode = selectedNodes[i].nodeName === 'LI' ? selectedNodes[i].parentElement : selectedNodes[i];
|
|
570
|
-
var currentElementCheckNode = currentAlignmentNode.nodeName === '#text' ? currentAlignmentNode.parentElement : currentAlignmentNode;
|
|
571
|
-
currentAlignmentNode = !isNOU(currentElementCheckNode.querySelector('.e-editor-select-end')) ||
|
|
572
|
-
!isNOU(closest(currentAlignmentNode, '.e-editor-select-end')) ?
|
|
573
|
-
null : currentSelectNode.nextSibling;
|
|
574
|
-
if (currentAlignmentNode === null && !isNOU(currentSelectNode.nextSibling) && currentSelectNode.nextSibling.nodeName === 'BR') {
|
|
575
|
-
detach(currentSelectNode.nextSibling);
|
|
576
|
-
}
|
|
577
|
-
}
|
|
578
|
-
i++;
|
|
579
|
-
}
|
|
580
|
-
}
|
|
581
|
-
else {
|
|
582
|
-
if (!this.parent.domNode.isBlockNode(selectedNodes[0])) {
|
|
583
|
-
selectedNodes[0] = this.gatherElementsAround(selectedNodes[0]);
|
|
584
|
-
if (!isNOU(selectedNodes[0].nextSibling) && (selectedNodes[0].nextSibling.nodeName === 'BR')) {
|
|
585
|
-
detach(selectedNodes[0].nextSibling);
|
|
586
|
-
}
|
|
587
|
-
}
|
|
588
|
-
}
|
|
566
|
+
this.parent.domNode.convertToBlockNodes(this.parent.domNode.blockNodes(), true);
|
|
589
567
|
this.setSelectionBRConfig();
|
|
590
568
|
listsNodes = this.parent.domNode.blockNodes();
|
|
591
569
|
}
|
|
@@ -643,7 +621,7 @@ var Lists = /** @class */ (function () {
|
|
|
643
621
|
}
|
|
644
622
|
var elemAtt = void 0;
|
|
645
623
|
elements[i].style.removeProperty('margin-left');
|
|
646
|
-
elemAtt = elements[i].tagName === 'IMG' ? '' : this.domNode.attributes(elements[i]);
|
|
624
|
+
elemAtt = elements[i].tagName === 'IMG' || elements[i].classList.contains('e-editor-select-start') ? '' : this.domNode.attributes(elements[i]);
|
|
647
625
|
if (elements[i].getAttribute('contenteditable') === 'true'
|
|
648
626
|
&& elements[i].childNodes.length === 1 && elements[i].childNodes[0].nodeName === 'TABLE') {
|
|
649
627
|
var listEle = document.createElement(type);
|
|
@@ -767,6 +745,13 @@ var Lists = /** @class */ (function () {
|
|
|
767
745
|
for (var c = 0; c < liParents.length; c++) {
|
|
768
746
|
var node = liParents[c];
|
|
769
747
|
var toFindtopOlUl = true;
|
|
748
|
+
var containsListElements = node;
|
|
749
|
+
while (containsListElements.parentElement) {
|
|
750
|
+
if (containsListElements.parentElement && containsListElements.parentElement.tagName !== 'LI' && containsListElements.parentElement.tagName !== 'OL' && containsListElements.parentElement.tagName !== 'UL') {
|
|
751
|
+
break;
|
|
752
|
+
}
|
|
753
|
+
containsListElements = containsListElements.parentElement;
|
|
754
|
+
}
|
|
770
755
|
if (toFindtopOlUl && (liParents[c].parentElement.parentElement.nodeName === 'OL' || liParents[c].parentElement.parentElement.nodeName === 'UL')) {
|
|
771
756
|
toFindtopOlUl = false;
|
|
772
757
|
var preElement = liParents[c].parentElement.parentElement;
|
|
@@ -786,9 +771,43 @@ var Lists = /** @class */ (function () {
|
|
|
786
771
|
node.previousElementSibling.lastChild.append(node);
|
|
787
772
|
}
|
|
788
773
|
}
|
|
774
|
+
else if (this.domNode.isList(node.previousElementSibling) && containsListElements.contains(node.previousElementSibling) && ((node.tagName === 'OL' || node.tagName === 'UL') && (node.previousElementSibling.nodeName === 'OL' || node.previousElementSibling.nodeName === 'UL'))) {
|
|
775
|
+
var contentNodes = this.domNode.contents(node);
|
|
776
|
+
for (var f = 0; f < contentNodes.length; f++) {
|
|
777
|
+
node.previousElementSibling.appendChild(contentNodes[f]);
|
|
778
|
+
}
|
|
779
|
+
node.parentNode.removeChild(node);
|
|
780
|
+
}
|
|
789
781
|
}
|
|
790
782
|
if (firstNodeOL) {
|
|
791
783
|
firstNodeOL.style.listStyleType = listStyleType;
|
|
784
|
+
var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);
|
|
785
|
+
var listOlUlElements = [];
|
|
786
|
+
if (range.commonAncestorContainer.nodeName === 'UL' || range.commonAncestorContainer.nodeName === 'OL') {
|
|
787
|
+
if (range.commonAncestorContainer instanceof Element) {
|
|
788
|
+
listOlUlElements.push(range.commonAncestorContainer);
|
|
789
|
+
}
|
|
790
|
+
listOlUlElements = listOlUlElements.concat(Array.from(range.commonAncestorContainer.querySelectorAll('ol, ul')));
|
|
791
|
+
}
|
|
792
|
+
else {
|
|
793
|
+
listOlUlElements = Array.from(range.commonAncestorContainer.querySelectorAll('ol, ul'));
|
|
794
|
+
}
|
|
795
|
+
for (var k = 0; k < listOlUlElements.length; k++) {
|
|
796
|
+
var listStyle = void 0;
|
|
797
|
+
var listElements = listOlUlElements[k];
|
|
798
|
+
while (listElements) {
|
|
799
|
+
if (listElements.nodeName === 'OL' || listElements.nodeName === 'OL') {
|
|
800
|
+
if (listElements.style.listStyleType !== '' && listElements.style.listStyleType !== 'none' && listElements.nodeName !== 'LI') {
|
|
801
|
+
listStyle = listElements.style.listStyleType;
|
|
802
|
+
}
|
|
803
|
+
else if (!isNOU(listStyle) && (listElements.style.listStyleType === '' || listElements.style.listStyleType === 'none') &&
|
|
804
|
+
listElements.nodeName !== 'LI' && (listElements.nodeName === 'UL' || listElements.nodeName === 'OL')) {
|
|
805
|
+
listElements.style.listStyleType = listStyle;
|
|
806
|
+
}
|
|
807
|
+
}
|
|
808
|
+
listElements = listElements.querySelector('UL,OL');
|
|
809
|
+
}
|
|
810
|
+
}
|
|
792
811
|
}
|
|
793
812
|
};
|
|
794
813
|
Lists.prototype.findUnSelected = function (temp, elements) {
|
|
@@ -897,7 +916,7 @@ var Lists = /** @class */ (function () {
|
|
|
897
916
|
parentNode.removeAttribute("style");
|
|
898
917
|
}
|
|
899
918
|
}
|
|
900
|
-
var wrapper = '<' +
|
|
919
|
+
var wrapper = '<' + e.enterAction + wrapperclass + this.domNode.attributes(element) + '></' + e.enterAction + '>';
|
|
901
920
|
if (e.enterAction !== 'BR') {
|
|
902
921
|
this.domNode.wrapInner(element, this.domNode.parseHTMLFragment(wrapper));
|
|
903
922
|
}
|
|
@@ -971,48 +990,6 @@ var Lists = /** @class */ (function () {
|
|
|
971
990
|
Lists.prototype.closeTag = function (type) {
|
|
972
991
|
return this.domNode.parseHTMLFragment('<span class="e-rte-list-close-' + type.toLowerCase() + '"></span>');
|
|
973
992
|
};
|
|
974
|
-
Lists.prototype.gatherElementsAround = function (node) {
|
|
975
|
-
var pWrap = document.createElement('p');
|
|
976
|
-
// Insert the new div before the current node
|
|
977
|
-
var currentNode = node.previousSibling;
|
|
978
|
-
var classNode = node.parentNode;
|
|
979
|
-
if (classNode.className === 'e-editor-select-start') {
|
|
980
|
-
node.parentNode.parentNode.insertBefore(pWrap, node.parentNode);
|
|
981
|
-
}
|
|
982
|
-
else if (node.parentNode) {
|
|
983
|
-
node.parentNode.insertBefore(pWrap, node);
|
|
984
|
-
}
|
|
985
|
-
// Gather text and inline elements before the currentNode
|
|
986
|
-
var i = 0;
|
|
987
|
-
while (currentNode !== null && currentNode.nodeName !== 'BR' &&
|
|
988
|
-
!this.parent.domNode.isBlockNode(currentNode)) {
|
|
989
|
-
var prevSibling = currentNode.previousSibling;
|
|
990
|
-
if (currentNode.nodeType === 3 || currentNode.nodeType === 1) {
|
|
991
|
-
if (i === 0) {
|
|
992
|
-
pWrap.appendChild(currentNode);
|
|
993
|
-
}
|
|
994
|
-
else {
|
|
995
|
-
pWrap.insertBefore(currentNode, pWrap.firstChild);
|
|
996
|
-
}
|
|
997
|
-
}
|
|
998
|
-
currentNode = prevSibling;
|
|
999
|
-
i++;
|
|
1000
|
-
}
|
|
1001
|
-
// Add the current node to the new p
|
|
1002
|
-
pWrap.appendChild(node);
|
|
1003
|
-
// Gather text and inline elements after the currentNode
|
|
1004
|
-
currentNode = pWrap.nextSibling ? pWrap.nextSibling : pWrap.parentElement.nextSibling;
|
|
1005
|
-
while (currentNode !== null && currentNode.nodeName !== 'BR' &&
|
|
1006
|
-
!this.parent.domNode.isBlockNode(currentNode)) {
|
|
1007
|
-
var nextSibling = currentNode.nextSibling ?
|
|
1008
|
-
currentNode.nextSibling : currentNode.parentElement.nextSibling;
|
|
1009
|
-
if (currentNode.nodeType === 3 || currentNode.nodeType === 1) {
|
|
1010
|
-
pWrap.appendChild(currentNode);
|
|
1011
|
-
}
|
|
1012
|
-
currentNode = nextSibling;
|
|
1013
|
-
}
|
|
1014
|
-
return pWrap;
|
|
1015
|
-
};
|
|
1016
993
|
return Lists;
|
|
1017
994
|
}());
|
|
1018
995
|
export { Lists };
|
|
@@ -821,7 +821,7 @@ var MsWordPaste = /** @class */ (function () {
|
|
|
821
821
|
!isNormalList) {
|
|
822
822
|
prevList = null;
|
|
823
823
|
}
|
|
824
|
-
var pElement = createElement('p', { className: '
|
|
824
|
+
var pElement = createElement('p', { className: 'MsoNoSpacing' });
|
|
825
825
|
pElement.innerHTML = collection[index].content.join(' ');
|
|
826
826
|
if ((collection[index].nestedLevel === 1) &&
|
|
827
827
|
(listCount === 0 || lfo !== collection[index].listFormatOverride) &&
|
|
@@ -19,5 +19,10 @@ export declare class EnterKeyAction {
|
|
|
19
19
|
private insertBRElement;
|
|
20
20
|
private insertFocusContent;
|
|
21
21
|
private createInsertElement;
|
|
22
|
+
private triggerActionComplete;
|
|
22
23
|
private handleCursorAtTableSide;
|
|
24
|
+
private handleEnterKeyAtImageSide;
|
|
25
|
+
private isTableOrImageStart;
|
|
26
|
+
private isTableOrImageEnd;
|
|
27
|
+
private processedTableImageCursor;
|
|
23
28
|
}
|