@syncfusion/ej2-richtexteditor 20.4.43 → 20.4.44
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 +12 -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 +84 -27
- package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
- package/dist/es6/ej2-richtexteditor.es5.js +84 -27
- 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 +9 -9
- package/src/editor-manager/plugin/lists.js +6 -1
- package/src/editor-manager/plugin/selection-commands.js +57 -17
- package/src/rich-text-editor/base/rich-text-editor.js +4 -4
- package/src/rich-text-editor/renderer/audio-module.js +4 -1
- package/src/rich-text-editor/renderer/image-module.js +4 -1
- package/src/rich-text-editor/renderer/table-module.js +5 -2
- package/src/rich-text-editor/renderer/video-module.js +4 -1
|
@@ -11182,7 +11182,7 @@ class Lists {
|
|
|
11182
11182
|
range.startContainer.parentElement.closest('LI');
|
|
11183
11183
|
const endNode = range.endContainer.nodeName === 'LI' ? range.endContainer :
|
|
11184
11184
|
range.endContainer.parentElement.closest('LI');
|
|
11185
|
-
// Checks for Image, Audio , Video Element inside List Element
|
|
11185
|
+
// Checks for Image, Audio , Video Element inside List Element
|
|
11186
11186
|
let hasMediaElem = false;
|
|
11187
11187
|
if (!isNullOrUndefined(startNode)) {
|
|
11188
11188
|
const videoElemList = startNode.querySelectorAll('.e-video-clickelem');
|
|
@@ -11809,6 +11809,11 @@ class Lists {
|
|
|
11809
11809
|
}
|
|
11810
11810
|
node.parentNode.removeChild(node);
|
|
11811
11811
|
}
|
|
11812
|
+
else if (!isNullOrUndefined(node.getAttribute('level'))) {
|
|
11813
|
+
if (node.tagName === node.previousElementSibling.tagName) {
|
|
11814
|
+
node.previousElementSibling.lastChild.append(node);
|
|
11815
|
+
}
|
|
11816
|
+
}
|
|
11812
11817
|
}
|
|
11813
11818
|
}
|
|
11814
11819
|
findUnSelected(temp, elements) {
|
|
@@ -15622,14 +15627,17 @@ class SelectionCommands {
|
|
|
15622
15627
|
isSubSup = formatNode === null ? false : true;
|
|
15623
15628
|
}
|
|
15624
15629
|
}
|
|
15630
|
+
else if ((format === 'fontsize' || format === 'fontname' || format === 'fontcolor') && range.startContainer.parentElement === endNode) {
|
|
15631
|
+
formatNode = null;
|
|
15632
|
+
}
|
|
15625
15633
|
if (index === 0 && formatNode === null) {
|
|
15626
15634
|
isFormat = true;
|
|
15627
15635
|
}
|
|
15628
15636
|
if (formatNode !== null && (!isFormat || isFontStyle)) {
|
|
15629
15637
|
nodes[index] = this.removeFormat(nodes, index, formatNode, isCursor, isFormat, isFontStyle, range, nodeCutter, format, value, domSelection, endNode, domNode);
|
|
15630
15638
|
}
|
|
15631
|
-
else {
|
|
15632
|
-
nodes[index] = this.insertFormat(docElement, nodes, index, formatNode, isCursor, isFormat, isFontStyle, range, nodeCutter, format, value);
|
|
15639
|
+
else if (range.startContainer.parentElement !== endNode || (range.commonAncestorContainer === endNode || nodes.length === 1)) {
|
|
15640
|
+
nodes[index] = this.insertFormat(docElement, nodes, index, formatNode, isCursor, isFormat, isFontStyle, range, nodeCutter, format, value, domNode, endNode);
|
|
15633
15641
|
}
|
|
15634
15642
|
domSelection = this.applySelection(nodes, domSelection, nodeCutter, index, isCollapsed);
|
|
15635
15643
|
}
|
|
@@ -15884,10 +15892,24 @@ class SelectionCommands {
|
|
|
15884
15892
|
}
|
|
15885
15893
|
return nodes[index];
|
|
15886
15894
|
}
|
|
15887
|
-
static insertFormat(docElement, nodes, index, formatNode, isCursor, isFormat, isFontStyle, range, nodeCutter, format, value) {
|
|
15895
|
+
static insertFormat(docElement, nodes, index, formatNode, isCursor, isFormat, isFontStyle, range, nodeCutter, format, value, domNode, endNode) {
|
|
15896
|
+
let rootBlockNode;
|
|
15888
15897
|
if (!isCursor) {
|
|
15889
15898
|
if ((formatNode === null && isFormat) || isFontStyle) {
|
|
15890
15899
|
if (nodes[index].nodeName !== 'BR') {
|
|
15900
|
+
if (format === 'fontsize' || format === 'fontname' || format === 'fontcolor') {
|
|
15901
|
+
let rangeNode = nodes[index];
|
|
15902
|
+
while (rangeNode && !domNode.isBlockNode(rangeNode) && rangeNode !== endNode) {
|
|
15903
|
+
if (domNode.isBlockNode(rangeNode.parentElement)) {
|
|
15904
|
+
rootBlockNode = rangeNode;
|
|
15905
|
+
}
|
|
15906
|
+
rangeNode = rangeNode.parentElement;
|
|
15907
|
+
}
|
|
15908
|
+
if (rootBlockNode && rootBlockNode.nodeType !== 3) {
|
|
15909
|
+
nodeCutter.SplitNode(range, rootBlockNode, true).cloneNode(true);
|
|
15910
|
+
nodeCutter.SplitNode(range, rootBlockNode, false).cloneNode(false);
|
|
15911
|
+
}
|
|
15912
|
+
}
|
|
15891
15913
|
nodes[index] = nodeCutter.GetSpliceNode(range, nodes[index]);
|
|
15892
15914
|
nodes[index].textContent = nodeCutter.TrimLineBreak(nodes[index].textContent);
|
|
15893
15915
|
}
|
|
@@ -15897,24 +15919,47 @@ class SelectionCommands {
|
|
|
15897
15919
|
}
|
|
15898
15920
|
else if (!(isFontStyle === true && value === '')) {
|
|
15899
15921
|
const element = this.GetFormatNode(format, value);
|
|
15900
|
-
if (format === 'fontsize' || format === 'fontcolor') {
|
|
15901
|
-
|
|
15902
|
-
|
|
15903
|
-
|
|
15904
|
-
parentElement
|
|
15905
|
-
|
|
15922
|
+
if (format === 'fontsize' || format === 'fontcolor' || format === 'fontname') {
|
|
15923
|
+
if (format !== 'fontname') {
|
|
15924
|
+
let liElement = nodes[index].parentElement;
|
|
15925
|
+
let parentElement = nodes[index].parentElement;
|
|
15926
|
+
while (!isNullOrUndefined(parentElement) && parentElement.tagName.toLowerCase() !== 'li') {
|
|
15927
|
+
parentElement = parentElement.parentElement;
|
|
15928
|
+
liElement = parentElement;
|
|
15929
|
+
}
|
|
15930
|
+
if (!isNullOrUndefined(liElement) && liElement.tagName.toLowerCase() === 'li' &&
|
|
15931
|
+
liElement.textContent.trim() === nodes[index].textContent.trim()) {
|
|
15932
|
+
if (format === 'fontsize') {
|
|
15933
|
+
liElement.style.fontSize = value;
|
|
15934
|
+
}
|
|
15935
|
+
else {
|
|
15936
|
+
liElement.style.color = value;
|
|
15937
|
+
liElement.style.textDecoration = 'inherit';
|
|
15938
|
+
}
|
|
15939
|
+
}
|
|
15906
15940
|
}
|
|
15907
|
-
if (
|
|
15908
|
-
|
|
15909
|
-
|
|
15910
|
-
|
|
15941
|
+
if (rootBlockNode && rootBlockNode.nodeType !== 3) {
|
|
15942
|
+
const save = new NodeSelection();
|
|
15943
|
+
save.save(range, docElement);
|
|
15944
|
+
domNode.setMarker(save);
|
|
15945
|
+
var cloneNode = rootBlockNode.cloneNode(true);
|
|
15946
|
+
element.appendChild(cloneNode);
|
|
15947
|
+
domNode.replaceWith(rootBlockNode, element.outerHTML);
|
|
15948
|
+
const currentStartNode = endNode.querySelector('.e-editor-select-start');
|
|
15949
|
+
const currrentEndNode = endNode.querySelector('.e-editor-select-end');
|
|
15950
|
+
if (index === 0) {
|
|
15951
|
+
nodes[index] = currentStartNode ? currentStartNode.lastChild : nodes[index];
|
|
15911
15952
|
}
|
|
15912
|
-
|
|
15913
|
-
|
|
15914
|
-
|
|
15953
|
+
if (range.startContainer.parentElement === endNode) {
|
|
15954
|
+
if (nodes.length > 1) {
|
|
15955
|
+
nodes[nodes.length - 1] = currrentEndNode ? currrentEndNode.lastChild : nodes[index];
|
|
15956
|
+
}
|
|
15915
15957
|
}
|
|
15958
|
+
domNode.saveMarker(save, null);
|
|
15959
|
+
}
|
|
15960
|
+
else {
|
|
15961
|
+
nodes[index] = this.applyStyles(nodes, index, element);
|
|
15916
15962
|
}
|
|
15917
|
-
nodes[index] = this.applyStyles(nodes, index, element);
|
|
15918
15963
|
if (format === 'fontsize') {
|
|
15919
15964
|
const bg = closest(nodes[index].parentElement, 'span[style*=' + 'background-color' + ']');
|
|
15920
15965
|
if (!isNullOrUndefined(bg)) {
|
|
@@ -21963,7 +22008,6 @@ class Image {
|
|
|
21963
22008
|
if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection) &&
|
|
21964
22009
|
originalEvent.code !== 'KeyK') {
|
|
21965
22010
|
range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());
|
|
21966
|
-
save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());
|
|
21967
22011
|
selectNodeEle = this.parent.formatter.editorManager.nodeSelection.getNodeCollection(range);
|
|
21968
22012
|
selectParentEle = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);
|
|
21969
22013
|
if (!originalEvent.ctrlKey && originalEvent.key && (originalEvent.key.length === 1 || originalEvent.action === 'enter') &&
|
|
@@ -21982,6 +22026,8 @@ class Image {
|
|
|
21982
22026
|
}
|
|
21983
22027
|
if (originalEvent.keyCode === 8 || originalEvent.keyCode === 46) {
|
|
21984
22028
|
if (selectNodeEle && selectNodeEle[0].nodeName === 'IMG' && selectNodeEle.length < 1) {
|
|
22029
|
+
if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection))
|
|
22030
|
+
save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());
|
|
21985
22031
|
originalEvent.preventDefault();
|
|
21986
22032
|
const event = {
|
|
21987
22033
|
selectNode: selectNodeEle, selection: save, selectParent: selectParentEle,
|
|
@@ -22040,6 +22086,8 @@ class Image {
|
|
|
22040
22086
|
}
|
|
22041
22087
|
break;
|
|
22042
22088
|
case 'insert-image':
|
|
22089
|
+
if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection))
|
|
22090
|
+
save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());
|
|
22043
22091
|
this.openDialog(true, originalEvent, save, selectNodeEle, selectParentEle);
|
|
22044
22092
|
originalEvent.preventDefault();
|
|
22045
22093
|
break;
|
|
@@ -23811,7 +23859,6 @@ class Audio {
|
|
|
23811
23859
|
if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection) &&
|
|
23812
23860
|
originalEvent.code !== 'KeyK') {
|
|
23813
23861
|
range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());
|
|
23814
|
-
save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());
|
|
23815
23862
|
selectNodeEle = this.parent.formatter.editorManager.nodeSelection.getNodeCollection(range);
|
|
23816
23863
|
selectParentEle = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);
|
|
23817
23864
|
if (!originalEvent.ctrlKey && originalEvent.key && (originalEvent.key.length === 1 || originalEvent.action === 'enter') &&
|
|
@@ -23827,6 +23874,8 @@ class Audio {
|
|
|
23827
23874
|
}
|
|
23828
23875
|
if (originalEvent.keyCode === 8 || originalEvent.keyCode === 46) {
|
|
23829
23876
|
if (selectNodeEle && this.isAudioElem(selectNodeEle[0]) && selectNodeEle.length < 1) {
|
|
23877
|
+
if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection))
|
|
23878
|
+
save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());
|
|
23830
23879
|
originalEvent.preventDefault();
|
|
23831
23880
|
const event = {
|
|
23832
23881
|
selectNode: selectNodeEle, selection: save, selectParent: selectParentEle,
|
|
@@ -23875,6 +23924,8 @@ class Audio {
|
|
|
23875
23924
|
}
|
|
23876
23925
|
break;
|
|
23877
23926
|
case 'insert-audio':
|
|
23927
|
+
if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection))
|
|
23928
|
+
save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());
|
|
23878
23929
|
this.openDialog(true, originalEvent, save, selectNodeEle, selectParentEle);
|
|
23879
23930
|
originalEvent.preventDefault();
|
|
23880
23931
|
break;
|
|
@@ -25108,7 +25159,6 @@ class Video {
|
|
|
25108
25159
|
if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection) &&
|
|
25109
25160
|
originalEvent.code !== 'KeyK') {
|
|
25110
25161
|
range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());
|
|
25111
|
-
save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());
|
|
25112
25162
|
selectNodeEle = this.parent.formatter.editorManager.nodeSelection.getNodeCollection(range);
|
|
25113
25163
|
selectParentEle = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);
|
|
25114
25164
|
if (!originalEvent.ctrlKey && originalEvent.key && (originalEvent.key.length === 1 || originalEvent.action === 'enter') &&
|
|
@@ -25128,6 +25178,8 @@ class Video {
|
|
|
25128
25178
|
}
|
|
25129
25179
|
if (originalEvent.keyCode === 8 || originalEvent.keyCode === 46) {
|
|
25130
25180
|
if (selectNodeEle && (selectNodeEle[0].nodeName === 'VIDEO' || this.isEmbedVidElem(selectNodeEle[0])) && selectNodeEle.length < 1) {
|
|
25181
|
+
if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection))
|
|
25182
|
+
save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());
|
|
25131
25183
|
originalEvent.preventDefault();
|
|
25132
25184
|
const event = {
|
|
25133
25185
|
selectNode: selectNodeEle, selection: save, selectParent: selectParentEle,
|
|
@@ -25180,6 +25232,8 @@ class Video {
|
|
|
25180
25232
|
}
|
|
25181
25233
|
break;
|
|
25182
25234
|
case 'insert-video':
|
|
25235
|
+
if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection))
|
|
25236
|
+
save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());
|
|
25183
25237
|
this.openDialog(true, originalEvent, save, selectNodeEle, selectParentEle);
|
|
25184
25238
|
originalEvent.preventDefault();
|
|
25185
25239
|
break;
|
|
@@ -26363,14 +26417,15 @@ class Table {
|
|
|
26363
26417
|
}
|
|
26364
26418
|
if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection) && this.contentModule
|
|
26365
26419
|
&& event.code !== 'KeyK') {
|
|
26420
|
+
let selection;
|
|
26366
26421
|
const range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());
|
|
26367
|
-
const selection = this.parent.formatter.editorManager.
|
|
26368
|
-
nodeSelection.save(range, this.contentModule.getDocument());
|
|
26369
26422
|
let ele = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range)[0];
|
|
26370
26423
|
ele = (ele && ele.tagName !== 'TD' && ele.tagName !== 'TH') ? ele.parentElement : ele;
|
|
26371
26424
|
if ((event.keyCode === 8 || event.keyCode === 46) ||
|
|
26372
26425
|
(event.ctrlKey && event.keyCode === 88)) {
|
|
26373
26426
|
if (ele && ele.tagName === 'TBODY') {
|
|
26427
|
+
if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection) && this.contentModule)
|
|
26428
|
+
selection = this.parent.formatter.editorManager.nodeSelection.save(range, this.contentModule.getDocument());
|
|
26374
26429
|
event.preventDefault();
|
|
26375
26430
|
proxy.removeTable(selection, event, true);
|
|
26376
26431
|
}
|
|
@@ -26384,6 +26439,8 @@ class Table {
|
|
|
26384
26439
|
ele = !isNullOrUndefined(closestTd) && this.parent.inputElement.contains(closestTd) ? closestTd : ele;
|
|
26385
26440
|
}
|
|
26386
26441
|
if (ele && (ele.tagName === 'TD' || ele.tagName === 'TH')) {
|
|
26442
|
+
if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection) && this.contentModule)
|
|
26443
|
+
selection = this.parent.formatter.editorManager.nodeSelection.save(range, this.contentModule.getDocument());
|
|
26387
26444
|
switch (event.keyCode) {
|
|
26388
26445
|
case 9:
|
|
26389
26446
|
case 37:
|
|
@@ -29687,6 +29744,10 @@ let RichTextEditor = class RichTextEditor extends Component {
|
|
|
29687
29744
|
if (this.isDestroyed || !this.isRendered) {
|
|
29688
29745
|
return;
|
|
29689
29746
|
}
|
|
29747
|
+
if (!isNullOrUndefined(this.timeInterval)) {
|
|
29748
|
+
clearInterval(this.timeInterval);
|
|
29749
|
+
this.timeInterval = null;
|
|
29750
|
+
}
|
|
29690
29751
|
if (this.element.offsetParent === null) {
|
|
29691
29752
|
if (!isNullOrUndefined(this.toolbarModule)) {
|
|
29692
29753
|
this.toolbarModule.destroy();
|
|
@@ -29696,10 +29757,6 @@ let RichTextEditor = class RichTextEditor extends Component {
|
|
|
29696
29757
|
}
|
|
29697
29758
|
this.notify(destroy, {});
|
|
29698
29759
|
this.destroyDependentModules();
|
|
29699
|
-
if (!isNullOrUndefined(this.timeInterval)) {
|
|
29700
|
-
clearInterval(this.timeInterval);
|
|
29701
|
-
this.timeInterval = null;
|
|
29702
|
-
}
|
|
29703
29760
|
this.unWireEvents();
|
|
29704
29761
|
if (this.originalElement.tagName === 'TEXTAREA') {
|
|
29705
29762
|
this.element.parentElement.insertBefore(this.valueContainer, this.element);
|