@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.
@@ -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
- let liElement = nodes[index].parentElement;
15902
- let parentElement = nodes[index].parentElement;
15903
- while (!isNullOrUndefined(parentElement) && parentElement.tagName.toLowerCase() !== 'li') {
15904
- parentElement = parentElement.parentElement;
15905
- liElement = parentElement;
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 (!isNullOrUndefined(liElement) && liElement.tagName.toLowerCase() === 'li' &&
15908
- liElement.textContent.trim() === nodes[index].textContent.trim()) {
15909
- if (format === 'fontsize') {
15910
- liElement.style.fontSize = value;
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
- else {
15913
- liElement.style.color = value;
15914
- liElement.style.textDecoration = 'inherit';
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);