@syncfusion/ej2-richtexteditor 24.1.47 → 24.2.3

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.
Files changed (102) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/ej2-richtexteditor.min.js +2 -2
  3. package/dist/ej2-richtexteditor.umd.min.js +2 -2
  4. package/dist/ej2-richtexteditor.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-richtexteditor.es2015.js +748 -167
  6. package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
  7. package/dist/es6/ej2-richtexteditor.es5.js +756 -166
  8. package/dist/es6/ej2-richtexteditor.es5.js.map +1 -1
  9. package/dist/global/ej2-richtexteditor.min.js +2 -2
  10. package/dist/global/ej2-richtexteditor.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/package.json +12 -12
  13. package/src/common/constant.d.ts +6 -0
  14. package/src/common/constant.js +6 -0
  15. package/src/common/util.js +31 -20
  16. package/src/editor-manager/base/constant.d.ts +6 -0
  17. package/src/editor-manager/base/constant.js +6 -0
  18. package/src/editor-manager/base/editor-manager.d.ts +5 -0
  19. package/src/editor-manager/base/editor-manager.js +59 -0
  20. package/src/editor-manager/base/interface.d.ts +8 -0
  21. package/src/editor-manager/plugin/dom-node.js +3 -1
  22. package/src/editor-manager/plugin/format-painter-actions.js +1 -1
  23. package/src/editor-manager/plugin/ms-word-clean-up.d.ts +2 -0
  24. package/src/editor-manager/plugin/ms-word-clean-up.js +39 -10
  25. package/src/editor-manager/plugin/selection-commands.js +16 -0
  26. package/src/editor-manager/plugin/table.d.ts +0 -1
  27. package/src/editor-manager/plugin/table.js +14 -26
  28. package/src/editor-manager/plugin/undo.d.ts +1 -0
  29. package/src/editor-manager/plugin/undo.js +21 -1
  30. package/src/rich-text-editor/actions/base-quick-toolbar.js +3 -0
  31. package/src/rich-text-editor/actions/base-toolbar.js +8 -4
  32. package/src/rich-text-editor/actions/count.js +1 -1
  33. package/src/rich-text-editor/actions/dropdown-buttons.js +21 -2
  34. package/src/rich-text-editor/actions/emoji-picker.js +1 -1
  35. package/src/rich-text-editor/actions/full-screen.js +1 -0
  36. package/src/rich-text-editor/actions/html-editor.d.ts +2 -0
  37. package/src/rich-text-editor/actions/html-editor.js +88 -4
  38. package/src/rich-text-editor/actions/keyboard.js +3 -1
  39. package/src/rich-text-editor/actions/paste-clean-up.d.ts +1 -0
  40. package/src/rich-text-editor/actions/paste-clean-up.js +32 -4
  41. package/src/rich-text-editor/actions/toolbar.d.ts +2 -1
  42. package/src/rich-text-editor/base/constant.d.ts +25 -0
  43. package/src/rich-text-editor/base/constant.js +194 -0
  44. package/src/rich-text-editor/base/interface.d.ts +6 -1
  45. package/src/rich-text-editor/base/rich-text-editor.d.ts +1 -0
  46. package/src/rich-text-editor/base/rich-text-editor.js +30 -60
  47. package/src/rich-text-editor/base/util.d.ts +4 -0
  48. package/src/rich-text-editor/base/util.js +35 -1
  49. package/src/rich-text-editor/formatter/formatter.js +15 -4
  50. package/src/rich-text-editor/models/default-locale.js +12 -12
  51. package/src/rich-text-editor/models/items.js +2 -2
  52. package/src/rich-text-editor/renderer/audio-module.d.ts +1 -0
  53. package/src/rich-text-editor/renderer/audio-module.js +13 -0
  54. package/src/rich-text-editor/renderer/dialog-renderer.d.ts +2 -0
  55. package/src/rich-text-editor/renderer/dialog-renderer.js +7 -0
  56. package/src/rich-text-editor/renderer/image-module.d.ts +1 -0
  57. package/src/rich-text-editor/renderer/image-module.js +20 -2
  58. package/src/rich-text-editor/renderer/link-module.js +10 -1
  59. package/src/rich-text-editor/renderer/table-module.d.ts +2 -0
  60. package/src/rich-text-editor/renderer/table-module.js +22 -2
  61. package/src/rich-text-editor/renderer/toolbar-renderer.d.ts +1 -0
  62. package/src/rich-text-editor/renderer/toolbar-renderer.js +25 -3
  63. package/src/rich-text-editor/renderer/video-module.d.ts +1 -0
  64. package/src/rich-text-editor/renderer/video-module.js +21 -4
  65. package/styles/bootstrap-dark.css +44 -6
  66. package/styles/bootstrap.css +44 -6
  67. package/styles/bootstrap4.css +44 -6
  68. package/styles/bootstrap5-dark.css +44 -6
  69. package/styles/bootstrap5.css +44 -6
  70. package/styles/fabric-dark.css +44 -6
  71. package/styles/fabric.css +44 -6
  72. package/styles/fluent-dark.css +44 -6
  73. package/styles/fluent.css +44 -6
  74. package/styles/highcontrast-light.css +44 -6
  75. package/styles/highcontrast.css +44 -6
  76. package/styles/material-dark.css +44 -6
  77. package/styles/material.css +44 -6
  78. package/styles/material3-dark.css +51 -13
  79. package/styles/material3.css +51 -13
  80. package/styles/rich-text-editor/_layout.scss +36 -1
  81. package/styles/rich-text-editor/_material-definition.scss +0 -1
  82. package/styles/rich-text-editor/_material3-definition.scss +7 -7
  83. package/styles/rich-text-editor/_theme.scss +9 -5
  84. package/styles/rich-text-editor/bootstrap-dark.css +44 -6
  85. package/styles/rich-text-editor/bootstrap.css +44 -6
  86. package/styles/rich-text-editor/bootstrap4.css +44 -6
  87. package/styles/rich-text-editor/bootstrap5-dark.css +44 -6
  88. package/styles/rich-text-editor/bootstrap5.css +44 -6
  89. package/styles/rich-text-editor/fabric-dark.css +44 -6
  90. package/styles/rich-text-editor/fabric.css +44 -6
  91. package/styles/rich-text-editor/fluent-dark.css +44 -6
  92. package/styles/rich-text-editor/fluent.css +44 -6
  93. package/styles/rich-text-editor/highcontrast-light.css +44 -6
  94. package/styles/rich-text-editor/highcontrast.css +44 -6
  95. package/styles/rich-text-editor/material-dark.css +44 -6
  96. package/styles/rich-text-editor/material.css +44 -6
  97. package/styles/rich-text-editor/material3-dark.css +51 -13
  98. package/styles/rich-text-editor/material3.css +51 -13
  99. package/styles/rich-text-editor/tailwind-dark.css +44 -6
  100. package/styles/rich-text-editor/tailwind.css +44 -6
  101. package/styles/tailwind-dark.css +44 -6
  102. package/styles/tailwind.css +44 -6
@@ -749,11 +749,21 @@ var hidePopup = 'hidePopup';
749
749
  * @deprecated
750
750
  */
751
751
  var cleanupResizeElements = 'cleanupResizeElements';
752
+ /**
753
+ * @hidden
754
+ * @deprecated
755
+ */
756
+ var afterKeyDown = 'afterKeyDown';
752
757
  /**
753
758
  * @hidden
754
759
  * @deprecated
755
760
  */
756
761
  var updateValueOnIdle = 'updateValueOnIdle';
762
+ /**
763
+ * @hidden
764
+ * @deprecated
765
+ */
766
+ var documentClickClosedBy = 'documentClickClosedBy';
757
767
  /**
758
768
  * @hidden
759
769
  * @deprecated
@@ -764,6 +774,190 @@ var blockEmptyNodes = "address:empty, article:empty, aside:empty, blockquote:emp
764
774
  * @deprecated
765
775
  */
766
776
  var inlineEmptyNodes = "a:empty, abbr:empty, acronym:empty, b:empty, bdi:empty, bdo:empty, big:empty, button:empty,\ncanvas:empty, cite:empty, code:empty, data:empty, datalist:empty, del:empty, dfn:empty, em:empty, font:empty, i:empty, iframe:empty,\nins:empty, kbd:empty, label:empty, map:empty, mark:empty, meter:empty, noscript:empty, object:empty, output:empty, picture:empty, progress:empty,\nq:empty, ruby:empty, s:empty, samp:empty, script:empty, select:empty, slot:empty, small:empty, span:empty, strong:empty, strike:empty, sub:empty, sup:empty, svg:empty,\ntemplate:empty, textarea:empty, time:empty, u:empty, tt:empty, var:empty, wbr:empty";
777
+ /**
778
+ * @hidden
779
+ * @deprecated
780
+ */
781
+ var supportedUnits = ['px', 'em', 'rem', 'pt', 'cm', 'mm', 'in', 'pc', 'vw', 'vh', 'vmin', 'vmax'];
782
+ /**
783
+ * @hidden
784
+ * @deprecated
785
+ */
786
+ var conversionFactors = {
787
+ 'px': {
788
+ 'px': 1,
789
+ 'em': 0.0625,
790
+ 'rem': 0.0625,
791
+ 'pt': 0.75,
792
+ 'cm': 0.0264583,
793
+ 'mm': 0.0026458,
794
+ 'in': 0.0104167,
795
+ 'pc': 0.0625,
796
+ 'vw': 0.00625,
797
+ 'vh': 0.00625,
798
+ 'vmin': 0.00625,
799
+ 'vmax': 0.00625
800
+ },
801
+ 'em': {
802
+ 'px': 16,
803
+ 'em': 1,
804
+ 'rem': 1,
805
+ 'pt': 12,
806
+ 'cm': 0.423333,
807
+ 'mm': 0.0423333,
808
+ 'in': 0.166667,
809
+ 'pc': 0.0625,
810
+ 'vw': 1,
811
+ 'vh': 1,
812
+ 'vmin': 1,
813
+ 'vmax': 1
814
+ },
815
+ 'rem': {
816
+ 'px': 16,
817
+ 'em': 1,
818
+ 'rem': 1,
819
+ 'pt': 12,
820
+ 'cm': 0.423333,
821
+ 'mm': 0.0423333,
822
+ 'in': 0.166667,
823
+ 'pc': 0.0625,
824
+ 'vw': 1,
825
+ 'vh': 1,
826
+ 'vmin': 1,
827
+ 'vmax': 1
828
+ },
829
+ 'pt': {
830
+ 'px': 1.33333,
831
+ 'em': 0.0833333,
832
+ 'rem': 0.0833333,
833
+ 'pt': 1,
834
+ 'cm': 0.0352778,
835
+ 'mm': 0.0035278,
836
+ 'in': 0.0138889,
837
+ 'pc': 0.0416667,
838
+ 'vw': 0.00416667,
839
+ 'vh': 0.00416667,
840
+ 'vmin': 0.00416667,
841
+ 'vmax': 0.00416667
842
+ },
843
+ 'cm': {
844
+ 'px': 37.7953,
845
+ 'em': 2.3622,
846
+ 'rem': 2.3622,
847
+ 'pt': 28.3465,
848
+ 'cm': 1,
849
+ 'mm': 0.1,
850
+ 'in': 0.393701,
851
+ 'pc': 0.148148,
852
+ 'vw': 0.0377953,
853
+ 'vh': 0.0377953,
854
+ 'vmin': 0.0377953,
855
+ 'vmax': 0.0377953
856
+ },
857
+ 'mm': {
858
+ 'px': 3.77953,
859
+ 'em': 0.23622,
860
+ 'rem': 0.23622,
861
+ 'pt': 2.83465,
862
+ 'cm': 10,
863
+ 'mm': 1,
864
+ 'in': 0.0393701,
865
+ 'pc': 0.0148148,
866
+ 'vw': 0.00377953,
867
+ 'vh': 0.00377953,
868
+ 'vmin': 0.00377953,
869
+ 'vmax': 0.00377953
870
+ },
871
+ 'in': {
872
+ 'px': 96,
873
+ 'em': 6,
874
+ 'rem': 6,
875
+ 'pt': 72,
876
+ 'cm': 2.54,
877
+ 'mm': 25.4,
878
+ 'in': 1,
879
+ 'pc': 0.375,
880
+ 'vw': 0.09375,
881
+ 'vh': 0.09375,
882
+ 'vmin': 0.09375,
883
+ 'vmax': 0.09375
884
+ },
885
+ 'pc': {
886
+ 'px': 16,
887
+ 'em': 1,
888
+ 'rem': 1,
889
+ 'pt': 12,
890
+ 'cm': 0.423333,
891
+ 'mm': 0.0423333,
892
+ 'in': 0.166667,
893
+ 'pc': 1,
894
+ 'vw': 0.0625,
895
+ 'vh': 0.0625,
896
+ 'vmin': 0.0625,
897
+ 'vmax': 0.0625
898
+ },
899
+ 'vw': {
900
+ 'px': 160,
901
+ 'em': 10,
902
+ 'rem': 10,
903
+ 'pt': 120,
904
+ 'cm': 4.23333,
905
+ 'mm': 0.423333,
906
+ 'in': 1.66667,
907
+ 'pc': 0.625,
908
+ 'vw': 1,
909
+ 'vh': 1,
910
+ 'vmin': 1,
911
+ 'vmax': 1
912
+ },
913
+ 'vh': {
914
+ 'px': 160,
915
+ 'em': 10,
916
+ 'rem': 10,
917
+ 'pt': 120,
918
+ 'cm': 4.23333,
919
+ 'mm': 0.423333,
920
+ 'in': 1.66667,
921
+ 'pc': 0.625,
922
+ 'vw': 1,
923
+ 'vh': 1,
924
+ 'vmin': 1,
925
+ 'vmax': 1
926
+ },
927
+ 'vmin': {
928
+ 'px': 160,
929
+ 'em': 10,
930
+ 'rem': 10,
931
+ 'pt': 120,
932
+ 'cm': 4.23333,
933
+ 'mm': 0.423333,
934
+ 'in': 1.66667,
935
+ 'pc': 0.625,
936
+ 'vw': 1,
937
+ 'vh': 1,
938
+ 'vmin': 1,
939
+ 'vmax': 1
940
+ },
941
+ 'vmax': {
942
+ 'px': 160,
943
+ 'em': 10,
944
+ 'rem': 10,
945
+ 'pt': 120,
946
+ 'cm': 4.23333,
947
+ 'mm': 0.423333,
948
+ 'in': 1.66667,
949
+ 'pc': 0.625,
950
+ 'vw': 1,
951
+ 'vh': 1,
952
+ 'vmin': 1,
953
+ 'vmax': 1
954
+ }
955
+ };
956
+ /**
957
+ * @hidden
958
+ * @deprecated
959
+ */
960
+ var onHandleFontsizeChange = 'onHandleFontsizeChange';
767
961
 
768
962
  /**
769
963
  * Rich Text Editor classes defined here.
@@ -1902,14 +2096,14 @@ var tools = {
1902
2096
  'sourcecode': {
1903
2097
  'id': 'SourceCode',
1904
2098
  'icon': 'e-source-code',
1905
- 'tooltip': 'Source Code',
2099
+ 'tooltip': 'Code View (Ctrl+Shift+H)',
1906
2100
  'command': 'SourceCode',
1907
2101
  'subCommand': 'SourceCode'
1908
2102
  },
1909
2103
  'preview': {
1910
2104
  'id': 'Preview',
1911
2105
  'icon': 'e-preview',
1912
- 'tooltip': 'Preview',
2106
+ 'tooltip': 'Preview (Ctrl+Shift+H)',
1913
2107
  'command': 'Preview',
1914
2108
  'subCommand': 'Preview'
1915
2109
  },
@@ -2471,7 +2665,7 @@ var defaultLocale = {
2471
2665
  'remove': 'Remove',
2472
2666
  'insertLink': 'Insert Link',
2473
2667
  'display': 'Display',
2474
- 'altText': 'Alternative Text',
2668
+ 'altText': 'Alternative text',
2475
2669
  'dimension': 'Change Size',
2476
2670
  'fullscreen': 'Maximize',
2477
2671
  'maximize': 'Maximize',
@@ -2484,12 +2678,12 @@ var defaultLocale = {
2484
2678
  'preview': 'Preview',
2485
2679
  'viewside': 'ViewSide',
2486
2680
  'insertCode': 'Insert Code',
2487
- 'linkText': 'Display Text',
2681
+ 'linkText': 'Display text',
2488
2682
  'linkTooltipLabel': 'Title',
2489
- 'linkWebUrl': 'Web Address',
2683
+ 'linkWebUrl': 'Web address',
2490
2684
  'linkTitle': 'Enter a title',
2491
2685
  'linkurl': 'http://example.com',
2492
- 'linkOpenInNewWindow': 'Open Link in New Window',
2686
+ 'linkOpenInNewWindow': 'Open link in new window',
2493
2687
  'linkHeader': 'Insert Link',
2494
2688
  'dialogInsert': 'Insert',
2495
2689
  'dialogCancel': 'Cancel',
@@ -2523,8 +2717,8 @@ var defaultLocale = {
2523
2717
  'imageWidth': 'Width',
2524
2718
  'videoHeight': 'Height',
2525
2719
  'videoWidth': 'Width',
2526
- 'textPlaceholder': 'Enter Text',
2527
- 'inserttablebtn': 'Insert Table',
2720
+ 'textPlaceholder': 'Enter text',
2721
+ 'inserttablebtn': 'Insert table',
2528
2722
  'tabledialogHeader': 'Insert Table',
2529
2723
  'tableWidth': 'Width',
2530
2724
  'cellpadding': 'Cell Padding',
@@ -2534,7 +2728,7 @@ var defaultLocale = {
2534
2728
  'tableRows': 'Table Rows',
2535
2729
  'tableColumns': 'Table Columns',
2536
2730
  'tableCellHorizontalAlign': 'Table Cell Horizontal Align',
2537
- 'tableCellVerticalAlign': 'Table Cell Vertical Align',
2731
+ 'tableCellVerticalAlign': 'Table Vertical Align',
2538
2732
  'createTable': 'Create Table',
2539
2733
  'removeTable': 'Remove Table',
2540
2734
  'tableHeader': 'Table Header',
@@ -2612,8 +2806,8 @@ var defaultLocale = {
2612
2806
  'bulletFormatListNone': 'None',
2613
2807
  'formatPainter': 'Format Painter',
2614
2808
  'emojiPicker': 'Emoji Picker',
2615
- 'embeddedCode': 'Embedded Code',
2616
- 'pasteEmbeddedCodeHere': 'Paste Embedded Code here',
2809
+ 'embeddedCode': 'Embedded code',
2810
+ 'pasteEmbeddedCodeHere': 'Paste embedded code here',
2617
2811
  'emojiPickerTypeToFind': 'Type to find',
2618
2812
  'emojiPickerNoResultFound': 'No results found',
2619
2813
  'emojiPickerTrySomethingElse': 'Try something else',
@@ -2673,7 +2867,7 @@ var toolsLocale = {
2673
2867
  'remove': 'remove',
2674
2868
  'insertlink': 'insertLink',
2675
2869
  'display': 'display',
2676
- 'alttext': 'altText',
2870
+ 'alttext': 'alternateHeader',
2677
2871
  'dimension': 'dimension',
2678
2872
  'fullscreen': 'fullscreen',
2679
2873
  'maximize': 'maximize',
@@ -2708,8 +2902,8 @@ var toolsLocale = {
2708
2902
  'deleterow': 'deleteRow',
2709
2903
  'formatpainter': 'formatPainter',
2710
2904
  'emojipicker': 'emojiPicker',
2711
- 'embeddedCode': 'Embedded Code',
2712
- 'pasteEmbeddedCodeHere': 'Paste Embedded Code here',
2905
+ 'embeddedCode': 'Embedded code',
2906
+ 'pasteEmbeddedCodeHere': 'Paste embedded code here',
2713
2907
  'emojiPickerTypeToFind': 'Type to find',
2714
2908
  'emojiPickerNoResultFound': 'No results found',
2715
2909
  'emojiPickerTrySomethingElse': 'Try something else',
@@ -2879,6 +3073,40 @@ function getTooltipText(item, serviceLocator) {
2879
3073
  var tooltipText = i10n.getConstant(itemLocale);
2880
3074
  return tooltipText;
2881
3075
  }
3076
+ function getTooltipTextDropdownItems(item, serviceLocator, localeItems, rteObj) {
3077
+ if (localeItems) {
3078
+ var i10n = serviceLocator.getService('rteLocale');
3079
+ for (var i = 0; i < localeItems.length; i++) {
3080
+ var itemLocale = localeItems[i].value.toLocaleLowerCase();
3081
+ var numberValue = localeItems[i].locale;
3082
+ var numberLocale = defaultLocale["" + numberValue].toLocaleLowerCase();
3083
+ if (item === itemLocale || item === numberLocale) {
3084
+ var tooltipText = localeItems[i].locale;
3085
+ return i10n.getConstant(tooltipText);
3086
+ }
3087
+ }
3088
+ }
3089
+ else {
3090
+ var fontsize = rteObj.fontSize.items;
3091
+ for (var i = 0; i < fontsize.length; i++) {
3092
+ if (item === rteObj.fontSize.items[i].value) {
3093
+ var fontSize$$1 = rteObj.fontSize.items[i].text;
3094
+ return fontSize$$1;
3095
+ }
3096
+ }
3097
+ }
3098
+ return '';
3099
+ }
3100
+ function getQuickToolbarTooltipText(item) {
3101
+ var keys = Object.keys(defaultLocale);
3102
+ for (var i = 0; i < keys.length; i++) {
3103
+ var tooltipText = defaultLocale["" + keys[i]];
3104
+ if (item === tooltipText) {
3105
+ return tooltipText;
3106
+ }
3107
+ }
3108
+ return '';
3109
+ }
2882
3110
  /**
2883
3111
  * @param {ISetToolbarStatusArgs} e - specifies the e element
2884
3112
  * @param {boolean} isPopToolbar - specifies the boolean value
@@ -3395,6 +3623,7 @@ var ToolbarRenderer = /** @__PURE__ @class */ (function () {
3395
3623
  };
3396
3624
  ToolbarRenderer.prototype.dropDownSelected = function (args) {
3397
3625
  this.parent.notify(dropDownSelect, args);
3626
+ this.destroyTooltip();
3398
3627
  };
3399
3628
  ToolbarRenderer.prototype.beforeDropDownItemRender = function (args) {
3400
3629
  if (this.parent.readonly || !this.parent.enabled) {
@@ -3422,12 +3651,20 @@ var ToolbarRenderer = /** @__PURE__ @class */ (function () {
3422
3651
  if (args.element.parentElement.getAttribute('id').indexOf('TableCell') > -1 && !isNullOrUndefined(args.element.parentElement.querySelector('.e-cell-merge')) &&
3423
3652
  (!isNullOrUndefined(args.element.parentElement.querySelector('.e-cell-horizontal-split')) || !isNullOrUndefined(args.element.parentElement.querySelector('.e-cell-vertical-split')))) {
3424
3653
  var listEle = args.element.querySelectorAll('li');
3425
- if (this.parent.inputElement.querySelectorAll('.e-cell-select').length === 1) {
3654
+ var selectedEles_1 = this.parent.inputElement.querySelectorAll('.e-cell-select');
3655
+ if (selectedEles_1.length === 1) {
3426
3656
  addClass([listEle[0]], 'e-disabled');
3427
3657
  removeClass([listEle[1], listEle[2]], 'e-disabled');
3428
3658
  }
3429
- else if (this.parent.inputElement.querySelectorAll('.e-cell-select').length > 1) {
3430
- removeClass([listEle[0]], 'e-disabled');
3659
+ else if (selectedEles_1.length > 1) {
3660
+ if (!Array.from(selectedEles_1).every(function (element) {
3661
+ return element.tagName.toLowerCase() === selectedEles_1[0].tagName.toLowerCase();
3662
+ })) {
3663
+ addClass([listEle[0]], 'e-disabled');
3664
+ }
3665
+ else {
3666
+ removeClass([listEle[0]], 'e-disabled');
3667
+ }
3431
3668
  addClass([listEle[1], listEle[2]], 'e-disabled');
3432
3669
  }
3433
3670
  }
@@ -3475,6 +3712,19 @@ var ToolbarRenderer = /** @__PURE__ @class */ (function () {
3475
3712
  });
3476
3713
  this.tooltip.appendTo(args.target);
3477
3714
  }
3715
+ if (this.parent.showTooltip) {
3716
+ this.dropdownTooltip = new Tooltip({
3717
+ target: '[aria-owns="' + this.parent.getID() + '"].e-rte-elements [title]',
3718
+ showTipPointer: true,
3719
+ openDelay: 400,
3720
+ opensOn: 'Hover',
3721
+ beforeRender: this.tooltipBeforeRender.bind(this),
3722
+ cssClass: this.parent.getCssClass(),
3723
+ windowCollision: true,
3724
+ position: 'BottomCenter'
3725
+ });
3726
+ this.dropdownTooltip.appendTo(document.body);
3727
+ }
3478
3728
  };
3479
3729
  /**
3480
3730
  * renderDropDownButton method
@@ -4092,10 +4342,14 @@ var BaseToolbar = /** @__PURE__ @class */ (function () {
4092
4342
  _this.parent.formatter.saveData();
4093
4343
  }
4094
4344
  callback_1.call(_this);
4095
- var currentContentElem = _this.parent.createElement('div');
4096
- currentContentElem.appendChild(_this.parent.formatter.getUndoRedoStack()[_this.parent.formatter.getUndoRedoStack().length - 1].text);
4097
- if (currentContentElem.innerHTML.trim() === _this.parent.inputElement.innerHTML.trim()) {
4098
- return;
4345
+ if (_this.parent.formatter.getUndoRedoStack().length > 0) {
4346
+ var currentContentElem = _this.parent.createElement('div');
4347
+ var stackItem = _this.parent.formatter.getUndoRedoStack()[_this.parent.formatter.getUndoRedoStack().length - 1];
4348
+ var clonedItem = (stackItem.text).cloneNode(true);
4349
+ currentContentElem.appendChild(clonedItem);
4350
+ if (currentContentElem.innerHTML.trim() === _this.parent.inputElement.innerHTML.trim()) {
4351
+ return;
4352
+ }
4099
4353
  }
4100
4354
  if (proxy_1.undo) {
4101
4355
  _this.parent.formatter.saveData();
@@ -4169,10 +4423,28 @@ var DropDownButtons = /** @__PURE__ @class */ (function () {
4169
4423
  if (item.cssClass) {
4170
4424
  addClass([args.element], item.cssClass);
4171
4425
  }
4426
+ if (item.command === 'Images' || item.command === 'Videos' || item.command === 'Audios' || item.command === 'Table') {
4427
+ args.element.setAttribute('title', getQuickToolbarTooltipText(item.text));
4428
+ }
4172
4429
  if (item.command === 'Alignments' || item.subCommand === 'JustifyLeft'
4173
4430
  || item.subCommand === 'JustifyRight' || item.subCommand === 'JustifyCenter') {
4174
4431
  args.element.setAttribute('title', getTooltipText(item.subCommand.toLocaleLowerCase(), this.locator));
4175
4432
  }
4433
+ if (item.command === 'Formats') {
4434
+ args.element.setAttribute('title', getTooltipTextDropdownItems(item.subCommand.toLocaleLowerCase(), this.locator, formatsLocale));
4435
+ }
4436
+ if (item.command === 'Font') {
4437
+ args.element.setAttribute('title', getTooltipTextDropdownItems(item.value.toLocaleLowerCase(), this.locator, fontNameLocale));
4438
+ }
4439
+ if (item.subCommand === 'BulletFormatList') {
4440
+ args.element.setAttribute('title', getTooltipTextDropdownItems(item.value.toLocaleLowerCase(), this.locator, bulletFormatListLocale));
4441
+ }
4442
+ if (item.subCommand === 'NumberFormatList') {
4443
+ args.element.setAttribute('title', getTooltipTextDropdownItems(item.text.replace(/\s/g, '').toLocaleLowerCase(), this.locator, numberFormatListLocale));
4444
+ }
4445
+ if (item.subCommand === 'FontSize') {
4446
+ args.element.setAttribute('title', getTooltipTextDropdownItems(item.value.toLocaleLowerCase(), null, null, this.parent));
4447
+ }
4176
4448
  };
4177
4449
  DropDownButtons.prototype.dropdownContent = function (width, type, content) {
4178
4450
  return ('<span style="display: inline-flex;' + 'width:' + ((type === 'quick') ? 'auto' : width) + '" >' +
@@ -4279,7 +4551,7 @@ var DropDownButtons = /** @__PURE__ @class */ (function () {
4279
4551
  if (isNullOrUndefined(targetElement) || targetElement.classList.contains(CLS_DROPDOWN_BTN)) {
4280
4552
  return;
4281
4553
  }
4282
- var fontsize = _this.parent.fontSize.items.slice();
4554
+ var fontsize = !isNullOrUndefined(_this.fontSizeDropDown) && !isNullOrUndefined(_this.fontSizeDropDown.items) && _this.fontSizeDropDown.items.length > 0 ? _this.fontSizeDropDown.items : JSON.parse(JSON.stringify(_this.parent.fontSize.items.slice()));
4283
4555
  fontsize.forEach(function (item) {
4284
4556
  Object.defineProperties(item, {
4285
4557
  command: { value: 'Font', enumerable: true }, subCommand: { value: 'FontSize', enumerable: true }
@@ -5615,7 +5887,9 @@ var keyCode = {
5615
5887
  'singlequote': 222,
5616
5888
  ']': 221,
5617
5889
  '[': 219,
5618
- '=': 187
5890
+ '=': 187,
5891
+ '<': 188,
5892
+ '>': 190
5619
5893
  };
5620
5894
  /**
5621
5895
  * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.
@@ -6331,6 +6605,9 @@ var BaseQuickToolbar = /** @__PURE__ @class */ (function () {
6331
6605
  this.parent.enableToolbarItem(this.parent.toolbarSettings.items);
6332
6606
  }
6333
6607
  }
6608
+ if (this.parent.showTooltip && !isNullOrUndefined(document.querySelector('.e-tooltip-wrap'))) {
6609
+ this.parent.notify(destroyTooltip, { args: event });
6610
+ }
6334
6611
  this.removeEleFromDOM();
6335
6612
  this.isDOMElement = false;
6336
6613
  };
@@ -7158,7 +7435,7 @@ var Count = /** @__PURE__ @class */ (function () {
7158
7435
  };
7159
7436
  Count.prototype.appendCount = function () {
7160
7437
  var htmlText = this.parent.editorMode === 'Markdown' ? this.editPanel.value :
7161
- this.editPanel.textContent;
7438
+ (this.parent.getText().replace(/(\r\n|\n|\r|\t)/gm, ''));
7162
7439
  if (this.parent.editorMode !== 'Markdown' && htmlText.indexOf('\u200B') !== -1) {
7163
7440
  this.htmlLength = htmlText.replace(/\u200B/g, '').length;
7164
7441
  }
@@ -7552,30 +7829,41 @@ function updateTextNode$1(value, enterAction) {
7552
7829
  }
7553
7830
  var tableElm = resultElm.querySelectorAll('table');
7554
7831
  for (var i = 0; i < tableElm.length; i++) {
7555
- if (tableElm[i].getAttribute('border') === '0') {
7556
- tableElm[i].removeAttribute('border');
7557
- }
7558
- var tdElm = tableElm[i].querySelectorAll('td');
7559
- for (var j = 0; j < tdElm.length; j++) {
7560
- if (tdElm[j].style.borderLeft === 'none') {
7561
- tdElm[j].style.removeProperty('border-left');
7562
- }
7563
- if (tdElm[j].style.borderRight === 'none') {
7564
- tdElm[j].style.removeProperty('border-right');
7565
- }
7566
- if (tdElm[j].style.borderBottom === 'none') {
7567
- tdElm[j].style.removeProperty('border-bottom');
7568
- }
7569
- if (tdElm[j].style.borderTop === 'none') {
7570
- tdElm[j].style.removeProperty('border-top');
7832
+ if (tableElm[i].classList.length > 0 && !tableElm[i].classList.contains('e-rte-table')) {
7833
+ tableElm[i].classList.add('e-rte-paste-table');
7834
+ if (tableElm[i].classList.contains('e-rte-paste-word-table')) {
7835
+ tableElm[i].classList.remove('e-rte-paste-word-table');
7836
+ continue; // Sking the removal of the border if the source is from word.
7837
+ }
7838
+ else if (tableElm[i].classList.contains('e-rte-paste-excel-table')) {
7839
+ tableElm[i].classList.remove('e-rte-paste-excel-table');
7840
+ if (tableElm[i].getAttribute('border') === '0') {
7841
+ tableElm[i].removeAttribute('border');
7842
+ }
7843
+ var tdElm = tableElm[i].querySelectorAll('td');
7844
+ for (var j = 0; j < tdElm.length; j++) {
7845
+ if (tdElm[j].style.borderLeft === 'none') {
7846
+ tdElm[j].style.removeProperty('border-left');
7847
+ }
7848
+ if (tdElm[j].style.borderRight === 'none') {
7849
+ tdElm[j].style.removeProperty('border-right');
7850
+ }
7851
+ if (tdElm[j].style.borderBottom === 'none') {
7852
+ tdElm[j].style.removeProperty('border-bottom');
7853
+ }
7854
+ if (tdElm[j].style.borderTop === 'none') {
7855
+ tdElm[j].style.removeProperty('border-top');
7856
+ }
7857
+ if (tdElm[j].style.border === 'none') {
7858
+ tdElm[j].style.removeProperty('border');
7859
+ }
7860
+ }
7571
7861
  }
7572
- if (tdElm[j].style.border === 'none') {
7573
- tdElm[j].style.removeProperty('border');
7862
+ else if (tableElm[i].classList.contains('e-rte-paste-onenote-table')) {
7863
+ tableElm[i].classList.remove('e-rte-paste-onenote-table');
7864
+ continue;
7574
7865
  }
7575
7866
  }
7576
- if (!tableElm[i].classList.contains('e-rte-table')) {
7577
- tableElm[i].classList.add('e-rte-table');
7578
- }
7579
7867
  }
7580
7868
  var imageElm = resultElm.querySelectorAll('img');
7581
7869
  for (var i = 0; i < imageElm.length; i++) {
@@ -7893,6 +8181,12 @@ var FORMAT_PAINTER_ACTIONS = 'format_painter_actions';
7893
8181
  * @hidden
7894
8182
  */
7895
8183
  var EMOJI_PICKER_ACTIONS = 'emoji_picker_actions';
8184
+ /**
8185
+ * Mouse down event constant
8186
+ *
8187
+ * @hidden
8188
+ */
8189
+ var MOUSE_DOWN = 'mouseDown';
7896
8190
 
7897
8191
  /**
7898
8192
  * Formatter
@@ -7919,12 +8213,21 @@ var Formatter = /** @__PURE__ @class */ (function () {
7919
8213
  var selection = self.contentModule.getDocument().getSelection();
7920
8214
  var range = (selection.rangeCount > 0) ? selection.getRangeAt(selection.rangeCount - 1) : null;
7921
8215
  var saveSelection;
8216
+ var newRange;
8217
+ if (!isNullOrUndefined(value) && !isNullOrUndefined(value.selection)) {
8218
+ newRange = value.selection.range;
8219
+ }
7922
8220
  var isKeyboardVideoInsert = (!isNullOrUndefined(value) && !isNullOrUndefined(value.cssClass) &&
7923
8221
  value.cssClass !== 'e-video-inline');
7924
8222
  if (self.editorMode === 'HTML') {
7925
8223
  if (!isNullOrUndefined(args) && !isKeyboardVideoInsert) {
7926
8224
  if (isNullOrUndefined(args.name) || (!isNullOrUndefined(args.name) && args.name !== 'showDialog')) {
7927
- saveSelection = this.editorManager.nodeSelection.save(range, self.contentModule.getDocument());
8225
+ if (newRange) {
8226
+ saveSelection = this.editorManager.nodeSelection.save(newRange, self.contentModule.getDocument());
8227
+ }
8228
+ else {
8229
+ saveSelection = this.editorManager.nodeSelection.save(range, self.contentModule.getDocument());
8230
+ }
7928
8231
  }
7929
8232
  }
7930
8233
  }
@@ -7952,7 +8255,7 @@ var Formatter = /** @__PURE__ @class */ (function () {
7952
8255
  if (args.item.command === 'Images' || args.item.command === 'Videos' || args.item.command === 'Table' || args.item.command === 'Files') {
7953
8256
  currentInsertContentLength = 1;
7954
8257
  }
7955
- var currentLength = self.getText().trim().replace(/(\r\n|\n|\r)/gm, '').replace(/\u200B/g, '').length;
8258
+ var currentLength = self.getText().trim().replace(/(\r\n|\n|\r|\t)/gm, '').replace(/\u200B/g, '').length;
7956
8259
  var selectionLength = self.getSelection().length;
7957
8260
  var totalLength = (currentLength - selectionLength) + currentInsertContentLength;
7958
8261
  if (!(self.maxLength === -1 || totalLength <= self.maxLength)) {
@@ -8016,7 +8319,9 @@ var Formatter = /** @__PURE__ @class */ (function () {
8016
8319
  _this.saveData();
8017
8320
  }
8018
8321
  self.isBlur = false;
8019
- self.contentModule.getEditPanel().focus();
8322
+ if (isNullOrUndefined(saveSelection) || isNullOrUndefined(closest(saveSelection.range.startContainer.parentElement, ".e-img-caption")) ? true : !(closest(saveSelection.range.startContainer.parentElement, ".e-img-caption").getAttribute("contenteditable") == "false")) {
8323
+ self.contentModule.getEditPanel().focus();
8324
+ }
8020
8325
  if (self.editorMode === 'HTML' && !isKeyboardVideoInsert) {
8021
8326
  if (isNullOrUndefined(args.selectType) || (!isNullOrUndefined(args.selectType) && args.selectType !== 'showDialog')) {
8022
8327
  saveSelection.restore();
@@ -10510,6 +10815,12 @@ var CLEAR_TYPE = 'clear-type';
10510
10815
  * @hidden
10511
10816
  */
10512
10817
  var SELF_CLOSING_TAGS = ['area', 'base', 'br', 'embed', 'hr', 'img', 'input', 'param', 'source', 'track', 'wbr', 'iframe', 'td', 'table'];
10818
+ /**
10819
+ * Source
10820
+ *
10821
+ * @hidden
10822
+ */
10823
+ var PASTE_SOURCE = ['word', 'excel', 'onenote'];
10513
10824
 
10514
10825
  /**
10515
10826
  * `Selection` module is used to handle RTE Selections.
@@ -11524,7 +11835,9 @@ var DOMNode = /** @__PURE__ @class */ (function () {
11524
11835
  else if (start.tagName === 'BR') {
11525
11836
  this.replaceWith(start, this.marker(className, this.encode(start.textContent)));
11526
11837
  var markerStart = range.startContainer.querySelector('.' + className);
11527
- markerStart.parentElement.appendChild(start);
11838
+ if (markerStart) {
11839
+ markerStart.parentElement.appendChild(start);
11840
+ }
11528
11841
  }
11529
11842
  else {
11530
11843
  if (start.tagName === 'IMG') {
@@ -15176,7 +15489,6 @@ var TableCommand = /** @__PURE__ @class */ (function () {
15176
15489
  table.appendChild(tblBody);
15177
15490
  e.item.selection.restore();
15178
15491
  InsertHtml.Insert(this.parent.currentDocument, table, this.parent.editableElement);
15179
- this.removeEmptyNode();
15180
15492
  e.item.selection.setSelectionText(this.parent.currentDocument, table.querySelector('td'), table.querySelector('td'), 0, 0);
15181
15493
  if (table.nextElementSibling === null) {
15182
15494
  var insertElem = void 0;
@@ -15220,24 +15532,6 @@ var TableCommand = /** @__PURE__ @class */ (function () {
15220
15532
  }
15221
15533
  return styleValue;
15222
15534
  };
15223
- TableCommand.prototype.removeEmptyNode = function () {
15224
- var emptyUl = this.parent.editableElement.querySelectorAll('ul:empty, ol:empty');
15225
- for (var i = 0; i < emptyUl.length; i++) {
15226
- detach(emptyUl[i]);
15227
- }
15228
- var emptyLiChild = this.parent.editableElement.querySelectorAll('li *:empty:not(img)');
15229
- for (var i = 0; i < emptyLiChild.length; i++) {
15230
- detach(emptyLiChild[i]);
15231
- if (emptyLiChild.length === i + 1) {
15232
- emptyLiChild = this.parent.editableElement.querySelectorAll('li *:empty:not(img)');
15233
- i = -1;
15234
- }
15235
- }
15236
- var emptyLi = this.parent.editableElement.querySelectorAll('li:empty');
15237
- for (var i = 0; i < emptyLi.length; i++) {
15238
- detach(emptyLi[i]);
15239
- }
15240
- };
15241
15535
  TableCommand.prototype.insertAfter = function (newNode, referenceNode) {
15242
15536
  referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
15243
15537
  };
@@ -15585,14 +15879,21 @@ var TableCommand = /** @__PURE__ @class */ (function () {
15585
15879
  }
15586
15880
  };
15587
15881
  TableCommand.prototype.tableVerticalAlign = function (e) {
15588
- if (e.item.subCommand === 'AlignTop') {
15589
- e.item.tableCell.style.verticalAlign = 'top';
15590
- }
15591
- else if (e.item.subCommand === 'AlignMiddle') {
15592
- e.item.tableCell.style.verticalAlign = 'middle';
15882
+ var value = '';
15883
+ switch (e.item.subCommand) {
15884
+ case 'AlignTop':
15885
+ value = 'top';
15886
+ break;
15887
+ case 'AlignMiddle':
15888
+ value = 'middle';
15889
+ break;
15890
+ case 'AlignBottom':
15891
+ value = 'bottom';
15892
+ break;
15593
15893
  }
15594
- else {
15595
- e.item.tableCell.style.verticalAlign = 'bottom';
15894
+ e.item.tableCell.style.verticalAlign = value;
15895
+ if (value && value !== '' && e.item.tableCell.getAttribute('valign')) {
15896
+ e.item.tableCell.removeAttribute('valign');
15596
15897
  }
15597
15898
  if (e.callBack) {
15598
15899
  e.callBack({
@@ -16350,6 +16651,22 @@ var SelectionCommands = /** @__PURE__ @class */ (function () {
16350
16651
  var nodeCutter = new NodeCutter();
16351
16652
  var isFormatted = new IsFormatted();
16352
16653
  var range = domSelection.getRange(docElement);
16654
+ if (Browser.userAgent.indexOf('Firefox') !== -1 && range.startContainer === range.endContainer && !isNullOrUndefined(endNode) && range.startContainer === endNode) {
16655
+ var startChildNodes = range.startContainer.childNodes;
16656
+ var startNode = ((startChildNodes[(range.startOffset > 0) ? (range.startOffset - 1) :
16657
+ range.startOffset]) || range.startContainer);
16658
+ var endNode_1 = (range.endContainer.childNodes[(range.endOffset > 0) ? (range.endOffset - 1) :
16659
+ range.endOffset] || range.endContainer);
16660
+ var lastSelectionNode = (endNode_1.lastChild.nodeName === 'BR' ? (isNullOrUndefined(endNode_1.lastChild.previousSibling) ? endNode_1
16661
+ : endNode_1.lastChild.previousSibling) : endNode_1.firstChild);
16662
+ while (!isNullOrUndefined(lastSelectionNode) && lastSelectionNode.nodeName !== '#text' && lastSelectionNode.nodeName !== 'IMG' &&
16663
+ lastSelectionNode.nodeName !== 'BR' && lastSelectionNode.nodeName !== 'HR') {
16664
+ lastSelectionNode = lastSelectionNode.lastChild;
16665
+ }
16666
+
16667
+ domSelection.setSelectionText(docElement, startNode, lastSelectionNode, 0, 0);
16668
+ range = domSelection.getRange(docElement);
16669
+ }
16353
16670
  var save = domSelection.save(range, docElement);
16354
16671
  var nodes = range.collapsed ? domSelection.getSelectionNodeCollection(range) :
16355
16672
  domSelection.getSelectionNodeCollectionBr(range);
@@ -17577,6 +17894,25 @@ var UndoRedoManager = /** @__PURE__ @class */ (function () {
17577
17894
  }
17578
17895
  return textContent;
17579
17896
  };
17897
+ UndoRedoManager.prototype.isElementStructureEqual = function (previousFragment, currentFragment) {
17898
+ if (previousFragment.childNodes.length !== currentFragment.childNodes.length) {
17899
+ return false;
17900
+ }
17901
+ for (var i = 0; i < previousFragment.childNodes.length; i++) {
17902
+ var previousFragmentNode = previousFragment.childNodes[i];
17903
+ var currentFragmentNode = currentFragment.childNodes[i];
17904
+ if (!previousFragmentNode || !currentFragmentNode) {
17905
+ return false;
17906
+ }
17907
+ if (previousFragmentNode.nodeType !== currentFragmentNode.nodeType) {
17908
+ return false;
17909
+ }
17910
+ if (previousFragmentNode.outerHTML !== currentFragmentNode.outerHTML) {
17911
+ return false;
17912
+ }
17913
+ }
17914
+ return true;
17915
+ };
17580
17916
  /**
17581
17917
  * RTE collection stored html format.
17582
17918
  *
@@ -17613,7 +17949,8 @@ var UndoRedoManager = /** @__PURE__ @class */ (function () {
17613
17949
  (this.undoRedoStack[this.undoRedoStack.length - 1].range.endOffset === save.range.endOffset) &&
17614
17950
  (this.undoRedoStack[this.undoRedoStack.length - 1].range.range.startContainer === save.range.startContainer) &&
17615
17951
  (this.getTextContentFromFragment(this.undoRedoStack[this.undoRedoStack.length - 1].text).trim() ===
17616
- this.getTextContentFromFragment(changEle.text).trim())) {
17952
+ this.getTextContentFromFragment(changEle.text).trim()) &&
17953
+ this.isElementStructureEqual(this.undoRedoStack[this.undoRedoStack.length - 1].text, changEle.text)) {
17617
17954
  return;
17618
17955
  }
17619
17956
  this.undoRedoStack.push(changEle);
@@ -17776,6 +18113,7 @@ var MsWordPaste = /** @__PURE__ @class */ (function () {
17776
18113
  var pattern4 = /style='mso-width-source:/i;
17777
18114
  if (patern.test(tempHTMLContent) || patern2.test(tempHTMLContent) || patern3.test(tempHTMLContent) ||
17778
18115
  pattern4.test(tempHTMLContent)) {
18116
+ var source = this.findSource(elm);
17779
18117
  this.imageConversion(elm, rtfData);
17780
18118
  tempHTMLContent = tempHTMLContent.replace(/<img[^>]+>/i, '');
17781
18119
  this.addListClass(elm);
@@ -17796,16 +18134,8 @@ var MsWordPaste = /** @__PURE__ @class */ (function () {
17796
18134
  if (pattern4.test(tempHTMLContent)) {
17797
18135
  this.addTableBorderClass(elm);
17798
18136
  }
17799
- // Removing the margin for list items
17800
- var liChildren = elm.querySelectorAll('li');
17801
- if (liChildren.length > 0) {
17802
- for (var i = 0; i < liChildren.length; i++) {
17803
- if (!isNullOrUndefined(liChildren[i].style.marginLeft)) {
17804
- liChildren[i].style.marginLeft = '';
17805
- }
17806
- }
17807
- }
17808
- e.callBack(elm.innerHTML, this.cropImageDimensions);
18137
+ this.processMargin(elm);
18138
+ e.callBack(elm.innerHTML, this.cropImageDimensions, source);
17809
18139
  }
17810
18140
  else {
17811
18141
  e.callBack(elm.innerHTML);
@@ -18639,6 +18969,25 @@ var MsWordPaste = /** @__PURE__ @class */ (function () {
18639
18969
  }
18640
18970
  this.listContents.push(elem.innerHTML);
18641
18971
  };
18972
+ MsWordPaste.prototype.processMargin = function (element) {
18973
+ var liChildren = element.querySelectorAll('li');
18974
+ if (liChildren.length > 0) {
18975
+ for (var i = 0; i < liChildren.length; i++) {
18976
+ if (!isNullOrUndefined((liChildren[i]).style.marginLeft)) {
18977
+ (liChildren[i]).style.marginLeft = '';
18978
+ }
18979
+ }
18980
+ }
18981
+ var tableChildren = element.querySelectorAll('table');
18982
+ if (tableChildren.length > 0) {
18983
+ for (var i = 0; i < tableChildren.length; i++) {
18984
+ if (!isNullOrUndefined((tableChildren[i]).style.marginLeft) &&
18985
+ (tableChildren[i]).style.marginLeft.indexOf('-') >= 0) {
18986
+ (tableChildren[i]).style.marginLeft = '';
18987
+ }
18988
+ }
18989
+ }
18990
+ };
18642
18991
  MsWordPaste.prototype.removeEmptyAnchorTag = function (element) {
18643
18992
  var removableElement = element.querySelectorAll('a:not([href])');
18644
18993
  for (var j = removableElement.length - 1; j >= 0; j--) {
@@ -18649,6 +18998,22 @@ var MsWordPaste = /** @__PURE__ @class */ (function () {
18649
18998
  parentElem.removeChild(removableElement[j]);
18650
18999
  }
18651
19000
  };
19001
+ MsWordPaste.prototype.findSource = function (element) {
19002
+ var metaNodes = element.querySelectorAll('meta');
19003
+ for (var i = 0; i < metaNodes.length; i++) {
19004
+ var metaNode = metaNodes[i];
19005
+ var content = metaNode.getAttribute('content');
19006
+ var name_1 = metaNode.getAttribute('name');
19007
+ if (name_1 && name_1.toLowerCase().indexOf('generator') >= 0 && content && content.toLowerCase().indexOf('microsoft') >= 0) {
19008
+ for (var j = 0; j < PASTE_SOURCE.length; j++) {
19009
+ if (content.toLowerCase().indexOf(PASTE_SOURCE[j]) >= 0) {
19010
+ return PASTE_SOURCE[j];
19011
+ }
19012
+ }
19013
+ }
19014
+ }
19015
+ return 'html';
19016
+ };
18652
19017
  return MsWordPaste;
18653
19018
  }());
18654
19019
 
@@ -19288,7 +19653,7 @@ var FormatPainterActions = /** @__PURE__ @class */ (function () {
19288
19653
  };
19289
19654
  FormatPainterActions.prototype.copyAction = function () {
19290
19655
  var copyCollection = [];
19291
- var range = this.parent.nodeSelection.getRange(document);
19656
+ var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);
19292
19657
  var domSelection = this.parent.nodeSelection;
19293
19658
  var nodes = range.collapsed ? domSelection.getSelectionNodeCollection(range) :
19294
19659
  domSelection.getSelectionNodeCollectionBr(range);
@@ -19781,6 +20146,7 @@ var EditorManager = /** @__PURE__ @class */ (function () {
19781
20146
  this.observer.on(MODEL_CHANGED, this.onPropertyChanged, this);
19782
20147
  this.observer.on(MS_WORD_CLEANUP, this.onWordPaste, this);
19783
20148
  this.observer.on(ON_BEGIN, this.onBegin, this);
20149
+ this.observer.on(MOUSE_DOWN, this.editorMouseDown, this);
19784
20150
  };
19785
20151
  EditorManager.prototype.onWordPaste = function (e) {
19786
20152
  this.observer.notify(MS_WORD_CLEANUP_PLUGIN, e);
@@ -19924,6 +20290,64 @@ var EditorManager = /** @__PURE__ @class */ (function () {
19924
20290
  event: event, callBack: callBack });
19925
20291
  }
19926
20292
  };
20293
+ EditorManager.prototype.editorMouseDown = function (e) {
20294
+ if (e.args.detail === 3) {
20295
+ this.tripleClickSelection(e.args);
20296
+ }
20297
+ };
20298
+ EditorManager.prototype.tripleClickSelection = function (e) {
20299
+ var range = this.nodeSelection.getRange(this.currentDocument);
20300
+ var selection = this.nodeSelection.get(this.currentDocument);
20301
+ if (selection.rangeCount > 0 && selection.toString() !== '') {
20302
+ var startBlockNode = this.getParentBlockNode(range.startContainer);
20303
+ var endBlockNode = this.getParentBlockNode(range.endContainer);
20304
+ if (startBlockNode && endBlockNode && startBlockNode === endBlockNode) {
20305
+ var newRange = this.currentDocument.createRange();
20306
+ var startTextNode = this.getFirstTextNode(startBlockNode);
20307
+ var endTextNode = this.getLastTextNode(endBlockNode);
20308
+ if (startTextNode && endTextNode) {
20309
+ newRange.setStart(startTextNode, 0);
20310
+ newRange.setEnd(endTextNode, endTextNode.textContent.length);
20311
+ this.nodeSelection.setRange(this.currentDocument, newRange);
20312
+ e.preventDefault();
20313
+ }
20314
+ }
20315
+ }
20316
+ };
20317
+ EditorManager.prototype.getParentBlockNode = function (node) {
20318
+ var treeWalker = this.currentDocument.createTreeWalker(this.editableElement, // root
20319
+ NodeFilter.SHOW_ELEMENT, // whatToShow
20320
+ {
20321
+ acceptNode: function (currentNode) {
20322
+ // Check if the node is a block element
20323
+ var displayStyle = window.getComputedStyle(currentNode).display;
20324
+ if (displayStyle.indexOf('inline') < 0) {
20325
+ return NodeFilter.FILTER_ACCEPT;
20326
+ }
20327
+ else {
20328
+ return NodeFilter.FILTER_SKIP;
20329
+ }
20330
+ }
20331
+ });
20332
+ treeWalker.currentNode = node;
20333
+ var blockParent = treeWalker.parentNode();
20334
+ return blockParent;
20335
+ };
20336
+ EditorManager.prototype.getLastTextNode = function (node) {
20337
+ var treeWalker = this.currentDocument.createTreeWalker(node, NodeFilter.SHOW_TEXT, null);
20338
+ var lastTextNode = null;
20339
+ var currentNode = treeWalker.nextNode();
20340
+ while (currentNode) {
20341
+ lastTextNode = currentNode;
20342
+ currentNode = treeWalker.nextNode();
20343
+ }
20344
+ return lastTextNode;
20345
+ };
20346
+ EditorManager.prototype.getFirstTextNode = function (node) {
20347
+ var treeWalker = this.currentDocument.createTreeWalker(node, NodeFilter.SHOW_TEXT, null);
20348
+ var firstTextNode = treeWalker.nextNode();
20349
+ return firstTextNode;
20350
+ };
19927
20351
  return EditorManager;
19928
20352
  }());
19929
20353
 
@@ -20438,6 +20862,7 @@ var HtmlEditor = /** @__PURE__ @class */ (function () {
20438
20862
  this.parent.on(readOnlyMode, this.updateReadOnly, this);
20439
20863
  this.parent.on(paste, this.onPaste, this);
20440
20864
  this.parent.on(tableclass, this.isTableClassAdded, this);
20865
+ this.parent.on(onHandleFontsizeChange, this.onHandleFontsizeChange, this);
20441
20866
  };
20442
20867
  HtmlEditor.prototype.updateReadOnly = function () {
20443
20868
  if (this.parent.readonly) {
@@ -20456,7 +20881,9 @@ var HtmlEditor = /** @__PURE__ @class */ (function () {
20456
20881
  };
20457
20882
  HtmlEditor.prototype.onSelectionRestore = function (e) {
20458
20883
  this.parent.isBlur = false;
20459
- this.contentRenderer.getEditPanel().focus();
20884
+ if (isNullOrUndefined(this.saveSelection) || isNullOrUndefined(closest(this.saveSelection.range.startContainer.parentElement, ".e-img-caption")) ? true : !(closest(this.saveSelection.range.startContainer.parentElement, ".e-img-caption").getAttribute("contenteditable") == "false")) {
20885
+ this.contentRenderer.getEditPanel().focus();
20886
+ }
20460
20887
  if (isNullOrUndefined(e.items) || e.items) {
20461
20888
  this.saveSelection.restore();
20462
20889
  }
@@ -20464,11 +20891,91 @@ var HtmlEditor = /** @__PURE__ @class */ (function () {
20464
20891
  HtmlEditor.prototype.isTableClassAdded = function () {
20465
20892
  var tableElement = this.parent.inputElement.querySelectorAll('table');
20466
20893
  for (var i = 0; i < tableElement.length; i++) {
20467
- if (!tableElement[i].classList.contains('e-rte-table')) {
20894
+ if (!tableElement[i].classList.contains('e-rte-table') && !tableElement[i].classList.contains('e-rte-paste-table')) {
20468
20895
  tableElement[i].classList.add('e-rte-table');
20469
20896
  }
20470
20897
  }
20471
20898
  };
20899
+ HtmlEditor.prototype.onHandleFontsizeChange = function (e) {
20900
+ var keyboardArgs = e.args;
20901
+ var args = { name: 'dropDownSelect' };
20902
+ args.item = {
20903
+ command: 'Font',
20904
+ subCommand: 'FontSize'
20905
+ };
20906
+ var items = this.parent.fontSize.items;
20907
+ var activeElem;
20908
+ if (this.parent.toolbarModule && this.parent.toolbarModule.dropDownModule &&
20909
+ this.parent.toolbarModule.dropDownModule.fontSizeDropDown && !isNullOrUndefined(this.parent.toolbarModule.dropDownModule.fontSizeDropDown.activeElem[0].textContent) && this.parent.toolbarModule.dropDownModule.fontSizeDropDown.activeElem[0].textContent !== '') {
20910
+ activeElem = this.parent.toolbarModule.dropDownModule.fontSizeDropDown.activeElem[0].textContent;
20911
+ }
20912
+ else {
20913
+ var fontSizeValue = void 0;
20914
+ var selection = this.parent.contentModule.getDocument().getSelection();
20915
+ if (selection && selection.focusNode && selection.focusNode.parentElement) {
20916
+ fontSizeValue = document.defaultView.getComputedStyle(selection.focusNode.parentElement, null).getPropertyValue('font-size');
20917
+ }
20918
+ else {
20919
+ fontSizeValue = this.parent.fontSize.width;
20920
+ }
20921
+ fontSizeValue = isNullOrUndefined(fontSizeValue) ? this.parent.fontSize.width : fontSizeValue;
20922
+ var actualTxtFontValues = fontSizeValue.match(/^([\d.]+)(\D+)$/);
20923
+ var size_1 = parseInt(actualTxtFontValues[1], 10);
20924
+ var unit = actualTxtFontValues[2];
20925
+ var defaultFontValues = items[0].value.match(/^([\d.]+)(\D+)$/);
20926
+ if (defaultFontValues[2] === unit) {
20927
+ var index = items.findIndex(function (_a) {
20928
+ var value = _a.value;
20929
+ return parseInt(value, 10) >= size_1;
20930
+ });
20931
+ activeElem = items[index].text;
20932
+ }
20933
+ else {
20934
+ var convertedSize_1 = this.convertFontSize(size_1, unit, defaultFontValues[2]);
20935
+ var index = items.findIndex(function (_a) {
20936
+ var value = _a.value;
20937
+ return parseInt(value, 10) >= convertedSize_1;
20938
+ });
20939
+ activeElem = items[index].text;
20940
+ }
20941
+ }
20942
+ var fontIndex = items.findIndex(function (size) { return size.text === activeElem; });
20943
+ if (keyboardArgs.action === 'increase-fontsize' && fontIndex !== -1) {
20944
+ if (fontIndex >= items.length - 1) {
20945
+ var fontValues = items[fontIndex].value.match(/^([\d.]+)(\D+)$/);
20946
+ if (fontValues) {
20947
+ var size = parseInt(fontValues[1], 10);
20948
+ var unit = fontValues[2];
20949
+ var roundedSize = size % 10 === 0 ? Math.ceil((size + 1) / 10) * 10 : Math.ceil(size / 10) * 10;
20950
+ args.item.value = roundedSize.toLocaleString() + unit;
20951
+ args.item.text = roundedSize.toLocaleString() + ' ' + unit;
20952
+ }
20953
+ this.parent.fontSize.items.push(args.item);
20954
+ }
20955
+ else {
20956
+ args.item.value = items[fontIndex + 1].value;
20957
+ args.item.text = items[fontIndex + 1].text;
20958
+ }
20959
+ }
20960
+ else if (keyboardArgs.action === 'decrease-fontsize' && fontIndex !== -1 && fontIndex > 0) {
20961
+ args.item.value = items[fontIndex - 1].value;
20962
+ args.item.text = items[fontIndex - 1].text;
20963
+ }
20964
+ else {
20965
+ if (fontIndex >= 0 && fontIndex < items.length && items[fontIndex]) {
20966
+ args.item.value = items[fontIndex].value;
20967
+ args.item.text = items[fontIndex].text;
20968
+ }
20969
+ }
20970
+ this.parent.formatter.process(this.parent, args, keyboardArgs);
20971
+ };
20972
+ HtmlEditor.prototype.convertFontSize = function (value, originalUnit, targetUnit) {
20973
+ if (supportedUnits.indexOf(originalUnit) !== -1 || supportedUnits.indexOf(targetUnit) !== -1) {
20974
+ originalUnit = 'px';
20975
+ }
20976
+ var convertedValue = value * conversionFactors[originalUnit][targetUnit];
20977
+ return convertedValue;
20978
+ };
20472
20979
  HtmlEditor.prototype.onKeyUp = function (e) {
20473
20980
  var args = e.args;
20474
20981
  var restrictKeys = [8, 9, 13, 16, 17, 18, 20, 27, 37, 38, 39, 40, 44, 45, 46, 91,
@@ -20590,7 +21097,7 @@ var HtmlEditor = /** @__PURE__ @class */ (function () {
20590
21097
  e.args.keyCode === 13) {
20591
21098
  this.spaceLink(e.args);
20592
21099
  if (this.parent.editorMode === 'HTML' && !this.parent.readonly) {
20593
- var currentLength = this.parent.getText().trim().replace(/(\r\n|\n|\r)/gm, '').replace(/\u200B/g, '').length;
21100
+ var currentLength = this.parent.getText().trim().replace(/(\r\n|\n|\r|\t)/gm, '').replace(/\u200B/g, '').length;
20594
21101
  var selectionLength = this.parent.getSelection().length;
20595
21102
  var totalLength = (currentLength - selectionLength) + 1;
20596
21103
  if (!(this.parent.maxLength === -1 || totalLength <= this.parent.maxLength) &&
@@ -20752,7 +21259,7 @@ var HtmlEditor = /** @__PURE__ @class */ (function () {
20752
21259
  var liElement;
20753
21260
  var rootElement;
20754
21261
  if (e.args.code === 'Delete' && e.args.keyCode === 46 &&
20755
- this.parent.contentModule.getText().trim().replace(/(\r\n|\n|\r)/gm, '').replace(/\u200B/g, '').length !== 0 && this.parent.getSelection().length === 0 && currentRange.startContainer.parentElement.tagName !== 'TD' &&
21262
+ this.parent.contentModule.getText().trim().replace(/(\r\n|\n|\r|\t)/gm, '').replace(/\u200B/g, '').length !== 0 && this.parent.getSelection().length === 0 && currentRange.startContainer.parentElement.tagName !== 'TD' &&
20756
21263
  currentRange.startContainer.parentElement.tagName !== 'TH') {
20757
21264
  this.deleteRangeElement = rootElement = this.getRootBlockNode(currentRange.startContainer);
20758
21265
  if (this.deleteRangeElement.tagName === 'OL' || this.deleteRangeElement.tagName === 'UL') {
@@ -21355,7 +21862,8 @@ var PasteCleanup = /** @__PURE__ @class */ (function () {
21355
21862
  args: e.args,
21356
21863
  text: e.text,
21357
21864
  allowedStylePropertiesArray: this.parent.pasteCleanupSettings.allowedStyleProps,
21358
- callBack: function (a, cropImageData) {
21865
+ callBack: function (a, cropImageData, pasteTableSource) {
21866
+ args.pasteTableSource = pasteTableSource;
21359
21867
  value = a.trim();
21360
21868
  _this.cropImageData = cropImageData;
21361
21869
  }
@@ -21930,10 +22438,24 @@ var PasteCleanup = /** @__PURE__ @class */ (function () {
21930
22438
  }
21931
22439
  this.parent.trigger(afterPasteCleanup, { value: clipBoardElem.innerHTML, filesData: filesData }, function (updatedArgs) { value = updatedArgs.value; });
21932
22440
  clipBoardElem.innerHTML = this.parent.addAnchorAriaLabel(value);
21933
- clipBoardElem = this.addTableClass(clipBoardElem);
22441
+ clipBoardElem = this.addTableClass(clipBoardElem, args.pasteTableSource);
21934
22442
  this.parent.formatter.editorManager.execCommand('inserthtml', 'pasteCleanup', args, function (returnArgs) {
21935
22443
  extend(args, { elements: returnArgs.elements, imageElements: returnArgs.imgElem }, true);
21936
22444
  _this.parent.formatter.onSuccess(_this.parent, args);
22445
+ if (!isNullOrUndefined(returnArgs.elements) && !isNullOrUndefined(returnArgs.imgElem)) {
22446
+ var pasteContent = returnArgs.elements;
22447
+ var imageContent = returnArgs.imgElem;
22448
+ var lastElementChild = _this.findLastElement(pasteContent[pasteContent.length - 1]);
22449
+ var isImageAtLast = !isNullOrUndefined(lastElementChild) ? lastElementChild.nodeName === 'IMG' : false;
22450
+ if (isImageAtLast || pasteContent[pasteContent.length - 1] === imageContent[imageContent.length - 1]) {
22451
+ _this.parent.notify(insertCompleted, {
22452
+ args: args.event,
22453
+ type: 'Images',
22454
+ isNotify: true,
22455
+ elements: imageContent[imageContent.length - 1]
22456
+ });
22457
+ }
22458
+ }
21937
22459
  }, clipBoardElem, null, null, this.parent.enterKey);
21938
22460
  this.removeTempClass();
21939
22461
  this.parent.notify(toolbarRefresh, {});
@@ -21988,12 +22510,15 @@ var PasteCleanup = /** @__PURE__ @class */ (function () {
21988
22510
  }
21989
22511
  }
21990
22512
  };
21991
- PasteCleanup.prototype.addTableClass = function (element) {
22513
+ PasteCleanup.prototype.addTableClass = function (element, source) {
21992
22514
  var tableElement = element.querySelectorAll('table');
21993
22515
  for (var i = 0; i < tableElement.length; i++) {
21994
- if (!tableElement[i].classList.contains('e-rte-table')) {
22516
+ if (!tableElement[i].classList.contains('e-rte-table') && (source === 'html' || source === '')) {
21995
22517
  tableElement[i].classList.add('e-rte-table');
21996
22518
  }
22519
+ else if (source && source !== 'html') {
22520
+ tableElement[i].classList.add('e-rte-paste-' + source + '-table');
22521
+ }
21997
22522
  }
21998
22523
  return element;
21999
22524
  };
@@ -22328,6 +22853,16 @@ var PasteCleanup = /** @__PURE__ @class */ (function () {
22328
22853
  }
22329
22854
  return clipBoardElem;
22330
22855
  };
22856
+ PasteCleanup.prototype.findLastElement = function (element) {
22857
+ if (!isNullOrUndefined(element) && !isNullOrUndefined(element.lastElementChild)) {
22858
+ var lastChild = element.lastElementChild;
22859
+ while (lastChild && lastChild.lastElementChild) {
22860
+ lastChild = lastChild.lastElementChild;
22861
+ }
22862
+ return lastChild;
22863
+ }
22864
+ return null;
22865
+ };
22331
22866
  /**
22332
22867
  * For internal use only - Get the module name.
22333
22868
  *
@@ -22832,6 +23367,7 @@ var FullScreen = /** @__PURE__ @class */ (function () {
22832
23367
  _this.parent.toolbarModule.addFixedTBarClass();
22833
23368
  }
22834
23369
  }
23370
+ _this.parent.refreshUI();
22835
23371
  _this.parent.trigger(actionComplete, { requestType: 'Minimize', targetItem: 'Minimize', args: event });
22836
23372
  }
22837
23373
  });
@@ -23750,7 +24286,7 @@ var EmojiPicker = /** @__PURE__ @class */ (function () {
23750
24286
  noEmojiObj.style.margin = '55px';
23751
24287
  emojipickerAll.appendChild(noEmojiObj);
23752
24288
  }
23753
- else if (!noEMoji && this.parent.element.querySelector('.e-rte-emojiSearch-noEmoji') || (inputValue === '' && value === ':')) {
24289
+ else if (!noEMoji && this.parent.element.querySelector('.e-rte-emojiSearch-noEmoji') || (inputValue === '' && value === ':') || (inputValue === '' && this.parent.element.querySelector('.e-rte-emojiSearch-noEmoji'))) {
23754
24290
  emojipickerAll.removeChild(this.parent.element.querySelector('.e-rte-emojiSearch-noEmoji'));
23755
24291
  }
23756
24292
  emojipickerAll.appendChild(emojiBtnDiv);
@@ -24404,12 +24940,20 @@ var Link = /** @__PURE__ @class */ (function () {
24404
24940
  }
24405
24941
  var target = (this.selfLink.checkBoxObj.checked) ? '_blank' : null;
24406
24942
  var linkLabel = (this.selfLink.checkBoxObj.checked) ? this.selfLink.i10n.getConstant('linkAriaLabel') : null;
24943
+ if (this.selfLink.parent.editorMode === 'Markdown' && linkUrl === '') {
24944
+ linkUrl = 'http://';
24945
+ }
24407
24946
  if (linkUrl === '') {
24408
24947
  this.selfLink.checkUrl(true);
24409
24948
  return;
24410
24949
  }
24411
24950
  if (!this.selfLink.isUrl(linkUrl)) {
24412
- linkText = (linkText === '') ? linkUrl : linkText;
24951
+ if (this.selfLink.parent.editorMode === 'Markdown') {
24952
+ linkText = (linkText !== '') ? linkText : '';
24953
+ }
24954
+ else {
24955
+ linkText = (linkText === '') ? linkUrl : linkText;
24956
+ }
24413
24957
  if (!this.selfLink.parent.enableAutoUrl) {
24414
24958
  linkUrl = linkUrl.indexOf('http') > -1 ? linkUrl : 'http://' + linkUrl;
24415
24959
  }
@@ -24550,6 +25094,7 @@ var Link = /** @__PURE__ @class */ (function () {
24550
25094
  this.parent.inlineMode.enable && !closest(target, '#' + this.dialogObj.element.id)) &&
24551
25095
  !closest(target, '#' + this.parent.getID() + '_toolbar_CreateLink') &&
24552
25096
  !target.querySelector('#' + this.parent.getID() + '_toolbar_CreateLink')))) {
25097
+ this.parent.notify(documentClickClosedBy, { closedBy: "outside click" });
24553
25098
  this.dialogObj.hide({ returnValue: true });
24554
25099
  EventHandler.remove(this.parent.element.ownerDocument, 'mousedown', this.onDocumentClick);
24555
25100
  this.parent.isBlur = true;
@@ -25301,6 +25846,14 @@ var Image$1 = /** @__PURE__ @class */ (function () {
25301
25846
  originalEvent.preventDefault();
25302
25847
  break;
25303
25848
  }
25849
+ if (originalEvent.ctrlKey && originalEvent.key === 'a') {
25850
+ this.handleSelectAll();
25851
+ }
25852
+ };
25853
+ Image.prototype.handleSelectAll = function () {
25854
+ this.cancelResizeAction();
25855
+ var imgFocusNodes = this.parent.inputElement.querySelectorAll('.' + CLS_IMG_FOCUS);
25856
+ removeClass(imgFocusNodes, CLS_IMG_FOCUS);
25304
25857
  };
25305
25858
  Image.prototype.openDialog = function (isInternal, event, selection, ele, parentEle) {
25306
25859
  var range;
@@ -25470,10 +26023,12 @@ var Image$1 = /** @__PURE__ @class */ (function () {
25470
26023
  _this.parent.formatter.editorManager.nodeSelection.Clear(_this.contentModule.getDocument());
25471
26024
  _this.parent.formatter.editorManager.nodeSelection.setSelectionContents(_this.contentModule.getDocument(), target);
25472
26025
  _this.quickToolObj.imageQTBar.showPopup(args.pageX, pageY, target);
26026
+ _this.resizeStart(e.args, target);
25473
26027
  }, 400);
25474
26028
  }
25475
26029
  else {
25476
- this.quickToolObj.imageQTBar.showPopup(args.pageX, pageY, target);
26030
+ var coordinates = target.getBoundingClientRect();
26031
+ this.quickToolObj.imageQTBar.showPopup(coordinates.left, coordinates.top, target, 'Image');
25477
26032
  }
25478
26033
  }
25479
26034
  };
@@ -25937,7 +26492,7 @@ var Image$1 = /** @__PURE__ @class */ (function () {
25937
26492
  isModal: Browser.isDevice,
25938
26493
  buttons: [{
25939
26494
  click: this.insertImageUrl.bind(selectObj),
25940
- buttonModel: { content: imgInsert, cssClass: 'e-flat e-insertImage' + this.parent.getCssClass(true), isPrimary: true, disabled: true }
26495
+ buttonModel: { content: imgInsert, cssClass: 'e-flat e-insertImage' + this.parent.getCssClass(true), isPrimary: true, disabled: this.parent.editorMode === 'Markdown' ? false : true }
25941
26496
  },
25942
26497
  {
25943
26498
  click: function (e) {
@@ -26043,6 +26598,7 @@ var Image$1 = /** @__PURE__ @class */ (function () {
26043
26598
  if (e.offsetX > e.target.clientWidth || e.offsetY > e.target.clientHeight) {
26044
26599
  }
26045
26600
  else {
26601
+ this.parent.notify(documentClickClosedBy, { closedBy: "outside click" });
26046
26602
  this.dialogObj.hide({ returnValue: true });
26047
26603
  this.parent.isBlur = true;
26048
26604
  dispatchEvent(this.parent.element, 'focusout');
@@ -26104,6 +26660,10 @@ var Image$1 = /** @__PURE__ @class */ (function () {
26104
26660
  }
26105
26661
  }
26106
26662
  });
26663
+ if (e.selectNode && e.selectNode[0].nodeName === 'IMG') {
26664
+ var regex = new RegExp(/([^\S]|^)(((https?\:\/\/)|(www\.))(\S+))/gi);
26665
+ this.inputUrl.value = e.selectNode[0].src.match(regex) ? e.selectNode[0].src : '';
26666
+ }
26107
26667
  imgUrl.appendChild(this.inputUrl);
26108
26668
  return imgUrl;
26109
26669
  };
@@ -26112,6 +26672,9 @@ var Image$1 = /** @__PURE__ @class */ (function () {
26112
26672
  var proxy = this.selfImage;
26113
26673
  proxy.isImgUploaded = false;
26114
26674
  var url = proxy.inputUrl.value;
26675
+ if (proxy.parent.editorMode === 'Markdown' && url === '') {
26676
+ url = 'http://';
26677
+ }
26115
26678
  if (proxy.parent.formatter.getUndoRedoStack().length === 0) {
26116
26679
  proxy.parent.formatter.saveData();
26117
26680
  }
@@ -27111,6 +27674,13 @@ var Audio = /** @__PURE__ @class */ (function () {
27111
27674
  originalEvent.preventDefault();
27112
27675
  break;
27113
27676
  }
27677
+ if (originalEvent.ctrlKey && originalEvent.key === 'a') {
27678
+ this.handleSelectAll();
27679
+ }
27680
+ };
27681
+ Audio.prototype.handleSelectAll = function () {
27682
+ var audioFocusNodes = this.parent.inputElement.querySelectorAll('.' + CLS_AUD_FOCUS);
27683
+ removeClass(audioFocusNodes, CLS_AUD_FOCUS);
27114
27684
  };
27115
27685
  Audio.prototype.openDialog = function (isInternal, event, selection, ele, parentEle) {
27116
27686
  var range;
@@ -27251,6 +27821,7 @@ var Audio = /** @__PURE__ @class */ (function () {
27251
27821
  if (e.offsetX > e.target.clientWidth || e.offsetY > e.target.clientHeight) {
27252
27822
  }
27253
27823
  else {
27824
+ this.parent.notify(documentClickClosedBy, { closedBy: "outside click" });
27254
27825
  this.dialogObj.hide({ returnValue: true });
27255
27826
  this.parent.isBlur = true;
27256
27827
  dispatchEvent(this.parent.element, 'focusout');
@@ -27512,6 +28083,11 @@ var Audio = /** @__PURE__ @class */ (function () {
27512
28083
  }
27513
28084
  }
27514
28085
  });
28086
+ if (e.selectNode && this.isAudioElem(e.selectNode[0])) {
28087
+ var regex = new RegExp(/([^\S]|^)(((https?\:\/\/)|(www\.))(\S+))/gi);
28088
+ var sourceElement = e.selectNode[0].querySelector('source');
28089
+ this.inputUrl.value = sourceElement.src.match(regex) ? sourceElement.src : '';
28090
+ }
27515
28091
  audioUrl.appendChild(this.inputUrl);
27516
28092
  return audioUrl;
27517
28093
  };
@@ -28408,6 +28984,14 @@ var Video = /** @__PURE__ @class */ (function () {
28408
28984
  originalEvent.preventDefault();
28409
28985
  break;
28410
28986
  }
28987
+ if (originalEvent.ctrlKey && originalEvent.key === 'a') {
28988
+ this.handleSelectAll();
28989
+ }
28990
+ };
28991
+ Video.prototype.handleSelectAll = function () {
28992
+ this.cancelResizeAction();
28993
+ var videoFocusNodes = this.parent.inputElement.querySelectorAll('.' + CLS_VID_FOCUS);
28994
+ removeClass(videoFocusNodes, CLS_VID_FOCUS);
28411
28995
  };
28412
28996
  Video.prototype.openDialog = function (isInternal, event, selection, ele, parentEle) {
28413
28997
  var range;
@@ -28585,6 +29169,7 @@ var Video = /** @__PURE__ @class */ (function () {
28585
29169
  if (e.offsetX > e.target.clientWidth || e.offsetY > e.target.clientHeight) {
28586
29170
  }
28587
29171
  else {
29172
+ this.parent.notify(documentClickClosedBy, { closedBy: "outside click" });
28588
29173
  this.dialogObj.hide({ returnValue: true });
28589
29174
  this.parent.isBlur = true;
28590
29175
  dispatchEvent(this.parent.element, 'focusout');
@@ -28874,6 +29459,15 @@ var Video = /** @__PURE__ @class */ (function () {
28874
29459
  }
28875
29460
  }
28876
29461
  });
29462
+ if (e.selectNode && ((e.selectNode[0] && e.selectNode[0].nodeType !== 3 &&
29463
+ e.selectNode[0].nodeName !== 'BR' &&
29464
+ (e.selectNode[0].classList &&
29465
+ e.selectNode[0].classList.contains(CLS_VID_CLICK_ELEM))) ||
29466
+ e.selectNode[0].nodeName === 'IFRAME' || e.selectNode[0].nodeName === 'VIDEO')) {
29467
+ var regex = new RegExp(/([^\S]|^)(((https?\:\/\/)|(www\.))(\S+))/gi);
29468
+ var sourceElement = e.selectNode[0].querySelector('source');
29469
+ this.inputUrl.value = sourceElement.src.match(regex) ? sourceElement.src : '';
29470
+ }
28877
29471
  var embedUrlBtn = new RadioButton({
28878
29472
  label: this.i10n.getConstant('embeddedCode'),
28879
29473
  checked: true,
@@ -28883,7 +29477,6 @@ var Video = /** @__PURE__ @class */ (function () {
28883
29477
  },
28884
29478
  change: function () {
28885
29479
  urlContent.innerHTML = '';
28886
- _this.inputUrl.value = '';
28887
29480
  urlContent.appendChild(_this.embedInputUrl);
28888
29481
  }
28889
29482
  });
@@ -28893,7 +29486,6 @@ var Video = /** @__PURE__ @class */ (function () {
28893
29486
  name: 'URL',
28894
29487
  change: function () {
28895
29488
  urlContent.innerHTML = '';
28896
- _this.embedInputUrl.value = '';
28897
29489
  urlContent.appendChild(_this.inputUrl);
28898
29490
  }
28899
29491
  });
@@ -29084,10 +29676,11 @@ var Video = /** @__PURE__ @class */ (function () {
29084
29676
  this.selection = proxy.parent.formatter.editorManager.nodeSelection.save(range, proxy.contentModule.getDocument());
29085
29677
  this.selectParent = proxy.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);
29086
29678
  }
29087
- var name_1 = url !== '' ? url.split('/')[url.split('/').length - 1] : embedUrl;
29679
+ var webUrlBtn = document.getElementById('webURL');
29680
+ var name_1 = webUrlBtn.checked ? url.split('/')[url.split('/').length - 1] : embedUrl;
29088
29681
  var value = {
29089
29682
  cssClass: (proxy.parent.insertVideoSettings.layoutOption === 'Inline' ? CLS_VIDEOINLINE : CLS_VIDEOBREAK),
29090
- url: url, selection: this.selection, fileName: name_1, isEmbedUrl: embedUrl !== '' ? true : false,
29683
+ url: url, selection: this.selection, fileName: name_1, isEmbedUrl: !webUrlBtn.checked,
29091
29684
  selectParent: this.selectParent, width: {
29092
29685
  width: proxy.parent.insertVideoSettings.width, minWidth: proxy.parent.insertVideoSettings.minWidth,
29093
29686
  maxWidth: proxy.parent.getInsertImgMaxWidth()
@@ -29447,6 +30040,7 @@ var Table = /** @__PURE__ @class */ (function () {
29447
30040
  this.parent.on(bindCssClass, this.setCssClass, this);
29448
30041
  this.parent.on(destroy, this.destroy, this);
29449
30042
  this.parent.on(moduleDestroy, this.moduleDestroy, this);
30043
+ this.parent.on(afterKeyDown, this.afterKeyDown, this);
29450
30044
  };
29451
30045
  Table.prototype.removeEventListener = function () {
29452
30046
  if (this.parent.isDestroyed) {
@@ -29472,6 +30066,7 @@ var Table = /** @__PURE__ @class */ (function () {
29472
30066
  this.parent.off(bindCssClass, this.setCssClass);
29473
30067
  this.parent.off(destroy, this.destroy);
29474
30068
  this.parent.off(moduleDestroy, this.moduleDestroy);
30069
+ this.parent.off(afterKeyDown, this.afterKeyDown);
29475
30070
  if (!Browser.isDevice && this.parent.tableSettings.resize) {
29476
30071
  EventHandler.remove(this.contentModule.getEditPanel(), 'mouseover', this.resizeHelper);
29477
30072
  }
@@ -29629,6 +30224,14 @@ var Table = /** @__PURE__ @class */ (function () {
29629
30224
  }
29630
30225
  }
29631
30226
  }
30227
+ if (event.ctrlKey && event.key === 'a') {
30228
+ this.handleSelectAll();
30229
+ }
30230
+ };
30231
+ Table.prototype.handleSelectAll = function () {
30232
+ this.cancelResizeAction();
30233
+ var selectedCells = this.parent.inputElement.querySelectorAll('.' + CLS_TABLE_SEL);
30234
+ removeClass(selectedCells, CLS_TABLE_SEL);
29632
30235
  };
29633
30236
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
29634
30237
  Table.prototype.tableModulekeyUp = function (e) {
@@ -29662,7 +30265,6 @@ var Table = /** @__PURE__ @class */ (function () {
29662
30265
  name: !isInternal ? 'showDialog' : null
29663
30266
  };
29664
30267
  this.insertTableDialog({ self: this, args: args, selection: selection });
29665
- this.parent.formatter.editorManager.nodeSelection.restore();
29666
30268
  }
29667
30269
  };
29668
30270
  Table.prototype.showDialog = function () {
@@ -30007,7 +30609,7 @@ var Table = /** @__PURE__ @class */ (function () {
30007
30609
  return;
30008
30610
  }
30009
30611
  var target = e.target || e.targetTouches[0].target;
30010
- var closestTable = closest(target, 'table.e-rte-table');
30612
+ var closestTable = closest(target, 'table.e-rte-table, table.e-rte-paste-table');
30011
30613
  if (!isNullOrUndefined(this.curTable) && !isNullOrUndefined(closestTable) && closestTable !== this.curTable &&
30012
30614
  this.parent.contentModule.getEditPanel().contains(closestTable)) {
30013
30615
  this.removeResizeElement();
@@ -30647,6 +31249,7 @@ var Table = /** @__PURE__ @class */ (function () {
30647
31249
  this.popupObj.hide();
30648
31250
  }
30649
31251
  if (this.editdlgObj) {
31252
+ this.parent.notify(documentClickClosedBy, { closedBy: "outside click" });
30650
31253
  this.editdlgObj.hide();
30651
31254
  }
30652
31255
  this.parent.isBlur = true;
@@ -30957,6 +31560,16 @@ var Table = /** @__PURE__ @class */ (function () {
30957
31560
  Table.prototype.getModuleName = function () {
30958
31561
  return 'table';
30959
31562
  };
31563
+ Table.prototype.afterKeyDown = function (e) {
31564
+ var _this = this;
31565
+ if (this.curTable) {
31566
+ setTimeout(function () {
31567
+ var mouseOverEvent = document.createEvent('MouseEvents');
31568
+ mouseOverEvent.initEvent('mouseover', true, true);
31569
+ _this.curTable.dispatchEvent(mouseOverEvent);
31570
+ }, 1);
31571
+ }
31572
+ };
30960
31573
  return Table;
30961
31574
  }());
30962
31575
 
@@ -30974,6 +31587,7 @@ var DialogRenderer = /** @__PURE__ @class */ (function () {
30974
31587
  }
30975
31588
  this.parent.on(moduleDestroy, this.moduleDestroy, this);
30976
31589
  this.parent.on(destroy, this.removeEventListener, this);
31590
+ this.parent.on(documentClickClosedBy, this.documentClickClosedBy, this);
30977
31591
  };
30978
31592
  DialogRenderer.prototype.removeEventListener = function () {
30979
31593
  if (this.parent.isDestroyed) {
@@ -30981,6 +31595,7 @@ var DialogRenderer = /** @__PURE__ @class */ (function () {
30981
31595
  }
30982
31596
  this.parent.off(destroy, this.removeEventListener);
30983
31597
  this.parent.off(moduleDestroy, this.moduleDestroy);
31598
+ this.parent.off(documentClickClosedBy, this.documentClickClosedBy);
30984
31599
  };
30985
31600
  /**
30986
31601
  * dialog render method
@@ -31027,10 +31642,14 @@ var DialogRenderer = /** @__PURE__ @class */ (function () {
31027
31642
  DialogRenderer.prototype.open = function (args) {
31028
31643
  this.parent.trigger(dialogOpen, args);
31029
31644
  };
31645
+ DialogRenderer.prototype.documentClickClosedBy = function (args) {
31646
+ this.outsideClickClosedBy = args.closedBy;
31647
+ };
31030
31648
  DialogRenderer.prototype.beforeClose = function (args) {
31031
31649
  if (this.dialogEle) {
31032
31650
  this.dialogEle.removeEventListener('keydown', this.handleEnterKeyDown);
31033
31651
  }
31652
+ args.closedBy = this.outsideClickClosedBy === 'outside click' ? this.outsideClickClosedBy : args.closedBy;
31034
31653
  this.parent.trigger(beforeDialogClose, args, function (closeArgs) {
31035
31654
  if (!closeArgs.cancel) {
31036
31655
  if (closeArgs.container.classList.contains('e-popup-close')) {
@@ -31038,6 +31657,7 @@ var DialogRenderer = /** @__PURE__ @class */ (function () {
31038
31657
  }
31039
31658
  }
31040
31659
  });
31660
+ this.outsideClickClosedBy = "";
31041
31661
  };
31042
31662
  DialogRenderer.prototype.getDialogPosition = function () {
31043
31663
  var distanceFromVisibleTop = this.parent.element.getBoundingClientRect().top;
@@ -32711,7 +33331,7 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
32711
33331
  if (tool.command === 'InsertText') {
32712
33332
  currentInsertContentLength = value.length;
32713
33333
  }
32714
- var currentLength = this.getText().trim().replace(/(\r\n|\n|\r)/gm, '').replace(/\u200B/g, '').length;
33334
+ var currentLength = this.getText().trim().replace(/(\r\n|\n|\r|\t)/gm, '').replace(/\u200B/g, '').length;
32715
33335
  var selectionLength = this.getSelection().length;
32716
33336
  var totalLength = (currentLength - selectionLength) + currentInsertContentLength;
32717
33337
  if (!(this.maxLength === -1 || totalLength <= this.maxLength)) {
@@ -33086,7 +33706,12 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
33086
33706
  FormatPainterEscapeAction = this.formatPainterModule.previousAction === 'escape';
33087
33707
  }
33088
33708
  if (!FormatPainterEscapeAction) {
33089
- this.formatter.process(this, null, e);
33709
+ if (this.editorMode === 'HTML' && (e.action === 'increase-fontsize' || e.action === 'decrease-fontsize')) {
33710
+ this.notify(onHandleFontsizeChange, { member: 'onHandleFontsizeChange', args: e });
33711
+ }
33712
+ else {
33713
+ this.formatter.process(this, null, e);
33714
+ }
33090
33715
  }
33091
33716
  switch (e.action) {
33092
33717
  case 'toolbar-focus':
@@ -33112,6 +33737,7 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
33112
33737
  this.setPlaceHolder();
33113
33738
  }
33114
33739
  }
33740
+ this.notify(afterKeyDown, { member: 'afterKeyDown', args: e });
33115
33741
  this.autoResize();
33116
33742
  };
33117
33743
  RichTextEditor.prototype.keyUp = function (e) {
@@ -33138,7 +33764,7 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
33138
33764
  var formatPainterCopy = e.key === 'C' && e.altKey && e.shiftKey;
33139
33765
  var formatPainterPaste = e.key === 'V' && e.altKey && e.shiftKey;
33140
33766
  if ((!formatPainterCopy && !formatPainterPaste) && ((e.key !== 'shift' && !e.ctrlKey) && e.key && e.key.length === 1 || allowedKeys) || (this.editorMode === 'Markdown'
33141
- && ((e.key !== 'shift' && !e.ctrlKey) && e.key && e.key.length === 1 || allowedKeys)) && !this.inlineMode.enable) {
33767
+ && ((e.key !== 'shift' && !e.ctrlKey) && e.key && e.key.length === 1 || allowedKeys)) || (this.autoSaveOnIdle && Browser.isDevice) && !this.inlineMode.enable) {
33142
33768
  this.formatter.onKeyHandler(this, e);
33143
33769
  }
33144
33770
  if (this.inputElement && this.inputElement.textContent.length !== 0
@@ -33234,60 +33860,6 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
33234
33860
  return;
33235
33861
  }
33236
33862
  }
33237
- if (e.detail === 3) {
33238
- var range = this.getRange();
33239
- var selection = this.formatter.editorManager.domNode.getSelection();
33240
- // To handle the triple click node selection improper range due to browser behavior.
33241
- if (selection.rangeCount > 0 && !isNullOrUndefined(range.startContainer.parentElement) && (!isNullOrUndefined(range.startContainer.parentElement.nextSibling) &&
33242
- (range.startContainer.parentElement.nextSibling.nodeType !== 3 ||
33243
- /\s+$/.test(range.startContainer.parentElement.nextSibling.textContent)) || range.startOffset === range.endOffset)
33244
- || range.startContainer.parentElement.tagName.toLocaleLowerCase() === 'li') {
33245
- var newRange = new Range();
33246
- var start = range.startContainer;
33247
- var end = range.endContainer;
33248
- var isInvalid = false;
33249
- var isInsideList = range.commonAncestorContainer.nodeName === 'OL' || range.commonAncestorContainer.nodeName === 'UL'
33250
- || range.commonAncestorContainer.nodeName === 'LI';
33251
- if (!isInsideList && end.nodeType === 1 && end.nodeName === 'LI') {
33252
- end = closest(end, 'ol, ul').previousElementSibling.lastElementChild;
33253
- }
33254
- else if (isInsideList && end.nodeType === 1 && range.endOffset === 0) {
33255
- if (end.previousElementSibling && end.previousElementSibling.lastElementChild) {
33256
- end = end.previousElementSibling.lastElementChild;
33257
- }
33258
- else {
33259
- end = closest(end.parentElement, 'li');
33260
- if (end && end.nodeName === 'LI') {
33261
- end = end.previousElementSibling;
33262
- }
33263
- }
33264
- }
33265
- else {
33266
- if (!closest(end, 'li') && end.previousElementSibling && end.previousElementSibling.lastChild &&
33267
- end.previousElementSibling.textContent.trim().length > 0) {
33268
- end = end.previousElementSibling.lastChild;
33269
- }
33270
- else if (closest(end, 'li') && end.previousElementSibling && end.previousElementSibling.lastChild) {
33271
- end = closest(end, 'li').parentElement.previousElementSibling.lastChild;
33272
- }
33273
- }
33274
- if (!end || end === this.inputElement) {
33275
- end = start;
33276
- isInvalid = true;
33277
- }
33278
- while (end.nodeName !== '#text' && !isInvalid) {
33279
- if (end.lastElementChild) {
33280
- end = end.lastElementChild;
33281
- }
33282
- else {
33283
- end = end.lastChild;
33284
- }
33285
- }
33286
- newRange.setStart(start, 0);
33287
- newRange.setEnd(end, end.textContent.length);
33288
- this.formatter.editorManager.nodeSelection.setRange(this.contentModule.getDocument(), newRange);
33289
- }
33290
- }
33291
33863
  this.notifyMouseUp(e);
33292
33864
  };
33293
33865
  /**
@@ -33329,10 +33901,10 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
33329
33901
  requestType: 'Paste'
33330
33902
  };
33331
33903
  this.trigger(actionBegin, evenArgs, function (pasteArgs) {
33332
- var currentLength = _this.inputElement.textContent.length;
33904
+ var currentLength = _this.getText().replace(/(\r\n|\n|\r|\t)/gm, '').replace(/\u200B/g, '').length;
33333
33905
  var selectionLength = _this.getSelection().length;
33334
33906
  var pastedContentLength = (isNullOrUndefined(e) || isNullOrUndefined(e.clipboardData))
33335
- ? 0 : e.clipboardData.getData('text/plain').replace(/(\r\n|\n|\r)/gm, '').replace(/\u200B/g, '').length;
33907
+ ? 0 : e.clipboardData.getData('text/plain').replace(/(\r\n|\n|\r|\t)/gm, '').replace(/\u200B/g, '').length;
33336
33908
  var totalLength = (currentLength - selectionLength) + pastedContentLength;
33337
33909
  if (_this.editorMode === 'Markdown') {
33338
33910
  var args_1 = { requestType: 'Paste', editorMode: _this.editorMode, event: e };
@@ -34410,6 +34982,7 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
34410
34982
  addClass([this.element], [CLS_FOCUS]);
34411
34983
  this.preventDefaultResize(e);
34412
34984
  this.notify(mouseDown, { args: e });
34985
+ this.formatter.editorManager.observer.notify(mouseDown, { args: e });
34413
34986
  this.clickPoints = { clientX: touch.clientX, clientY: touch.clientY };
34414
34987
  };
34415
34988
  RichTextEditor.prototype.preventImgResize = function (e) {
@@ -34571,6 +35144,7 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
34571
35144
  detach(item[i]);
34572
35145
  }
34573
35146
  }
35147
+ this.removeSelectionClassStates(valueElementWrapper);
34574
35148
  return valueElementWrapper.innerHTML;
34575
35149
  };
34576
35150
  RichTextEditor.prototype.updateStatus = function (e) {
@@ -34618,6 +35192,7 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
34618
35192
  }
34619
35193
  if (this.isBlur && isNullOrUndefined(trg)) {
34620
35194
  removeClass([this.element], [CLS_FOCUS]);
35195
+ this.removeSelectionClassStates(this.inputElement);
34621
35196
  this.notify(focusChange, {});
34622
35197
  var value = this.getUpdatedValue();
34623
35198
  this.setProperties({ value: value });
@@ -34793,7 +35368,7 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
34793
35368
  RichTextEditor.prototype.restrict = function (e) {
34794
35369
  if (this.maxLength >= 0) {
34795
35370
  var element = this.editorMode === 'Markdown' ? this.contentModule.getText() :
34796
- (e && e.currentTarget.textContent);
35371
+ (this.getText().replace(/(\r\n|\n|\r|\t)/gm, '').replace(/\u200B/g, ''));
34797
35372
  if (!element) {
34798
35373
  return;
34799
35374
  }
@@ -34943,6 +35518,21 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
34943
35518
  }
34944
35519
  }
34945
35520
  };
35521
+ RichTextEditor.prototype.removeSelectionClassStates = function (element) {
35522
+ var classNames = [CLS_IMG_FOCUS, CLS_TABLE_SEL, CLS_VID_FOCUS, CLS_AUD_FOCUS];
35523
+ for (var i = 0; i < classNames.length; i++) {
35524
+ var item = element.querySelectorAll('.' + classNames[i]);
35525
+ removeClass(item, classNames[i]);
35526
+ if (item.length === 0) {
35527
+ continue;
35528
+ }
35529
+ for (var j = 0; j < item.length; j++) {
35530
+ if (item[j].classList.length === 0) {
35531
+ item[j].removeAttribute('class');
35532
+ }
35533
+ }
35534
+ }
35535
+ };
34946
35536
  __decorate$1([
34947
35537
  Complex({}, ToolbarSettings$1)
34948
35538
  ], RichTextEditor.prototype, "toolbarSettings", void 0);
@@ -35247,5 +35837,5 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
35247
35837
  * Rich Text Editor component exported items
35248
35838
  */
35249
35839
 
35250
- export { Toolbar$2 as Toolbar, KeyboardEvents$1 as KeyboardEvents, BaseToolbar, BaseQuickToolbar, QuickToolbar, Count, ColorPickerInput, MarkdownToolbarStatus, ExecCommandCallBack, ToolbarAction, MarkdownEditor, HtmlEditor, PasteCleanup, Resize, DropDownButtons, FileManager$1 as FileManager, FullScreen, setAttributes, HtmlToolbarStatus, XhtmlValidation, FormatPainter, EmojiPicker, HTMLFormatter, Formatter, MarkdownFormatter, ContentRender, Render, ToolbarRenderer, Link, Image$1 as Image, Audio, Video, ViewSource, Table, DialogRenderer, IframeContentRender, MarkdownRender, PopupRenderer, RichTextEditor, RenderType, ToolbarType, DialogType, executeGroup, created, destroyed, tableclass, load, initialLoad, contentChanged, initialEnd, iframeMouseDown, destroy, toolbarClick, toolbarRefresh, refreshBegin, toolbarUpdated, bindOnEnd, renderColorPicker, htmlToolbarClick, markdownToolbarClick, destroyColorPicker, modelChanged, tableModulekeyUp, keyUp, keyDown, mouseUp, toolbarCreated, toolbarRenderComplete, enableFullScreen, disableFullScreen, dropDownSelect, beforeDropDownItemRender, execCommandCallBack, imageToolbarAction, audioToolbarAction, videoToolbarAction, linkToolbarAction, windowResize, resizeStart, onResize, resizeStop, undo, redo, insertLink, unLink, editLink, openLink, actionBegin, actionComplete, updatedToolbarStatus, actionSuccess, updateToolbarItem, insertImage, insertAudio, insertVideo, insertCompleted, imageLeft, imageRight, imageCenter, imageBreak, imageInline, imageLink, imageAlt, imageDelete, audioDelete, videoDelete, imageCaption, imageSize, videoSize, sourceCode, updateSource, toolbarOpen, beforeDropDownOpen, selectionSave, selectionRestore, expandPopupClick, count, contentFocus, contentBlur, mouseDown, sourceCodeMouseDown, editAreaClick, scroll, contentscroll, colorPickerChanged, tableColorPickerChanged, focusChange, selectAll$1 as selectAll, selectRange, getSelectedHtml, renderInlineToolbar, paste, imgModule, rtlMode, createTable, docClick, tableToolbarAction, checkUndo, readOnlyMode, moduleDestroy, pasteClean, enterHandler, beforeDialogOpen, clearDialogObj, dialogOpen, beforeDialogClose, dialogClose, beforeQuickToolbarOpen, quickToolbarOpen, quickToolbarClose, popupHide, imageSelected, imageUploading, imageUploadSuccess, imageUploadFailed, imageRemoving, fileSelected, fileUploading, fileUploadSuccess, fileUploadFailed, fileRemoving, afterImageDelete, afterMediaDelete, drop, xhtmlValidation, beforeImageUpload, beforeFileUpload, resizeInitialized, renderFileManager, beforeImageDrop, dynamicModule, beforePasteCleanup, afterPasteCleanup, updateTbItemsStatus, showLinkDialog, closeLinkDialog, showImageDialog, showAudioDialog, showVideoDialog, closeImageDialog, closeAudioDialog, closeVideoDialog, showTableDialog, closeTableDialog, bindCssClass, formatPainterClick, formatPainterDoubleClick, emojiPicker, destroyTooltip, hidePopup, cleanupResizeElements, updateValueOnIdle, blockEmptyNodes, inlineEmptyNodes, CLS_RTE, CLS_RTL, CLS_CONTENT, CLS_DISABLED, CLS_SCRIPT_SHEET, CLS_STYLE_SHEET, CLS_TOOLBAR, CLS_TB_FIXED, CLS_TB_FLOAT, CLS_TB_ABS_FLOAT, CLS_INLINE, CLS_TB_INLINE, CLS_RTE_EXPAND_TB, CLS_FULL_SCREEN, CLS_QUICK_TB, CLS_TEXT_QUICK_TB, CLS_POP, CLS_TB_STATIC, CLS_QUICK_POP, CLS_QUICK_DROPDOWN, CLS_IMAGE_POP, CLS_TEXT_POP, CLS_INLINE_POP, CLS_INLINE_DROPDOWN, CLS_DROPDOWN_POPUP, CLS_DROPDOWN_ICONS, CLS_DROPDOWN_ITEMS, CLS_DROPDOWN_BTN, CLS_RTE_CONTENT, CLS_TB_ITEM, CLS_TB_EXTENDED, CLS_TB_WRAP, CLS_POPUP, CLS_SEPARATOR, CLS_MINIMIZE, CLS_MAXIMIZE, CLS_BACK, CLS_SHOW, CLS_HIDE, CLS_VISIBLE, CLS_FOCUS, CLS_RM_WHITE_SPACE, CLS_IMGRIGHT, CLS_IMGLEFT, CLS_IMGCENTER, CLS_IMGBREAK, CLS_AUDIOBREAK, CLS_CLICKELEM, CLS_VID_CLICK_ELEM, CLS_AUDIOWRAP, CLS_VIDEOWRAP, CLS_VIDEOBREAK, CLS_CAPTION, CLS_RTE_CAPTION, CLS_CAPINLINE, CLS_IMGINLINE, CLS_AUDIOINLINE, CLS_VIDEOINLINE, CLS_COUNT, CLS_WARNING, CLS_ERROR, CLS_ICONS, CLS_ACTIVE, CLS_EXPAND_OPEN, CLS_RTE_ELEMENTS, CLS_TB_BTN, CLS_HR_SEPARATOR, CLS_TB_IOS_FIX, CLS_LIST_PRIMARY_CONTENT, CLS_NUMBERFORMATLIST_TB_BTN, CLS_BULLETFORMATLIST_TB_BTN, CLS_FORMATS_TB_BTN, CLS_FONT_NAME_TB_BTN, CLS_FONT_SIZE_TB_BTN, CLS_ALIGN_TB_BTN, CLS_FONT_COLOR_TARGET, CLS_BACKGROUND_COLOR_TARGET, CLS_COLOR_CONTENT, CLS_FONT_COLOR_DROPDOWN, CLS_BACKGROUND_COLOR_DROPDOWN, CLS_COLOR_PALETTE, CLS_FONT_COLOR_PICKER, CLS_BACKGROUND_COLOR_PICKER, CLS_RTE_READONLY, CLS_TABLE_SEL, CLS_TB_DASH_BOR, CLS_TB_ALT_BOR, CLS_TB_COL_RES, CLS_TB_ROW_RES, CLS_TB_BOX_RES, CLS_RTE_HIDDEN, CLS_RTE_PASTE_KEEP_FORMAT, CLS_RTE_PASTE_REMOVE_FORMAT, CLS_RTE_PASTE_PLAIN_FORMAT, CLS_RTE_PASTE_OK, CLS_RTE_PASTE_CANCEL, CLS_RTE_DIALOG_MIN_HEIGHT, CLS_RTE_RES_HANDLE, CLS_RTE_RES_EAST, CLS_RTE_IMAGE, CLS_RESIZE, CLS_IMG_FOCUS, CLS_AUD_FOCUS, CLS_VID_FOCUS, CLS_RTE_DRAG_IMAGE, CLS_RTE_UPLOAD_POPUP, CLS_POPUP_OPEN, CLS_IMG_RESIZE, CLS_DROPAREA, CLS_IMG_INNER, CLS_UPLOAD_FILES, CLS_RTE_DIALOG_UPLOAD, CLS_RTE_RES_CNT, CLS_CUSTOM_TILE, CLS_NOCOLOR_ITEM, CLS_TABLE, CLS_TABLE_BORDER, CLS_RTE_TABLE_RESIZE, CLS_RTE_FIXED_TB_EXPAND, CLS_RTE_TB_ENABLED, CLS_RTE_RES_WEST, CLS_RTE_SOURCE_CODE_TXTAREA, getIndex, hasClass, getDropDownValue, isIDevice, getFormattedFontSize, pageYOffset, getTooltipText, setToolbarStatus, getCollection, getTBarItemsIndex, updateUndoRedoStatus, dispatchEvent, parseHtml, getTextNodesUnder, toObjectLowerCase, getEditValue, updateTextNode, getDefaultValue, isEditableValueEmpty, decode, sanitizeHelper, convertToBlob, getLocaleFontFormat, updateDropDownFontFormatLocale, ServiceLocator, RendererFactory, EditorManager, IMAGE, AUDIO, VIDEO, TABLE, LINK, INSERT_ROW, INSERT_COLUMN, DELETEROW, DELETECOLUMN, REMOVETABLE, TABLEHEADER, TABLE_VERTICAL_ALIGN, TABLE_MERGE, TABLE_VERTICAL_SPLIT, TABLE_HORIZONTAL_SPLIT, TABLE_MOVE, ALIGNMENT_TYPE, INDENT_TYPE, DEFAULT_TAG, BLOCK_TAGS, IGNORE_BLOCK_TAGS, TABLE_BLOCK_TAGS, SELECTION_TYPE, INSERTHTML_TYPE, INSERT_TEXT_TYPE, CLEAR_TYPE, SELF_CLOSING_TAGS, CLASS_IMAGE_RIGHT, CLASS_IMAGE_LEFT, CLASS_IMAGE_CENTER, CLASS_VIDEO_RIGHT, CLASS_VIDEO_LEFT, CLASS_VIDEO_CENTER, CLASS_IMAGE_BREAK, CLASS_AUDIO_BREAK, CLASS_VIDEO_BREAK, CLASS_CAPTION, CLASS_RTE_CAPTION, CLASS_CAPTION_INLINE, CLASS_IMAGE_INLINE, CLASS_AUDIO_INLINE, CLASS_CLICK_ELEM, CLASS_VIDEO_CLICK_ELEM, CLASS_AUDIO, CLASS_VIDEO, CLASS_AUDIO_WRAP, CLASS_VIDEO_WRAP, CLASS_EMBED_VIDEO_WRAP, CLASS_AUDIO_FOCUS, CLASS_VIDEO_FOCUS, CLASS_VIDEO_INLINE, Lists, markerClassName, DOMNode, Alignments, Indents, Formats, LinkCommand, InsertMethods, InsertTextExec, InsertHtmlExec, InsertHtml, IsFormatted, MsWordPaste, NodeCutter, ImageCommand, AudioCommand, VideoCommand, SelectionCommands, SelectionBasedExec, ClearFormatExec, UndoRedoManager, TableCommand, statusCollection, ToolbarStatus, FormatPainterActions, EmojiPickerAction, NodeSelection, MarkdownParser, LISTS_COMMAND, selectionCommand, LINK_COMMAND, CLEAR_COMMAND, MD_TABLE, INSERT_TEXT_COMMAND, ClearFormat, MDLists, MDFormats, MarkdownSelection, UndoRedoCommands, MDSelectionFormats, MDLink, MDTable, markdownFormatTags, markdownSelectionTags, markdownListsTags, htmlKeyConfig, markdownKeyConfig, pasteCleanupGroupingTags, listConversionFilters, selfClosingTags, KEY_DOWN, ACTION, FORMAT_TYPE, KEY_DOWN_HANDLER, LIST_TYPE, KEY_UP_HANDLER, KEY_UP, MODEL_CHANGED_PLUGIN, MODEL_CHANGED, MS_WORD_CLEANUP_PLUGIN, MS_WORD_CLEANUP, ON_BEGIN, SPACE_ACTION, FORMAT_PAINTER_ACTIONS, EMOJI_PICKER_ACTIONS };
35840
+ export { Toolbar$2 as Toolbar, KeyboardEvents$1 as KeyboardEvents, BaseToolbar, BaseQuickToolbar, QuickToolbar, Count, ColorPickerInput, MarkdownToolbarStatus, ExecCommandCallBack, ToolbarAction, MarkdownEditor, HtmlEditor, PasteCleanup, Resize, DropDownButtons, FileManager$1 as FileManager, FullScreen, setAttributes, HtmlToolbarStatus, XhtmlValidation, FormatPainter, EmojiPicker, HTMLFormatter, Formatter, MarkdownFormatter, ContentRender, Render, ToolbarRenderer, Link, Image$1 as Image, Audio, Video, ViewSource, Table, DialogRenderer, IframeContentRender, MarkdownRender, PopupRenderer, RichTextEditor, RenderType, ToolbarType, DialogType, executeGroup, created, destroyed, tableclass, load, initialLoad, contentChanged, initialEnd, iframeMouseDown, destroy, toolbarClick, toolbarRefresh, refreshBegin, toolbarUpdated, bindOnEnd, renderColorPicker, htmlToolbarClick, markdownToolbarClick, destroyColorPicker, modelChanged, tableModulekeyUp, keyUp, keyDown, mouseUp, toolbarCreated, toolbarRenderComplete, enableFullScreen, disableFullScreen, dropDownSelect, beforeDropDownItemRender, execCommandCallBack, imageToolbarAction, audioToolbarAction, videoToolbarAction, linkToolbarAction, windowResize, resizeStart, onResize, resizeStop, undo, redo, insertLink, unLink, editLink, openLink, actionBegin, actionComplete, updatedToolbarStatus, actionSuccess, updateToolbarItem, insertImage, insertAudio, insertVideo, insertCompleted, imageLeft, imageRight, imageCenter, imageBreak, imageInline, imageLink, imageAlt, imageDelete, audioDelete, videoDelete, imageCaption, imageSize, videoSize, sourceCode, updateSource, toolbarOpen, beforeDropDownOpen, selectionSave, selectionRestore, expandPopupClick, count, contentFocus, contentBlur, mouseDown, sourceCodeMouseDown, editAreaClick, scroll, contentscroll, colorPickerChanged, tableColorPickerChanged, focusChange, selectAll$1 as selectAll, selectRange, getSelectedHtml, renderInlineToolbar, paste, imgModule, rtlMode, createTable, docClick, tableToolbarAction, checkUndo, readOnlyMode, moduleDestroy, pasteClean, enterHandler, beforeDialogOpen, clearDialogObj, dialogOpen, beforeDialogClose, dialogClose, beforeQuickToolbarOpen, quickToolbarOpen, quickToolbarClose, popupHide, imageSelected, imageUploading, imageUploadSuccess, imageUploadFailed, imageRemoving, fileSelected, fileUploading, fileUploadSuccess, fileUploadFailed, fileRemoving, afterImageDelete, afterMediaDelete, drop, xhtmlValidation, beforeImageUpload, beforeFileUpload, resizeInitialized, renderFileManager, beforeImageDrop, dynamicModule, beforePasteCleanup, afterPasteCleanup, updateTbItemsStatus, showLinkDialog, closeLinkDialog, showImageDialog, showAudioDialog, showVideoDialog, closeImageDialog, closeAudioDialog, closeVideoDialog, showTableDialog, closeTableDialog, bindCssClass, formatPainterClick, formatPainterDoubleClick, emojiPicker, destroyTooltip, hidePopup, cleanupResizeElements, afterKeyDown, updateValueOnIdle, documentClickClosedBy, blockEmptyNodes, inlineEmptyNodes, supportedUnits, conversionFactors, onHandleFontsizeChange, CLS_RTE, CLS_RTL, CLS_CONTENT, CLS_DISABLED, CLS_SCRIPT_SHEET, CLS_STYLE_SHEET, CLS_TOOLBAR, CLS_TB_FIXED, CLS_TB_FLOAT, CLS_TB_ABS_FLOAT, CLS_INLINE, CLS_TB_INLINE, CLS_RTE_EXPAND_TB, CLS_FULL_SCREEN, CLS_QUICK_TB, CLS_TEXT_QUICK_TB, CLS_POP, CLS_TB_STATIC, CLS_QUICK_POP, CLS_QUICK_DROPDOWN, CLS_IMAGE_POP, CLS_TEXT_POP, CLS_INLINE_POP, CLS_INLINE_DROPDOWN, CLS_DROPDOWN_POPUP, CLS_DROPDOWN_ICONS, CLS_DROPDOWN_ITEMS, CLS_DROPDOWN_BTN, CLS_RTE_CONTENT, CLS_TB_ITEM, CLS_TB_EXTENDED, CLS_TB_WRAP, CLS_POPUP, CLS_SEPARATOR, CLS_MINIMIZE, CLS_MAXIMIZE, CLS_BACK, CLS_SHOW, CLS_HIDE, CLS_VISIBLE, CLS_FOCUS, CLS_RM_WHITE_SPACE, CLS_IMGRIGHT, CLS_IMGLEFT, CLS_IMGCENTER, CLS_IMGBREAK, CLS_AUDIOBREAK, CLS_CLICKELEM, CLS_VID_CLICK_ELEM, CLS_AUDIOWRAP, CLS_VIDEOWRAP, CLS_VIDEOBREAK, CLS_CAPTION, CLS_RTE_CAPTION, CLS_CAPINLINE, CLS_IMGINLINE, CLS_AUDIOINLINE, CLS_VIDEOINLINE, CLS_COUNT, CLS_WARNING, CLS_ERROR, CLS_ICONS, CLS_ACTIVE, CLS_EXPAND_OPEN, CLS_RTE_ELEMENTS, CLS_TB_BTN, CLS_HR_SEPARATOR, CLS_TB_IOS_FIX, CLS_LIST_PRIMARY_CONTENT, CLS_NUMBERFORMATLIST_TB_BTN, CLS_BULLETFORMATLIST_TB_BTN, CLS_FORMATS_TB_BTN, CLS_FONT_NAME_TB_BTN, CLS_FONT_SIZE_TB_BTN, CLS_ALIGN_TB_BTN, CLS_FONT_COLOR_TARGET, CLS_BACKGROUND_COLOR_TARGET, CLS_COLOR_CONTENT, CLS_FONT_COLOR_DROPDOWN, CLS_BACKGROUND_COLOR_DROPDOWN, CLS_COLOR_PALETTE, CLS_FONT_COLOR_PICKER, CLS_BACKGROUND_COLOR_PICKER, CLS_RTE_READONLY, CLS_TABLE_SEL, CLS_TB_DASH_BOR, CLS_TB_ALT_BOR, CLS_TB_COL_RES, CLS_TB_ROW_RES, CLS_TB_BOX_RES, CLS_RTE_HIDDEN, CLS_RTE_PASTE_KEEP_FORMAT, CLS_RTE_PASTE_REMOVE_FORMAT, CLS_RTE_PASTE_PLAIN_FORMAT, CLS_RTE_PASTE_OK, CLS_RTE_PASTE_CANCEL, CLS_RTE_DIALOG_MIN_HEIGHT, CLS_RTE_RES_HANDLE, CLS_RTE_RES_EAST, CLS_RTE_IMAGE, CLS_RESIZE, CLS_IMG_FOCUS, CLS_AUD_FOCUS, CLS_VID_FOCUS, CLS_RTE_DRAG_IMAGE, CLS_RTE_UPLOAD_POPUP, CLS_POPUP_OPEN, CLS_IMG_RESIZE, CLS_DROPAREA, CLS_IMG_INNER, CLS_UPLOAD_FILES, CLS_RTE_DIALOG_UPLOAD, CLS_RTE_RES_CNT, CLS_CUSTOM_TILE, CLS_NOCOLOR_ITEM, CLS_TABLE, CLS_TABLE_BORDER, CLS_RTE_TABLE_RESIZE, CLS_RTE_FIXED_TB_EXPAND, CLS_RTE_TB_ENABLED, CLS_RTE_RES_WEST, CLS_RTE_SOURCE_CODE_TXTAREA, getIndex, hasClass, getDropDownValue, isIDevice, getFormattedFontSize, pageYOffset, getTooltipText, getTooltipTextDropdownItems, getQuickToolbarTooltipText, setToolbarStatus, getCollection, getTBarItemsIndex, updateUndoRedoStatus, dispatchEvent, parseHtml, getTextNodesUnder, toObjectLowerCase, getEditValue, updateTextNode, getDefaultValue, isEditableValueEmpty, decode, sanitizeHelper, convertToBlob, getLocaleFontFormat, updateDropDownFontFormatLocale, ServiceLocator, RendererFactory, EditorManager, IMAGE, AUDIO, VIDEO, TABLE, LINK, INSERT_ROW, INSERT_COLUMN, DELETEROW, DELETECOLUMN, REMOVETABLE, TABLEHEADER, TABLE_VERTICAL_ALIGN, TABLE_MERGE, TABLE_VERTICAL_SPLIT, TABLE_HORIZONTAL_SPLIT, TABLE_MOVE, ALIGNMENT_TYPE, INDENT_TYPE, DEFAULT_TAG, BLOCK_TAGS, IGNORE_BLOCK_TAGS, TABLE_BLOCK_TAGS, SELECTION_TYPE, INSERTHTML_TYPE, INSERT_TEXT_TYPE, CLEAR_TYPE, SELF_CLOSING_TAGS, PASTE_SOURCE, CLASS_IMAGE_RIGHT, CLASS_IMAGE_LEFT, CLASS_IMAGE_CENTER, CLASS_VIDEO_RIGHT, CLASS_VIDEO_LEFT, CLASS_VIDEO_CENTER, CLASS_IMAGE_BREAK, CLASS_AUDIO_BREAK, CLASS_VIDEO_BREAK, CLASS_CAPTION, CLASS_RTE_CAPTION, CLASS_CAPTION_INLINE, CLASS_IMAGE_INLINE, CLASS_AUDIO_INLINE, CLASS_CLICK_ELEM, CLASS_VIDEO_CLICK_ELEM, CLASS_AUDIO, CLASS_VIDEO, CLASS_AUDIO_WRAP, CLASS_VIDEO_WRAP, CLASS_EMBED_VIDEO_WRAP, CLASS_AUDIO_FOCUS, CLASS_VIDEO_FOCUS, CLASS_VIDEO_INLINE, Lists, markerClassName, DOMNode, Alignments, Indents, Formats, LinkCommand, InsertMethods, InsertTextExec, InsertHtmlExec, InsertHtml, IsFormatted, MsWordPaste, NodeCutter, ImageCommand, AudioCommand, VideoCommand, SelectionCommands, SelectionBasedExec, ClearFormatExec, UndoRedoManager, TableCommand, statusCollection, ToolbarStatus, FormatPainterActions, EmojiPickerAction, NodeSelection, MarkdownParser, LISTS_COMMAND, selectionCommand, LINK_COMMAND, CLEAR_COMMAND, MD_TABLE, INSERT_TEXT_COMMAND, ClearFormat, MDLists, MDFormats, MarkdownSelection, UndoRedoCommands, MDSelectionFormats, MDLink, MDTable, markdownFormatTags, markdownSelectionTags, markdownListsTags, htmlKeyConfig, markdownKeyConfig, pasteCleanupGroupingTags, listConversionFilters, selfClosingTags, KEY_DOWN, ACTION, FORMAT_TYPE, KEY_DOWN_HANDLER, LIST_TYPE, KEY_UP_HANDLER, KEY_UP, MODEL_CHANGED_PLUGIN, MODEL_CHANGED, MS_WORD_CLEANUP_PLUGIN, MS_WORD_CLEANUP, ON_BEGIN, SPACE_ACTION, FORMAT_PAINTER_ACTIONS, EMOJI_PICKER_ACTIONS, MOUSE_DOWN };
35251
35841
  //# sourceMappingURL=ej2-richtexteditor.es5.js.map