@syncfusion/ej2-richtexteditor 24.1.41 → 24.1.43-569781

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 (269) hide show
  1. package/.eslintrc.json +259 -259
  2. package/CHANGELOG.md +1927 -1775
  3. package/README.md +76 -76
  4. package/dist/ej2-richtexteditor.umd.min.js +1 -10
  5. package/dist/ej2-richtexteditor.umd.min.js.map +1 -1
  6. package/dist/es6/ej2-richtexteditor.es2015.js +2601 -1077
  7. package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
  8. package/dist/es6/ej2-richtexteditor.es5.js +2706 -1181
  9. package/dist/es6/ej2-richtexteditor.es5.js.map +1 -1
  10. package/helpers/e2e/index.js +3 -3
  11. package/helpers/e2e/rte-helper.js +13 -13
  12. package/license +9 -9
  13. package/package.json +74 -74
  14. package/src/common/config.d.ts +7 -0
  15. package/src/common/config.js +11 -0
  16. package/src/common/constant.d.ts +6 -0
  17. package/src/common/constant.js +6 -0
  18. package/src/common/interface.d.ts +19 -7
  19. package/src/common/types.d.ts +6 -0
  20. package/src/common/util.d.ts +6 -0
  21. package/src/common/util.js +61 -20
  22. package/src/editor-manager/base/classes.d.ts +1 -1
  23. package/src/editor-manager/base/classes.js +1 -1
  24. package/src/editor-manager/base/constant.d.ts +6 -0
  25. package/src/editor-manager/base/constant.js +6 -0
  26. package/src/editor-manager/base/editor-manager.d.ts +8 -3
  27. package/src/editor-manager/base/editor-manager.js +62 -3
  28. package/src/editor-manager/base/enum.d.ts +2 -2
  29. package/src/editor-manager/base/interface.d.ts +17 -9
  30. package/src/editor-manager/base/types.d.ts +1 -1
  31. package/src/editor-manager/plugin/alignments.d.ts +2 -2
  32. package/src/editor-manager/plugin/alignments.js +2 -2
  33. package/src/editor-manager/plugin/audio.d.ts +3 -3
  34. package/src/editor-manager/plugin/audio.js +3 -3
  35. package/src/editor-manager/plugin/clearformat-exec.d.ts +2 -2
  36. package/src/editor-manager/plugin/clearformat-exec.js +2 -2
  37. package/src/editor-manager/plugin/clearformat.d.ts +1 -1
  38. package/src/editor-manager/plugin/clearformat.js +1 -1
  39. package/src/editor-manager/plugin/dom-node.d.ts +39 -35
  40. package/src/editor-manager/plugin/dom-node.js +203 -49
  41. package/src/editor-manager/plugin/format-painter-actions.d.ts +2 -1
  42. package/src/editor-manager/plugin/format-painter-actions.js +20 -2
  43. package/src/editor-manager/plugin/formats.d.ts +3 -2
  44. package/src/editor-manager/plugin/formats.js +40 -5
  45. package/src/editor-manager/plugin/image.d.ts +3 -3
  46. package/src/editor-manager/plugin/image.js +15 -19
  47. package/src/editor-manager/plugin/indents.d.ts +2 -2
  48. package/src/editor-manager/plugin/indents.js +2 -2
  49. package/src/editor-manager/plugin/insert-methods.d.ts +4 -4
  50. package/src/editor-manager/plugin/insert-methods.js +4 -4
  51. package/src/editor-manager/plugin/insert-text.d.ts +2 -2
  52. package/src/editor-manager/plugin/insert-text.js +2 -2
  53. package/src/editor-manager/plugin/inserthtml-exec.d.ts +2 -2
  54. package/src/editor-manager/plugin/inserthtml-exec.js +2 -2
  55. package/src/editor-manager/plugin/inserthtml.d.ts +3 -2
  56. package/src/editor-manager/plugin/inserthtml.js +64 -7
  57. package/src/editor-manager/plugin/isformatted.d.ts +8 -8
  58. package/src/editor-manager/plugin/isformatted.js +8 -8
  59. package/src/editor-manager/plugin/link.d.ts +2 -2
  60. package/src/editor-manager/plugin/link.js +6 -3
  61. package/src/editor-manager/plugin/lists.d.ts +2 -2
  62. package/src/editor-manager/plugin/lists.js +123 -67
  63. package/src/editor-manager/plugin/ms-word-clean-up.d.ts +4 -1
  64. package/src/editor-manager/plugin/ms-word-clean-up.js +213 -86
  65. package/src/editor-manager/plugin/nodecutter.d.ts +6 -6
  66. package/src/editor-manager/plugin/nodecutter.js +8 -8
  67. package/src/editor-manager/plugin/selection-commands.d.ts +2 -1
  68. package/src/editor-manager/plugin/selection-commands.js +127 -4
  69. package/src/editor-manager/plugin/selection-exec.d.ts +2 -2
  70. package/src/editor-manager/plugin/selection-exec.js +2 -2
  71. package/src/editor-manager/plugin/table.d.ts +2 -3
  72. package/src/editor-manager/plugin/table.js +35 -32
  73. package/src/editor-manager/plugin/toolbar-status.d.ts +4 -4
  74. package/src/editor-manager/plugin/toolbar-status.js +22 -12
  75. package/src/editor-manager/plugin/undo.d.ts +7 -6
  76. package/src/editor-manager/plugin/undo.js +27 -7
  77. package/src/editor-manager/plugin/video.d.ts +3 -3
  78. package/src/editor-manager/plugin/video.js +3 -3
  79. package/src/markdown-parser/base/interface.d.ts +10 -10
  80. package/src/markdown-parser/base/markdown-parser.d.ts +3 -3
  81. package/src/markdown-parser/base/markdown-parser.js +3 -3
  82. package/src/markdown-parser/base/types.d.ts +1 -1
  83. package/src/markdown-parser/plugin/clearformat.d.ts +2 -2
  84. package/src/markdown-parser/plugin/clearformat.js +2 -2
  85. package/src/markdown-parser/plugin/formats.d.ts +2 -2
  86. package/src/markdown-parser/plugin/formats.js +2 -2
  87. package/src/markdown-parser/plugin/insert-text.d.ts +2 -2
  88. package/src/markdown-parser/plugin/insert-text.js +2 -2
  89. package/src/markdown-parser/plugin/link.d.ts +2 -2
  90. package/src/markdown-parser/plugin/link.js +2 -2
  91. package/src/markdown-parser/plugin/markdown-selection.d.ts +14 -14
  92. package/src/markdown-parser/plugin/markdown-selection.js +14 -14
  93. package/src/markdown-parser/plugin/md-selection-formats.d.ts +1 -1
  94. package/src/markdown-parser/plugin/md-selection-formats.js +1 -1
  95. package/src/markdown-parser/plugin/table.d.ts +3 -3
  96. package/src/markdown-parser/plugin/table.js +3 -3
  97. package/src/markdown-parser/plugin/undo.d.ts +6 -6
  98. package/src/markdown-parser/plugin/undo.js +6 -6
  99. package/src/rich-text-editor/actions/base-quick-toolbar.d.ts +12 -12
  100. package/src/rich-text-editor/actions/base-quick-toolbar.js +57 -20
  101. package/src/rich-text-editor/actions/base-toolbar.d.ts +3 -3
  102. package/src/rich-text-editor/actions/base-toolbar.js +35 -37
  103. package/src/rich-text-editor/actions/color-picker.d.ts +3 -2
  104. package/src/rich-text-editor/actions/color-picker.js +12 -2
  105. package/src/rich-text-editor/actions/count.d.ts +3 -3
  106. package/src/rich-text-editor/actions/count.js +4 -4
  107. package/src/rich-text-editor/actions/dropdown-buttons.d.ts +2 -2
  108. package/src/rich-text-editor/actions/dropdown-buttons.js +23 -4
  109. package/src/rich-text-editor/actions/emoji-picker.d.ts +1 -1
  110. package/src/rich-text-editor/actions/emoji-picker.js +4 -4
  111. package/src/rich-text-editor/actions/enter-key.js +4 -3
  112. package/src/rich-text-editor/actions/full-screen.d.ts +3 -3
  113. package/src/rich-text-editor/actions/full-screen.js +6 -5
  114. package/src/rich-text-editor/actions/html-editor.d.ts +5 -5
  115. package/src/rich-text-editor/actions/html-editor.js +129 -45
  116. package/src/rich-text-editor/actions/keyboard-model.d.ts +16 -16
  117. package/src/rich-text-editor/actions/keyboard.d.ts +1 -1
  118. package/src/rich-text-editor/actions/keyboard.js +23 -21
  119. package/src/rich-text-editor/actions/markdown-editor.d.ts +2 -2
  120. package/src/rich-text-editor/actions/markdown-editor.js +5 -3
  121. package/src/rich-text-editor/actions/paste-clean-up.d.ts +4 -1
  122. package/src/rich-text-editor/actions/paste-clean-up.js +87 -12
  123. package/src/rich-text-editor/actions/quick-toolbar.d.ts +16 -9
  124. package/src/rich-text-editor/actions/quick-toolbar.js +33 -18
  125. package/src/rich-text-editor/actions/resize.js +2 -1
  126. package/src/rich-text-editor/actions/toolbar-action.js +1 -1
  127. package/src/rich-text-editor/actions/toolbar.d.ts +15 -16
  128. package/src/rich-text-editor/actions/toolbar.js +31 -100
  129. package/src/rich-text-editor/actions/xhtml-validation.d.ts +1 -1
  130. package/src/rich-text-editor/actions/xhtml-validation.js +1 -1
  131. package/src/rich-text-editor/base/classes.d.ts +121 -126
  132. package/src/rich-text-editor/base/classes.js +121 -126
  133. package/src/rich-text-editor/base/constant.d.ts +190 -150
  134. package/src/rich-text-editor/base/constant.js +359 -150
  135. package/src/rich-text-editor/base/enum.d.ts +1 -1
  136. package/src/rich-text-editor/base/enum.js +1 -1
  137. package/src/rich-text-editor/base/interface.d.ts +87 -53
  138. package/src/rich-text-editor/base/interface.js +1 -1
  139. package/src/rich-text-editor/base/rich-text-editor-model.d.ts +891 -891
  140. package/src/rich-text-editor/base/rich-text-editor.d.ts +68 -65
  141. package/src/rich-text-editor/base/rich-text-editor.js +232 -199
  142. package/src/rich-text-editor/base/util.d.ts +5 -1
  143. package/src/rich-text-editor/base/util.js +47 -4
  144. package/src/rich-text-editor/formatter/formatter.d.ts +8 -8
  145. package/src/rich-text-editor/formatter/formatter.js +23 -12
  146. package/src/rich-text-editor/formatter/html-formatter.d.ts +2 -2
  147. package/src/rich-text-editor/formatter/html-formatter.js +15 -15
  148. package/src/rich-text-editor/formatter/markdown-formatter.d.ts +2 -2
  149. package/src/rich-text-editor/formatter/markdown-formatter.js +15 -15
  150. package/src/rich-text-editor/models/default-locale.js +30 -26
  151. package/src/rich-text-editor/models/iframe-settings-model.d.ts +26 -26
  152. package/src/rich-text-editor/models/iframe-settings.js +19 -19
  153. package/src/rich-text-editor/models/inline-mode-model.d.ts +11 -11
  154. package/src/rich-text-editor/models/inline-mode.js +19 -19
  155. package/src/rich-text-editor/models/items.js +2 -2
  156. package/src/rich-text-editor/models/toolbar-settings-model.d.ts +760 -760
  157. package/src/rich-text-editor/models/toolbar-settings.d.ts +1 -1
  158. package/src/rich-text-editor/models/toolbar-settings.js +20 -20
  159. package/src/rich-text-editor/renderer/audio-module.d.ts +2 -1
  160. package/src/rich-text-editor/renderer/audio-module.js +14 -1
  161. package/src/rich-text-editor/renderer/content-renderer.d.ts +6 -6
  162. package/src/rich-text-editor/renderer/content-renderer.js +6 -6
  163. package/src/rich-text-editor/renderer/dialog-renderer.d.ts +4 -2
  164. package/src/rich-text-editor/renderer/dialog-renderer.js +14 -3
  165. package/src/rich-text-editor/renderer/iframe-content-renderer.d.ts +4 -4
  166. package/src/rich-text-editor/renderer/iframe-content-renderer.js +19 -18
  167. package/src/rich-text-editor/renderer/image-module.d.ts +10 -2
  168. package/src/rich-text-editor/renderer/image-module.js +200 -168
  169. package/src/rich-text-editor/renderer/link-module.d.ts +1 -1
  170. package/src/rich-text-editor/renderer/link-module.js +11 -2
  171. package/src/rich-text-editor/renderer/markdown-renderer.d.ts +6 -6
  172. package/src/rich-text-editor/renderer/markdown-renderer.js +6 -6
  173. package/src/rich-text-editor/renderer/popup-renderer.d.ts +5 -5
  174. package/src/rich-text-editor/renderer/popup-renderer.js +5 -5
  175. package/src/rich-text-editor/renderer/render.d.ts +2 -2
  176. package/src/rich-text-editor/renderer/render.js +2 -2
  177. package/src/rich-text-editor/renderer/table-module.d.ts +9 -2
  178. package/src/rich-text-editor/renderer/table-module.js +289 -137
  179. package/src/rich-text-editor/renderer/toolbar-renderer.d.ts +13 -9
  180. package/src/rich-text-editor/renderer/toolbar-renderer.js +103 -24
  181. package/src/rich-text-editor/renderer/video-module.d.ts +4 -1
  182. package/src/rich-text-editor/renderer/video-module.js +62 -35
  183. package/src/rich-text-editor/renderer/view-source.d.ts +7 -6
  184. package/src/rich-text-editor/renderer/view-source.js +18 -10
  185. package/src/rich-text-editor/services/renderer-factory.d.ts +3 -3
  186. package/src/rich-text-editor/services/renderer-factory.js +3 -3
  187. package/src/rich-text-editor/services/service-locator.d.ts +3 -3
  188. package/src/rich-text-editor/services/service-locator.js +3 -3
  189. package/src/selection/selection.d.ts +22 -22
  190. package/src/selection/selection.js +25 -22
  191. package/styles/_all.scss +1 -1
  192. package/styles/bootstrap-dark.css +153 -49
  193. package/styles/bootstrap.css +158 -57
  194. package/styles/bootstrap4.css +145 -45
  195. package/styles/bootstrap5-dark.css +150 -45
  196. package/styles/bootstrap5.css +150 -45
  197. package/styles/fabric-dark.css +139 -39
  198. package/styles/fabric.css +140 -40
  199. package/styles/fluent-dark.css +147 -41
  200. package/styles/fluent.css +147 -41
  201. package/styles/highcontrast-light.css +139 -39
  202. package/styles/highcontrast.css +143 -40
  203. package/styles/material-dark.css +143 -39
  204. package/styles/material.css +143 -39
  205. package/styles/material3-dark.css +155 -49
  206. package/styles/material3-dark.scss +1 -1
  207. package/styles/material3.css +155 -49
  208. package/styles/material3.scss +1 -1
  209. package/styles/rich-text-editor/_all.scss +2 -2
  210. package/styles/rich-text-editor/_bds-definition.scss +279 -0
  211. package/styles/rich-text-editor/_bootstrap-dark-definition.scss +281 -277
  212. package/styles/rich-text-editor/_bootstrap-definition.scss +337 -334
  213. package/styles/rich-text-editor/_bootstrap4-definition.scss +464 -460
  214. package/styles/rich-text-editor/_bootstrap5-definition.scss +266 -262
  215. package/styles/rich-text-editor/_fabric-dark-definition.scss +263 -259
  216. package/styles/rich-text-editor/_fabric-definition.scss +261 -257
  217. package/styles/rich-text-editor/_fluent-definition.scss +267 -263
  218. package/styles/rich-text-editor/_fusionnew-definition.scss +265 -261
  219. package/styles/rich-text-editor/_highcontrast-definition.scss +261 -257
  220. package/styles/rich-text-editor/_highcontrast-light-definition.scss +261 -257
  221. package/styles/rich-text-editor/_layout.scss +2249 -2147
  222. package/styles/rich-text-editor/_material-dark-definition.scss +266 -262
  223. package/styles/rich-text-editor/_material-definition.scss +264 -260
  224. package/styles/rich-text-editor/_material3-definition.scss +266 -262
  225. package/styles/rich-text-editor/_tailwind-definition.scss +261 -257
  226. package/styles/rich-text-editor/_theme.scss +906 -837
  227. package/styles/rich-text-editor/bootstrap-dark.css +153 -49
  228. package/styles/rich-text-editor/bootstrap.css +158 -57
  229. package/styles/rich-text-editor/bootstrap4.css +145 -45
  230. package/styles/rich-text-editor/bootstrap5-dark.css +150 -45
  231. package/styles/rich-text-editor/bootstrap5.css +150 -45
  232. package/styles/rich-text-editor/fabric-dark.css +139 -39
  233. package/styles/rich-text-editor/fabric.css +140 -40
  234. package/styles/rich-text-editor/fluent-dark.css +147 -41
  235. package/styles/rich-text-editor/fluent.css +147 -41
  236. package/styles/rich-text-editor/highcontrast-light.css +139 -39
  237. package/styles/rich-text-editor/highcontrast.css +143 -40
  238. package/styles/rich-text-editor/icons/_bds.scss +348 -0
  239. package/styles/rich-text-editor/icons/_bootstrap-dark.scss +349 -349
  240. package/styles/rich-text-editor/icons/_bootstrap.scss +349 -349
  241. package/styles/rich-text-editor/icons/_bootstrap4.scss +349 -349
  242. package/styles/rich-text-editor/icons/_bootstrap5.scss +348 -348
  243. package/styles/rich-text-editor/icons/_fabric-dark.scss +349 -349
  244. package/styles/rich-text-editor/icons/_fabric.scss +349 -349
  245. package/styles/rich-text-editor/icons/_fluent.scss +348 -348
  246. package/styles/rich-text-editor/icons/_fusionnew.scss +348 -348
  247. package/styles/rich-text-editor/icons/_highcontrast-light.scss +349 -349
  248. package/styles/rich-text-editor/icons/_highcontrast.scss +349 -349
  249. package/styles/rich-text-editor/icons/_material-dark.scss +349 -349
  250. package/styles/rich-text-editor/icons/_material.scss +349 -349
  251. package/styles/rich-text-editor/icons/_material3.scss +348 -348
  252. package/styles/rich-text-editor/icons/_tailwind.scss +348 -348
  253. package/styles/rich-text-editor/material-dark.css +143 -39
  254. package/styles/rich-text-editor/material.css +143 -39
  255. package/styles/rich-text-editor/material3-dark.css +155 -49
  256. package/styles/rich-text-editor/material3-dark.scss +1 -1
  257. package/styles/rich-text-editor/material3.css +155 -49
  258. package/styles/rich-text-editor/material3.scss +1 -1
  259. package/styles/rich-text-editor/tailwind-dark.css +194 -66
  260. package/styles/rich-text-editor/tailwind.css +194 -66
  261. package/styles/tailwind-dark.css +194 -66
  262. package/styles/tailwind.css +194 -66
  263. package/.github/PULL_REQUEST_TEMPLATE/Bug.md +0 -41
  264. package/.github/PULL_REQUEST_TEMPLATE/Feature.md +0 -27
  265. package/dist/ej2-richtexteditor.min.js +0 -10
  266. package/dist/global/ej2-richtexteditor.min.js +0 -11
  267. package/dist/global/ej2-richtexteditor.min.js.map +0 -1
  268. package/dist/global/index.d.ts +0 -14
  269. package/tslint.json +0 -111
@@ -22,7 +22,7 @@ var Count = /** @class */ (function () {
22
22
  *
23
23
  * @returns {void}
24
24
  * @hidden
25
-
25
+ * @deprecated
26
26
  */
27
27
  Count.prototype.renderCount = function () {
28
28
  this.initializeInstance();
@@ -35,7 +35,7 @@ var Count = /** @class */ (function () {
35
35
  };
36
36
  Count.prototype.appendCount = function () {
37
37
  var htmlText = this.parent.editorMode === 'Markdown' ? this.editPanel.value :
38
- this.editPanel.textContent;
38
+ (this.parent.getText().replace(/(\r\n|\n|\r|\t)/gm, ''));
39
39
  if (this.parent.editorMode !== 'Markdown' && htmlText.indexOf('\u200B') !== -1) {
40
40
  this.htmlLength = htmlText.replace(/\u200B/g, '').length;
41
41
  }
@@ -63,7 +63,7 @@ var Count = /** @class */ (function () {
63
63
  /**
64
64
  * @returns {void}
65
65
  * @hidden
66
-
66
+ * @deprecated
67
67
  */
68
68
  Count.prototype.refresh = function () {
69
69
  if (!isNullOrUndefined(this.editPanel)) {
@@ -79,7 +79,7 @@ var Count = /** @class */ (function () {
79
79
  * @function destroy
80
80
  * @returns {void}
81
81
  * @hidden
82
-
82
+ * @deprecated
83
83
  */
84
84
  Count.prototype.destroy = function () {
85
85
  if (this.element && !isNullOrUndefined(this.parent.element.querySelector('.' + CLS_COUNT))) {
@@ -36,7 +36,7 @@ export declare class DropDownButtons {
36
36
  * @param {IDropDownRenderArgs} args - specifies the arguments
37
37
  * @returns {void}
38
38
  * @hidden
39
-
39
+ * @deprecated
40
40
  */
41
41
  renderDropDowns(args: IDropDownRenderArgs): void;
42
42
  private getUpdateItems;
@@ -55,7 +55,7 @@ export declare class DropDownButtons {
55
55
  *
56
56
  * @returns {void}
57
57
  * @hidden
58
-
58
+ * @deprecated
59
59
  */
60
60
  destroyDropDowns(): void;
61
61
  private setRtl;
@@ -3,7 +3,8 @@ import { RenderType } from '../base/enum';
3
3
  import { getIndex } from '../base/util';
4
4
  import * as events from '../base/constant';
5
5
  import * as classes from '../base/classes';
6
- import { getDropDownValue, getFormattedFontSize, getTooltipText } from '../base/util';
6
+ import { getDropDownValue, getFormattedFontSize, getTooltipText, getTooltipTextDropdownItems, getQuickToolbarTooltipText } from '../base/util';
7
+ import { fontNameLocale, formatsLocale, numberFormatListLocale, bulletFormatListLocale } from '../models/default-locale';
7
8
  import * as model from '../models/items';
8
9
  import { dispatchEvent } from '../base/util';
9
10
  /**
@@ -24,10 +25,28 @@ var DropDownButtons = /** @class */ (function () {
24
25
  if (item.cssClass) {
25
26
  addClass([args.element], item.cssClass);
26
27
  }
28
+ if (item.command === 'Images' || item.command === 'Videos' || item.command === 'Audios' || item.command === 'Table') {
29
+ args.element.setAttribute('title', getQuickToolbarTooltipText(item.text) !== '' ? getQuickToolbarTooltipText(item.text) : item.text);
30
+ }
27
31
  if (item.command === 'Alignments' || item.subCommand === 'JustifyLeft'
28
32
  || item.subCommand === 'JustifyRight' || item.subCommand === 'JustifyCenter') {
29
33
  args.element.setAttribute('title', getTooltipText(item.subCommand.toLocaleLowerCase(), this.locator));
30
34
  }
35
+ if (item.command === 'Formats') {
36
+ args.element.setAttribute('title', getTooltipTextDropdownItems(item.subCommand.toLocaleLowerCase(), this.locator, formatsLocale));
37
+ }
38
+ if (item.command === 'Font') {
39
+ args.element.setAttribute('title', getTooltipTextDropdownItems(item.text.toLocaleLowerCase(), this.locator, fontNameLocale) !== '' ? getTooltipTextDropdownItems(item.text.toLocaleLowerCase(), this.locator, fontNameLocale) : item.text);
40
+ }
41
+ if (item.subCommand === 'BulletFormatList') {
42
+ args.element.setAttribute('title', getTooltipTextDropdownItems(item.text.toLocaleLowerCase(), this.locator, bulletFormatListLocale) !== '' ? getTooltipTextDropdownItems(item.text.toLocaleLowerCase(), this.locator, bulletFormatListLocale) : item.text);
43
+ }
44
+ if (item.subCommand === 'NumberFormatList') {
45
+ args.element.setAttribute('title', (getTooltipTextDropdownItems(item.text.toLocaleLowerCase(), this.locator, numberFormatListLocale)) !== '' ? getTooltipTextDropdownItems(item.text.toLocaleLowerCase(), this.locator, numberFormatListLocale) : item.text);
46
+ }
47
+ if (item.subCommand === 'FontSize') {
48
+ args.element.setAttribute('title', getTooltipTextDropdownItems(item.value.toLocaleLowerCase(), null, null, this.parent));
49
+ }
31
50
  };
32
51
  DropDownButtons.prototype.dropdownContent = function (width, type, content) {
33
52
  return ('<span style="display: inline-flex;' + 'width:' + ((type === 'quick') ? 'auto' : width) + '" >' +
@@ -39,7 +58,7 @@ var DropDownButtons = /** @class */ (function () {
39
58
  * @param {IDropDownRenderArgs} args - specifies the arguments
40
59
  * @returns {void}
41
60
  * @hidden
42
-
61
+ * @deprecated
43
62
  */
44
63
  DropDownButtons.prototype.renderDropDowns = function (args) {
45
64
  var _this = this;
@@ -134,7 +153,7 @@ var DropDownButtons = /** @class */ (function () {
134
153
  if (isNullOrUndefined(targetElement) || targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {
135
154
  return;
136
155
  }
137
- var fontsize = _this.parent.fontSize.items.slice();
156
+ 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()));
138
157
  fontsize.forEach(function (item) {
139
158
  Object.defineProperties(item, {
140
159
  command: { value: 'Font', enumerable: true }, subCommand: { value: 'FontSize', enumerable: true }
@@ -406,7 +425,7 @@ var DropDownButtons = /** @class */ (function () {
406
425
  *
407
426
  * @returns {void}
408
427
  * @hidden
409
-
428
+ * @deprecated
410
429
  */
411
430
  DropDownButtons.prototype.destroyDropDowns = function () {
412
431
  if (this.formatDropDown) {
@@ -21,7 +21,7 @@ export declare class EmojiPicker {
21
21
  * @function destroy
22
22
  * @returns {void}
23
23
  * @hidden
24
-
24
+ * @deprecated
25
25
  */
26
26
  destroy(): void;
27
27
  protected addEventListener(): void;
@@ -19,7 +19,7 @@ var EmojiPicker = /** @class */ (function () {
19
19
  * @function destroy
20
20
  * @returns {void}
21
21
  * @hidden
22
-
22
+ * @deprecated
23
23
  */
24
24
  EmojiPicker.prototype.destroy = function () {
25
25
  this.removeEventListener();
@@ -61,10 +61,10 @@ var EmojiPicker = /** @class */ (function () {
61
61
  }
62
62
  this.popDiv = this.parent.createElement('div', { className: 'e-rte-emojipicker-popup', id: this.parent.getID() + '_emojiPicker' });
63
63
  if (!isNOU(this.parent.getToolbar()) && !this.parent.inlineMode.enable) {
64
- this.parent.getToolbar().appendChild(this.popDiv);
64
+ this.parent.getToolbar().parentElement.appendChild(this.popDiv);
65
65
  }
66
66
  else if (this.parent.inlineMode.enable) {
67
- this.parent.inputElement.appendChild(this.popDiv);
67
+ this.parent.element.appendChild(this.popDiv);
68
68
  }
69
69
  EventHandler.add(this.popDiv, 'keydown', this.onKeyDown, this);
70
70
  EventHandler.add(this.popDiv, 'keyup', this.searchFilter, this);
@@ -643,7 +643,7 @@ var EmojiPicker = /** @class */ (function () {
643
643
  noEmojiObj.style.margin = '55px';
644
644
  emojipickerAll.appendChild(noEmojiObj);
645
645
  }
646
- else if (!noEMoji && this.parent.element.querySelector('.e-rte-emojiSearch-noEmoji') || (inputValue === '' && value === ':')) {
646
+ else if (!noEMoji && this.parent.element.querySelector('.e-rte-emojiSearch-noEmoji') || (inputValue === '' && value === ':') || (inputValue === '' && this.parent.element.querySelector('.e-rte-emojiSearch-noEmoji'))) {
647
647
  emojipickerAll.removeChild(this.parent.element.querySelector('.e-rte-emojiSearch-noEmoji'));
648
648
  }
649
649
  emojipickerAll.appendChild(emojiBtnDiv);
@@ -50,7 +50,8 @@ var EnterKeyAction = /** @class */ (function () {
50
50
  isTableEnter = blockElement.tagName === 'TD' || blockElement.tagName === 'TBODY' ? false : true;
51
51
  }
52
52
  if (e.args.which === 13 && !e.args.ctrlKey && (!Browser.isDevice ? e.args.code === 'Enter' : e.args.key === 'Enter')) {
53
- if (isNOU(this.startNode.closest('LI, UL, OL')) && isNOU(this.endNode.closest('LI, UL, OL')) && isTableEnter &&
53
+ if (isNOU(this.startNode.closest('LI, UL, OL')) && isNOU(this.endNode.closest('LI, UL, OL')) &&
54
+ isNOU(this.startNode.closest('.e-img-inner')) && isTableEnter &&
54
55
  isNOU(this.startNode.closest('PRE')) && isNOU(this.endNode.closest('PRE'))) {
55
56
  var shiftKey_1 = e.args.shiftKey;
56
57
  var actionBeginArgs = {
@@ -485,10 +486,10 @@ var EnterKeyAction = /** @class */ (function () {
485
486
  }
486
487
  var previousBlockNode = this.parent.formatter.editorManager.domNode.blockNodes()[0].previousSibling;
487
488
  var nextBlockNode = this.parent.formatter.editorManager.domNode.blockNodes()[0].nextSibling;
488
- if (!isNOU(previousBlockNode) && previousBlockNode.hasAttribute('style')) {
489
+ if (!isNOU(previousBlockNode) && previousBlockNode.nodeName !== '#text' && previousBlockNode.hasAttribute('style') && previousBlockNode.nodeName !== 'TABLE') {
489
490
  insertElem.setAttribute('style', previousBlockNode.getAttribute('style'));
490
491
  }
491
- if (isNOU(previousBlockNode) && !isNOU(nextBlockNode) && nextBlockNode.hasAttribute('style')) {
492
+ if (isNOU(previousBlockNode) && !isNOU(nextBlockNode) && nextBlockNode.nodeName !== '#text' && nextBlockNode.hasAttribute('style') && nextBlockNode.nodeName !== 'TABLE') {
492
493
  insertElem.setAttribute('style', nextBlockNode.getAttribute('style'));
493
494
  }
494
495
  return insertElem;
@@ -13,7 +13,7 @@ export declare class FullScreen {
13
13
  * @param {MouseEvent} event - specifies the mouse event
14
14
  * @returns {void}
15
15
  * @hidden
16
-
16
+ * @deprecated
17
17
  */
18
18
  showFullScreen(event?: MouseEvent | KeyboardEventArgs): void;
19
19
  /**
@@ -22,7 +22,7 @@ export declare class FullScreen {
22
22
  * @param {MouseEvent} event - specifies the mouse event
23
23
  * @returns {void}
24
24
  * @hidden
25
-
25
+ * @deprecated
26
26
  */
27
27
  hideFullScreen(event?: MouseEvent | KeyboardEventArgs): void;
28
28
  private toggleParentOverflow;
@@ -34,7 +34,7 @@ export declare class FullScreen {
34
34
  *
35
35
  * @returns {void}
36
36
  * @hidden
37
-
37
+ * @deprecated
38
38
  */
39
39
  destroy(): void;
40
40
  private moduleDestroy;
@@ -17,7 +17,7 @@ var FullScreen = /** @class */ (function () {
17
17
  * @param {MouseEvent} event - specifies the mouse event
18
18
  * @returns {void}
19
19
  * @hidden
20
-
20
+ * @deprecated
21
21
  */
22
22
  FullScreen.prototype.showFullScreen = function (event) {
23
23
  var _this = this;
@@ -46,7 +46,7 @@ var FullScreen = /** @class */ (function () {
46
46
  _this.parent.element.classList.add(classes.CLS_FULL_SCREEN);
47
47
  _this.toggleParentOverflow(true);
48
48
  var isExpand = _this.parent.element.querySelectorAll('.e-toolbar-extended.e-popup-open').length > 0 ? true : false;
49
- _this.parent.setContentHeight(null, isExpand);
49
+ _this.parent.setContentHeight('Maximize', isExpand);
50
50
  if (_this.parent.toolbarModule) {
51
51
  if (!_this.parent.getBaseToolbarObject().toolbarObj.items[0].properties) {
52
52
  _this.parent.getBaseToolbarObject().toolbarObj.removeItems(0);
@@ -72,7 +72,7 @@ var FullScreen = /** @class */ (function () {
72
72
  * @param {MouseEvent} event - specifies the mouse event
73
73
  * @returns {void}
74
74
  * @hidden
75
-
75
+ * @deprecated
76
76
  */
77
77
  FullScreen.prototype.hideFullScreen = function (event) {
78
78
  var _this = this;
@@ -98,7 +98,7 @@ var FullScreen = /** @class */ (function () {
98
98
  removeClass([elem[i]], ['e-rte-overflow']);
99
99
  }
100
100
  var isExpand = _this.parent.element.querySelectorAll('.e-toolbar-extended.e-popup-open').length > 0 ? true : false;
101
- _this.parent.setContentHeight(null, isExpand);
101
+ _this.parent.setContentHeight('Minimize', isExpand);
102
102
  if (_this.parent.toolbarModule) {
103
103
  if (!_this.parent.getBaseToolbarObject().toolbarObj.items[0].properties) {
104
104
  _this.parent.getBaseToolbarObject().toolbarObj.removeItems(0);
@@ -112,6 +112,7 @@ var FullScreen = /** @class */ (function () {
112
112
  _this.parent.toolbarModule.addFixedTBarClass();
113
113
  }
114
114
  }
115
+ _this.parent.refreshUI();
115
116
  _this.parent.trigger(events.actionComplete, { requestType: 'Minimize', targetItem: 'Minimize', args: event });
116
117
  }
117
118
  });
@@ -161,7 +162,7 @@ var FullScreen = /** @class */ (function () {
161
162
  *
162
163
  * @returns {void}
163
164
  * @hidden
164
-
165
+ * @deprecated
165
166
  */
166
167
  FullScreen.prototype.destroy = function () {
167
168
  if (isNOU(this.parent)) {
@@ -22,7 +22,6 @@ export declare class HtmlEditor {
22
22
  private saveSelection;
23
23
  xhtmlValidation: XhtmlValidation;
24
24
  private clickTimeout;
25
- private tooltipTargetEle;
26
25
  constructor(parent?: IRichTextEditor, serviceLocator?: ServiceLocator);
27
26
  /**
28
27
  * Destroys the Markdown.
@@ -30,14 +29,14 @@ export declare class HtmlEditor {
30
29
  * @function destroy
31
30
  * @returns {void}
32
31
  * @hidden
33
-
32
+ * @deprecated
34
33
  */
35
34
  destroy(): void;
36
35
  /**
37
36
  * @param {string} value - specifies the string value
38
37
  * @returns {void}
39
38
  * @hidden
40
-
39
+ * @deprecated
41
40
  */
42
41
  sanitizeHelper(value: string): string;
43
42
  private addEventListener;
@@ -45,6 +44,8 @@ export declare class HtmlEditor {
45
44
  private onSelectionSave;
46
45
  private onSelectionRestore;
47
46
  private isTableClassAdded;
47
+ private onHandleFontsizeChange;
48
+ private convertFontSize;
48
49
  private onKeyUp;
49
50
  private onKeyDown;
50
51
  private isOrderedList;
@@ -57,7 +58,6 @@ export declare class HtmlEditor {
57
58
  private getRangeLiNode;
58
59
  private onPaste;
59
60
  private spaceLink;
60
- private mouseOutHandler;
61
61
  private onToolbarClick;
62
62
  private renderColorPicker;
63
63
  private instantiateRenderer;
@@ -69,7 +69,7 @@ export declare class HtmlEditor {
69
69
  * @param {RichTextEditorModel} e - specifies the editor model
70
70
  * @returns {void}
71
71
  * @hidden
72
-
72
+ * @deprecated
73
73
  */
74
74
  protected onPropertyChanged(e: {
75
75
  [key: string]: RichTextEditorModel;
@@ -1,5 +1,5 @@
1
1
  import * as events from '../base/constant';
2
- import { isNullOrUndefined, closest, attributes, removeClass, addClass, Browser, detach, EventHandler } from '@syncfusion/ej2-base';
2
+ import { isNullOrUndefined, closest, attributes, removeClass, addClass, Browser, detach } from '@syncfusion/ej2-base';
3
3
  import { isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';
4
4
  import { HTMLFormatter } from '../formatter/html-formatter';
5
5
  import { RenderType } from '../base/enum';
@@ -14,6 +14,7 @@ import { getTextNodesUnder, sanitizeHelper, getDefaultValue } from '../base/util
14
14
  import { isIDevice } from '../../common/util';
15
15
  import { XhtmlValidation } from './xhtml-validation';
16
16
  import { ON_BEGIN } from './../../common/constant';
17
+ import * as CONSTANT from '../base/constant';
17
18
  /**
18
19
  * `HtmlEditor` module is used to HTML editor
19
20
  */
@@ -33,7 +34,7 @@ var HtmlEditor = /** @class */ (function () {
33
34
  * @function destroy
34
35
  * @returns {void}
35
36
  * @hidden
36
-
37
+ * @deprecated
37
38
  */
38
39
  HtmlEditor.prototype.destroy = function () {
39
40
  this.removeEventListener();
@@ -42,7 +43,7 @@ var HtmlEditor = /** @class */ (function () {
42
43
  * @param {string} value - specifies the string value
43
44
  * @returns {void}
44
45
  * @hidden
45
-
46
+ * @deprecated
46
47
  */
47
48
  HtmlEditor.prototype.sanitizeHelper = function (value) {
48
49
  value = sanitizeHelper(value, this.parent);
@@ -70,6 +71,7 @@ var HtmlEditor = /** @class */ (function () {
70
71
  this.parent.on(events.readOnlyMode, this.updateReadOnly, this);
71
72
  this.parent.on(events.paste, this.onPaste, this);
72
73
  this.parent.on(events.tableclass, this.isTableClassAdded, this);
74
+ this.parent.on(events.onHandleFontsizeChange, this.onHandleFontsizeChange, this);
73
75
  };
74
76
  HtmlEditor.prototype.updateReadOnly = function () {
75
77
  if (this.parent.readonly) {
@@ -88,7 +90,9 @@ var HtmlEditor = /** @class */ (function () {
88
90
  };
89
91
  HtmlEditor.prototype.onSelectionRestore = function (e) {
90
92
  this.parent.isBlur = false;
91
- this.contentRenderer.getEditPanel().focus();
93
+ if (isNOU(this.saveSelection) || isNOU(closest(this.saveSelection.range.startContainer.parentElement, ".e-img-caption")) ? true : !(closest(this.saveSelection.range.startContainer.parentElement, ".e-img-caption").getAttribute("contenteditable") == "false")) {
94
+ this.contentRenderer.getEditPanel().focus();
95
+ }
92
96
  if (isNullOrUndefined(e.items) || e.items) {
93
97
  this.saveSelection.restore();
94
98
  }
@@ -96,11 +100,91 @@ var HtmlEditor = /** @class */ (function () {
96
100
  HtmlEditor.prototype.isTableClassAdded = function () {
97
101
  var tableElement = this.parent.inputElement.querySelectorAll('table');
98
102
  for (var i = 0; i < tableElement.length; i++) {
99
- if (!tableElement[i].classList.contains('e-rte-table')) {
103
+ if (!tableElement[i].classList.contains('e-rte-table') && !tableElement[i].classList.contains('e-rte-paste-table')) {
100
104
  tableElement[i].classList.add('e-rte-table');
101
105
  }
102
106
  }
103
107
  };
108
+ HtmlEditor.prototype.onHandleFontsizeChange = function (e) {
109
+ var keyboardArgs = e.args;
110
+ var args = { name: 'dropDownSelect' };
111
+ args.item = {
112
+ command: 'Font',
113
+ subCommand: 'FontSize'
114
+ };
115
+ var items = this.parent.fontSize.items;
116
+ var activeElem;
117
+ if (this.parent.toolbarModule && this.parent.toolbarModule.dropDownModule &&
118
+ this.parent.toolbarModule.dropDownModule.fontSizeDropDown && !isNOU(this.parent.toolbarModule.dropDownModule.fontSizeDropDown.activeElem[0].textContent) && this.parent.toolbarModule.dropDownModule.fontSizeDropDown.activeElem[0].textContent !== '') {
119
+ activeElem = this.parent.toolbarModule.dropDownModule.fontSizeDropDown.activeElem[0].textContent;
120
+ }
121
+ else {
122
+ var fontSizeValue = void 0;
123
+ var selection = this.parent.contentModule.getDocument().getSelection();
124
+ if (selection && selection.focusNode && selection.focusNode.parentElement) {
125
+ fontSizeValue = document.defaultView.getComputedStyle(selection.focusNode.parentElement, null).getPropertyValue('font-size');
126
+ }
127
+ else {
128
+ fontSizeValue = this.parent.fontSize.width;
129
+ }
130
+ fontSizeValue = isNOU(fontSizeValue) ? this.parent.fontSize.width : fontSizeValue;
131
+ var actualTxtFontValues = fontSizeValue.match(/^([\d.]+)(\D+)$/);
132
+ var size_1 = parseInt(actualTxtFontValues[1], 10);
133
+ var unit = actualTxtFontValues[2];
134
+ var defaultFontValues = items[0].value.match(/^([\d.]+)(\D+)$/);
135
+ if (defaultFontValues[2] === unit) {
136
+ var index = items.findIndex(function (_a) {
137
+ var value = _a.value;
138
+ return parseInt(value, 10) >= size_1;
139
+ });
140
+ activeElem = items[index].text;
141
+ }
142
+ else {
143
+ var convertedSize_1 = this.convertFontSize(size_1, unit, defaultFontValues[2]);
144
+ var index = items.findIndex(function (_a) {
145
+ var value = _a.value;
146
+ return parseInt(value, 10) >= convertedSize_1;
147
+ });
148
+ activeElem = items[index].text;
149
+ }
150
+ }
151
+ var fontIndex = items.findIndex(function (size) { return size.text === activeElem; });
152
+ if (keyboardArgs.action === 'increase-fontsize' && fontIndex !== -1) {
153
+ if (fontIndex >= items.length - 1) {
154
+ var fontValues = items[fontIndex].value.match(/^([\d.]+)(\D+)$/);
155
+ if (fontValues) {
156
+ var size = parseInt(fontValues[1], 10);
157
+ var unit = fontValues[2];
158
+ var roundedSize = size % 10 === 0 ? Math.ceil((size + 1) / 10) * 10 : Math.ceil(size / 10) * 10;
159
+ args.item.value = roundedSize.toLocaleString() + unit;
160
+ args.item.text = roundedSize.toLocaleString() + ' ' + unit;
161
+ }
162
+ this.parent.fontSize.items.push(args.item);
163
+ }
164
+ else {
165
+ args.item.value = items[fontIndex + 1].value;
166
+ args.item.text = items[fontIndex + 1].text;
167
+ }
168
+ }
169
+ else if (keyboardArgs.action === 'decrease-fontsize' && fontIndex !== -1 && fontIndex > 0) {
170
+ args.item.value = items[fontIndex - 1].value;
171
+ args.item.text = items[fontIndex - 1].text;
172
+ }
173
+ else {
174
+ if (fontIndex >= 0 && fontIndex < items.length && items[fontIndex]) {
175
+ args.item.value = items[fontIndex].value;
176
+ args.item.text = items[fontIndex].text;
177
+ }
178
+ }
179
+ this.parent.formatter.process(this.parent, args, keyboardArgs);
180
+ };
181
+ HtmlEditor.prototype.convertFontSize = function (value, originalUnit, targetUnit) {
182
+ if (CONSTANT.supportedUnits.indexOf(originalUnit) !== -1 || CONSTANT.supportedUnits.indexOf(targetUnit) !== -1) {
183
+ originalUnit = 'px';
184
+ }
185
+ var convertedValue = value * CONSTANT.conversionFactors[originalUnit][targetUnit];
186
+ return convertedValue;
187
+ };
104
188
  HtmlEditor.prototype.onKeyUp = function (e) {
105
189
  var args = e.args;
106
190
  var restrictKeys = [8, 9, 13, 16, 17, 18, 20, 27, 37, 38, 39, 40, 44, 45, 46, 91,
@@ -108,9 +192,12 @@ var HtmlEditor = /** @class */ (function () {
108
192
  var range = this.parent.getRange();
109
193
  // eslint-disable-next-line
110
194
  var regEx = new RegExp(String.fromCharCode(8203), 'g');
195
+ var isEmptyNode = range.startContainer === range.endContainer && range.startOffset === range.endOffset &&
196
+ range.startOffset === 1 && range.startContainer.textContent.length === 1 && range.startContainer.textContent.charCodeAt(0) == 8203 &&
197
+ range.startContainer.textContent.replace(regEx, '').length === 0;
111
198
  var pointer;
112
199
  var isRootParent = false;
113
- if (restrictKeys.indexOf(args.keyCode) < 0 && !args.shiftKey && !args.ctrlKey && !args.altKey) {
200
+ if (restrictKeys.indexOf(args.keyCode) < 0 && !args.shiftKey && !args.ctrlKey && !args.altKey && !isEmptyNode) {
114
201
  pointer = range.startOffset;
115
202
  // eslint-disable-next-line @typescript-eslint/no-unused-expressions
116
203
  range.startContainer.nodeName === '#text' ? range.startContainer.parentElement !== this.parent.inputElement ? range.startContainer.parentElement.classList.add('currentStartMark')
@@ -222,7 +309,7 @@ var HtmlEditor = /** @class */ (function () {
222
309
  e.args.keyCode === 13) {
223
310
  this.spaceLink(e.args);
224
311
  if (this.parent.editorMode === 'HTML' && !this.parent.readonly) {
225
- var currentLength = this.parent.getText().trim().replace(/(\r\n|\n|\r)/gm, '').replace(/\u200B/g, '').length;
312
+ var currentLength = this.parent.getText().trim().replace(/(\r\n|\n|\r|\t)/gm, '').replace(/\u200B/g, '').length;
226
313
  var selectionLength = this.parent.getSelection().length;
227
314
  var totalLength = (currentLength - selectionLength) + 1;
228
315
  if (!(this.parent.maxLength === -1 || totalLength <= this.parent.maxLength) &&
@@ -233,8 +320,13 @@ var HtmlEditor = /** @class */ (function () {
233
320
  else {
234
321
  this.parent.notify(events.enterHandler, { args: e.args });
235
322
  var newRange = this.parent.getRange();
236
- if (!isNOU(newRange.startContainer) && newRange.startContainer === this.parent.inputElement.lastChild && newRange.startContainer.nodeName !== '#text') {
237
- newRange.startContainer.scrollIntoView({ block: "end", inline: "nearest" });
323
+ if (!isNullOrUndefined(newRange.startContainer) && this.parent.height !== 'auto' && newRange.startContainer.nodeName !== '#text'
324
+ && !this.parent.iframeSettings.enable && newRange.startContainer.getBoundingClientRect().bottom > this.parent.element.getBoundingClientRect().bottom) {
325
+ this.parent.element.querySelector('.e-rte-content').scrollTop += newRange.startContainer.getBoundingClientRect().bottom - this.parent.element.getBoundingClientRect().bottom;
326
+ }
327
+ else if (!isNullOrUndefined(newRange.startContainer) && this.parent.height === 'auto' && newRange.startContainer.nodeName !== '#text'
328
+ && !this.parent.iframeSettings.enable && window.innerHeight < newRange.startContainer.getBoundingClientRect().top) {
329
+ newRange.startContainer.scrollIntoView({ block: 'end', inline: 'nearest' });
238
330
  }
239
331
  }
240
332
  }
@@ -316,11 +408,13 @@ var HtmlEditor = /** @class */ (function () {
316
408
  currentRange.startContainer.previousSibling.nodeName === 'SPAN') {
317
409
  isPreviousNotContentEditable = currentRange.startContainer.previousSibling.contentEditable === 'false' ? false : true;
318
410
  }
411
+ var checkNode = currentRange.startContainer.nodeName === '#text' ? currentRange.startContainer.parentElement : currentRange.startContainer;
412
+ var isSelectedPositionNotStart = closest(currentRange.startContainer.nodeName === '#text' ? currentRange.startContainer.parentElement : currentRange.startContainer, 'li') ?
413
+ checkNode.nodeName !== 'li' && isNOU(checkNode.previousSibling) : true;
319
414
  if (e.args.code === 'Backspace' && e.args.keyCode === 8 && currentRange.startOffset === 0 &&
320
415
  currentRange.endOffset === 0 && this.parent.getSelection().length === 0 && currentRange.startContainer.textContent.length > 0 &&
321
416
  currentRange.startContainer.parentElement.tagName !== 'TD' && currentRange.startContainer.parentElement.tagName !== 'TH' &&
322
- isPreviousNotContentEditable) {
323
- var checkNode = currentRange.startContainer.nodeName === '#text' ? currentRange.startContainer.parentElement : currentRange.startContainer;
417
+ isPreviousNotContentEditable && isSelectedPositionNotStart) {
324
418
  if ((!this.parent.formatter.editorManager.domNode.isBlockNode(checkNode) &&
325
419
  !isNOU(checkNode.previousSibling) && checkNode.previousSibling.nodeName === 'BR') ||
326
420
  (!isNOU(currentRange.startContainer.previousSibling) && currentRange.startContainer.previousSibling.nodeName === 'BR')) {
@@ -331,8 +425,9 @@ var HtmlEditor = /** @class */ (function () {
331
425
  var liElement = this.getRangeLiNode(currentRange.startContainer);
332
426
  if (liElement.previousElementSibling && liElement.previousElementSibling.childElementCount > 0) {
333
427
  this.oldRangeElement = liElement.previousElementSibling.lastElementChild.nodeName === 'BR' ?
334
- liElement.previousElementSibling : liElement.previousElementSibling.lastElementChild;
335
- if (!isNullOrUndefined(liElement.lastElementChild) && liElement.lastElementChild.nodeName !== 'BR') {
428
+ liElement.previousElementSibling : liElement.previousElementSibling.lastChild;
429
+ if (!isNOU(liElement.lastElementChild) && liElement.lastElementChild.nodeName !== 'BR' &&
430
+ isNOU(liElement.lastElementChild.previousSibling) && liElement.lastChild.nodeName !== "#text") {
336
431
  this.rangeElement = liElement.lastElementChild;
337
432
  isLiElement = true;
338
433
  }
@@ -342,13 +437,13 @@ var HtmlEditor = /** @class */ (function () {
342
437
  }
343
438
  }
344
439
  else if (this.rangeElement === this.parent.inputElement || this.rangeElement.tagName === 'TABLE' ||
345
- (!isNullOrUndefined(this.rangeElement.previousElementSibling) && this.rangeElement.previousElementSibling.tagName === 'TABLE')) {
440
+ (!isNOU(this.rangeElement.previousElementSibling) && this.rangeElement.previousElementSibling.tagName === 'TABLE')) {
346
441
  return;
347
442
  }
348
443
  else {
349
444
  this.oldRangeElement = this.rangeElement.previousElementSibling;
350
445
  }
351
- if (isNullOrUndefined(this.oldRangeElement)) {
446
+ if (isNOU(this.oldRangeElement)) {
352
447
  return;
353
448
  }
354
449
  else {
@@ -357,7 +452,7 @@ var HtmlEditor = /** @class */ (function () {
357
452
  ? this.oldRangeElement.lastElementChild.lastElementChild :
358
453
  this.oldRangeElement.lastElementChild;
359
454
  }
360
- var lastNode = this.oldRangeElement.lastChild;
455
+ var lastNode = this.oldRangeElement.lastChild ? this.oldRangeElement.lastChild : this.oldRangeElement;
361
456
  while (lastNode.nodeType !== 3 && lastNode.nodeName !== '#text' &&
362
457
  lastNode.nodeName !== 'BR') {
363
458
  lastNode = lastNode.lastChild;
@@ -365,12 +460,17 @@ var HtmlEditor = /** @class */ (function () {
365
460
  this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(),
366
461
  // eslint-disable-next-line
367
462
  lastNode, lastNode.textContent.length);
368
- if (this.oldRangeElement.querySelectorAll('BR').length === 1) {
463
+ if (this.oldRangeElement.nodeName !== '#text' && this.oldRangeElement.querySelectorAll('BR').length === 1) {
369
464
  detach(this.oldRangeElement.querySelector('BR'));
370
465
  }
371
- if (!isNullOrUndefined(this.rangeElement) && this.oldRangeElement !== this.rangeElement) {
466
+ if (!isNOU(this.rangeElement) && this.oldRangeElement !== this.rangeElement) {
372
467
  while (this.rangeElement.firstChild) {
373
- this.oldRangeElement.appendChild(this.rangeElement.childNodes[0]);
468
+ if (this.oldRangeElement.nodeName === '#text') {
469
+ this.oldRangeElement.parentElement.appendChild(this.rangeElement.childNodes[0]);
470
+ }
471
+ else {
472
+ this.oldRangeElement.appendChild(this.rangeElement.childNodes[0]);
473
+ }
374
474
  }
375
475
  // eslint-disable-next-line
376
476
  !isLiElement ? detach(this.rangeElement) : detach(this.rangeElement.parentElement);
@@ -384,7 +484,7 @@ var HtmlEditor = /** @class */ (function () {
384
484
  var liElement;
385
485
  var rootElement;
386
486
  if (e.args.code === 'Delete' && e.args.keyCode === 46 &&
387
- 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' &&
487
+ 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' &&
388
488
  currentRange.startContainer.parentElement.tagName !== 'TH') {
389
489
  this.deleteRangeElement = rootElement = this.getRootBlockNode(currentRange.startContainer);
390
490
  if (this.deleteRangeElement.tagName === 'OL' || this.deleteRangeElement.tagName === 'UL') {
@@ -407,7 +507,11 @@ var HtmlEditor = /** @class */ (function () {
407
507
  (!isNullOrUndefined(this.deleteRangeElement.nextElementSibling) && this.deleteRangeElement.nextElementSibling.tagName === 'TABLE'))) {
408
508
  return;
409
509
  }
410
- if (this.getCaretIndex(currentRange, this.deleteRangeElement) === this.deleteRangeElement.textContent.length) {
510
+ var isImgWithEmptyBlockNode = false;
511
+ if (this.deleteRangeElement.querySelectorAll('img').length > 0 && this.deleteRangeElement.textContent.trim() === '') {
512
+ isImgWithEmptyBlockNode = true;
513
+ }
514
+ if (this.getCaretIndex(currentRange, this.deleteRangeElement) === this.deleteRangeElement.textContent.length && !isImgWithEmptyBlockNode) {
411
515
  if (!isNullOrUndefined(liElement)) {
412
516
  if (isLiElement || !isNullOrUndefined(liElement.nextElementSibling)) {
413
517
  this.deleteOldRangeElement = this.getRangeElement(liElement.nextElementSibling);
@@ -554,7 +658,7 @@ var HtmlEditor = /** @class */ (function () {
554
658
  for (var j = 0; j < splitTextContent.length; j++) {
555
659
  if (splitTextContent[j].match(httpRegex) || splitTextContent[j].match(wwwRegex)) {
556
660
  resultSplitContent += '<a class="e-rte-anchor" href="' + splitTextContent[j] +
557
- '" title="' + splitTextContent[j] + '"target="_blank">' + splitTextContent[j] + ' </a>';
661
+ '" title="' + splitTextContent[j] + '" target="_blank"' + ' aria-label="' + this.parent.serviceLocator.getService('rteLocale').getConstant("linkAriaLabel") + '">' + splitTextContent[j] + ' </a>';
558
662
  }
559
663
  else {
560
664
  resultSplitContent += splitTextContent[j] + ' ';
@@ -599,19 +703,6 @@ var HtmlEditor = /** @class */ (function () {
599
703
  }, e, value);
600
704
  }
601
705
  };
602
- HtmlEditor.prototype.mouseOutHandler = function () {
603
- if (!isNOU(this.tooltipTargetEle)) {
604
- this.tooltipTargetEle.setAttribute('title', this.tooltipTargetEle.getAttribute('data-title'));
605
- }
606
- else {
607
- var currentDocument = this.parent.iframeSettings.enable ? this.parent.contentModule.getPanel().ownerDocument :
608
- this.parent.contentModule.getDocument();
609
- this.tooltipTargetEle = currentDocument.querySelector('[data-title]');
610
- this.tooltipTargetEle.setAttribute('title', this.tooltipTargetEle.getAttribute('data-title'));
611
- }
612
- this.tooltipTargetEle.removeAttribute('data-title');
613
- EventHandler.remove(this.tooltipTargetEle, 'mouseout', this.mouseOutHandler);
614
- };
615
706
  HtmlEditor.prototype.onToolbarClick = function (args) {
616
707
  var _this = this;
617
708
  var save;
@@ -619,15 +710,8 @@ var HtmlEditor = /** @class */ (function () {
619
710
  var selectParentEle;
620
711
  var item = args.item;
621
712
  var closestElement = closest(args.originalEvent.target, '.e-rte-quick-popup');
622
- var currentDocument = this.parent.iframeSettings.enable ? this.parent.contentModule.getPanel().ownerDocument :
623
- this.parent.contentModule.getDocument();
624
- this.tooltipTargetEle = closest(args.originalEvent.target, '[data-tooltip-id]');
625
- if (!isNOU(this.tooltipTargetEle) && this.parent.showTooltip && !isNOU(currentDocument.querySelector('.e-tooltip-wrap'))) {
626
- this.parent.notify(events.destroyTooltip, { args: event });
627
- this.tooltipTargetEle.setAttribute('data-title', this.tooltipTargetEle.getAttribute('title'));
628
- this.tooltipTargetEle.removeAttribute('title');
629
- EventHandler.add(this.tooltipTargetEle, 'mouseout', this.mouseOutHandler, this);
630
- }
713
+ var target = args.originalEvent.target;
714
+ this.parent.notify(events.closeTooltip, { target: target });
631
715
  if (item.command !== 'FormatPainter') {
632
716
  if (closestElement && !closestElement.classList.contains('e-rte-inline-popup') && !closestElement.classList.contains('e-rte-text-popup')) {
633
717
  if (!(item.subCommand === 'SourceCode' || item.subCommand === 'Preview' ||
@@ -827,7 +911,7 @@ var HtmlEditor = /** @class */ (function () {
827
911
  * @param {RichTextEditorModel} e - specifies the editor model
828
912
  * @returns {void}
829
913
  * @hidden
830
-
914
+ * @deprecated
831
915
  */
832
916
  HtmlEditor.prototype.onPropertyChanged = function (e) {
833
917
  // On property code change here