@syncfusion/ej2-richtexteditor 24.1.47 → 24.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/CHANGELOG.md +30 -2
  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 +832 -209
  6. package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
  7. package/dist/es6/ej2-richtexteditor.es5.js +835 -203
  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.d.ts +6 -0
  16. package/src/common/util.js +58 -20
  17. package/src/editor-manager/base/constant.d.ts +6 -0
  18. package/src/editor-manager/base/constant.js +6 -0
  19. package/src/editor-manager/base/editor-manager.d.ts +5 -0
  20. package/src/editor-manager/base/editor-manager.js +59 -0
  21. package/src/editor-manager/base/interface.d.ts +8 -0
  22. package/src/editor-manager/plugin/dom-node.js +3 -1
  23. package/src/editor-manager/plugin/format-painter-actions.js +1 -1
  24. package/src/editor-manager/plugin/inserthtml.js +7 -2
  25. package/src/editor-manager/plugin/ms-word-clean-up.d.ts +2 -0
  26. package/src/editor-manager/plugin/ms-word-clean-up.js +39 -10
  27. package/src/editor-manager/plugin/selection-commands.js +16 -0
  28. package/src/editor-manager/plugin/table.d.ts +0 -1
  29. package/src/editor-manager/plugin/table.js +14 -26
  30. package/src/editor-manager/plugin/undo.d.ts +1 -0
  31. package/src/editor-manager/plugin/undo.js +21 -1
  32. package/src/rich-text-editor/actions/base-quick-toolbar.js +3 -0
  33. package/src/rich-text-editor/actions/base-toolbar.js +8 -4
  34. package/src/rich-text-editor/actions/count.js +1 -1
  35. package/src/rich-text-editor/actions/dropdown-buttons.js +21 -2
  36. package/src/rich-text-editor/actions/emoji-picker.js +1 -1
  37. package/src/rich-text-editor/actions/full-screen.js +1 -0
  38. package/src/rich-text-editor/actions/html-editor.d.ts +2 -0
  39. package/src/rich-text-editor/actions/html-editor.js +88 -4
  40. package/src/rich-text-editor/actions/keyboard.js +3 -1
  41. package/src/rich-text-editor/actions/paste-clean-up.d.ts +1 -0
  42. package/src/rich-text-editor/actions/paste-clean-up.js +32 -4
  43. package/src/rich-text-editor/actions/toolbar.d.ts +2 -1
  44. package/src/rich-text-editor/base/constant.d.ts +25 -0
  45. package/src/rich-text-editor/base/constant.js +194 -0
  46. package/src/rich-text-editor/base/interface.d.ts +6 -1
  47. package/src/rich-text-editor/base/rich-text-editor.d.ts +1 -0
  48. package/src/rich-text-editor/base/rich-text-editor.js +34 -64
  49. package/src/rich-text-editor/base/util.d.ts +4 -0
  50. package/src/rich-text-editor/base/util.js +35 -1
  51. package/src/rich-text-editor/formatter/formatter.js +15 -4
  52. package/src/rich-text-editor/models/default-locale.js +17 -17
  53. package/src/rich-text-editor/models/items.js +2 -2
  54. package/src/rich-text-editor/renderer/audio-module.d.ts +1 -0
  55. package/src/rich-text-editor/renderer/audio-module.js +13 -0
  56. package/src/rich-text-editor/renderer/dialog-renderer.d.ts +2 -0
  57. package/src/rich-text-editor/renderer/dialog-renderer.js +7 -0
  58. package/src/rich-text-editor/renderer/iframe-content-renderer.js +1 -1
  59. package/src/rich-text-editor/renderer/image-module.d.ts +1 -0
  60. package/src/rich-text-editor/renderer/image-module.js +20 -2
  61. package/src/rich-text-editor/renderer/link-module.js +10 -1
  62. package/src/rich-text-editor/renderer/table-module.d.ts +2 -0
  63. package/src/rich-text-editor/renderer/table-module.js +22 -2
  64. package/src/rich-text-editor/renderer/toolbar-renderer.d.ts +1 -0
  65. package/src/rich-text-editor/renderer/toolbar-renderer.js +25 -3
  66. package/src/rich-text-editor/renderer/video-module.d.ts +3 -0
  67. package/src/rich-text-editor/renderer/video-module.js +54 -30
  68. package/src/selection/selection.js +3 -0
  69. package/styles/bootstrap-dark.css +44 -6
  70. package/styles/bootstrap.css +44 -6
  71. package/styles/bootstrap4.css +44 -6
  72. package/styles/bootstrap5-dark.css +44 -6
  73. package/styles/bootstrap5.css +44 -6
  74. package/styles/fabric-dark.css +44 -6
  75. package/styles/fabric.css +44 -6
  76. package/styles/fluent-dark.css +44 -6
  77. package/styles/fluent.css +44 -6
  78. package/styles/highcontrast-light.css +44 -6
  79. package/styles/highcontrast.css +44 -6
  80. package/styles/material-dark.css +44 -6
  81. package/styles/material.css +44 -6
  82. package/styles/material3-dark.css +58 -14
  83. package/styles/material3.css +58 -14
  84. package/styles/rich-text-editor/_layout.scss +39 -2
  85. package/styles/rich-text-editor/_material-definition.scss +0 -1
  86. package/styles/rich-text-editor/_material3-definition.scss +7 -7
  87. package/styles/rich-text-editor/_theme.scss +12 -5
  88. package/styles/rich-text-editor/bootstrap-dark.css +44 -6
  89. package/styles/rich-text-editor/bootstrap.css +44 -6
  90. package/styles/rich-text-editor/bootstrap4.css +44 -6
  91. package/styles/rich-text-editor/bootstrap5-dark.css +44 -6
  92. package/styles/rich-text-editor/bootstrap5.css +44 -6
  93. package/styles/rich-text-editor/fabric-dark.css +44 -6
  94. package/styles/rich-text-editor/fabric.css +44 -6
  95. package/styles/rich-text-editor/fluent-dark.css +44 -6
  96. package/styles/rich-text-editor/fluent.css +44 -6
  97. package/styles/rich-text-editor/highcontrast-light.css +44 -6
  98. package/styles/rich-text-editor/highcontrast.css +44 -6
  99. package/styles/rich-text-editor/material-dark.css +44 -6
  100. package/styles/rich-text-editor/material.css +44 -6
  101. package/styles/rich-text-editor/material3-dark.css +58 -14
  102. package/styles/rich-text-editor/material3.css +58 -14
  103. package/styles/rich-text-editor/tailwind-dark.css +44 -6
  104. package/styles/rich-text-editor/tailwind.css +44 -6
  105. package/styles/tailwind-dark.css +44 -6
  106. 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
  },
@@ -2467,11 +2661,11 @@ var defaultLocale = {
2467
2661
  'audioLayoutOption': 'Layout option',
2468
2662
  'videoLayoutOption': 'Layout option',
2469
2663
  'align': 'Align',
2470
- 'caption': 'Image Caption',
2664
+ 'caption': 'Caption',
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,22 +2717,22 @@ 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',
2531
2725
  'cellspacing': 'Cell Spacing',
2532
2726
  'columns': 'Number of columns',
2533
2727
  'rows': 'Number of rows',
2534
- 'tableRows': 'Table Rows',
2535
- 'tableColumns': 'Table Columns',
2728
+ 'tableRows': 'Row',
2729
+ 'tableColumns': 'Column',
2536
2730
  'tableCellHorizontalAlign': 'Table Cell Horizontal Align',
2537
- 'tableCellVerticalAlign': 'Table Cell Vertical Align',
2731
+ 'tableCellVerticalAlign': 'Vertical Align',
2538
2732
  'createTable': 'Create Table',
2539
2733
  'removeTable': 'Remove Table',
2540
- 'tableHeader': 'Table Header',
2541
- 'tableRemove': 'Table Remove',
2734
+ 'tableHeader': 'Header Row',
2735
+ 'tableRemove': 'Delete',
2542
2736
  'tableCellBackground': 'Table Cell Background',
2543
2737
  'tableEditProperties': 'Table Edit Properties',
2544
2738
  'styles': 'Styles',
@@ -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++) {
@@ -7649,6 +7937,33 @@ function getDefaultMDTbStatus() {
7649
7937
  formats: null
7650
7938
  };
7651
7939
  }
7940
+ /**
7941
+ * @param {Range} range - specifies the range
7942
+ * @returns {void}
7943
+ * @hidden
7944
+ */
7945
+ function nestedListCleanUp(range) {
7946
+ if (range.startContainer.parentElement.closest('ol,ul') !== null && range.endContainer.parentElement.closest('ol,ul') !== null) {
7947
+ range.extractContents();
7948
+ while ((range.startContainer.nodeName === "#text" ? range.startContainer.parentElement : range.startContainer).querySelectorAll('li :empty').length > 0 ||
7949
+ (range.startContainer.nodeName === "#text" ? range.startContainer.parentElement : range.startContainer).querySelectorAll('ol :empty').length > 0) {
7950
+ var emptyLI = (range.startContainer.nodeName === "#text" ? range.startContainer.parentElement : range.startContainer).querySelectorAll('li :empty');
7951
+ if (emptyLI.length > 0) {
7952
+ emptyLI.forEach(function (item) {
7953
+ item.remove();
7954
+ });
7955
+ }
7956
+ }
7957
+ var liElem = (range.startContainer.nodeName === "#text" ? range.startContainer.parentElement : range.startContainer).querySelectorAll("li");
7958
+ if (liElem.length > 0) {
7959
+ liElem.forEach(function (item) {
7960
+ if (item.firstChild.nodeName === "OL" || item.firstChild.nodeName === "UL") {
7961
+ item.style.listStyleType = "none";
7962
+ }
7963
+ });
7964
+ }
7965
+ }
7966
+ }
7652
7967
 
7653
7968
  /**
7654
7969
  * MarkdownToolbarStatus module for refresh the toolbar status
@@ -7893,6 +8208,12 @@ var FORMAT_PAINTER_ACTIONS = 'format_painter_actions';
7893
8208
  * @hidden
7894
8209
  */
7895
8210
  var EMOJI_PICKER_ACTIONS = 'emoji_picker_actions';
8211
+ /**
8212
+ * Mouse down event constant
8213
+ *
8214
+ * @hidden
8215
+ */
8216
+ var MOUSE_DOWN = 'mouseDown';
7896
8217
 
7897
8218
  /**
7898
8219
  * Formatter
@@ -7919,12 +8240,21 @@ var Formatter = /** @__PURE__ @class */ (function () {
7919
8240
  var selection = self.contentModule.getDocument().getSelection();
7920
8241
  var range = (selection.rangeCount > 0) ? selection.getRangeAt(selection.rangeCount - 1) : null;
7921
8242
  var saveSelection;
8243
+ var newRange;
8244
+ if (!isNullOrUndefined(value) && !isNullOrUndefined(value.selection)) {
8245
+ newRange = value.selection.range;
8246
+ }
7922
8247
  var isKeyboardVideoInsert = (!isNullOrUndefined(value) && !isNullOrUndefined(value.cssClass) &&
7923
8248
  value.cssClass !== 'e-video-inline');
7924
8249
  if (self.editorMode === 'HTML') {
7925
8250
  if (!isNullOrUndefined(args) && !isKeyboardVideoInsert) {
7926
8251
  if (isNullOrUndefined(args.name) || (!isNullOrUndefined(args.name) && args.name !== 'showDialog')) {
7927
- saveSelection = this.editorManager.nodeSelection.save(range, self.contentModule.getDocument());
8252
+ if (newRange) {
8253
+ saveSelection = this.editorManager.nodeSelection.save(newRange, self.contentModule.getDocument());
8254
+ }
8255
+ else {
8256
+ saveSelection = this.editorManager.nodeSelection.save(range, self.contentModule.getDocument());
8257
+ }
7928
8258
  }
7929
8259
  }
7930
8260
  }
@@ -7952,7 +8282,7 @@ var Formatter = /** @__PURE__ @class */ (function () {
7952
8282
  if (args.item.command === 'Images' || args.item.command === 'Videos' || args.item.command === 'Table' || args.item.command === 'Files') {
7953
8283
  currentInsertContentLength = 1;
7954
8284
  }
7955
- var currentLength = self.getText().trim().replace(/(\r\n|\n|\r)/gm, '').replace(/\u200B/g, '').length;
8285
+ var currentLength = self.getText().trim().replace(/(\r\n|\n|\r|\t)/gm, '').replace(/\u200B/g, '').length;
7956
8286
  var selectionLength = self.getSelection().length;
7957
8287
  var totalLength = (currentLength - selectionLength) + currentInsertContentLength;
7958
8288
  if (!(self.maxLength === -1 || totalLength <= self.maxLength)) {
@@ -8016,7 +8346,9 @@ var Formatter = /** @__PURE__ @class */ (function () {
8016
8346
  _this.saveData();
8017
8347
  }
8018
8348
  self.isBlur = false;
8019
- self.contentModule.getEditPanel().focus();
8349
+ if (isNullOrUndefined(saveSelection) || isNullOrUndefined(closest(saveSelection.range.startContainer.parentElement, ".e-img-caption")) ? true : !(closest(saveSelection.range.startContainer.parentElement, ".e-img-caption").getAttribute("contenteditable") == "false")) {
8350
+ self.contentModule.getEditPanel().focus();
8351
+ }
8020
8352
  if (self.editorMode === 'HTML' && !isKeyboardVideoInsert) {
8021
8353
  if (isNullOrUndefined(args.selectType) || (!isNullOrUndefined(args.selectType) && args.selectType !== 'showDialog')) {
8022
8354
  saveSelection.restore();
@@ -10510,6 +10842,12 @@ var CLEAR_TYPE = 'clear-type';
10510
10842
  * @hidden
10511
10843
  */
10512
10844
  var SELF_CLOSING_TAGS = ['area', 'base', 'br', 'embed', 'hr', 'img', 'input', 'param', 'source', 'track', 'wbr', 'iframe', 'td', 'table'];
10845
+ /**
10846
+ * Source
10847
+ *
10848
+ * @hidden
10849
+ */
10850
+ var PASTE_SOURCE = ['word', 'excel', 'onenote'];
10513
10851
 
10514
10852
  /**
10515
10853
  * `Selection` module is used to handle RTE Selections.
@@ -10600,6 +10938,9 @@ var NodeSelection = /** @__PURE__ @class */ (function () {
10600
10938
  || this.isChildNode(nodeCollection, startNode))) {
10601
10939
  return null;
10602
10940
  }
10941
+ if (startNode.nodeType === 3 && startNode.previousSibling === endNode && endNode.nodeName === 'IMG') {
10942
+ return null;
10943
+ }
10603
10944
  if (nodeCollection.indexOf(startNode.firstChild) === -1 && startNode.firstChild && !this.isChildNode(nodeCollection, startNode)) {
10604
10945
  return startNode.firstChild;
10605
10946
  }
@@ -11524,7 +11865,9 @@ var DOMNode = /** @__PURE__ @class */ (function () {
11524
11865
  else if (start.tagName === 'BR') {
11525
11866
  this.replaceWith(start, this.marker(className, this.encode(start.textContent)));
11526
11867
  var markerStart = range.startContainer.querySelector('.' + className);
11527
- markerStart.parentElement.appendChild(start);
11868
+ if (markerStart) {
11869
+ markerStart.parentElement.appendChild(start);
11870
+ }
11528
11871
  }
11529
11872
  else {
11530
11873
  if (start.tagName === 'IMG') {
@@ -13323,7 +13666,12 @@ var InsertHtml = /** @__PURE__ @class */ (function () {
13323
13666
  lasNode.textContent.length : lasNode.childNodes.length);
13324
13667
  range = nodeSelection.getRange(docElement);
13325
13668
  }
13326
- range.extractContents();
13669
+ if (range.startContainer.parentElement.closest('ol,ul') !== null && range.endContainer.parentElement.closest('ol,ul') !== null) {
13670
+ nestedListCleanUp(range);
13671
+ }
13672
+ else {
13673
+ range.extractContents();
13674
+ }
13327
13675
  if (insertNode.tagName === 'TABLE') {
13328
13676
  this.removeEmptyElements(editNode);
13329
13677
  }
@@ -15176,7 +15524,6 @@ var TableCommand = /** @__PURE__ @class */ (function () {
15176
15524
  table.appendChild(tblBody);
15177
15525
  e.item.selection.restore();
15178
15526
  InsertHtml.Insert(this.parent.currentDocument, table, this.parent.editableElement);
15179
- this.removeEmptyNode();
15180
15527
  e.item.selection.setSelectionText(this.parent.currentDocument, table.querySelector('td'), table.querySelector('td'), 0, 0);
15181
15528
  if (table.nextElementSibling === null) {
15182
15529
  var insertElem = void 0;
@@ -15220,24 +15567,6 @@ var TableCommand = /** @__PURE__ @class */ (function () {
15220
15567
  }
15221
15568
  return styleValue;
15222
15569
  };
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
15570
  TableCommand.prototype.insertAfter = function (newNode, referenceNode) {
15242
15571
  referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
15243
15572
  };
@@ -15585,14 +15914,21 @@ var TableCommand = /** @__PURE__ @class */ (function () {
15585
15914
  }
15586
15915
  };
15587
15916
  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';
15917
+ var value = '';
15918
+ switch (e.item.subCommand) {
15919
+ case 'AlignTop':
15920
+ value = 'top';
15921
+ break;
15922
+ case 'AlignMiddle':
15923
+ value = 'middle';
15924
+ break;
15925
+ case 'AlignBottom':
15926
+ value = 'bottom';
15927
+ break;
15593
15928
  }
15594
- else {
15595
- e.item.tableCell.style.verticalAlign = 'bottom';
15929
+ e.item.tableCell.style.verticalAlign = value;
15930
+ if (value && value !== '' && e.item.tableCell.getAttribute('valign')) {
15931
+ e.item.tableCell.removeAttribute('valign');
15596
15932
  }
15597
15933
  if (e.callBack) {
15598
15934
  e.callBack({
@@ -16350,6 +16686,22 @@ var SelectionCommands = /** @__PURE__ @class */ (function () {
16350
16686
  var nodeCutter = new NodeCutter();
16351
16687
  var isFormatted = new IsFormatted();
16352
16688
  var range = domSelection.getRange(docElement);
16689
+ if (Browser.userAgent.indexOf('Firefox') !== -1 && range.startContainer === range.endContainer && !isNullOrUndefined(endNode) && range.startContainer === endNode) {
16690
+ var startChildNodes = range.startContainer.childNodes;
16691
+ var startNode = ((startChildNodes[(range.startOffset > 0) ? (range.startOffset - 1) :
16692
+ range.startOffset]) || range.startContainer);
16693
+ var endNode_1 = (range.endContainer.childNodes[(range.endOffset > 0) ? (range.endOffset - 1) :
16694
+ range.endOffset] || range.endContainer);
16695
+ var lastSelectionNode = (endNode_1.lastChild.nodeName === 'BR' ? (isNullOrUndefined(endNode_1.lastChild.previousSibling) ? endNode_1
16696
+ : endNode_1.lastChild.previousSibling) : endNode_1.firstChild);
16697
+ while (!isNullOrUndefined(lastSelectionNode) && lastSelectionNode.nodeName !== '#text' && lastSelectionNode.nodeName !== 'IMG' &&
16698
+ lastSelectionNode.nodeName !== 'BR' && lastSelectionNode.nodeName !== 'HR') {
16699
+ lastSelectionNode = lastSelectionNode.lastChild;
16700
+ }
16701
+
16702
+ domSelection.setSelectionText(docElement, startNode, lastSelectionNode, 0, 0);
16703
+ range = domSelection.getRange(docElement);
16704
+ }
16353
16705
  var save = domSelection.save(range, docElement);
16354
16706
  var nodes = range.collapsed ? domSelection.getSelectionNodeCollection(range) :
16355
16707
  domSelection.getSelectionNodeCollectionBr(range);
@@ -17577,6 +17929,25 @@ var UndoRedoManager = /** @__PURE__ @class */ (function () {
17577
17929
  }
17578
17930
  return textContent;
17579
17931
  };
17932
+ UndoRedoManager.prototype.isElementStructureEqual = function (previousFragment, currentFragment) {
17933
+ if (previousFragment.childNodes.length !== currentFragment.childNodes.length) {
17934
+ return false;
17935
+ }
17936
+ for (var i = 0; i < previousFragment.childNodes.length; i++) {
17937
+ var previousFragmentNode = previousFragment.childNodes[i];
17938
+ var currentFragmentNode = currentFragment.childNodes[i];
17939
+ if (!previousFragmentNode || !currentFragmentNode) {
17940
+ return false;
17941
+ }
17942
+ if (previousFragmentNode.nodeType !== currentFragmentNode.nodeType) {
17943
+ return false;
17944
+ }
17945
+ if (previousFragmentNode.outerHTML !== currentFragmentNode.outerHTML) {
17946
+ return false;
17947
+ }
17948
+ }
17949
+ return true;
17950
+ };
17580
17951
  /**
17581
17952
  * RTE collection stored html format.
17582
17953
  *
@@ -17613,7 +17984,8 @@ var UndoRedoManager = /** @__PURE__ @class */ (function () {
17613
17984
  (this.undoRedoStack[this.undoRedoStack.length - 1].range.endOffset === save.range.endOffset) &&
17614
17985
  (this.undoRedoStack[this.undoRedoStack.length - 1].range.range.startContainer === save.range.startContainer) &&
17615
17986
  (this.getTextContentFromFragment(this.undoRedoStack[this.undoRedoStack.length - 1].text).trim() ===
17616
- this.getTextContentFromFragment(changEle.text).trim())) {
17987
+ this.getTextContentFromFragment(changEle.text).trim()) &&
17988
+ this.isElementStructureEqual(this.undoRedoStack[this.undoRedoStack.length - 1].text, changEle.text)) {
17617
17989
  return;
17618
17990
  }
17619
17991
  this.undoRedoStack.push(changEle);
@@ -17776,6 +18148,7 @@ var MsWordPaste = /** @__PURE__ @class */ (function () {
17776
18148
  var pattern4 = /style='mso-width-source:/i;
17777
18149
  if (patern.test(tempHTMLContent) || patern2.test(tempHTMLContent) || patern3.test(tempHTMLContent) ||
17778
18150
  pattern4.test(tempHTMLContent)) {
18151
+ var source = this.findSource(elm);
17779
18152
  this.imageConversion(elm, rtfData);
17780
18153
  tempHTMLContent = tempHTMLContent.replace(/<img[^>]+>/i, '');
17781
18154
  this.addListClass(elm);
@@ -17796,16 +18169,8 @@ var MsWordPaste = /** @__PURE__ @class */ (function () {
17796
18169
  if (pattern4.test(tempHTMLContent)) {
17797
18170
  this.addTableBorderClass(elm);
17798
18171
  }
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);
18172
+ this.processMargin(elm);
18173
+ e.callBack(elm.innerHTML, this.cropImageDimensions, source);
17809
18174
  }
17810
18175
  else {
17811
18176
  e.callBack(elm.innerHTML);
@@ -18639,6 +19004,25 @@ var MsWordPaste = /** @__PURE__ @class */ (function () {
18639
19004
  }
18640
19005
  this.listContents.push(elem.innerHTML);
18641
19006
  };
19007
+ MsWordPaste.prototype.processMargin = function (element) {
19008
+ var liChildren = element.querySelectorAll('li');
19009
+ if (liChildren.length > 0) {
19010
+ for (var i = 0; i < liChildren.length; i++) {
19011
+ if (!isNullOrUndefined((liChildren[i]).style.marginLeft)) {
19012
+ (liChildren[i]).style.marginLeft = '';
19013
+ }
19014
+ }
19015
+ }
19016
+ var tableChildren = element.querySelectorAll('table');
19017
+ if (tableChildren.length > 0) {
19018
+ for (var i = 0; i < tableChildren.length; i++) {
19019
+ if (!isNullOrUndefined((tableChildren[i]).style.marginLeft) &&
19020
+ (tableChildren[i]).style.marginLeft.indexOf('-') >= 0) {
19021
+ (tableChildren[i]).style.marginLeft = '';
19022
+ }
19023
+ }
19024
+ }
19025
+ };
18642
19026
  MsWordPaste.prototype.removeEmptyAnchorTag = function (element) {
18643
19027
  var removableElement = element.querySelectorAll('a:not([href])');
18644
19028
  for (var j = removableElement.length - 1; j >= 0; j--) {
@@ -18649,6 +19033,22 @@ var MsWordPaste = /** @__PURE__ @class */ (function () {
18649
19033
  parentElem.removeChild(removableElement[j]);
18650
19034
  }
18651
19035
  };
19036
+ MsWordPaste.prototype.findSource = function (element) {
19037
+ var metaNodes = element.querySelectorAll('meta');
19038
+ for (var i = 0; i < metaNodes.length; i++) {
19039
+ var metaNode = metaNodes[i];
19040
+ var content = metaNode.getAttribute('content');
19041
+ var name_1 = metaNode.getAttribute('name');
19042
+ if (name_1 && name_1.toLowerCase().indexOf('generator') >= 0 && content && content.toLowerCase().indexOf('microsoft') >= 0) {
19043
+ for (var j = 0; j < PASTE_SOURCE.length; j++) {
19044
+ if (content.toLowerCase().indexOf(PASTE_SOURCE[j]) >= 0) {
19045
+ return PASTE_SOURCE[j];
19046
+ }
19047
+ }
19048
+ }
19049
+ }
19050
+ return 'html';
19051
+ };
18652
19052
  return MsWordPaste;
18653
19053
  }());
18654
19054
 
@@ -19288,7 +19688,7 @@ var FormatPainterActions = /** @__PURE__ @class */ (function () {
19288
19688
  };
19289
19689
  FormatPainterActions.prototype.copyAction = function () {
19290
19690
  var copyCollection = [];
19291
- var range = this.parent.nodeSelection.getRange(document);
19691
+ var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);
19292
19692
  var domSelection = this.parent.nodeSelection;
19293
19693
  var nodes = range.collapsed ? domSelection.getSelectionNodeCollection(range) :
19294
19694
  domSelection.getSelectionNodeCollectionBr(range);
@@ -19781,6 +20181,7 @@ var EditorManager = /** @__PURE__ @class */ (function () {
19781
20181
  this.observer.on(MODEL_CHANGED, this.onPropertyChanged, this);
19782
20182
  this.observer.on(MS_WORD_CLEANUP, this.onWordPaste, this);
19783
20183
  this.observer.on(ON_BEGIN, this.onBegin, this);
20184
+ this.observer.on(MOUSE_DOWN, this.editorMouseDown, this);
19784
20185
  };
19785
20186
  EditorManager.prototype.onWordPaste = function (e) {
19786
20187
  this.observer.notify(MS_WORD_CLEANUP_PLUGIN, e);
@@ -19924,6 +20325,64 @@ var EditorManager = /** @__PURE__ @class */ (function () {
19924
20325
  event: event, callBack: callBack });
19925
20326
  }
19926
20327
  };
20328
+ EditorManager.prototype.editorMouseDown = function (e) {
20329
+ if (e.args.detail === 3) {
20330
+ this.tripleClickSelection(e.args);
20331
+ }
20332
+ };
20333
+ EditorManager.prototype.tripleClickSelection = function (e) {
20334
+ var range = this.nodeSelection.getRange(this.currentDocument);
20335
+ var selection = this.nodeSelection.get(this.currentDocument);
20336
+ if (selection.rangeCount > 0 && selection.toString() !== '') {
20337
+ var startBlockNode = this.getParentBlockNode(range.startContainer);
20338
+ var endBlockNode = this.getParentBlockNode(range.endContainer);
20339
+ if (startBlockNode && endBlockNode && startBlockNode === endBlockNode) {
20340
+ var newRange = this.currentDocument.createRange();
20341
+ var startTextNode = this.getFirstTextNode(startBlockNode);
20342
+ var endTextNode = this.getLastTextNode(endBlockNode);
20343
+ if (startTextNode && endTextNode) {
20344
+ newRange.setStart(startTextNode, 0);
20345
+ newRange.setEnd(endTextNode, endTextNode.textContent.length);
20346
+ this.nodeSelection.setRange(this.currentDocument, newRange);
20347
+ e.preventDefault();
20348
+ }
20349
+ }
20350
+ }
20351
+ };
20352
+ EditorManager.prototype.getParentBlockNode = function (node) {
20353
+ var treeWalker = this.currentDocument.createTreeWalker(this.editableElement, // root
20354
+ NodeFilter.SHOW_ELEMENT, // whatToShow
20355
+ {
20356
+ acceptNode: function (currentNode) {
20357
+ // Check if the node is a block element
20358
+ var displayStyle = window.getComputedStyle(currentNode).display;
20359
+ if (displayStyle.indexOf('inline') < 0) {
20360
+ return NodeFilter.FILTER_ACCEPT;
20361
+ }
20362
+ else {
20363
+ return NodeFilter.FILTER_SKIP;
20364
+ }
20365
+ }
20366
+ });
20367
+ treeWalker.currentNode = node;
20368
+ var blockParent = treeWalker.parentNode();
20369
+ return blockParent;
20370
+ };
20371
+ EditorManager.prototype.getLastTextNode = function (node) {
20372
+ var treeWalker = this.currentDocument.createTreeWalker(node, NodeFilter.SHOW_TEXT, null);
20373
+ var lastTextNode = null;
20374
+ var currentNode = treeWalker.nextNode();
20375
+ while (currentNode) {
20376
+ lastTextNode = currentNode;
20377
+ currentNode = treeWalker.nextNode();
20378
+ }
20379
+ return lastTextNode;
20380
+ };
20381
+ EditorManager.prototype.getFirstTextNode = function (node) {
20382
+ var treeWalker = this.currentDocument.createTreeWalker(node, NodeFilter.SHOW_TEXT, null);
20383
+ var firstTextNode = treeWalker.nextNode();
20384
+ return firstTextNode;
20385
+ };
19927
20386
  return EditorManager;
19928
20387
  }());
19929
20388
 
@@ -20135,7 +20594,7 @@ var __extends$3 = (undefined && undefined.__extends) || (function () {
20135
20594
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
20136
20595
  };
20137
20596
  })();
20138
- var IFRAMEHEADER = "\n<!DOCTYPE html> \n <html>\n <head>\n <meta charset='utf-8' /> \n <style>\n @charset \"UTF-8\";\n body {\n font-family: \"Roboto\", sans-serif;\n font-size: 14px;\n }\n html, body{height: 100%;margin: 0;}\n body.e-cursor{cursor:default}\n span.e-selected-node\t{background-color: #939393;color: white;}\n span.e-selected-node.e-highlight {background-color: #1d9dd8;}\n body{color:#333;word-wrap:break-word;padding: 8px;box-sizing: border-box;}\n .e-rte-image, .e-rte-audio, .e-rte-video {border: 0;cursor: pointer;display:\n block;float: none;height: auto;margin: 5px auto;max-width: 100%;position: relative;}\n .e-rte-image.e-imginline, .e-rte-audio.e-audio-inline, .e-rte-video.e-video-inline {display: inline-block;float: none;max-width: calc(100% - (2 * 5px));padding: 1px;vertical-align: bottom;}\n .e-rte-image.e-imgcenter, .e-rte-video.e-video-center {cursor: pointer;display: block;float: none;margin: 5px auto;max-width: 100%;position: relative;}\n .e-rte-image.e-imgright, .e-rte-video.e-video-right { float: right; margin: 0 auto;margin-left: 5px;text-align: right;}\n .e-rte-image.e-imgleft, .e-rte-video.e-video-left {float: left;margin: 0 auto;margin-right: 5px;text-align: left;}\n .e-img-caption { display: inline-block; float: none; margin: 5px auto; max-width: 100%;position: relative;}\n .e-img-caption.e-caption-inline {display: inline-block;float: none;\n margin: 5px auto;margin-left: 5px;margin-right: 5px;max-width: calc(100% - (2 * 5px));\n position: relativetext-align: center;vertical-align: bottom;}\n .e-img-inner {box-sizing: border-box;display: block;font-size: 16px;font-weight: initial;\n margin: auto;opacity: .9;text-align: center;width: 100%;}\n .e-img-wrap {display: inline-block;margin: auto;padding: 0;text-align: center;width: 100%;}\n .e-imgleft, .e-video-left {float: left;margin: 0 5px 0 0;text-align: left;}\n .e-imgright, .e-video-right {float: right;margin: 0 0 0 5px;text-align: right;}\n .e-imgcenter, .e-video-center {cursor: pointer;display: block;float: none;height: auto;margin: 5px auto;max-width: 100%;position: relative;}\n .e-control img:not(.e-resize) {border: 2px solid transparent; z-index: 1000}\n .e-imginline , .e-audio-inline, .e-video-inline {display: inline-block;float: none;margin-left: 5px;margin-right: 5px;\n max-width: calc(100% - (2 * 5px));vertical-align: bottom;}\n .e-imgbreak, .e-audio-break, .e-video-break {border: 0;cursor: pointer;\n display: block;float: none;height: auto;margin: 5px auto;max-width: 100%;position: relative;}\n .e-rte-image.e-img-focus:not(.e-resize), .e-audio-focus:not(.e-resize), .e-video-focus:not(.e-resize) {border: solid 2px #4a90e2;}\n img.e-img-focus::selection, audio.e-audio-focus::selection, .e-video-focus::selection { background: transparent;color: transparent;}\n span.e-rte-imageboxmark { width: 10px; height: 10px; position: absolute; display: block;\n background: #4a90e2; border: 1px solid #fff; z-index: 1000;}\n .e-mob-rte.e-mob-span span.e-rte-imageboxmark { background: #4a90e2; border: 1px solid #fff; }\n .e-mob-rte span.e-rte-imageboxmark { background: #fff; border: 1px solid #4a90e2;\n border-radius: 15px; height: 20px; width: 20px; }\n .e-mob-rte.e-mob-span span.e-rte-imageboxmark { background: #4a90e2; border: 1px solid #fff; }\n .e-rte-content .e-content img.e-resize, .e-rte-content .e-content video.e-resize { z-index: 1000; }\n .e-img-caption .e-img-inner { outline: 0; }\n .e-img-caption a:focus-visible { outline: none; }\n .e-img-caption .e-rte-image.e-imgright, .e-img-caption .e-rte-image.e-imgleft { float: none; margin: 0;}\n body{box-sizing: border-box;min-height: 100px;outline: 0 solid transparent;\n overflow-x: auto;padding: 16px;position: relative;text-align: inherit;z-index: 2;}\n p{margin: 0 0 10px;margin-bottom: 10px;}\n li{margin-bottom: 10px;}\n h1{font-size: 2.17em;font-weight: 400;line-height: 1;margin: 10px 0;}\n h2{font-size: 1.74em;font-weight: 400;margin: 10px 0;}\n h3{font-size: 1.31em;font-weight: 400;margin: 10px 0;}\n h4{font-size: 16px;font-weight: 400;line-height: 1.5;margin: 0;}\n h5{font-size: 00.8em;font-weight: 400;margin: 0;}\n h6{font-size: 00.65em;font-weight: 400;margin: 0;}\n blockquote{margin: 10px 0;margin-left: 0;padding-left: 5px;border-left: solid 2px #5c5c5c;}\n pre{background-color: inherit;border: 0;border-radius: 0;color: #333;\n font-size: inherit;line-height: inherit;margin: 0 0 10px;overflow: visible;padding: 0;\n white-space: pre-wrap;word-break: inherit;word-wrap: break-word;}\n strong, b{font-weight: 700;}\n a{text-decoration: none;user-select: auto;}\n a:hover{text-decoration: underline;};\n p:last-child, pre:last-child, blockquote:last-child{margin-bottom: 0;}\n h3+h4, h4+h5, h5+h6{margin-top: 00.6em;}\n ul:last-child{margin-bottom: 0;}\n table { border-collapse: collapse; empty-cells: show;}\n table td,table th {border: 1px solid #BDBDBD; height: 20px; padding: 2px 5px; vertical-align: middle;}\n table.e-alternate-border tbody tr:nth-child(2n) {background-color: #F5F5F5;}\n table th {background-color: #E0E0E0;}\n table.e-dashed-border td,table.e-dashed-border th { border: 1px dashed #BDBDBD} \n table .e-cell-select {border: 1px double #4a90e2;}\n span.e-table-box { cursor: nwse-resize; display: block; height: 10px; position: absolute; width: 10px; }\n span.e-table-box.e-rmob {height: 14px;width: 14px;}\n .e-row-resize, .e-column-resize { background-color: transparent; background-repeat: repeat;\n bottom: 0;cursor: col-resize;height: 1px;overflow: visible;position: absolute;width: 1px; }\n .e-row-resize { cursor: row-resize; height: 1px;}\n .e-table-rhelper { cursor: col-resize; opacity: .87;position: absolute;}\n .e-table-rhelper.e-column-helper { width: 1px; }\n .e-table-rhelper.e-row-helper {height: 1px;}\n .e-reicon::before { border-bottom: 6px solid transparent; border-right: 6px solid;\n border-top: 6px solid transparent; content: ''; display: block; height: 0;\n position: absolute; right: 4px; top: 4px; width: 20px; }\n .e-reicon::after { border-bottom: 6px solid transparent; border-left: 6px solid;\n border-top: 6px solid transparent; content: ''; display: block;\n height: 0; left: 4px; position: absolute; top: 4px; width: 20px; z-index: 3; }\n .e-row-helper.e-reicon::after { top: 10px; transform: rotate(90deg); }\n .e-row-helper.e-reicon::before { left: 4px; top: -20px; transform: rotate(90deg); }\n span.e-table-box { background-color: #ffffff; border: 1px solid #BDBDBD; }\n span.e-table-box.e-rbox-select { background-color: #BDBDBD; border: 1px solid #BDBDBD; }\n .e-table-rhelper { background-color: #4a90e2;}\n .e-rtl { direction: rtl; }\n .e-rte-placeholder::before { content: attr(placeholder); opacity: 0.54; overflow: hidden; padding-top: 16px; position: absolute; text-align: start; top: 0; z-index: 1; }\n </style>\n </head>";
20597
+ var IFRAMEHEADER = "\n<!DOCTYPE html> \n <html>\n <head>\n <meta charset='utf-8' /> \n <style>\n @charset \"UTF-8\";\n body {\n font-family: \"Roboto\", sans-serif;\n font-size: 14px;\n }\n html, body{height: 100%;margin: 0;}\n body.e-cursor{cursor:default}\n span.e-selected-node\t{background-color: #939393;color: white;}\n span.e-selected-node.e-highlight {background-color: #1d9dd8;}\n body{color:#333;word-wrap:break-word;padding: 8px;box-sizing: border-box;}\n .e-rte-image, .e-rte-audio, .e-rte-video {border: 0;cursor: pointer;display:\n block;float: none;height: auto;margin: 5px auto;max-width: 100%;position: relative;}\n .e-rte-image.e-imginline, .e-rte-audio.e-audio-inline, .e-rte-video.e-video-inline {display: inline-block;float: none;max-width: calc(100% - (2 * 5px));padding: 1px;vertical-align: bottom;}\n .e-rte-image.e-imgcenter, .e-rte-video.e-video-center {cursor: pointer;display: block;float: none;margin: 5px auto;max-width: 100%;position: relative;}\n .e-rte-image.e-imgright, .e-rte-video.e-video-right { float: right; margin: 0 auto;margin-left: 5px;text-align: right;}\n .e-rte-image.e-imgleft, .e-rte-video.e-video-left {float: left;margin: 0 auto;margin-right: 5px;text-align: left;}\n .e-img-caption { display: inline-block; float: none; margin: 5px auto; max-width: 100%;position: relative;}\n .e-img-caption.e-caption-inline {display: inline-block;float: none;\n margin: 5px auto;margin-left: 5px;margin-right: 5px;max-width: calc(100% - (2 * 5px));\n position: relativetext-align: center;vertical-align: bottom;}\n .e-img-inner {box-sizing: border-box;display: block;font-size: 16px;font-weight: initial;\n margin: auto;opacity: .9;text-align: center;width: 100%;}\n .e-img-wrap {display: inline-block;margin: auto;padding: 0;text-align: center;width: 100%;}\n .e-imgleft, .e-video-left {float: left;margin: 0 5px 0 0;text-align: left;}\n .e-imgright, .e-video-right {float: right;margin: 0 0 0 5px;text-align: right;}\n .e-imgcenter, .e-video-center {cursor: pointer;display: block;float: none;height: auto;margin: 5px auto;max-width: 100%;position: relative;}\n .e-control img:not(.e-resize) {border: 2px solid transparent; z-index: 1000}\n .e-imginline , .e-audio-inline, .e-video-inline {display: inline-block;float: none;margin-left: 5px;margin-right: 5px;\n max-width: calc(100% - (2 * 5px));vertical-align: bottom;}\n .e-imgbreak, .e-audio-break, .e-video-break {border: 0;cursor: pointer;\n display: block;float: none;height: auto;margin: 5px auto;max-width: 100%;position: relative;}\n .e-rte-image.e-img-focus:not(.e-resize), .e-audio-focus:not(.e-resize), .e-video-focus:not(.e-resize) {border: solid 2px #4a90e2;}\n img.e-img-focus::selection, audio.e-audio-focus::selection, .e-video-focus::selection { background: transparent;color: transparent;}\n span.e-rte-imageboxmark, span.e-rte-videoboxmark { width: 10px; height: 10px; position: absolute; display: block;\n background: #4a90e2; border: 1px solid #fff; z-index: 1000;}\n .e-mob-rte.e-mob-span span.e-rte-imageboxmark, .e-mob-rte.e-mob-span span.e-rte-videoboxmark { background: #4a90e2; border: 1px solid #fff; }\n .e-mob-rte span.e-rte-imageboxmark, .e-mob-rte span.e-rte-videoboxmark { background: #fff; border: 1px solid #4a90e2;\n border-radius: 15px; height: 20px; width: 20px; }\n .e-mob-rte.e-mob-span span.e-rte-imageboxmark, .e-mob-rte.e-mob-span span.e-rte-videoboxmark { background: #4a90e2; border: 1px solid #fff; }\n .e-rte-content .e-content img.e-resize, .e-rte-content .e-content video.e-resize { z-index: 1000; }\n .e-img-caption .e-img-inner { outline: 0; }\n .e-img-caption a:focus-visible { outline: none; }\n .e-img-caption .e-rte-image.e-imgright, .e-img-caption .e-rte-image.e-imgleft { float: none; margin: 0;}\n body{box-sizing: border-box;min-height: 100px;outline: 0 solid transparent;\n overflow-x: auto;padding: 16px;position: relative;text-align: inherit;z-index: 2;}\n p{margin: 0 0 10px;margin-bottom: 10px;}\n li{margin-bottom: 10px;}\n h1{font-size: 2.17em;font-weight: 400;line-height: 1;margin: 10px 0;}\n h2{font-size: 1.74em;font-weight: 400;margin: 10px 0;}\n h3{font-size: 1.31em;font-weight: 400;margin: 10px 0;}\n h4{font-size: 16px;font-weight: 400;line-height: 1.5;margin: 0;}\n h5{font-size: 00.8em;font-weight: 400;margin: 0;}\n h6{font-size: 00.65em;font-weight: 400;margin: 0;}\n blockquote{margin: 10px 0;margin-left: 0;padding-left: 5px;border-left: solid 2px #5c5c5c;}\n pre{background-color: inherit;border: 0;border-radius: 0;color: #333;\n font-size: inherit;line-height: inherit;margin: 0 0 10px;overflow: visible;padding: 0;\n white-space: pre-wrap;word-break: inherit;word-wrap: break-word;}\n strong, b{font-weight: 700;}\n a{text-decoration: none;user-select: auto;}\n a:hover{text-decoration: underline;};\n p:last-child, pre:last-child, blockquote:last-child{margin-bottom: 0;}\n h3+h4, h4+h5, h5+h6{margin-top: 00.6em;}\n ul:last-child{margin-bottom: 0;}\n table { border-collapse: collapse; empty-cells: show;}\n table td,table th {border: 1px solid #BDBDBD; height: 20px; padding: 2px 5px; vertical-align: middle;}\n table.e-alternate-border tbody tr:nth-child(2n) {background-color: #F5F5F5;}\n table th {background-color: #E0E0E0;}\n table.e-dashed-border td,table.e-dashed-border th { border: 1px dashed #BDBDBD} \n table .e-cell-select {border: 1px double #4a90e2;}\n span.e-table-box { cursor: nwse-resize; display: block; height: 10px; position: absolute; width: 10px; }\n span.e-table-box.e-rmob {height: 14px;width: 14px;}\n .e-row-resize, .e-column-resize { background-color: transparent; background-repeat: repeat;\n bottom: 0;cursor: col-resize;height: 1px;overflow: visible;position: absolute;width: 1px; }\n .e-row-resize { cursor: row-resize; height: 1px;}\n .e-table-rhelper { cursor: col-resize; opacity: .87;position: absolute;}\n .e-table-rhelper.e-column-helper { width: 1px; }\n .e-table-rhelper.e-row-helper {height: 1px;}\n .e-reicon::before { border-bottom: 6px solid transparent; border-right: 6px solid;\n border-top: 6px solid transparent; content: ''; display: block; height: 0;\n position: absolute; right: 4px; top: 4px; width: 20px; }\n .e-reicon::after { border-bottom: 6px solid transparent; border-left: 6px solid;\n border-top: 6px solid transparent; content: ''; display: block;\n height: 0; left: 4px; position: absolute; top: 4px; width: 20px; z-index: 3; }\n .e-row-helper.e-reicon::after { top: 10px; transform: rotate(90deg); }\n .e-row-helper.e-reicon::before { left: 4px; top: -20px; transform: rotate(90deg); }\n span.e-table-box { background-color: #ffffff; border: 1px solid #BDBDBD; }\n span.e-table-box.e-rbox-select { background-color: #BDBDBD; border: 1px solid #BDBDBD; }\n .e-table-rhelper { background-color: #4a90e2;}\n .e-rtl { direction: rtl; }\n .e-rte-placeholder::before { content: attr(placeholder); opacity: 0.54; overflow: hidden; padding-top: 16px; position: absolute; text-align: start; top: 0; z-index: 1; }\n </style>\n </head>";
20139
20598
  /**
20140
20599
  * Content module is used to render Rich Text Editor content
20141
20600
  *
@@ -20438,6 +20897,7 @@ var HtmlEditor = /** @__PURE__ @class */ (function () {
20438
20897
  this.parent.on(readOnlyMode, this.updateReadOnly, this);
20439
20898
  this.parent.on(paste, this.onPaste, this);
20440
20899
  this.parent.on(tableclass, this.isTableClassAdded, this);
20900
+ this.parent.on(onHandleFontsizeChange, this.onHandleFontsizeChange, this);
20441
20901
  };
20442
20902
  HtmlEditor.prototype.updateReadOnly = function () {
20443
20903
  if (this.parent.readonly) {
@@ -20456,7 +20916,9 @@ var HtmlEditor = /** @__PURE__ @class */ (function () {
20456
20916
  };
20457
20917
  HtmlEditor.prototype.onSelectionRestore = function (e) {
20458
20918
  this.parent.isBlur = false;
20459
- this.contentRenderer.getEditPanel().focus();
20919
+ 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")) {
20920
+ this.contentRenderer.getEditPanel().focus();
20921
+ }
20460
20922
  if (isNullOrUndefined(e.items) || e.items) {
20461
20923
  this.saveSelection.restore();
20462
20924
  }
@@ -20464,11 +20926,91 @@ var HtmlEditor = /** @__PURE__ @class */ (function () {
20464
20926
  HtmlEditor.prototype.isTableClassAdded = function () {
20465
20927
  var tableElement = this.parent.inputElement.querySelectorAll('table');
20466
20928
  for (var i = 0; i < tableElement.length; i++) {
20467
- if (!tableElement[i].classList.contains('e-rte-table')) {
20929
+ if (!tableElement[i].classList.contains('e-rte-table') && !tableElement[i].classList.contains('e-rte-paste-table')) {
20468
20930
  tableElement[i].classList.add('e-rte-table');
20469
20931
  }
20470
20932
  }
20471
20933
  };
20934
+ HtmlEditor.prototype.onHandleFontsizeChange = function (e) {
20935
+ var keyboardArgs = e.args;
20936
+ var args = { name: 'dropDownSelect' };
20937
+ args.item = {
20938
+ command: 'Font',
20939
+ subCommand: 'FontSize'
20940
+ };
20941
+ var items = this.parent.fontSize.items;
20942
+ var activeElem;
20943
+ if (this.parent.toolbarModule && this.parent.toolbarModule.dropDownModule &&
20944
+ this.parent.toolbarModule.dropDownModule.fontSizeDropDown && !isNullOrUndefined(this.parent.toolbarModule.dropDownModule.fontSizeDropDown.activeElem[0].textContent) && this.parent.toolbarModule.dropDownModule.fontSizeDropDown.activeElem[0].textContent !== '') {
20945
+ activeElem = this.parent.toolbarModule.dropDownModule.fontSizeDropDown.activeElem[0].textContent;
20946
+ }
20947
+ else {
20948
+ var fontSizeValue = void 0;
20949
+ var selection = this.parent.contentModule.getDocument().getSelection();
20950
+ if (selection && selection.focusNode && selection.focusNode.parentElement) {
20951
+ fontSizeValue = document.defaultView.getComputedStyle(selection.focusNode.parentElement, null).getPropertyValue('font-size');
20952
+ }
20953
+ else {
20954
+ fontSizeValue = this.parent.fontSize.width;
20955
+ }
20956
+ fontSizeValue = isNullOrUndefined(fontSizeValue) ? this.parent.fontSize.width : fontSizeValue;
20957
+ var actualTxtFontValues = fontSizeValue.match(/^([\d.]+)(\D+)$/);
20958
+ var size_1 = parseInt(actualTxtFontValues[1], 10);
20959
+ var unit = actualTxtFontValues[2];
20960
+ var defaultFontValues = items[0].value.match(/^([\d.]+)(\D+)$/);
20961
+ if (defaultFontValues[2] === unit) {
20962
+ var index = items.findIndex(function (_a) {
20963
+ var value = _a.value;
20964
+ return parseInt(value, 10) >= size_1;
20965
+ });
20966
+ activeElem = items[index].text;
20967
+ }
20968
+ else {
20969
+ var convertedSize_1 = this.convertFontSize(size_1, unit, defaultFontValues[2]);
20970
+ var index = items.findIndex(function (_a) {
20971
+ var value = _a.value;
20972
+ return parseInt(value, 10) >= convertedSize_1;
20973
+ });
20974
+ activeElem = items[index].text;
20975
+ }
20976
+ }
20977
+ var fontIndex = items.findIndex(function (size) { return size.text === activeElem; });
20978
+ if (keyboardArgs.action === 'increase-fontsize' && fontIndex !== -1) {
20979
+ if (fontIndex >= items.length - 1) {
20980
+ var fontValues = items[fontIndex].value.match(/^([\d.]+)(\D+)$/);
20981
+ if (fontValues) {
20982
+ var size = parseInt(fontValues[1], 10);
20983
+ var unit = fontValues[2];
20984
+ var roundedSize = size % 10 === 0 ? Math.ceil((size + 1) / 10) * 10 : Math.ceil(size / 10) * 10;
20985
+ args.item.value = roundedSize.toLocaleString() + unit;
20986
+ args.item.text = roundedSize.toLocaleString() + ' ' + unit;
20987
+ }
20988
+ this.parent.fontSize.items.push(args.item);
20989
+ }
20990
+ else {
20991
+ args.item.value = items[fontIndex + 1].value;
20992
+ args.item.text = items[fontIndex + 1].text;
20993
+ }
20994
+ }
20995
+ else if (keyboardArgs.action === 'decrease-fontsize' && fontIndex !== -1 && fontIndex > 0) {
20996
+ args.item.value = items[fontIndex - 1].value;
20997
+ args.item.text = items[fontIndex - 1].text;
20998
+ }
20999
+ else {
21000
+ if (fontIndex >= 0 && fontIndex < items.length && items[fontIndex]) {
21001
+ args.item.value = items[fontIndex].value;
21002
+ args.item.text = items[fontIndex].text;
21003
+ }
21004
+ }
21005
+ this.parent.formatter.process(this.parent, args, keyboardArgs);
21006
+ };
21007
+ HtmlEditor.prototype.convertFontSize = function (value, originalUnit, targetUnit) {
21008
+ if (supportedUnits.indexOf(originalUnit) !== -1 || supportedUnits.indexOf(targetUnit) !== -1) {
21009
+ originalUnit = 'px';
21010
+ }
21011
+ var convertedValue = value * conversionFactors[originalUnit][targetUnit];
21012
+ return convertedValue;
21013
+ };
20472
21014
  HtmlEditor.prototype.onKeyUp = function (e) {
20473
21015
  var args = e.args;
20474
21016
  var restrictKeys = [8, 9, 13, 16, 17, 18, 20, 27, 37, 38, 39, 40, 44, 45, 46, 91,
@@ -20590,7 +21132,7 @@ var HtmlEditor = /** @__PURE__ @class */ (function () {
20590
21132
  e.args.keyCode === 13) {
20591
21133
  this.spaceLink(e.args);
20592
21134
  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;
21135
+ var currentLength = this.parent.getText().trim().replace(/(\r\n|\n|\r|\t)/gm, '').replace(/\u200B/g, '').length;
20594
21136
  var selectionLength = this.parent.getSelection().length;
20595
21137
  var totalLength = (currentLength - selectionLength) + 1;
20596
21138
  if (!(this.parent.maxLength === -1 || totalLength <= this.parent.maxLength) &&
@@ -20752,7 +21294,7 @@ var HtmlEditor = /** @__PURE__ @class */ (function () {
20752
21294
  var liElement;
20753
21295
  var rootElement;
20754
21296
  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' &&
21297
+ 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
21298
  currentRange.startContainer.parentElement.tagName !== 'TH') {
20757
21299
  this.deleteRangeElement = rootElement = this.getRootBlockNode(currentRange.startContainer);
20758
21300
  if (this.deleteRangeElement.tagName === 'OL' || this.deleteRangeElement.tagName === 'UL') {
@@ -21355,7 +21897,8 @@ var PasteCleanup = /** @__PURE__ @class */ (function () {
21355
21897
  args: e.args,
21356
21898
  text: e.text,
21357
21899
  allowedStylePropertiesArray: this.parent.pasteCleanupSettings.allowedStyleProps,
21358
- callBack: function (a, cropImageData) {
21900
+ callBack: function (a, cropImageData, pasteTableSource) {
21901
+ args.pasteTableSource = pasteTableSource;
21359
21902
  value = a.trim();
21360
21903
  _this.cropImageData = cropImageData;
21361
21904
  }
@@ -21930,10 +22473,24 @@ var PasteCleanup = /** @__PURE__ @class */ (function () {
21930
22473
  }
21931
22474
  this.parent.trigger(afterPasteCleanup, { value: clipBoardElem.innerHTML, filesData: filesData }, function (updatedArgs) { value = updatedArgs.value; });
21932
22475
  clipBoardElem.innerHTML = this.parent.addAnchorAriaLabel(value);
21933
- clipBoardElem = this.addTableClass(clipBoardElem);
22476
+ clipBoardElem = this.addTableClass(clipBoardElem, args.pasteTableSource);
21934
22477
  this.parent.formatter.editorManager.execCommand('inserthtml', 'pasteCleanup', args, function (returnArgs) {
21935
22478
  extend(args, { elements: returnArgs.elements, imageElements: returnArgs.imgElem }, true);
21936
22479
  _this.parent.formatter.onSuccess(_this.parent, args);
22480
+ if (!isNullOrUndefined(returnArgs.elements) && !isNullOrUndefined(returnArgs.imgElem)) {
22481
+ var pasteContent = returnArgs.elements;
22482
+ var imageContent = returnArgs.imgElem;
22483
+ var lastElementChild = _this.findLastElement(pasteContent[pasteContent.length - 1]);
22484
+ var isImageAtLast = !isNullOrUndefined(lastElementChild) ? lastElementChild.nodeName === 'IMG' : false;
22485
+ if (isImageAtLast || pasteContent[pasteContent.length - 1] === imageContent[imageContent.length - 1]) {
22486
+ _this.parent.notify(insertCompleted, {
22487
+ args: args.event,
22488
+ type: 'Images',
22489
+ isNotify: true,
22490
+ elements: imageContent[imageContent.length - 1]
22491
+ });
22492
+ }
22493
+ }
21937
22494
  }, clipBoardElem, null, null, this.parent.enterKey);
21938
22495
  this.removeTempClass();
21939
22496
  this.parent.notify(toolbarRefresh, {});
@@ -21988,12 +22545,15 @@ var PasteCleanup = /** @__PURE__ @class */ (function () {
21988
22545
  }
21989
22546
  }
21990
22547
  };
21991
- PasteCleanup.prototype.addTableClass = function (element) {
22548
+ PasteCleanup.prototype.addTableClass = function (element, source) {
21992
22549
  var tableElement = element.querySelectorAll('table');
21993
22550
  for (var i = 0; i < tableElement.length; i++) {
21994
- if (!tableElement[i].classList.contains('e-rte-table')) {
22551
+ if (!tableElement[i].classList.contains('e-rte-table') && (source === 'html' || source === '')) {
21995
22552
  tableElement[i].classList.add('e-rte-table');
21996
22553
  }
22554
+ else if (source && source !== 'html') {
22555
+ tableElement[i].classList.add('e-rte-paste-' + source + '-table');
22556
+ }
21997
22557
  }
21998
22558
  return element;
21999
22559
  };
@@ -22328,6 +22888,16 @@ var PasteCleanup = /** @__PURE__ @class */ (function () {
22328
22888
  }
22329
22889
  return clipBoardElem;
22330
22890
  };
22891
+ PasteCleanup.prototype.findLastElement = function (element) {
22892
+ if (!isNullOrUndefined(element) && !isNullOrUndefined(element.lastElementChild)) {
22893
+ var lastChild = element.lastElementChild;
22894
+ while (lastChild && lastChild.lastElementChild) {
22895
+ lastChild = lastChild.lastElementChild;
22896
+ }
22897
+ return lastChild;
22898
+ }
22899
+ return null;
22900
+ };
22331
22901
  /**
22332
22902
  * For internal use only - Get the module name.
22333
22903
  *
@@ -22832,6 +23402,7 @@ var FullScreen = /** @__PURE__ @class */ (function () {
22832
23402
  _this.parent.toolbarModule.addFixedTBarClass();
22833
23403
  }
22834
23404
  }
23405
+ _this.parent.refreshUI();
22835
23406
  _this.parent.trigger(actionComplete, { requestType: 'Minimize', targetItem: 'Minimize', args: event });
22836
23407
  }
22837
23408
  });
@@ -23750,7 +24321,7 @@ var EmojiPicker = /** @__PURE__ @class */ (function () {
23750
24321
  noEmojiObj.style.margin = '55px';
23751
24322
  emojipickerAll.appendChild(noEmojiObj);
23752
24323
  }
23753
- else if (!noEMoji && this.parent.element.querySelector('.e-rte-emojiSearch-noEmoji') || (inputValue === '' && value === ':')) {
24324
+ else if (!noEMoji && this.parent.element.querySelector('.e-rte-emojiSearch-noEmoji') || (inputValue === '' && value === ':') || (inputValue === '' && this.parent.element.querySelector('.e-rte-emojiSearch-noEmoji'))) {
23754
24325
  emojipickerAll.removeChild(this.parent.element.querySelector('.e-rte-emojiSearch-noEmoji'));
23755
24326
  }
23756
24327
  emojipickerAll.appendChild(emojiBtnDiv);
@@ -24404,12 +24975,20 @@ var Link = /** @__PURE__ @class */ (function () {
24404
24975
  }
24405
24976
  var target = (this.selfLink.checkBoxObj.checked) ? '_blank' : null;
24406
24977
  var linkLabel = (this.selfLink.checkBoxObj.checked) ? this.selfLink.i10n.getConstant('linkAriaLabel') : null;
24978
+ if (this.selfLink.parent.editorMode === 'Markdown' && linkUrl === '') {
24979
+ linkUrl = 'http://';
24980
+ }
24407
24981
  if (linkUrl === '') {
24408
24982
  this.selfLink.checkUrl(true);
24409
24983
  return;
24410
24984
  }
24411
24985
  if (!this.selfLink.isUrl(linkUrl)) {
24412
- linkText = (linkText === '') ? linkUrl : linkText;
24986
+ if (this.selfLink.parent.editorMode === 'Markdown') {
24987
+ linkText = (linkText !== '') ? linkText : '';
24988
+ }
24989
+ else {
24990
+ linkText = (linkText === '') ? linkUrl : linkText;
24991
+ }
24413
24992
  if (!this.selfLink.parent.enableAutoUrl) {
24414
24993
  linkUrl = linkUrl.indexOf('http') > -1 ? linkUrl : 'http://' + linkUrl;
24415
24994
  }
@@ -24550,6 +25129,7 @@ var Link = /** @__PURE__ @class */ (function () {
24550
25129
  this.parent.inlineMode.enable && !closest(target, '#' + this.dialogObj.element.id)) &&
24551
25130
  !closest(target, '#' + this.parent.getID() + '_toolbar_CreateLink') &&
24552
25131
  !target.querySelector('#' + this.parent.getID() + '_toolbar_CreateLink')))) {
25132
+ this.parent.notify(documentClickClosedBy, { closedBy: "outside click" });
24553
25133
  this.dialogObj.hide({ returnValue: true });
24554
25134
  EventHandler.remove(this.parent.element.ownerDocument, 'mousedown', this.onDocumentClick);
24555
25135
  this.parent.isBlur = true;
@@ -25301,6 +25881,14 @@ var Image$1 = /** @__PURE__ @class */ (function () {
25301
25881
  originalEvent.preventDefault();
25302
25882
  break;
25303
25883
  }
25884
+ if (originalEvent.ctrlKey && originalEvent.key === 'a') {
25885
+ this.handleSelectAll();
25886
+ }
25887
+ };
25888
+ Image.prototype.handleSelectAll = function () {
25889
+ this.cancelResizeAction();
25890
+ var imgFocusNodes = this.parent.inputElement.querySelectorAll('.' + CLS_IMG_FOCUS);
25891
+ removeClass(imgFocusNodes, CLS_IMG_FOCUS);
25304
25892
  };
25305
25893
  Image.prototype.openDialog = function (isInternal, event, selection, ele, parentEle) {
25306
25894
  var range;
@@ -25470,10 +26058,12 @@ var Image$1 = /** @__PURE__ @class */ (function () {
25470
26058
  _this.parent.formatter.editorManager.nodeSelection.Clear(_this.contentModule.getDocument());
25471
26059
  _this.parent.formatter.editorManager.nodeSelection.setSelectionContents(_this.contentModule.getDocument(), target);
25472
26060
  _this.quickToolObj.imageQTBar.showPopup(args.pageX, pageY, target);
26061
+ _this.resizeStart(e.args, target);
25473
26062
  }, 400);
25474
26063
  }
25475
26064
  else {
25476
- this.quickToolObj.imageQTBar.showPopup(args.pageX, pageY, target);
26065
+ var coordinates = target.getBoundingClientRect();
26066
+ this.quickToolObj.imageQTBar.showPopup(coordinates.left, coordinates.top, target, 'Image');
25477
26067
  }
25478
26068
  }
25479
26069
  };
@@ -25937,7 +26527,7 @@ var Image$1 = /** @__PURE__ @class */ (function () {
25937
26527
  isModal: Browser.isDevice,
25938
26528
  buttons: [{
25939
26529
  click: this.insertImageUrl.bind(selectObj),
25940
- buttonModel: { content: imgInsert, cssClass: 'e-flat e-insertImage' + this.parent.getCssClass(true), isPrimary: true, disabled: true }
26530
+ buttonModel: { content: imgInsert, cssClass: 'e-flat e-insertImage' + this.parent.getCssClass(true), isPrimary: true, disabled: this.parent.editorMode === 'Markdown' ? false : true }
25941
26531
  },
25942
26532
  {
25943
26533
  click: function (e) {
@@ -26043,6 +26633,7 @@ var Image$1 = /** @__PURE__ @class */ (function () {
26043
26633
  if (e.offsetX > e.target.clientWidth || e.offsetY > e.target.clientHeight) {
26044
26634
  }
26045
26635
  else {
26636
+ this.parent.notify(documentClickClosedBy, { closedBy: "outside click" });
26046
26637
  this.dialogObj.hide({ returnValue: true });
26047
26638
  this.parent.isBlur = true;
26048
26639
  dispatchEvent(this.parent.element, 'focusout');
@@ -26104,6 +26695,10 @@ var Image$1 = /** @__PURE__ @class */ (function () {
26104
26695
  }
26105
26696
  }
26106
26697
  });
26698
+ if (e.selectNode && e.selectNode[0].nodeName === 'IMG') {
26699
+ var regex = new RegExp(/([^\S]|^)(((https?\:\/\/)|(www\.))(\S+))/gi);
26700
+ this.inputUrl.value = e.selectNode[0].src.match(regex) ? e.selectNode[0].src : '';
26701
+ }
26107
26702
  imgUrl.appendChild(this.inputUrl);
26108
26703
  return imgUrl;
26109
26704
  };
@@ -26112,6 +26707,9 @@ var Image$1 = /** @__PURE__ @class */ (function () {
26112
26707
  var proxy = this.selfImage;
26113
26708
  proxy.isImgUploaded = false;
26114
26709
  var url = proxy.inputUrl.value;
26710
+ if (proxy.parent.editorMode === 'Markdown' && url === '') {
26711
+ url = 'http://';
26712
+ }
26115
26713
  if (proxy.parent.formatter.getUndoRedoStack().length === 0) {
26116
26714
  proxy.parent.formatter.saveData();
26117
26715
  }
@@ -27111,6 +27709,13 @@ var Audio = /** @__PURE__ @class */ (function () {
27111
27709
  originalEvent.preventDefault();
27112
27710
  break;
27113
27711
  }
27712
+ if (originalEvent.ctrlKey && originalEvent.key === 'a') {
27713
+ this.handleSelectAll();
27714
+ }
27715
+ };
27716
+ Audio.prototype.handleSelectAll = function () {
27717
+ var audioFocusNodes = this.parent.inputElement.querySelectorAll('.' + CLS_AUD_FOCUS);
27718
+ removeClass(audioFocusNodes, CLS_AUD_FOCUS);
27114
27719
  };
27115
27720
  Audio.prototype.openDialog = function (isInternal, event, selection, ele, parentEle) {
27116
27721
  var range;
@@ -27251,6 +27856,7 @@ var Audio = /** @__PURE__ @class */ (function () {
27251
27856
  if (e.offsetX > e.target.clientWidth || e.offsetY > e.target.clientHeight) {
27252
27857
  }
27253
27858
  else {
27859
+ this.parent.notify(documentClickClosedBy, { closedBy: "outside click" });
27254
27860
  this.dialogObj.hide({ returnValue: true });
27255
27861
  this.parent.isBlur = true;
27256
27862
  dispatchEvent(this.parent.element, 'focusout');
@@ -27512,6 +28118,11 @@ var Audio = /** @__PURE__ @class */ (function () {
27512
28118
  }
27513
28119
  }
27514
28120
  });
28121
+ if (e.selectNode && this.isAudioElem(e.selectNode[0])) {
28122
+ var regex = new RegExp(/([^\S]|^)(((https?\:\/\/)|(www\.))(\S+))/gi);
28123
+ var sourceElement = e.selectNode[0].querySelector('source');
28124
+ this.inputUrl.value = sourceElement.src.match(regex) ? sourceElement.src : '';
28125
+ }
27515
28126
  audioUrl.appendChild(this.inputUrl);
27516
28127
  return audioUrl;
27517
28128
  };
@@ -27729,6 +28340,7 @@ var Video = /** @__PURE__ @class */ (function () {
27729
28340
  this.isAllowedTypes = true;
27730
28341
  this.pageX = null;
27731
28342
  this.pageY = null;
28343
+ this.mouseX = null;
27732
28344
  this.deletedVid = [];
27733
28345
  this.parent = parent;
27734
28346
  this.rteID = parent.element.id;
@@ -28128,62 +28740,50 @@ var Video = /** @__PURE__ @class */ (function () {
28128
28740
  if (isNullOrUndefined(vidEleStyle)) {
28129
28741
  return;
28130
28742
  }
28131
- // eslint-disable-next-line
28743
+ /* eslint-disable */
28132
28744
  var width = vidEleStyle.width !== '' ? vidEleStyle.width.match(/^\d+(\.\d*)?%$/g) ? parseFloat(vidEleStyle.width) :
28133
28745
  parseInt(vidEleStyle.width, 10) : vid.style.width !== '' ? vid.style.width : vid.width;
28134
28746
  var height = vidEleStyle.height !== '' ? parseInt(vidEleStyle.height, 10) : vid.style.height !== '' ? vid.style.height : vid.height;
28747
+ width = width.toString().match(/\b\d+(\.\d*)?(%|$)\b/g) ? parseFloat(width.toString()) : parseInt(width.toString(), 10);
28748
+ height = height.toString().match(/\b\d+(\.\d*)?(%|$)\b/g) ? parseFloat(height.toString()) : parseInt(height.toString(), 10);
28749
+ /* eslint-enable */
28135
28750
  if (width > height) {
28136
28751
  vid.style.minWidth = this.parent.insertVideoSettings.minWidth === 0 ? '200px' : formatUnit(this.parent.insertVideoSettings.minWidth);
28137
28752
  vid.style.minHeight = this.parent.insertVideoSettings.minHeight === 0 ? '90px' : formatUnit(this.parent.insertVideoSettings.minHeight);
28138
28753
  if (this.parent.insertVideoSettings.resizeByPercent) {
28139
- if (parseInt('' + vid.getBoundingClientRect().width + '', 10) !== 0 && parseInt('' + width + '', 10) !== 0) {
28140
- var percentageValue = this.pixToPerc((parseInt(width.toString(), 10) / parseInt(height.toString(), 10) * expectedY), (vid.previousElementSibling || vid.parentElement));
28141
- vid.style.width = Math.min(Math.round((percentageValue / vid.getBoundingClientRect().width) * expectedX * 100) / 100, 100) + '%';
28142
- }
28143
- else {
28144
- vid.style.width = this.pixToPerc(parseInt(width.toString(), 10) / parseInt(height.toString(), 10) * expectedY, (vid.previousElementSibling || vid.parentElement)) + '%';
28145
- }
28146
- vid.style.height = null;
28147
- vid.removeAttribute('height');
28754
+ this.updateVidEleWidth(vid, width, height, expectedX, expectedY);
28148
28755
  }
28149
28756
  else if ((vid.style.width === '' && vid.style.height !== '') || (vidEleStyle.width === '' && vidEleStyle.height !== '')) {
28150
28757
  vid.style.height = expectedY + 'px';
28151
28758
  }
28152
28759
  else if ((vid.style.width !== '' && vid.style.height === '') || (vidEleStyle.width !== '' && vidEleStyle.height === '')) {
28153
- var currentWidth = ((parseInt(width.toString(), 10) / parseInt(height.toString(), 10) * expectedY) +
28154
- parseInt(width.toString(), 10) / parseInt(height.toString(), 10)) <
28760
+ var currentWidth = ((width / height * expectedY) +
28761
+ width / height) <
28155
28762
  (this.parent.inputElement.getBoundingClientRect().right - 32) ?
28156
- ((parseInt(width.toString(), 10) / parseInt(height.toString(), 10) * expectedY) +
28157
- parseInt(width.toString(), 10) / parseInt(height.toString(), 10)) :
28763
+ ((width / height * expectedY) +
28764
+ width / height) :
28158
28765
  (this.parent.inputElement.getBoundingClientRect().right - 32);
28159
28766
  vid.style.width = currentWidth.toString() + 'px';
28160
28767
  }
28161
28768
  else if (vid.style.width !== '' || vidEleStyle.width !== '') {
28162
- var currentWidth = (parseInt(width.toString(), 10) / parseInt(height.toString(), 10) * expectedY) <
28769
+ var currentWidth = (width / height * expectedY) <
28163
28770
  (this.parent.inputElement.getBoundingClientRect().right - 32) ?
28164
- (parseInt(width.toString(), 10) / parseInt(height.toString(), 10) * expectedY) :
28771
+ (width / height * expectedY) :
28165
28772
  (this.parent.inputElement.getBoundingClientRect().right - 32);
28166
28773
  vid.style.width = currentWidth + 'px';
28167
28774
  vid.style.height = expectedY + 'px';
28168
28775
  }
28169
28776
  else {
28170
- vid.setAttribute('width', (parseInt(((parseInt(width.toString(), 10) / parseInt(height.toString(), 10) * expectedY) + parseInt(width.toString(), 10) / parseInt(height.toString(), 10)).toString(), 10)).toString());
28777
+ vid.setAttribute('width', (parseInt(((width / height * expectedY) + width / height).toString(), 10)).toString());
28171
28778
  }
28172
28779
  }
28173
28780
  else if (height > width) {
28174
28781
  if (this.parent.insertVideoSettings.resizeByPercent) {
28175
- if (parseInt('' + vid.getBoundingClientRect().width + '', 10) !== 0 && parseInt('' + width + '', 10) !== 0) {
28176
- vid.style.width = Math.min(Math.round((parseInt(width.toString(), 10) / vid.getBoundingClientRect().width) * expectedX * 100) / 100, 100) + '%';
28177
- }
28178
- else {
28179
- vid.style.width = this.pixToPerc((expectedX / parseInt(height.toString(), 10) * expectedY), (vid.previousElementSibling || vid.parentElement)) + '%';
28180
- }
28181
- vid.style.height = null;
28182
- vid.removeAttribute('height');
28782
+ this.updateVidEleWidth(vid, width, height, expectedX, expectedY);
28183
28783
  }
28184
28784
  else if (vid.style.width !== '' || vidEleStyle.width !== '') {
28185
28785
  vid.style.width = expectedX + 'px';
28186
- vid.style.height = (parseInt(height.toString(), 10) / parseInt(width.toString(), 10) * expectedX) + 'px';
28786
+ vid.style.height = (height / width * expectedX) + 'px';
28187
28787
  }
28188
28788
  else {
28189
28789
  vid.setAttribute('width', this.resizeBtnStat.botRight ? (this.getPointX(e.event) - vid.getBoundingClientRect().left).toString() : expectedX.toString());
@@ -28201,6 +28801,23 @@ var Video = /** @__PURE__ @class */ (function () {
28201
28801
  }
28202
28802
  }
28203
28803
  };
28804
+ Video.prototype.updateVidEleWidth = function (vid, width, height, expectedX, expectedY) {
28805
+ if (parseInt('' + vid.getBoundingClientRect().width + '', 10) !== 0 && parseInt('' + width + '', 10) !== 0) {
28806
+ var original = vid.offsetWidth + this.mouseX;
28807
+ var finalWidthByPerc = (original / vid.offsetWidth) * (parseFloat(vid.style.width).toString() === 'NaN' ? (vid.offsetWidth / (parseFloat(getComputedStyle(this.parent.element).width)) * 100) : parseFloat(vid.style.width));
28808
+ vid.style.width = ((finalWidthByPerc > 3) ? finalWidthByPerc : 3) + '%';
28809
+ }
28810
+ else {
28811
+ if (width > height) {
28812
+ vid.style.width = this.pixToPerc(width / height * expectedY, (vid.previousElementSibling || vid.parentElement)) + '%';
28813
+ }
28814
+ else {
28815
+ vid.style.width = this.pixToPerc((expectedX / height * expectedY), (vid.previousElementSibling || vid.parentElement)) + '%';
28816
+ }
28817
+ }
28818
+ vid.style.height = null;
28819
+ vid.removeAttribute('height');
28820
+ };
28204
28821
  Video.prototype.pixToPerc = function (expected, parentEle) {
28205
28822
  return expected / parseFloat(getComputedStyle(parentEle).width) * 100;
28206
28823
  };
@@ -28242,6 +28859,7 @@ var Video = /** @__PURE__ @class */ (function () {
28242
28859
  var height = parseInt(this.vidDupPos.height, 10) + mouseY;
28243
28860
  this.pageX = pageX;
28244
28861
  this.pageY = pageY;
28862
+ this.mouseX = mouseX;
28245
28863
  if (this.resizeBtnStat.botRight) {
28246
28864
  this.vidDupMouseMove(width + 'px', height + 'px', e);
28247
28865
  }
@@ -28408,6 +29026,14 @@ var Video = /** @__PURE__ @class */ (function () {
28408
29026
  originalEvent.preventDefault();
28409
29027
  break;
28410
29028
  }
29029
+ if (originalEvent.ctrlKey && originalEvent.key === 'a') {
29030
+ this.handleSelectAll();
29031
+ }
29032
+ };
29033
+ Video.prototype.handleSelectAll = function () {
29034
+ this.cancelResizeAction();
29035
+ var videoFocusNodes = this.parent.inputElement.querySelectorAll('.' + CLS_VID_FOCUS);
29036
+ removeClass(videoFocusNodes, CLS_VID_FOCUS);
28411
29037
  };
28412
29038
  Video.prototype.openDialog = function (isInternal, event, selection, ele, parentEle) {
28413
29039
  var range;
@@ -28585,6 +29211,7 @@ var Video = /** @__PURE__ @class */ (function () {
28585
29211
  if (e.offsetX > e.target.clientWidth || e.offsetY > e.target.clientHeight) {
28586
29212
  }
28587
29213
  else {
29214
+ this.parent.notify(documentClickClosedBy, { closedBy: "outside click" });
28588
29215
  this.dialogObj.hide({ returnValue: true });
28589
29216
  this.parent.isBlur = true;
28590
29217
  dispatchEvent(this.parent.element, 'focusout');
@@ -28874,6 +29501,15 @@ var Video = /** @__PURE__ @class */ (function () {
28874
29501
  }
28875
29502
  }
28876
29503
  });
29504
+ if (e.selectNode && ((e.selectNode[0] && e.selectNode[0].nodeType !== 3 &&
29505
+ e.selectNode[0].nodeName !== 'BR' &&
29506
+ (e.selectNode[0].classList &&
29507
+ e.selectNode[0].classList.contains(CLS_VID_CLICK_ELEM))) ||
29508
+ e.selectNode[0].nodeName === 'IFRAME' || e.selectNode[0].nodeName === 'VIDEO')) {
29509
+ var regex = new RegExp(/([^\S]|^)(((https?\:\/\/)|(www\.))(\S+))/gi);
29510
+ var sourceElement = e.selectNode[0].querySelector('source');
29511
+ this.inputUrl.value = sourceElement.src.match(regex) ? sourceElement.src : '';
29512
+ }
28877
29513
  var embedUrlBtn = new RadioButton({
28878
29514
  label: this.i10n.getConstant('embeddedCode'),
28879
29515
  checked: true,
@@ -28883,7 +29519,6 @@ var Video = /** @__PURE__ @class */ (function () {
28883
29519
  },
28884
29520
  change: function () {
28885
29521
  urlContent.innerHTML = '';
28886
- _this.inputUrl.value = '';
28887
29522
  urlContent.appendChild(_this.embedInputUrl);
28888
29523
  }
28889
29524
  });
@@ -28893,7 +29528,6 @@ var Video = /** @__PURE__ @class */ (function () {
28893
29528
  name: 'URL',
28894
29529
  change: function () {
28895
29530
  urlContent.innerHTML = '';
28896
- _this.embedInputUrl.value = '';
28897
29531
  urlContent.appendChild(_this.inputUrl);
28898
29532
  }
28899
29533
  });
@@ -29084,10 +29718,11 @@ var Video = /** @__PURE__ @class */ (function () {
29084
29718
  this.selection = proxy.parent.formatter.editorManager.nodeSelection.save(range, proxy.contentModule.getDocument());
29085
29719
  this.selectParent = proxy.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);
29086
29720
  }
29087
- var name_1 = url !== '' ? url.split('/')[url.split('/').length - 1] : embedUrl;
29721
+ var webUrlBtn = document.getElementById('webURL');
29722
+ var name_1 = webUrlBtn.checked ? url.split('/')[url.split('/').length - 1] : embedUrl;
29088
29723
  var value = {
29089
29724
  cssClass: (proxy.parent.insertVideoSettings.layoutOption === 'Inline' ? CLS_VIDEOINLINE : CLS_VIDEOBREAK),
29090
- url: url, selection: this.selection, fileName: name_1, isEmbedUrl: embedUrl !== '' ? true : false,
29725
+ url: url, selection: this.selection, fileName: name_1, isEmbedUrl: !webUrlBtn.checked,
29091
29726
  selectParent: this.selectParent, width: {
29092
29727
  width: proxy.parent.insertVideoSettings.width, minWidth: proxy.parent.insertVideoSettings.minWidth,
29093
29728
  maxWidth: proxy.parent.getInsertImgMaxWidth()
@@ -29447,6 +30082,7 @@ var Table = /** @__PURE__ @class */ (function () {
29447
30082
  this.parent.on(bindCssClass, this.setCssClass, this);
29448
30083
  this.parent.on(destroy, this.destroy, this);
29449
30084
  this.parent.on(moduleDestroy, this.moduleDestroy, this);
30085
+ this.parent.on(afterKeyDown, this.afterKeyDown, this);
29450
30086
  };
29451
30087
  Table.prototype.removeEventListener = function () {
29452
30088
  if (this.parent.isDestroyed) {
@@ -29472,6 +30108,7 @@ var Table = /** @__PURE__ @class */ (function () {
29472
30108
  this.parent.off(bindCssClass, this.setCssClass);
29473
30109
  this.parent.off(destroy, this.destroy);
29474
30110
  this.parent.off(moduleDestroy, this.moduleDestroy);
30111
+ this.parent.off(afterKeyDown, this.afterKeyDown);
29475
30112
  if (!Browser.isDevice && this.parent.tableSettings.resize) {
29476
30113
  EventHandler.remove(this.contentModule.getEditPanel(), 'mouseover', this.resizeHelper);
29477
30114
  }
@@ -29629,6 +30266,14 @@ var Table = /** @__PURE__ @class */ (function () {
29629
30266
  }
29630
30267
  }
29631
30268
  }
30269
+ if (event.ctrlKey && event.key === 'a') {
30270
+ this.handleSelectAll();
30271
+ }
30272
+ };
30273
+ Table.prototype.handleSelectAll = function () {
30274
+ this.cancelResizeAction();
30275
+ var selectedCells = this.parent.inputElement.querySelectorAll('.' + CLS_TABLE_SEL);
30276
+ removeClass(selectedCells, CLS_TABLE_SEL);
29632
30277
  };
29633
30278
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
29634
30279
  Table.prototype.tableModulekeyUp = function (e) {
@@ -29662,7 +30307,6 @@ var Table = /** @__PURE__ @class */ (function () {
29662
30307
  name: !isInternal ? 'showDialog' : null
29663
30308
  };
29664
30309
  this.insertTableDialog({ self: this, args: args, selection: selection });
29665
- this.parent.formatter.editorManager.nodeSelection.restore();
29666
30310
  }
29667
30311
  };
29668
30312
  Table.prototype.showDialog = function () {
@@ -30007,7 +30651,7 @@ var Table = /** @__PURE__ @class */ (function () {
30007
30651
  return;
30008
30652
  }
30009
30653
  var target = e.target || e.targetTouches[0].target;
30010
- var closestTable = closest(target, 'table.e-rte-table');
30654
+ var closestTable = closest(target, 'table.e-rte-table, table.e-rte-paste-table');
30011
30655
  if (!isNullOrUndefined(this.curTable) && !isNullOrUndefined(closestTable) && closestTable !== this.curTable &&
30012
30656
  this.parent.contentModule.getEditPanel().contains(closestTable)) {
30013
30657
  this.removeResizeElement();
@@ -30647,6 +31291,7 @@ var Table = /** @__PURE__ @class */ (function () {
30647
31291
  this.popupObj.hide();
30648
31292
  }
30649
31293
  if (this.editdlgObj) {
31294
+ this.parent.notify(documentClickClosedBy, { closedBy: "outside click" });
30650
31295
  this.editdlgObj.hide();
30651
31296
  }
30652
31297
  this.parent.isBlur = true;
@@ -30957,6 +31602,16 @@ var Table = /** @__PURE__ @class */ (function () {
30957
31602
  Table.prototype.getModuleName = function () {
30958
31603
  return 'table';
30959
31604
  };
31605
+ Table.prototype.afterKeyDown = function (e) {
31606
+ var _this = this;
31607
+ if (this.curTable) {
31608
+ setTimeout(function () {
31609
+ var mouseOverEvent = document.createEvent('MouseEvents');
31610
+ mouseOverEvent.initEvent('mouseover', true, true);
31611
+ _this.curTable.dispatchEvent(mouseOverEvent);
31612
+ }, 1);
31613
+ }
31614
+ };
30960
31615
  return Table;
30961
31616
  }());
30962
31617
 
@@ -30974,6 +31629,7 @@ var DialogRenderer = /** @__PURE__ @class */ (function () {
30974
31629
  }
30975
31630
  this.parent.on(moduleDestroy, this.moduleDestroy, this);
30976
31631
  this.parent.on(destroy, this.removeEventListener, this);
31632
+ this.parent.on(documentClickClosedBy, this.documentClickClosedBy, this);
30977
31633
  };
30978
31634
  DialogRenderer.prototype.removeEventListener = function () {
30979
31635
  if (this.parent.isDestroyed) {
@@ -30981,6 +31637,7 @@ var DialogRenderer = /** @__PURE__ @class */ (function () {
30981
31637
  }
30982
31638
  this.parent.off(destroy, this.removeEventListener);
30983
31639
  this.parent.off(moduleDestroy, this.moduleDestroy);
31640
+ this.parent.off(documentClickClosedBy, this.documentClickClosedBy);
30984
31641
  };
30985
31642
  /**
30986
31643
  * dialog render method
@@ -31027,10 +31684,14 @@ var DialogRenderer = /** @__PURE__ @class */ (function () {
31027
31684
  DialogRenderer.prototype.open = function (args) {
31028
31685
  this.parent.trigger(dialogOpen, args);
31029
31686
  };
31687
+ DialogRenderer.prototype.documentClickClosedBy = function (args) {
31688
+ this.outsideClickClosedBy = args.closedBy;
31689
+ };
31030
31690
  DialogRenderer.prototype.beforeClose = function (args) {
31031
31691
  if (this.dialogEle) {
31032
31692
  this.dialogEle.removeEventListener('keydown', this.handleEnterKeyDown);
31033
31693
  }
31694
+ args.closedBy = this.outsideClickClosedBy === 'outside click' ? this.outsideClickClosedBy : args.closedBy;
31034
31695
  this.parent.trigger(beforeDialogClose, args, function (closeArgs) {
31035
31696
  if (!closeArgs.cancel) {
31036
31697
  if (closeArgs.container.classList.contains('e-popup-close')) {
@@ -31038,6 +31699,7 @@ var DialogRenderer = /** @__PURE__ @class */ (function () {
31038
31699
  }
31039
31700
  }
31040
31701
  });
31702
+ this.outsideClickClosedBy = "";
31041
31703
  };
31042
31704
  DialogRenderer.prototype.getDialogPosition = function () {
31043
31705
  var distanceFromVisibleTop = this.parent.element.getBoundingClientRect().top;
@@ -32711,7 +33373,7 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
32711
33373
  if (tool.command === 'InsertText') {
32712
33374
  currentInsertContentLength = value.length;
32713
33375
  }
32714
- var currentLength = this.getText().trim().replace(/(\r\n|\n|\r)/gm, '').replace(/\u200B/g, '').length;
33376
+ var currentLength = this.getText().trim().replace(/(\r\n|\n|\r|\t)/gm, '').replace(/\u200B/g, '').length;
32715
33377
  var selectionLength = this.getSelection().length;
32716
33378
  var totalLength = (currentLength - selectionLength) + currentInsertContentLength;
32717
33379
  if (!(this.maxLength === -1 || totalLength <= this.maxLength)) {
@@ -33086,7 +33748,12 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
33086
33748
  FormatPainterEscapeAction = this.formatPainterModule.previousAction === 'escape';
33087
33749
  }
33088
33750
  if (!FormatPainterEscapeAction) {
33089
- this.formatter.process(this, null, e);
33751
+ if (this.editorMode === 'HTML' && (e.action === 'increase-fontsize' || e.action === 'decrease-fontsize')) {
33752
+ this.notify(onHandleFontsizeChange, { member: 'onHandleFontsizeChange', args: e });
33753
+ }
33754
+ else {
33755
+ this.formatter.process(this, null, e);
33756
+ }
33090
33757
  }
33091
33758
  switch (e.action) {
33092
33759
  case 'toolbar-focus':
@@ -33112,6 +33779,7 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
33112
33779
  this.setPlaceHolder();
33113
33780
  }
33114
33781
  }
33782
+ this.notify(afterKeyDown, { member: 'afterKeyDown', args: e });
33115
33783
  this.autoResize();
33116
33784
  };
33117
33785
  RichTextEditor.prototype.keyUp = function (e) {
@@ -33138,7 +33806,7 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
33138
33806
  var formatPainterCopy = e.key === 'C' && e.altKey && e.shiftKey;
33139
33807
  var formatPainterPaste = e.key === 'V' && e.altKey && e.shiftKey;
33140
33808
  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) {
33809
+ && ((e.key !== 'shift' && !e.ctrlKey) && e.key && e.key.length === 1 || allowedKeys)) || (this.autoSaveOnIdle && Browser.isDevice) && !this.inlineMode.enable) {
33142
33810
  this.formatter.onKeyHandler(this, e);
33143
33811
  }
33144
33812
  if (this.inputElement && this.inputElement.textContent.length !== 0
@@ -33234,60 +33902,6 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
33234
33902
  return;
33235
33903
  }
33236
33904
  }
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
33905
  this.notifyMouseUp(e);
33292
33906
  };
33293
33907
  /**
@@ -33329,10 +33943,10 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
33329
33943
  requestType: 'Paste'
33330
33944
  };
33331
33945
  this.trigger(actionBegin, evenArgs, function (pasteArgs) {
33332
- var currentLength = _this.inputElement.textContent.length;
33946
+ var currentLength = _this.getText().replace(/(\r\n|\n|\r|\t)/gm, '').replace(/\u200B/g, '').length;
33333
33947
  var selectionLength = _this.getSelection().length;
33334
33948
  var pastedContentLength = (isNullOrUndefined(e) || isNullOrUndefined(e.clipboardData))
33335
- ? 0 : e.clipboardData.getData('text/plain').replace(/(\r\n|\n|\r)/gm, '').replace(/\u200B/g, '').length;
33949
+ ? 0 : e.clipboardData.getData('text/plain').replace(/(\r\n|\n|\r|\t)/gm, '').replace(/\u200B/g, '').length;
33336
33950
  var totalLength = (currentLength - selectionLength) + pastedContentLength;
33337
33951
  if (_this.editorMode === 'Markdown') {
33338
33952
  var args_1 = { requestType: 'Paste', editorMode: _this.editorMode, event: e };
@@ -33772,7 +34386,7 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
33772
34386
  if (this.valueContainer) {
33773
34387
  this.valueContainer.value = (this.enableHtmlEncode) ? this.value : value;
33774
34388
  }
33775
- if (this.editorMode === 'HTML' && this.inputElement && this.inputElement.innerHTML.replace('&amp;', '&').trim() !== value.trim()) {
34389
+ if (this.editorMode === 'HTML' && this.inputElement && this.inputElement.innerHTML.trim() !== value.trim()) {
33776
34390
  this.inputElement.innerHTML = value;
33777
34391
  }
33778
34392
  else if (this.editorMode === 'Markdown' && this.inputElement
@@ -33793,9 +34407,6 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
33793
34407
  }
33794
34408
  else {
33795
34409
  this.inputElement.innerHTML = '<p><br/></p>';
33796
- if (value === '' && this.formatter && this.inputElement) {
33797
- this.formatter.editorManager.nodeSelection.setCursorPoint(this.contentModule.getDocument(), this.inputElement.firstElementChild, this.inputElement.firstElementChild.childElementCount);
33798
- }
33799
34410
  }
33800
34411
  }
33801
34412
  else {
@@ -34410,6 +35021,7 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
34410
35021
  addClass([this.element], [CLS_FOCUS]);
34411
35022
  this.preventDefaultResize(e);
34412
35023
  this.notify(mouseDown, { args: e });
35024
+ this.formatter.editorManager.observer.notify(mouseDown, { args: e });
34413
35025
  this.clickPoints = { clientX: touch.clientX, clientY: touch.clientY };
34414
35026
  };
34415
35027
  RichTextEditor.prototype.preventImgResize = function (e) {
@@ -34571,6 +35183,7 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
34571
35183
  detach(item[i]);
34572
35184
  }
34573
35185
  }
35186
+ this.removeSelectionClassStates(valueElementWrapper);
34574
35187
  return valueElementWrapper.innerHTML;
34575
35188
  };
34576
35189
  RichTextEditor.prototype.updateStatus = function (e) {
@@ -34618,6 +35231,7 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
34618
35231
  }
34619
35232
  if (this.isBlur && isNullOrUndefined(trg)) {
34620
35233
  removeClass([this.element], [CLS_FOCUS]);
35234
+ this.removeSelectionClassStates(this.inputElement);
34621
35235
  this.notify(focusChange, {});
34622
35236
  var value = this.getUpdatedValue();
34623
35237
  this.setProperties({ value: value });
@@ -34793,7 +35407,7 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
34793
35407
  RichTextEditor.prototype.restrict = function (e) {
34794
35408
  if (this.maxLength >= 0) {
34795
35409
  var element = this.editorMode === 'Markdown' ? this.contentModule.getText() :
34796
- (e && e.currentTarget.textContent);
35410
+ (this.getText().replace(/(\r\n|\n|\r|\t)/gm, '').replace(/\u200B/g, ''));
34797
35411
  if (!element) {
34798
35412
  return;
34799
35413
  }
@@ -34943,6 +35557,24 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
34943
35557
  }
34944
35558
  }
34945
35559
  };
35560
+ RichTextEditor.prototype.removeSelectionClassStates = function (element) {
35561
+ var classNames = [CLS_IMG_FOCUS, CLS_TABLE_SEL, CLS_VID_FOCUS, CLS_AUD_FOCUS];
35562
+ for (var i = 0; i < classNames.length; i++) {
35563
+ var item = element.querySelectorAll('.' + classNames[i]);
35564
+ removeClass(item, classNames[i]);
35565
+ if (item.length === 0) {
35566
+ continue;
35567
+ }
35568
+ for (var j = 0; j < item.length; j++) {
35569
+ if (item[j].classList.length === 0) {
35570
+ item[j].removeAttribute('class');
35571
+ }
35572
+ if (item[j].nodeName === 'IMG' && item[j].style.outline !== '') {
35573
+ item[j].style.outline = '';
35574
+ }
35575
+ }
35576
+ }
35577
+ };
34946
35578
  __decorate$1([
34947
35579
  Complex({}, ToolbarSettings$1)
34948
35580
  ], RichTextEditor.prototype, "toolbarSettings", void 0);
@@ -35247,5 +35879,5 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
35247
35879
  * Rich Text Editor component exported items
35248
35880
  */
35249
35881
 
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 };
35882
+ 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
35883
  //# sourceMappingURL=ej2-richtexteditor.es5.js.map