@syncfusion/ej2-richtexteditor 27.2.2 → 27.2.4

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.
@@ -3048,11 +3048,11 @@ var formatsLocale = [
3048
3048
  var numberFormatListLocale = [
3049
3049
  { locale: 'numberFormatListNone', value: 'none' },
3050
3050
  { locale: 'numberFormatListNumber', value: 'decimal' },
3051
- { locale: 'numberFormatListLowerAlpha', value: 'lower-alpha' },
3052
- { locale: 'numberFormatListUpperAlpha', value: 'upper-alpha' },
3053
- { locale: 'numberFormatListLowerRoman', value: 'lower-roman' },
3054
- { locale: 'numberFormatListUpperRoman', value: 'upper-roman' },
3055
- { locale: 'numberFormatListLowerGreek', value: 'lower-greek' }
3051
+ { locale: 'numberFormatListLowerAlpha', value: 'lowerAlpha' },
3052
+ { locale: 'numberFormatListUpperAlpha', value: 'upperAlpha' },
3053
+ { locale: 'numberFormatListLowerRoman', value: 'lowerRoman' },
3054
+ { locale: 'numberFormatListUpperRoman', value: 'upperRoman' },
3055
+ { locale: 'numberFormatListLowerGreek', value: 'lowerGreek' }
3056
3056
  ];
3057
3057
  var bulletFormatListLocale = [
3058
3058
  { locale: 'bulletFormatListNone', value: 'none' },
@@ -3128,6 +3128,9 @@ function hasClass(element, className) {
3128
3128
  function getDropDownValue(items, value, type, returnType) {
3129
3129
  var data;
3130
3130
  var result;
3131
+ if (items.length === 0 && value === 'FontSize') {
3132
+ return 'Font Size';
3133
+ }
3131
3134
  for (var k = 0; k < items.length; k++) {
3132
3135
  if (type === 'value' && items[k].value.toLocaleLowerCase() === value.toLocaleLowerCase()) {
3133
3136
  data = items[k];
@@ -3276,7 +3279,7 @@ function setToolbarStatus(e, isPopToolbar, self) {
3276
3279
  }
3277
3280
  var fontNameItems = e.parent.fontFamily.items;
3278
3281
  result = value === 'empty' ? '' : getDropDownValue(fontNameItems, value, 'value', 'text');
3279
- var fontNameContent = isNullOrUndefined(e.parent.fontFamily.default) ? fontNameItems[0].text :
3282
+ var fontNameContent = isNullOrUndefined(e.parent.fontFamily.default) ? (fontNameItems.length === 0) ? self.serviceLocator.getService('rteLocale').getConstant('fontName') : fontNameItems[0].text :
3280
3283
  e.parent.fontFamily.default;
3281
3284
  var name_1 = (isNullOrUndefined(result) ? fontNameContent : result) === 'Default' ? self.serviceLocator.getService('rteLocale').getConstant('fontName')
3282
3285
  : (isNullOrUndefined(result) ? fontNameContent : result);
@@ -3293,9 +3296,9 @@ function setToolbarStatus(e, isPopToolbar, self) {
3293
3296
  break;
3294
3297
  }
3295
3298
  var fontSizeItems = e.parent.fontSize.items;
3296
- var fontSizeContent = isNullOrUndefined(e.parent.fontSize.default) ? fontSizeItems[0].text :
3299
+ var fontSizeContent = isNullOrUndefined(e.parent.fontSize.default) ? (fontSizeItems.length === 0) ? self.serviceLocator.getService('rteLocale').getConstant('fontSize') : fontSizeItems[0].text :
3297
3300
  e.parent.fontSize.default;
3298
- var fontSizeToolbarText = getDropDownValue(fontSizeItems, (value === '' ? fontSizeContent.replace(/\s/g, '') : value), (fontSizeContent.replace(/\s/g, '') === fontSizeItems[0].text && value === '') ? 'text' : 'value', 'text');
3301
+ var fontSizeToolbarText = getDropDownValue(fontSizeItems, (value === '' ? fontSizeContent.replace(/\s/g, '') : value), (fontSizeItems.length > 0 && fontSizeItems[0] && fontSizeContent.replace(/\s/g, '') === fontSizeItems[0].text && value === '') ? 'text' : 'value', 'text');
3299
3302
  result = value === 'empty' ? '' : (fontSizeToolbarText === 'Default') ? self.serviceLocator.getService('rteLocale').getConstant('fontSize') : fontSizeToolbarText;
3300
3303
  dropDown.fontSizeDropDown.content = ('<span style="display: inline-flex;' +
3301
3304
  'width:' + e.parent.fontSize.width + '" >' +
@@ -5684,7 +5687,7 @@ var ToolbarRenderer = /** @__PURE__ @class */ (function () {
5684
5687
  alignEle = alignEle.parentElement;
5685
5688
  }
5686
5689
  var alignStyle = window.getComputedStyle(alignEle).textAlign;
5687
- if (args.items[0].command === 'Alignments') {
5690
+ if (!isNullOrUndefined(args.items[0]) && args.items[0].command === 'Alignments') {
5688
5691
  if ((args.items[0].text === 'Align Left' && (alignStyle === 'left') || alignStyle === 'start')) {
5689
5692
  addClass([args.element.childNodes[0]], 'e-active');
5690
5693
  break;
@@ -5707,7 +5710,7 @@ var ToolbarRenderer = /** @__PURE__ @class */ (function () {
5707
5710
  //image preselect
5708
5711
  var closestNode = startNode.closest('img');
5709
5712
  var imageEle = closestNode ? closestNode : startNode.querySelector('img');
5710
- if (args.items[0].command === 'Images') {
5713
+ if (!isNullOrUndefined(args.items[0]) && args.items[0].command === 'Images') {
5711
5714
  if (!isNullOrUndefined(imageEle)) {
5712
5715
  var index = void 0;
5713
5716
  if (imageEle.classList.contains('e-imgleft') || imageEle.classList.contains('e-imginline')) {
@@ -5725,7 +5728,7 @@ var ToolbarRenderer = /** @__PURE__ @class */ (function () {
5725
5728
  }
5726
5729
  }
5727
5730
  //Formats preselect
5728
- if (args.items[0].command === 'Formats' || args.items[0].command === 'Font') {
5731
+ if (!isNullOrUndefined(args.items[0]) && (args.items[0].command === 'Formats' || args.items[0].command === 'Font')) {
5729
5732
  var fontName_1 = [];
5730
5733
  var formats_1 = [];
5731
5734
  var hasUpdatedActive = false;
@@ -8769,9 +8772,17 @@ var Image$1 = /** @__PURE__ @class */ (function () {
8769
8772
  }
8770
8773
  };
8771
8774
  proxy.inputUrl.setAttribute('disabled', 'true');
8772
- if (isNullOrUndefined(proxy.parent.insertImageSettings.saveUrl) && _this.isAllowedTypes
8773
- && !isNullOrUndefined(_this.dialogObj) && selectArgs.filesData[0].size <= _this.uploadObj.maxFileSize) {
8774
- _this.dialogObj.getButtons(0).element.removeAttribute('disabled');
8775
+ if (!isNullOrUndefined(_this.dialogObj)) {
8776
+ var button = _this.dialogObj.getButtons(0);
8777
+ if (!isNullOrUndefined(button)) {
8778
+ if (isNullOrUndefined(proxy.parent.insertImageSettings.saveUrl) && _this.isAllowedTypes
8779
+ && selectArgs.filesData[0].size <= _this.uploadObj.maxFileSize) {
8780
+ button.element.removeAttribute('disabled');
8781
+ }
8782
+ else {
8783
+ button.element.setAttribute('disabled', 'true');
8784
+ }
8785
+ }
8775
8786
  }
8776
8787
  });
8777
8788
  reader_1.readAsDataURL(selectArgs.filesData[0].rawFile);
@@ -15697,11 +15708,11 @@ var DropDownButtons = /** @__PURE__ @class */ (function () {
15697
15708
  command: { value: 'Font', enumerable: true }, subCommand: { value: 'FontName', enumerable: true }
15698
15709
  });
15699
15710
  });
15700
- var fontNameContent = isNullOrUndefined(_this.parent.fontFamily.default) ? fontItem[0].text :
15711
+ var fontNameContent = isNullOrUndefined(_this.parent.fontFamily.default) ? fontItem.length === 0 ? '' : fontItem[0].text :
15701
15712
  _this.parent.fontFamily.default;
15702
15713
  _this.fontNameDropDown = _this.toolbarRenderer.renderDropDownButton({
15703
15714
  iconCss: ((type === 'quick') ? 'e-font-name e-icons' : ''),
15704
- content: _this.dropdownContent(_this.parent.fontFamily.width, type, ((type === 'quick') ? '' : (getDropDownValue(fontItem, fontNameContent, 'text', 'text') === 'Default' ? _this.i10n.getConstant('fontName') : getDropDownValue(fontItem, fontNameContent, 'text', 'text')))),
15715
+ content: _this.dropdownContent(_this.parent.fontFamily.width, type, ((fontItem.length === 0) ? _this.i10n.getConstant('fontName') : (type === 'quick') ? '' : (getDropDownValue(fontItem, fontNameContent, 'text', 'text') === 'Default' ? _this.i10n.getConstant('fontName') : getDropDownValue(fontItem, fontNameContent, 'text', 'text')))),
15705
15716
  cssClass: CLS_DROPDOWN_POPUP + ' ' + CLS_DROPDOWN_ITEMS + ' ' + CLS_FONT_NAME_TB_BTN,
15706
15717
  itemName: 'FontName', items: fontItem, element: targetElement
15707
15718
  });
@@ -15720,11 +15731,11 @@ var DropDownButtons = /** @__PURE__ @class */ (function () {
15720
15731
  command: { value: 'Font', enumerable: true }, subCommand: { value: 'FontSize', enumerable: true }
15721
15732
  });
15722
15733
  });
15723
- var fontSizeContent = isNullOrUndefined(_this.parent.fontSize.default) ? fontsize[0].text :
15734
+ var fontSizeContent = isNullOrUndefined(_this.parent.fontSize.default) ? fontsize.length === 0 ? '' : fontsize[0].text :
15724
15735
  _this.parent.fontSize.default;
15725
15736
  var fontSizeDropDownContent = ((fontSizeContent === 'Default') ? getDropDownValue(fontsize, fontSizeContent.replace(/\s/g, ''), 'text', 'text') : getDropDownValue(fontsize, fontSizeContent.replace(/\s/g, ''), 'value', 'text'));
15726
15737
  _this.fontSizeDropDown = _this.toolbarRenderer.renderDropDownButton({
15727
- content: _this.dropdownContent(_this.parent.fontSize.width, type, getFormattedFontSize((fontSizeDropDownContent === 'Default') ? _this.i10n.getConstant('fontSize') : fontSizeDropDownContent)),
15738
+ content: _this.dropdownContent(_this.parent.fontSize.width, type, fontsize.length === 0 ? _this.i10n.getConstant('fontSize') : (getFormattedFontSize((fontSizeDropDownContent === 'Default') ? _this.i10n.getConstant('fontSize') : fontSizeDropDownContent))),
15728
15739
  cssClass: CLS_DROPDOWN_POPUP + ' ' + CLS_DROPDOWN_ITEMS + ' ' + CLS_FONT_SIZE_TB_BTN,
15729
15740
  itemName: 'FontSize', items: fontsize, element: targetElement
15730
15741
  });
@@ -16610,6 +16621,13 @@ var Toolbar = /** @__PURE__ @class */ (function () {
16610
16621
  target: this.tbElement,
16611
16622
  cssClass: this.parent.getCssClass()
16612
16623
  });
16624
+ if (this.parent.element.classList.contains('e-rte-full-screen')) {
16625
+ this.updateItem({
16626
+ targetItem: 'Maximize',
16627
+ updateItem: 'Minimize',
16628
+ baseToolbar: this.parent.getBaseToolbarObject()
16629
+ });
16630
+ }
16613
16631
  if (!this.parent.inlineMode.enable) {
16614
16632
  if (this.parent.toolbarSettings.enableFloating) {
16615
16633
  this.checkIsTransformChild();
@@ -23465,7 +23483,7 @@ var NodeCutter = /** @__PURE__ @class */ (function () {
23465
23483
  fragment = this.spliceEmptyNode(fragment, false);
23466
23484
  if (fragment && fragment.childNodes.length > 0) {
23467
23485
  var isEmpty = (fragment.childNodes.length === 1 && fragment.childNodes[0].nodeName !== 'IMG' && !(fragment.querySelectorAll('img').length > 0)
23468
- && this.isRteElm(fragment) && fragment.textContent.trim() === '' && fragment.textContent !== ' ' && fragment.textContent.charCodeAt(0) !== 160) ? true : false;
23486
+ && this.isRteElm(fragment) && fragment.textContent.trim() === '' && fragment.textContent.charCodeAt(0) !== 32 && fragment.textContent.charCodeAt(0) !== 160) ? true : false;
23469
23487
  if (!isEmpty) {
23470
23488
  if (node) {
23471
23489
  InsertMethods.AppendBefore(fragment, node);
@@ -23486,11 +23504,16 @@ var NodeCutter = /** @__PURE__ @class */ (function () {
23486
23504
  fragment = this.spliceEmptyNode(fragment, true);
23487
23505
  if (fragment && fragment.childNodes.length > 0) {
23488
23506
  var isEmpty = (fragment.childNodes.length === 1 && fragment.childNodes[0].nodeName !== 'IMG'
23489
- && this.isRteElm(fragment) && fragment.textContent.trim() === '' && fragment.textContent !== ' ' && fragment.textContent.charCodeAt(0) !== 160) ? true : false;
23507
+ && this.isRteElm(fragment) && fragment.textContent.trim() === '' && fragment.textContent.charCodeAt(0) !== 32 && fragment.textContent.charCodeAt(0) !== 160) ? true : false;
23490
23508
  if (!isEmpty) {
23491
23509
  if (node) {
23492
23510
  InsertMethods.AppendBefore(fragment, node, true);
23493
23511
  }
23512
+ else if (parent_1.childNodes.length > 1 && parent_1.childNodes.length !== index) {
23513
+ node = parent_1.childNodes[parent_1.childNodes.length - 1];
23514
+ InsertMethods.AppendBefore(fragment, node, true);
23515
+ node = node.nextSibling;
23516
+ }
23494
23517
  else {
23495
23518
  parent_1.appendChild(fragment);
23496
23519
  var divNode = document.createElement('div');
@@ -27744,8 +27767,10 @@ var SelectionCommands = /** @__PURE__ @class */ (function () {
27744
27767
  range.startContainer.textContent.substring(range.startOffset, range.startContainer.textContent.length) :
27745
27768
  range.startContainer.textContent;
27746
27769
  var nodeText = nodes[index].textContent;
27770
+ var isParentNodeSameAsParentElement = nodes[0].parentElement.nodeName === nodes[0].parentElement.parentElement.nodeName;
27747
27771
  if (!(range.startContainer === range.endContainer && range.startOffset === 0
27748
- && range.endOffset === range.startContainer.length)) {
27772
+ && range.endOffset === range.startContainer.length
27773
+ && (range.startContainer.textContent === formatNode.textContent || isParentNodeSameAsParentElement))) {
27749
27774
  var nodeIndex = [];
27750
27775
  var cloneNode = nodes[index];
27751
27776
  var clonedElement = cloneNode;
@@ -27766,10 +27791,19 @@ var SelectionCommands = /** @__PURE__ @class */ (function () {
27766
27791
  if (!isCursor) {
27767
27792
  while (cloneNode && cloneNode.childNodes.length > 0 && ((nodeIndex.length - 1) >= 0)
27768
27793
  && (cloneNode.childNodes.length > nodeIndex[nodeIndex.length - 1])) {
27769
- cloneNode = cloneNode.childNodes[nodeIndex[nodeIndex.length - 1]];
27770
- nodeIndex.pop();
27794
+ if (cloneNode.childNodes.length > 1 && nodeIndex.length > 1) {
27795
+ cloneNode = cloneNode.childNodes[nodeIndex[nodeIndex.length - 2]];
27796
+ break;
27797
+ }
27798
+ else {
27799
+ cloneNode = cloneNode.childNodes[nodeIndex[nodeIndex.length - 1]];
27800
+ nodeIndex.pop();
27801
+ }
27771
27802
  }
27772
27803
  if (nodes[index].nodeName !== 'BR') {
27804
+ while (cloneNode.nodeType === 1 && cloneNode.childNodes.length > 0) {
27805
+ cloneNode = cloneNode.childNodes[0];
27806
+ }
27773
27807
  if (cloneNode.nodeType === 3 && !(isCursor && cloneNode.nodeValue === '')) {
27774
27808
  nodes[index] = cloneNode;
27775
27809
  }
@@ -32075,7 +32109,10 @@ var HtmlEditor = /** @__PURE__ @class */ (function () {
32075
32109
  var editorValue = currentRange_1.startContainer.textContent.slice(0, currentRange_1.startOffset);
32076
32110
  var orderedList_1 = this.isOrderedList(editorValue);
32077
32111
  var unOrderedList = this.isUnOrderedList(editorValue);
32078
- var hasSplitedText = this.hasMultipleTextNode(currentRange_1);
32112
+ var hasSplitedText = false;
32113
+ if (orderedList_1 || unOrderedList) {
32114
+ hasSplitedText = this.hasMultipleTextNode(currentRange_1);
32115
+ }
32079
32116
  if (!hasSplitedText && (orderedList_1 && !unOrderedList || unOrderedList && !orderedList_1)) {
32080
32117
  var eventArgs_1 = {
32081
32118
  callBack: null,
@@ -32145,6 +32182,11 @@ var HtmlEditor = /** @__PURE__ @class */ (function () {
32145
32182
  HtmlEditor.prototype.hasMultipleTextNode = function (range) {
32146
32183
  if (range && range.startContainer && range.startContainer.parentNode) {
32147
32184
  var parentNode = range.startContainer.parentNode;
32185
+ if (range.startContainer.previousElementSibling &&
32186
+ range.startContainer.previousElementSibling.classList.contains('e-mention-chip')
32187
+ && !range.startContainer.previousElementSibling.isContentEditable) {
32188
+ return true;
32189
+ }
32148
32190
  if (this.parent.enterKey === 'BR' || closest(parentNode, 'table')) {
32149
32191
  return false;
32150
32192
  }
@@ -32230,10 +32272,21 @@ var HtmlEditor = /** @__PURE__ @class */ (function () {
32230
32272
  // eslint-disable-next-line
32231
32273
  lastNode, lastNode.textContent.length);
32232
32274
  }
32233
- if (this.oldRangeElement.nodeName !== '#text' && this.oldRangeElement.querySelectorAll('BR').length === 1) {
32234
- detach(this.oldRangeElement.querySelector('BR'));
32275
+ var checkParent = false;
32276
+ if (this.oldRangeElement && this.oldRangeElement.nodeName !== '#text' && this.oldRangeElement.querySelectorAll('BR').length === 1) {
32277
+ var brElement = this.oldRangeElement.querySelector('BR');
32278
+ if (brElement) {
32279
+ var brParentElement = brElement.parentNode;
32280
+ var currentState = this.oldRangeElement.innerHTML;
32281
+ this.parent.formatter.saveData(currentState);
32282
+ detach(brElement);
32283
+ if (brParentElement && brParentElement.childNodes.length === 0) {
32284
+ detach(brParentElement);
32285
+ checkParent = true;
32286
+ }
32287
+ }
32235
32288
  }
32236
- if (!isNullOrUndefined(this.rangeElement) && this.oldRangeElement !== this.rangeElement) {
32289
+ if (!isNullOrUndefined(this.rangeElement) && this.oldRangeElement !== this.rangeElement && !checkParent) {
32237
32290
  while (this.rangeElement.firstChild) {
32238
32291
  if (this.oldRangeElement.nodeName === '#text') {
32239
32292
  this.oldRangeElement.parentElement.appendChild(this.rangeElement.childNodes[0]);
@@ -36871,13 +36924,21 @@ var EnterKeyAction = /** @__PURE__ @class */ (function () {
36871
36924
  }
36872
36925
  var isMediaNode = false; // To check the image audio and video node cases
36873
36926
  var isFocusedFirst = false;
36927
+ var parentElement = _this.range.startContainer.parentElement;
36928
+ var isPreWrapApplied = parentElement ? _this.parent.contentModule.getDocument().defaultView.getComputedStyle(_this.range.startContainer.parentElement, null).getPropertyValue('white-space') === 'pre-wrap' : false;
36874
36929
  if (_this.range.startOffset !== 0 && _this.range.endOffset !== 0 &&
36875
36930
  _this.range.startContainer === _this.range.endContainer && !(!isNullOrUndefined(nearBlockNode.childNodes[0])
36876
36931
  && (nearBlockNode.childNodes[0].nodeName === 'IMG' || nearBlockNode.querySelectorAll('img, audio, video').length > 0))) {
36877
36932
  var startNodeText = _this.range.startContainer.textContent;
36878
36933
  var splitFirstText = startNodeText.substring(0, _this.range.startOffset);
36879
- // eslint-disable-next-line max-len
36880
- if (splitFirstText.charCodeAt(_this.range.startOffset - 1) !== 160 && splitFirstText.trim().length === 0) {
36934
+ var lastCharBeforeCursor = splitFirstText.charCodeAt(_this.range.startOffset - 1);
36935
+ var isSplitTextEmpty = splitFirstText.trim().length === 0;
36936
+ var hasContentAfterCursor = startNodeText.slice(_this.range.startOffset).trim().length !== 0;
36937
+ var isCursorAtStartNonPreWrap = lastCharBeforeCursor !== 160
36938
+ && isSplitTextEmpty && !isPreWrapApplied;
36939
+ var isCursorAtStartPreWrapWithContent = lastCharBeforeCursor === 32
36940
+ && isPreWrapApplied && isSplitTextEmpty && hasContentAfterCursor;
36941
+ if (isCursorAtStartNonPreWrap || isCursorAtStartPreWrapWithContent) {
36881
36942
  isFocusedFirst = true;
36882
36943
  }
36883
36944
  }