@syncfusion/ej2-richtexteditor 25.2.3 → 25.2.4-621927

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 (279) hide show
  1. package/.eslintrc.json +259 -259
  2. package/CHANGELOG.md +2067 -2011
  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 +575 -287
  7. package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
  8. package/dist/es6/ej2-richtexteditor.es5.js +675 -383
  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 +84 -84
  14. package/src/common/interface.d.ts +22 -8
  15. package/src/common/util.js +4 -1
  16. package/src/editor-manager/base/classes.d.ts +1 -1
  17. package/src/editor-manager/base/classes.js +1 -1
  18. package/src/editor-manager/base/editor-manager.d.ts +3 -3
  19. package/src/editor-manager/base/editor-manager.js +8 -6
  20. package/src/editor-manager/base/enum.d.ts +2 -2
  21. package/src/editor-manager/base/interface.d.ts +9 -9
  22. package/src/editor-manager/base/types.d.ts +1 -1
  23. package/src/editor-manager/plugin/alignments.d.ts +2 -2
  24. package/src/editor-manager/plugin/alignments.js +5 -2
  25. package/src/editor-manager/plugin/audio.d.ts +3 -3
  26. package/src/editor-manager/plugin/audio.js +3 -3
  27. package/src/editor-manager/plugin/clearformat-exec.d.ts +2 -2
  28. package/src/editor-manager/plugin/clearformat-exec.js +2 -2
  29. package/src/editor-manager/plugin/clearformat.d.ts +1 -1
  30. package/src/editor-manager/plugin/clearformat.js +1 -1
  31. package/src/editor-manager/plugin/dom-node.d.ts +54 -34
  32. package/src/editor-manager/plugin/dom-node.js +139 -36
  33. package/src/editor-manager/plugin/format-painter-actions.d.ts +1 -1
  34. package/src/editor-manager/plugin/format-painter-actions.js +1 -1
  35. package/src/editor-manager/plugin/formats.d.ts +2 -2
  36. package/src/editor-manager/plugin/formats.js +3 -3
  37. package/src/editor-manager/plugin/image.d.ts +3 -3
  38. package/src/editor-manager/plugin/image.js +3 -3
  39. package/src/editor-manager/plugin/indents.d.ts +2 -2
  40. package/src/editor-manager/plugin/indents.js +5 -2
  41. package/src/editor-manager/plugin/insert-methods.d.ts +4 -4
  42. package/src/editor-manager/plugin/insert-methods.js +4 -4
  43. package/src/editor-manager/plugin/insert-text.d.ts +2 -2
  44. package/src/editor-manager/plugin/insert-text.js +2 -2
  45. package/src/editor-manager/plugin/inserthtml-exec.d.ts +2 -2
  46. package/src/editor-manager/plugin/inserthtml-exec.js +2 -2
  47. package/src/editor-manager/plugin/inserthtml.d.ts +2 -2
  48. package/src/editor-manager/plugin/inserthtml.js +5 -2
  49. package/src/editor-manager/plugin/isformatted.d.ts +8 -8
  50. package/src/editor-manager/plugin/isformatted.js +8 -8
  51. package/src/editor-manager/plugin/link.d.ts +2 -2
  52. package/src/editor-manager/plugin/link.js +2 -2
  53. package/src/editor-manager/plugin/lists.d.ts +2 -3
  54. package/src/editor-manager/plugin/lists.js +57 -80
  55. package/src/editor-manager/plugin/ms-word-clean-up.d.ts +1 -1
  56. package/src/editor-manager/plugin/ms-word-clean-up.js +2 -2
  57. package/src/editor-manager/plugin/nodecutter.d.ts +6 -6
  58. package/src/editor-manager/plugin/nodecutter.js +6 -6
  59. package/src/editor-manager/plugin/selection-commands.d.ts +1 -1
  60. package/src/editor-manager/plugin/selection-commands.js +1 -1
  61. package/src/editor-manager/plugin/selection-exec.d.ts +2 -2
  62. package/src/editor-manager/plugin/selection-exec.js +2 -2
  63. package/src/editor-manager/plugin/table.d.ts +2 -2
  64. package/src/editor-manager/plugin/table.js +2 -2
  65. package/src/editor-manager/plugin/toolbar-status.d.ts +2 -2
  66. package/src/editor-manager/plugin/toolbar-status.js +2 -2
  67. package/src/editor-manager/plugin/undo.d.ts +6 -6
  68. package/src/editor-manager/plugin/undo.js +6 -6
  69. package/src/editor-manager/plugin/video.d.ts +3 -3
  70. package/src/editor-manager/plugin/video.js +3 -3
  71. package/src/markdown-parser/base/interface.d.ts +10 -10
  72. package/src/markdown-parser/base/markdown-parser.d.ts +3 -3
  73. package/src/markdown-parser/base/markdown-parser.js +3 -3
  74. package/src/markdown-parser/base/types.d.ts +1 -1
  75. package/src/markdown-parser/plugin/clearformat.d.ts +2 -2
  76. package/src/markdown-parser/plugin/clearformat.js +2 -2
  77. package/src/markdown-parser/plugin/formats.d.ts +2 -2
  78. package/src/markdown-parser/plugin/formats.js +2 -2
  79. package/src/markdown-parser/plugin/insert-text.d.ts +2 -2
  80. package/src/markdown-parser/plugin/insert-text.js +2 -2
  81. package/src/markdown-parser/plugin/link.d.ts +2 -2
  82. package/src/markdown-parser/plugin/link.js +2 -2
  83. package/src/markdown-parser/plugin/markdown-selection.d.ts +14 -14
  84. package/src/markdown-parser/plugin/markdown-selection.js +14 -14
  85. package/src/markdown-parser/plugin/md-selection-formats.d.ts +1 -1
  86. package/src/markdown-parser/plugin/md-selection-formats.js +1 -1
  87. package/src/markdown-parser/plugin/table.d.ts +3 -3
  88. package/src/markdown-parser/plugin/table.js +3 -3
  89. package/src/markdown-parser/plugin/undo.d.ts +6 -6
  90. package/src/markdown-parser/plugin/undo.js +6 -6
  91. package/src/rich-text-editor/actions/base-quick-toolbar.d.ts +9 -9
  92. package/src/rich-text-editor/actions/base-quick-toolbar.js +9 -9
  93. package/src/rich-text-editor/actions/base-toolbar.d.ts +3 -3
  94. package/src/rich-text-editor/actions/base-toolbar.js +3 -3
  95. package/src/rich-text-editor/actions/color-picker.d.ts +2 -2
  96. package/src/rich-text-editor/actions/color-picker.js +2 -2
  97. package/src/rich-text-editor/actions/count.d.ts +3 -3
  98. package/src/rich-text-editor/actions/count.js +3 -3
  99. package/src/rich-text-editor/actions/dropdown-buttons.d.ts +2 -2
  100. package/src/rich-text-editor/actions/dropdown-buttons.js +2 -2
  101. package/src/rich-text-editor/actions/emoji-picker.d.ts +1 -1
  102. package/src/rich-text-editor/actions/emoji-picker.js +1 -1
  103. package/src/rich-text-editor/actions/enter-key.d.ts +5 -0
  104. package/src/rich-text-editor/actions/enter-key.js +98 -13
  105. package/src/rich-text-editor/actions/full-screen.d.ts +3 -3
  106. package/src/rich-text-editor/actions/full-screen.js +3 -9
  107. package/src/rich-text-editor/actions/html-editor.d.ts +4 -3
  108. package/src/rich-text-editor/actions/html-editor.js +66 -13
  109. package/src/rich-text-editor/actions/keyboard-model.d.ts +16 -16
  110. package/src/rich-text-editor/actions/keyboard.d.ts +1 -1
  111. package/src/rich-text-editor/actions/keyboard.js +20 -20
  112. package/src/rich-text-editor/actions/markdown-editor.d.ts +2 -2
  113. package/src/rich-text-editor/actions/markdown-editor.js +2 -2
  114. package/src/rich-text-editor/actions/paste-clean-up.d.ts +2 -1
  115. package/src/rich-text-editor/actions/paste-clean-up.js +44 -7
  116. package/src/rich-text-editor/actions/quick-toolbar.d.ts +9 -9
  117. package/src/rich-text-editor/actions/quick-toolbar.js +9 -9
  118. package/src/rich-text-editor/actions/toolbar.d.ts +13 -13
  119. package/src/rich-text-editor/actions/toolbar.js +13 -13
  120. package/src/rich-text-editor/actions/xhtml-validation.d.ts +1 -1
  121. package/src/rich-text-editor/actions/xhtml-validation.js +1 -1
  122. package/src/rich-text-editor/base/classes.d.ts +121 -121
  123. package/src/rich-text-editor/base/classes.js +121 -121
  124. package/src/rich-text-editor/base/constant.d.ts +158 -158
  125. package/src/rich-text-editor/base/constant.js +158 -158
  126. package/src/rich-text-editor/base/enum.d.ts +1 -1
  127. package/src/rich-text-editor/base/enum.js +1 -1
  128. package/src/rich-text-editor/base/interface.d.ts +50 -50
  129. package/src/rich-text-editor/base/interface.js +1 -1
  130. package/src/rich-text-editor/base/rich-text-editor-model.d.ts +891 -891
  131. package/src/rich-text-editor/base/rich-text-editor.d.ts +63 -61
  132. package/src/rich-text-editor/base/rich-text-editor.js +82 -67
  133. package/src/rich-text-editor/base/util.d.ts +1 -1
  134. package/src/rich-text-editor/base/util.js +1 -1
  135. package/src/rich-text-editor/formatter/formatter.d.ts +8 -8
  136. package/src/rich-text-editor/formatter/formatter.js +8 -8
  137. package/src/rich-text-editor/formatter/html-formatter.d.ts +2 -2
  138. package/src/rich-text-editor/formatter/html-formatter.js +15 -15
  139. package/src/rich-text-editor/formatter/markdown-formatter.d.ts +2 -2
  140. package/src/rich-text-editor/formatter/markdown-formatter.js +15 -15
  141. package/src/rich-text-editor/models/iframe-settings-model.d.ts +26 -26
  142. package/src/rich-text-editor/models/iframe-settings.js +19 -19
  143. package/src/rich-text-editor/models/inline-mode-model.d.ts +11 -11
  144. package/src/rich-text-editor/models/inline-mode.js +19 -19
  145. package/src/rich-text-editor/models/toolbar-settings-model.d.ts +760 -760
  146. package/src/rich-text-editor/models/toolbar-settings.js +19 -19
  147. package/src/rich-text-editor/renderer/audio-module.d.ts +1 -1
  148. package/src/rich-text-editor/renderer/audio-module.js +7 -2
  149. package/src/rich-text-editor/renderer/content-renderer.d.ts +6 -6
  150. package/src/rich-text-editor/renderer/content-renderer.js +6 -6
  151. package/src/rich-text-editor/renderer/dialog-renderer.d.ts +2 -2
  152. package/src/rich-text-editor/renderer/dialog-renderer.js +2 -2
  153. package/src/rich-text-editor/renderer/iframe-content-renderer.d.ts +4 -4
  154. package/src/rich-text-editor/renderer/iframe-content-renderer.js +17 -17
  155. package/src/rich-text-editor/renderer/image-module.d.ts +1 -1
  156. package/src/rich-text-editor/renderer/image-module.js +10 -5
  157. package/src/rich-text-editor/renderer/link-module.d.ts +1 -1
  158. package/src/rich-text-editor/renderer/link-module.js +1 -1
  159. package/src/rich-text-editor/renderer/markdown-renderer.d.ts +6 -6
  160. package/src/rich-text-editor/renderer/markdown-renderer.js +6 -6
  161. package/src/rich-text-editor/renderer/popup-renderer.d.ts +5 -5
  162. package/src/rich-text-editor/renderer/popup-renderer.js +5 -5
  163. package/src/rich-text-editor/renderer/render.d.ts +2 -2
  164. package/src/rich-text-editor/renderer/render.js +2 -2
  165. package/src/rich-text-editor/renderer/table-module.d.ts +1 -1
  166. package/src/rich-text-editor/renderer/table-module.js +3 -2
  167. package/src/rich-text-editor/renderer/toolbar-renderer.d.ts +9 -9
  168. package/src/rich-text-editor/renderer/toolbar-renderer.js +16 -18
  169. package/src/rich-text-editor/renderer/video-module.d.ts +1 -1
  170. package/src/rich-text-editor/renderer/video-module.js +7 -2
  171. package/src/rich-text-editor/renderer/view-source.d.ts +6 -6
  172. package/src/rich-text-editor/renderer/view-source.js +6 -6
  173. package/src/rich-text-editor/services/renderer-factory.d.ts +3 -3
  174. package/src/rich-text-editor/services/renderer-factory.js +3 -3
  175. package/src/rich-text-editor/services/service-locator.d.ts +3 -3
  176. package/src/rich-text-editor/services/service-locator.js +3 -3
  177. package/src/selection/selection.d.ts +22 -22
  178. package/src/selection/selection.js +22 -22
  179. package/styles/_all.scss +1 -1
  180. package/styles/bootstrap-dark.css +702 -795
  181. package/styles/bootstrap-dark.scss +4 -1
  182. package/styles/bootstrap.css +686 -795
  183. package/styles/bootstrap.scss +4 -1
  184. package/styles/bootstrap4.css +689 -797
  185. package/styles/bootstrap4.scss +4 -1
  186. package/styles/bootstrap5-dark.css +713 -834
  187. package/styles/bootstrap5-dark.scss +4 -1
  188. package/styles/bootstrap5.css +712 -833
  189. package/styles/bootstrap5.scss +4 -1
  190. package/styles/fabric-dark.css +687 -791
  191. package/styles/fabric-dark.scss +4 -1
  192. package/styles/fabric.css +683 -791
  193. package/styles/fabric.scss +4 -1
  194. package/styles/fluent-dark.css +690 -814
  195. package/styles/fluent-dark.scss +4 -1
  196. package/styles/fluent.css +689 -813
  197. package/styles/fluent.scss +4 -1
  198. package/styles/fluent2.css +4219 -0
  199. package/styles/fluent2.scss +4 -0
  200. package/styles/highcontrast-light.css +658 -789
  201. package/styles/highcontrast-light.scss +4 -1
  202. package/styles/highcontrast.css +664 -787
  203. package/styles/highcontrast.scss +4 -1
  204. package/styles/material-dark.css +679 -792
  205. package/styles/material-dark.scss +4 -1
  206. package/styles/material.css +676 -794
  207. package/styles/material.scss +4 -1
  208. package/styles/material3-dark.css +715 -852
  209. package/styles/material3-dark.scss +4 -1
  210. package/styles/material3.css +715 -852
  211. package/styles/material3.scss +4 -1
  212. package/styles/rich-text-editor/_all.scss +2 -2
  213. package/styles/rich-text-editor/_bds-definition.scss +288 -285
  214. package/styles/rich-text-editor/_bigger.scss +610 -0
  215. package/styles/rich-text-editor/_bootstrap-dark-definition.scss +289 -287
  216. package/styles/rich-text-editor/_bootstrap-definition.scss +347 -343
  217. package/styles/rich-text-editor/_bootstrap4-definition.scss +474 -470
  218. package/styles/rich-text-editor/_bootstrap5-definition.scss +276 -272
  219. package/styles/rich-text-editor/_bootstrap5.3-definition.scss +276 -0
  220. package/styles/rich-text-editor/_fabric-dark-definition.scss +273 -269
  221. package/styles/rich-text-editor/_fabric-definition.scss +271 -267
  222. package/styles/rich-text-editor/_fluent-definition.scss +277 -273
  223. package/styles/rich-text-editor/_fluent2-definition.scss +285 -0
  224. package/styles/rich-text-editor/_fusionnew-definition.scss +274 -271
  225. package/styles/rich-text-editor/_highcontrast-definition.scss +272 -267
  226. package/styles/rich-text-editor/_highcontrast-light-definition.scss +271 -267
  227. package/styles/rich-text-editor/_layout.scss +2148 -2269
  228. package/styles/rich-text-editor/_material-dark-definition.scss +276 -272
  229. package/styles/rich-text-editor/_material-definition.scss +274 -270
  230. package/styles/rich-text-editor/_material3-definition.scss +276 -272
  231. package/styles/rich-text-editor/_tailwind-definition.scss +271 -267
  232. package/styles/rich-text-editor/_theme.scss +802 -927
  233. package/styles/rich-text-editor/bootstrap-dark.css +702 -795
  234. package/styles/rich-text-editor/bootstrap.css +686 -795
  235. package/styles/rich-text-editor/bootstrap4.css +689 -797
  236. package/styles/rich-text-editor/bootstrap5-dark.css +713 -834
  237. package/styles/rich-text-editor/bootstrap5.css +712 -833
  238. package/styles/rich-text-editor/fabric-dark.css +687 -791
  239. package/styles/rich-text-editor/fabric.css +683 -791
  240. package/styles/rich-text-editor/fluent-dark.css +690 -814
  241. package/styles/rich-text-editor/fluent.css +689 -813
  242. package/styles/rich-text-editor/fluent2.css +4219 -0
  243. package/styles/rich-text-editor/fluent2.scss +4 -0
  244. package/styles/rich-text-editor/highcontrast-light.css +658 -789
  245. package/styles/rich-text-editor/highcontrast.css +664 -787
  246. package/styles/rich-text-editor/icons/_bds.scss +372 -351
  247. package/styles/rich-text-editor/icons/_bootstrap-dark.scss +373 -352
  248. package/styles/rich-text-editor/icons/_bootstrap.scss +373 -352
  249. package/styles/rich-text-editor/icons/_bootstrap4.scss +373 -352
  250. package/styles/rich-text-editor/icons/_bootstrap5.3.scss +372 -0
  251. package/styles/rich-text-editor/icons/_bootstrap5.scss +372 -351
  252. package/styles/rich-text-editor/icons/_fabric-dark.scss +373 -352
  253. package/styles/rich-text-editor/icons/_fabric.scss +373 -352
  254. package/styles/rich-text-editor/icons/_fluent.scss +372 -351
  255. package/styles/rich-text-editor/icons/_fluent2.scss +369 -0
  256. package/styles/rich-text-editor/icons/_fusionnew.scss +357 -348
  257. package/styles/rich-text-editor/icons/_highcontrast-light.scss +361 -352
  258. package/styles/rich-text-editor/icons/_highcontrast.scss +361 -352
  259. package/styles/rich-text-editor/icons/_material-dark.scss +373 -352
  260. package/styles/rich-text-editor/icons/_material.scss +373 -352
  261. package/styles/rich-text-editor/icons/_material3.scss +372 -351
  262. package/styles/rich-text-editor/icons/_tailwind.scss +372 -351
  263. package/styles/rich-text-editor/material-dark.css +679 -792
  264. package/styles/rich-text-editor/material.css +676 -794
  265. package/styles/rich-text-editor/material3-dark.css +715 -852
  266. package/styles/rich-text-editor/material3-dark.scss +1 -1
  267. package/styles/rich-text-editor/material3.css +715 -852
  268. package/styles/rich-text-editor/material3.scss +1 -1
  269. package/styles/rich-text-editor/tailwind-dark.css +702 -822
  270. package/styles/rich-text-editor/tailwind.css +702 -822
  271. package/styles/tailwind-dark.css +702 -822
  272. package/styles/tailwind-dark.scss +4 -1
  273. package/styles/tailwind.css +702 -822
  274. package/styles/tailwind.scss +4 -1
  275. package/dist/ej2-richtexteditor.min.js +0 -10
  276. package/dist/global/ej2-richtexteditor.min.js +0 -11
  277. package/dist/global/ej2-richtexteditor.min.js.map +0 -1
  278. package/dist/global/index.d.ts +0 -14
  279. package/tslint.json +0 -111
@@ -778,18 +778,18 @@ const closeTooltip = 'closeTooltip';
778
778
  * @hidden
779
779
  * @deprecated
780
780
  */
781
- const blockEmptyNodes = `address:empty, article:empty, aside:empty, blockquote:empty,
782
- details:empty, dd:empty, div:empty, dl:empty, dt:empty, fieldset:empty, footer:empty,form:empty, h1:empty,
783
- h2:empty, h3:empty, h4:empty, h5:empty, h6:empty, header:empty, hgroup:empty, li:empty, main:empty, nav:empty,
781
+ const blockEmptyNodes = `address:empty, article:empty, aside:empty, blockquote:empty,
782
+ details:empty, dd:empty, div:empty, dl:empty, dt:empty, fieldset:empty, footer:empty,form:empty, h1:empty,
783
+ h2:empty, h3:empty, h4:empty, h5:empty, h6:empty, header:empty, hgroup:empty, li:empty, main:empty, nav:empty,
784
784
  noscript:empty, output:empty, p:empty, pre:empty, section:empty, td:empty, th:empty`;
785
785
  /**
786
786
  * @hidden
787
787
  * @deprecated
788
788
  */
789
- const inlineEmptyNodes = `a:empty, abbr:empty, acronym:empty, b:empty, bdi:empty, bdo:empty, big:empty, button:empty,
790
- canvas:empty, cite:empty, code:empty, data:empty, datalist:empty, del:empty, dfn:empty, em:empty, font:empty, i:empty, iframe:empty,
791
- ins:empty, kbd:empty, label:empty, map:empty, mark:empty, meter:empty, noscript:empty, object:empty, output:empty, picture:empty, progress:empty,
792
- q: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,
789
+ const inlineEmptyNodes = `a:empty, abbr:empty, acronym:empty, b:empty, bdi:empty, bdo:empty, big:empty, button:empty,
790
+ canvas:empty, cite:empty, code:empty, data:empty, datalist:empty, del:empty, dfn:empty, em:empty, font:empty, i:empty, iframe:empty,
791
+ ins:empty, kbd:empty, label:empty, map:empty, mark:empty, meter:empty, noscript:empty, object:empty, output:empty, picture:empty, progress:empty,
792
+ q: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,
793
793
  template:empty, textarea:empty, time:empty, u:empty, tt:empty, var:empty, wbr:empty`;
794
794
  /**
795
795
  * @hidden
@@ -4574,11 +4574,14 @@ function nestedListCleanUp(range) {
4574
4574
  item.remove();
4575
4575
  });
4576
4576
  }
4577
+ else {
4578
+ break;
4579
+ }
4577
4580
  }
4578
4581
  let liElem = (range.startContainer.nodeName === "#text" ? range.startContainer.parentElement : range.startContainer).querySelectorAll("li");
4579
4582
  if (liElem.length > 0) {
4580
4583
  liElem.forEach((item) => {
4581
- if (item.firstChild.nodeName === "OL" || item.firstChild.nodeName === "UL") {
4584
+ if (!isNullOrUndefined(item.firstChild) && (item.firstChild.nodeName === "OL" || item.firstChild.nodeName === "UL")) {
4582
4585
  item.style.listStyleType = "none";
4583
4586
  }
4584
4587
  });
@@ -5449,8 +5452,6 @@ class ToolbarRenderer {
5449
5452
  target: colorPicker.element.parentElement, cssClass: css,
5450
5453
  enablePersistence: this.parent.enablePersistence, enableRtl: this.parent.enableRtl,
5451
5454
  beforeOpen: (dropDownArgs) => {
5452
- colorPicker.inline = true;
5453
- colorPicker.dataBind();
5454
5455
  if (proxy.parent.readonly || !proxy.parent.enabled) {
5455
5456
  dropDownArgs.cancel = true;
5456
5457
  return;
@@ -5588,14 +5589,18 @@ class ToolbarRenderer {
5588
5589
  const colorPicker = new ColorPicker({
5589
5590
  enablePersistence: this.parent.enablePersistence,
5590
5591
  enableRtl: this.parent.enableRtl,
5591
- inline: false,
5592
- value: '#fff',
5592
+ inline: true,
5593
+ value: null,
5594
+ cssClass: ((item === 'backgroundcolor') ? CLS_BACKGROUND_COLOR_PICKER : CLS_FONT_COLOR_PICKER) + ' ' + args.cssClass + ' ' + 'e-rte-picker-init',
5593
5595
  created: () => {
5594
5596
  const value = (item === 'backgroundcolor') ? proxy.parent.backgroundColor.default : proxy.parent.fontColor.default;
5595
- colorPicker.setProperties({ value: value });
5597
+ colorPicker.cssClass = ((item === 'backgroundcolor') ? CLS_BACKGROUND_COLOR_PICKER : CLS_FONT_COLOR_PICKER) + ' ' + args.cssClass;
5598
+ colorPicker.value = value;
5596
5599
  },
5597
5600
  mode: ((item === 'backgroundcolor') ? proxy.parent.backgroundColor.mode : proxy.parent.fontColor.mode),
5598
5601
  modeSwitcher: ((item === 'backgroundcolor') ? proxy.parent.backgroundColor.modeSwitcher : proxy.parent.fontColor.modeSwitcher),
5602
+ presetColors: (item === 'backgroundcolor') ? this.parent.backgroundColor.colorCode : this.parent.fontColor.colorCode,
5603
+ columns: (item === 'backgroundcolor') ? this.parent.backgroundColor.columns : this.parent.fontColor.columns,
5599
5604
  beforeTileRender: (args) => {
5600
5605
  args.element.classList.add(CLS_COLOR_PALETTE);
5601
5606
  args.element.classList.add(CLS_CUSTOM_TILE);
@@ -5640,10 +5645,6 @@ class ToolbarRenderer {
5640
5645
  }
5641
5646
  });
5642
5647
  colorPicker.isStringTemplate = true;
5643
- colorPicker.columns = (item === 'backgroundcolor') ? this.parent.backgroundColor.columns : this.parent.fontColor.columns;
5644
- colorPicker.presetColors = (item === 'backgroundcolor') ? this.parent.backgroundColor.colorCode :
5645
- this.parent.fontColor.colorCode;
5646
- colorPicker.cssClass = ((item === 'backgroundcolor') ? CLS_BACKGROUND_COLOR_PICKER : CLS_FONT_COLOR_PICKER) + ' ' + args.cssClass;
5647
5648
  colorPicker.createElement = this.parent.createElement;
5648
5649
  colorPicker.appendTo(document.getElementById(args.target));
5649
5650
  return colorPicker;
@@ -7210,12 +7211,12 @@ class Toolbar$2 {
7210
7211
  }
7211
7212
  }
7212
7213
 
7213
- var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
7214
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
7215
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
7216
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
7217
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7218
- };
7214
+ var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
7215
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
7216
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
7217
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
7218
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7219
+ };
7219
7220
  var KeyboardEvents_1;
7220
7221
  const keyCode = {
7221
7222
  'backspace': 8,
@@ -12250,7 +12251,7 @@ class DOMNode {
12250
12251
  unWrap(element) {
12251
12252
  const parent = element.parentNode;
12252
12253
  let unWrapNode = [];
12253
- while (element.firstChild) {
12254
+ while (element.firstChild && (element.previousSibling !== this.parent.querySelector('.e-mention-chip') || element.textContent !== ' ')) {
12254
12255
  unWrapNode.push(element.firstChild);
12255
12256
  parent.insertBefore(element.firstChild, element);
12256
12257
  }
@@ -12600,6 +12601,109 @@ class DOMNode {
12600
12601
  }
12601
12602
  return null;
12602
12603
  }
12604
+ /**
12605
+ * Method to wrap the inline and text node with block node.
12606
+ *
12607
+ * @param {HTMLElement} node - specifies the element sent to wrap the node around it with block nodes.
12608
+ * @param {string} wrapperElement - specifies which block nodes to wrap around.
12609
+ * @returns {HTMLElement} - returns the wrapped element.
12610
+ * @hidden
12611
+ * @deprecated
12612
+ */
12613
+ gatherElementsAround(node, wrapperElement) {
12614
+ const newWrapElem = createElement(wrapperElement);
12615
+ // Insert the new div element before the current node.
12616
+ let currentNode = node.previousSibling;
12617
+ const currentNodeParent = node.parentElement;
12618
+ if (currentNodeParent.className === 'e-editor-select-start') {
12619
+ currentNodeParent.parentNode.insertBefore(newWrapElem, currentNodeParent);
12620
+ }
12621
+ else if (currentNodeParent) {
12622
+ currentNodeParent.insertBefore(newWrapElem, node);
12623
+ }
12624
+ let i = 0;
12625
+ while (currentNode !== null && currentNode.nodeName !== 'BR' &&
12626
+ !this.isBlockNode(currentNode)) {
12627
+ const prevSibling = currentNode.previousSibling;
12628
+ if (currentNode.nodeType === 3 || currentNode.nodeType === 1) {
12629
+ if (i === 0) {
12630
+ newWrapElem.appendChild(currentNode);
12631
+ }
12632
+ else {
12633
+ newWrapElem.insertBefore(currentNode, newWrapElem.firstChild);
12634
+ }
12635
+ }
12636
+ currentNode = prevSibling;
12637
+ i++;
12638
+ }
12639
+ // Add the current node to the new div
12640
+ newWrapElem.appendChild(node);
12641
+ // Gather text and inline elements after the currentNode
12642
+ currentNode = newWrapElem.nextSibling ? newWrapElem.nextSibling :
12643
+ newWrapElem.parentElement.nextSibling;
12644
+ while (currentNode !== null && currentNode.nodeName !== 'BR' &&
12645
+ !this.isBlockNode(currentNode)) {
12646
+ const nextSibling = currentNode.nextSibling ?
12647
+ currentNode.nextSibling : currentNode.parentElement.nextSibling;
12648
+ if (currentNode.nodeType === 3 || currentNode.nodeType === 1) {
12649
+ newWrapElem.appendChild(currentNode);
12650
+ }
12651
+ currentNode = nextSibling;
12652
+ }
12653
+ return newWrapElem;
12654
+ }
12655
+ /**
12656
+ * Method to convert all the inline nodes between the selection to block nodes.
12657
+ *
12658
+ * @param {Node[]} selectedNodes - specifies the nodes of the start and end selection.
12659
+ * @param {boolean} fromList - specifies if the method is called from list module.
12660
+ * @returns {Node[]} - returns the selected list of elements as block nodes.
12661
+ * @hidden
12662
+ * @deprecated
12663
+ */
12664
+ convertToBlockNodes(selectedNodes, fromList) {
12665
+ if (selectedNodes.length > 1) {
12666
+ let i = 0;
12667
+ let currentSelectedNode = selectedNodes[0];
12668
+ while (!isNullOrUndefined(currentSelectedNode)) {
12669
+ if (currentSelectedNode.nodeName === 'BR') {
12670
+ const nextNode = currentSelectedNode.nextSibling;
12671
+ detach(currentSelectedNode);
12672
+ currentSelectedNode = nextNode;
12673
+ }
12674
+ if (!isNullOrUndefined(currentSelectedNode)) {
12675
+ if (fromList) {
12676
+ selectedNodes[i] = currentSelectedNode.nodeName === 'LI' || this.isBlockNode(currentSelectedNode) ?
12677
+ currentSelectedNode :
12678
+ this.gatherElementsAround(currentSelectedNode, (fromList ? 'p' : 'div'));
12679
+ }
12680
+ else {
12681
+ selectedNodes[i] = !this.isBlockNode(selectedNodes[i]) ?
12682
+ this.gatherElementsAround(currentSelectedNode, (fromList ? 'p' : 'div')) :
12683
+ selectedNodes[i];
12684
+ }
12685
+ const currentProcessNode = selectedNodes[i].nodeName === 'LI' ? selectedNodes[i].parentElement : selectedNodes[i];
12686
+ const currentElementCheckNode = currentProcessNode.nodeName === '#text' ? currentProcessNode.parentElement : currentProcessNode;
12687
+ currentSelectedNode = !isNullOrUndefined(currentElementCheckNode.querySelector('.e-editor-select-end')) ||
12688
+ !isNullOrUndefined(closest(currentSelectedNode, '.e-editor-select-end')) ?
12689
+ null : currentProcessNode.nextSibling;
12690
+ if (currentSelectedNode === null && !isNullOrUndefined(currentProcessNode.nextSibling) && currentProcessNode.nextSibling.nodeName === 'BR') {
12691
+ detach(currentProcessNode.nextSibling);
12692
+ }
12693
+ }
12694
+ i++;
12695
+ }
12696
+ }
12697
+ else {
12698
+ if (!this.isBlockNode(selectedNodes[0])) {
12699
+ selectedNodes[0] = this.gatherElementsAround(selectedNodes[0], (fromList ? 'p' : 'div'));
12700
+ if (!isNullOrUndefined(selectedNodes[0].nextSibling) && (selectedNodes[0].nextSibling.nodeName === 'BR')) {
12701
+ detach(selectedNodes[0].nextSibling);
12702
+ }
12703
+ }
12704
+ }
12705
+ return selectedNodes;
12706
+ }
12603
12707
  /**
12604
12708
  * blockNodes method
12605
12709
  *
@@ -13107,7 +13211,7 @@ class Lists {
13107
13211
  e.event.preventDefault();
13108
13212
  }
13109
13213
  }
13110
- onKeyUp() {
13214
+ onKeyUp(e) {
13111
13215
  if (!isNullOrUndefined(this.commonLIParent) && !isNullOrUndefined(this.commonLIParent.querySelector('.removeList'))) {
13112
13216
  const currentLIElem = this.commonLIParent.querySelector('.removeList');
13113
13217
  while (!isNullOrUndefined(currentLIElem.firstChild)) {
@@ -13115,6 +13219,14 @@ class Lists {
13115
13219
  }
13116
13220
  detach(currentLIElem);
13117
13221
  }
13222
+ if (e.event.keyCode === 13) {
13223
+ const listElements = this.parent.editableElement.querySelectorAll('UL, OL');
13224
+ for (let i = 0; i < listElements.length; i++) {
13225
+ if (!isNullOrUndefined(listElements[i]) && !isNullOrUndefined(listElements[i].parentElement) && !isNullOrUndefined(listElements[i].previousElementSibling) && (listElements[i].parentElement.nodeName === 'UL' || listElements[i].parentElement.nodeName === 'OL')) {
13226
+ listElements[i].previousElementSibling.appendChild(listElements[i]);
13227
+ }
13228
+ }
13229
+ }
13118
13230
  }
13119
13231
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
13120
13232
  firstListBackSpace(range, _e) {
@@ -13356,6 +13468,8 @@ class Lists {
13356
13468
  else {
13357
13469
  if (prevSibling.tagName === 'LI') {
13358
13470
  const nestedElement = createElement(elements[i].parentNode.tagName);
13471
+ nestedElement.style.listStyleType =
13472
+ elements[i].parentNode.style.listStyleType;
13359
13473
  append([nestedElement], prevSibling);
13360
13474
  append([elements[i]], nestedElement);
13361
13475
  }
@@ -13405,39 +13519,7 @@ class Lists {
13405
13519
  let listsNodes = this.domNode.blockNodes(true);
13406
13520
  if (e.enterAction === 'BR') {
13407
13521
  this.setSelectionBRConfig();
13408
- const selectedNodes = this.parent.domNode.blockNodes();
13409
- if (selectedNodes.length > 1) {
13410
- let i = 0;
13411
- let currentAlignmentNode = selectedNodes[0];
13412
- while (!isNullOrUndefined(currentAlignmentNode)) {
13413
- if (currentAlignmentNode.nodeName === 'BR') {
13414
- const nextNode = currentAlignmentNode.nextSibling;
13415
- detach(currentAlignmentNode);
13416
- currentAlignmentNode = nextNode;
13417
- }
13418
- if (!isNullOrUndefined(currentAlignmentNode)) {
13419
- selectedNodes[i] = currentAlignmentNode.nodeName === 'LI' || this.parent.domNode.isBlockNode(currentAlignmentNode) ?
13420
- currentAlignmentNode : this.gatherElementsAround(currentAlignmentNode);
13421
- const currentSelectNode = selectedNodes[i].nodeName === 'LI' ? selectedNodes[i].parentElement : selectedNodes[i];
13422
- const currentElementCheckNode = currentAlignmentNode.nodeName === '#text' ? currentAlignmentNode.parentElement : currentAlignmentNode;
13423
- currentAlignmentNode = !isNullOrUndefined(currentElementCheckNode.querySelector('.e-editor-select-end')) ||
13424
- !isNullOrUndefined(closest(currentAlignmentNode, '.e-editor-select-end')) ?
13425
- null : currentSelectNode.nextSibling;
13426
- if (currentAlignmentNode === null && !isNullOrUndefined(currentSelectNode.nextSibling) && currentSelectNode.nextSibling.nodeName === 'BR') {
13427
- detach(currentSelectNode.nextSibling);
13428
- }
13429
- }
13430
- i++;
13431
- }
13432
- }
13433
- else {
13434
- if (!this.parent.domNode.isBlockNode(selectedNodes[0])) {
13435
- selectedNodes[0] = this.gatherElementsAround(selectedNodes[0]);
13436
- if (!isNullOrUndefined(selectedNodes[0].nextSibling) && (selectedNodes[0].nextSibling.nodeName === 'BR')) {
13437
- detach(selectedNodes[0].nextSibling);
13438
- }
13439
- }
13440
- }
13522
+ this.parent.domNode.convertToBlockNodes(this.parent.domNode.blockNodes(), true);
13441
13523
  this.setSelectionBRConfig();
13442
13524
  listsNodes = this.parent.domNode.blockNodes();
13443
13525
  }
@@ -13494,7 +13576,7 @@ class Lists {
13494
13576
  }
13495
13577
  let elemAtt;
13496
13578
  elements[i].style.removeProperty('margin-left');
13497
- elemAtt = elements[i].tagName === 'IMG' ? '' : this.domNode.attributes(elements[i]);
13579
+ elemAtt = elements[i].tagName === 'IMG' || elements[i].classList.contains('e-editor-select-start') ? '' : this.domNode.attributes(elements[i]);
13498
13580
  if (elements[i].getAttribute('contenteditable') === 'true'
13499
13581
  && elements[i].childNodes.length === 1 && elements[i].childNodes[0].nodeName === 'TABLE') {
13500
13582
  const listEle = document.createElement(type);
@@ -13615,6 +13697,13 @@ class Lists {
13615
13697
  for (let c = 0; c < liParents.length; c++) {
13616
13698
  const node = liParents[c];
13617
13699
  let toFindtopOlUl = true;
13700
+ let containsListElements = node;
13701
+ while (containsListElements.parentElement) {
13702
+ if (containsListElements.parentElement && containsListElements.parentElement.tagName !== 'LI' && containsListElements.parentElement.tagName !== 'OL' && containsListElements.parentElement.tagName !== 'UL') {
13703
+ break;
13704
+ }
13705
+ containsListElements = containsListElements.parentElement;
13706
+ }
13618
13707
  if (toFindtopOlUl && (liParents[c].parentElement.parentElement.nodeName === 'OL' || liParents[c].parentElement.parentElement.nodeName === 'UL')) {
13619
13708
  toFindtopOlUl = false;
13620
13709
  const preElement = liParents[c].parentElement.parentElement;
@@ -13634,9 +13723,43 @@ class Lists {
13634
13723
  node.previousElementSibling.lastChild.append(node);
13635
13724
  }
13636
13725
  }
13726
+ else if (this.domNode.isList(node.previousElementSibling) && containsListElements.contains(node.previousElementSibling) && ((node.tagName === 'OL' || node.tagName === 'UL') && (node.previousElementSibling.nodeName === 'OL' || node.previousElementSibling.nodeName === 'UL'))) {
13727
+ const contentNodes = this.domNode.contents(node);
13728
+ for (let f = 0; f < contentNodes.length; f++) {
13729
+ node.previousElementSibling.appendChild(contentNodes[f]);
13730
+ }
13731
+ node.parentNode.removeChild(node);
13732
+ }
13637
13733
  }
13638
13734
  if (firstNodeOL) {
13639
13735
  firstNodeOL.style.listStyleType = listStyleType;
13736
+ const range = this.parent.nodeSelection.getRange(this.parent.currentDocument);
13737
+ let listOlUlElements = [];
13738
+ if (range.commonAncestorContainer.nodeName === 'UL' || range.commonAncestorContainer.nodeName === 'OL') {
13739
+ if (range.commonAncestorContainer instanceof Element) {
13740
+ listOlUlElements.push(range.commonAncestorContainer);
13741
+ }
13742
+ listOlUlElements = listOlUlElements.concat(Array.from(range.commonAncestorContainer.querySelectorAll('ol, ul')));
13743
+ }
13744
+ else {
13745
+ listOlUlElements = Array.from(range.commonAncestorContainer.querySelectorAll('ol, ul'));
13746
+ }
13747
+ for (let k = 0; k < listOlUlElements.length; k++) {
13748
+ let listStyle;
13749
+ let listElements = listOlUlElements[k];
13750
+ while (listElements) {
13751
+ if (listElements.nodeName === 'OL' || listElements.nodeName === 'OL') {
13752
+ if (listElements.style.listStyleType !== '' && listElements.style.listStyleType !== 'none' && listElements.nodeName !== 'LI') {
13753
+ listStyle = listElements.style.listStyleType;
13754
+ }
13755
+ else if (!isNullOrUndefined(listStyle) && (listElements.style.listStyleType === '' || listElements.style.listStyleType === 'none') &&
13756
+ listElements.nodeName !== 'LI' && (listElements.nodeName === 'UL' || listElements.nodeName === 'OL')) {
13757
+ listElements.style.listStyleType = listStyle;
13758
+ }
13759
+ }
13760
+ listElements = listElements.querySelector('UL,OL');
13761
+ }
13762
+ }
13640
13763
  }
13641
13764
  }
13642
13765
  findUnSelected(temp, elements) {
@@ -13739,7 +13862,7 @@ class Lists {
13739
13862
  parentNode.removeAttribute("style");
13740
13863
  }
13741
13864
  }
13742
- const wrapper = '<' + DEFAULT_TAG + wrapperclass + this.domNode.attributes(element) + '></' + DEFAULT_TAG + '>';
13865
+ const wrapper = '<' + e.enterAction + wrapperclass + this.domNode.attributes(element) + '></' + e.enterAction + '>';
13743
13866
  if (e.enterAction !== 'BR') {
13744
13867
  this.domNode.wrapInner(element, this.domNode.parseHTMLFragment(wrapper));
13745
13868
  }
@@ -13813,48 +13936,6 @@ class Lists {
13813
13936
  closeTag(type) {
13814
13937
  return this.domNode.parseHTMLFragment('<span class="e-rte-list-close-' + type.toLowerCase() + '"></span>');
13815
13938
  }
13816
- gatherElementsAround(node) {
13817
- const pWrap = document.createElement('p');
13818
- // Insert the new div before the current node
13819
- let currentNode = node.previousSibling;
13820
- const classNode = node.parentNode;
13821
- if (classNode.className === 'e-editor-select-start') {
13822
- node.parentNode.parentNode.insertBefore(pWrap, node.parentNode);
13823
- }
13824
- else if (node.parentNode) {
13825
- node.parentNode.insertBefore(pWrap, node);
13826
- }
13827
- // Gather text and inline elements before the currentNode
13828
- let i = 0;
13829
- while (currentNode !== null && currentNode.nodeName !== 'BR' &&
13830
- !this.parent.domNode.isBlockNode(currentNode)) {
13831
- const prevSibling = currentNode.previousSibling;
13832
- if (currentNode.nodeType === 3 || currentNode.nodeType === 1) {
13833
- if (i === 0) {
13834
- pWrap.appendChild(currentNode);
13835
- }
13836
- else {
13837
- pWrap.insertBefore(currentNode, pWrap.firstChild);
13838
- }
13839
- }
13840
- currentNode = prevSibling;
13841
- i++;
13842
- }
13843
- // Add the current node to the new p
13844
- pWrap.appendChild(node);
13845
- // Gather text and inline elements after the currentNode
13846
- currentNode = pWrap.nextSibling ? pWrap.nextSibling : pWrap.parentElement.nextSibling;
13847
- while (currentNode !== null && currentNode.nodeName !== 'BR' &&
13848
- !this.parent.domNode.isBlockNode(currentNode)) {
13849
- const nextSibling = currentNode.nextSibling ?
13850
- currentNode.nextSibling : currentNode.parentElement.nextSibling;
13851
- if (currentNode.nodeType === 3 || currentNode.nodeType === 1) {
13852
- pWrap.appendChild(currentNode);
13853
- }
13854
- currentNode = nextSibling;
13855
- }
13856
- return pWrap;
13857
- }
13858
13939
  }
13859
13940
 
13860
13941
  /**
@@ -14189,8 +14270,8 @@ class Formats {
14189
14270
  }
14190
14271
  }
14191
14272
  }
14192
- if (e.enterAction !== 'BR' && !isNullOrUndefined(range.startContainer) && !isNullOrUndefined(range.startContainer.parentElement) && range.startContainer === range.endContainer && range.startContainer.nodeName === '#text' && range.startContainer.parentElement.classList.contains("e-content") && range.startContainer.parentElement.isContentEditable) {
14193
- let pTag = createElement(e.enterAction);
14273
+ if (e.enterAction !== 'BR' && !isNullOrUndefined(range.startContainer) && !isNullOrUndefined(range.startContainer.parentElement) && range.startContainer === range.endContainer && range.startContainer.nodeName === '#text' && range.startContainer.parentElement.classList.contains('e-content') && range.startContainer.parentElement.isContentEditable) {
14274
+ const pTag = createElement(e.enterAction);
14194
14275
  range.startContainer.parentElement.insertBefore(pTag, range.startContainer);
14195
14276
  pTag.appendChild(range.startContainer);
14196
14277
  this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, pTag, 1);
@@ -14607,6 +14688,9 @@ class InsertHtml {
14607
14688
  this.insertTableInList(range, node, closestParentNode, nodes[0], nodeCutter);
14608
14689
  return;
14609
14690
  }
14691
+ if (isCursor && range.startContainer.textContent === '' && range.startContainer.nodeName !== 'BR' && enterAction !== 'BR' && node.nodeName !== '#text' && !isNullOrUndefined(node.children[0]) && !isNullOrUndefined(node.children[0].tagName) && node.children[0].tagName === 'IMG' && node.children.length === 1) {
14692
+ range.startContainer.innerHTML = '';
14693
+ }
14610
14694
  if (isExternal || (!isNullOrUndefined(node) && !isNullOrUndefined(node.classList) &&
14611
14695
  node.classList.contains('pasteContent'))) {
14612
14696
  this.pasteInsertHTML(nodes, node, range, nodeSelection, nodeCutter, docElement, isCollapsed, closestParentNode, editNode, enterAction);
@@ -15530,7 +15614,10 @@ class Alignments {
15530
15614
  let save = this.parent.nodeSelection.save(range, this.parent.currentDocument);
15531
15615
  if (!isTableAlign) {
15532
15616
  this.parent.domNode.setMarker(save);
15533
- const alignmentNodes = this.parent.domNode.blockNodes();
15617
+ let alignmentNodes = this.parent.domNode.blockNodes();
15618
+ if (e.enterAction === 'BR') {
15619
+ alignmentNodes = this.parent.domNode.convertToBlockNodes(alignmentNodes, false);
15620
+ }
15534
15621
  for (let i = 0; i < alignmentNodes.length; i++) {
15535
15622
  const parentNode = alignmentNodes[i];
15536
15623
  setStyleAttribute(parentNode, { 'text-align': this.alignments[e.subCommand] });
@@ -15612,7 +15699,10 @@ class Indents {
15612
15699
  const range = this.parent.nodeSelection.getRange(this.parent.currentDocument);
15613
15700
  let save = this.parent.nodeSelection.save(range, this.parent.currentDocument);
15614
15701
  this.parent.domNode.setMarker(save);
15615
- const indentsNodes = this.parent.domNode.blockNodes();
15702
+ let indentsNodes = this.parent.domNode.blockNodes();
15703
+ if (e.enterAction === 'BR') {
15704
+ indentsNodes = this.parent.domNode.convertToBlockNodes(indentsNodes, false);
15705
+ }
15616
15706
  const parentNodes = indentsNodes.slice();
15617
15707
  const listsNodes = [];
15618
15708
  for (let i = 0; i < parentNodes.length; i++) {
@@ -19894,7 +19984,7 @@ class MsWordPaste {
19894
19984
  !isNormalList) {
19895
19985
  prevList = null;
19896
19986
  }
19897
- const pElement = createElement('p', { className: 'MsoNormal' });
19987
+ const pElement = createElement('p', { className: 'MsoNoSpacing' });
19898
19988
  pElement.innerHTML = collection[index].content.join(' ');
19899
19989
  if ((collection[index].nestedLevel === 1) &&
19900
19990
  (listCount === 0 || lfo !== collection[index].listFormatOverride) &&
@@ -20970,12 +21060,14 @@ class EditorManager {
20970
21060
  case 'alignments':
20971
21061
  this.observer.notify(ALIGNMENT_TYPE, {
20972
21062
  subCommand: value, event: event, callBack: callBack,
20973
- selector: selector,
20974
- value: exeValue
21063
+ selector: selector, value: exeValue, enterAction: enterAction
20975
21064
  });
20976
21065
  break;
20977
21066
  case 'indents':
20978
- this.observer.notify(INDENT_TYPE, { subCommand: value, event: event, callBack: callBack, selector: selector });
21067
+ this.observer.notify(INDENT_TYPE, {
21068
+ subCommand: value, event: event, callBack: callBack,
21069
+ selector: selector, enterAction: enterAction
21070
+ });
20979
21071
  break;
20980
21072
  case 'links':
20981
21073
  this.observer.notify(LINK, { command: command, value: value, item: exeValue, event: event, callBack: callBack });
@@ -21304,116 +21396,116 @@ class ContentRender {
21304
21396
  }
21305
21397
  }
21306
21398
 
21307
- const IFRAMEHEADER = `
21308
- <!DOCTYPE html>
21309
- <html>
21310
- <head>
21311
- <meta charset='utf-8' />
21312
- <style>
21313
- @charset "UTF-8";
21314
- body {
21315
- font-family: "Roboto", sans-serif;
21316
- font-size: 14px;
21317
- }
21318
- html, body{height: 100%;margin: 0;}
21319
- body.e-cursor{cursor:default}
21320
- span.e-selected-node {background-color: #939393;color: white;}
21321
- span.e-selected-node.e-highlight {background-color: #1d9dd8;}
21322
- body{color:#333;word-wrap:break-word;padding: 8px;box-sizing: border-box;}
21323
- .e-rte-image, .e-rte-video {border: 0;cursor: pointer;display:
21324
- block;float: none;height: auto;margin: 5px auto;max-width: 100%;position: relative;}
21325
- .e-rte-audio {border: 0;cursor: pointer;display:
21326
- block;float: none;margin: 5px auto;max-width: 100%;position: relative;}
21327
- .e-rte-image.e-imginline, .e-rte-audio.e-audio-inline, .e-rte-video.e-video-inline {display: inline-block;float: none;
21328
- margin-left: 5px;margin-right: 5px;max-width: calc(100% - (2 * 5px));padding: 1px;vertical-align: bottom;}
21329
- .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;}
21330
- .e-rte-image.e-imgright, .e-rte-video.e-video-right { float: right; margin: 0 auto;margin-left: 5px;text-align: right;}
21331
- .e-rte-image.e-imgleft, .e-rte-video.e-video-left {float: left;margin: 0 auto;margin-right: 5px;text-align: left;}
21332
- .e-img-caption { display: inline-block; float: none; margin: 5px auto; max-width: 100%;position: relative;}
21333
- .e-img-caption.e-caption-inline {display: inline-block;float: none;
21334
- margin: 5px auto;margin-left: 5px;margin-right: 5px;max-width: calc(100% - (2 * 5px));
21335
- position: relativetext-align: center;vertical-align: bottom;}
21336
- .e-rte-img-caption.e-imgcenter {display: contents; margin-left: auto; margin-right: auto;}
21337
- .e-rte-img-caption.e-imgright {display: contents; margin-left: auto; margin-right: 0;}
21338
- .e-rte-img-caption.e-imgleft {display: contents;margin-left: 0;margin-right: auto;}
21339
- .e-img-caption.e-rte-img-caption.e-imgbreak {display: contents;}
21340
- .e-img-inner {box-sizing: border-box;display: block;font-size: 16px;font-weight: initial;
21341
- margin: auto;opacity: .9;text-align: center;width: 100%;}
21342
- .e-img-wrap {display: inline-block;margin: auto;padding: 0;text-align: center;width: 100%;}
21343
- .e-imgleft, .e-video-left {float: left;margin: 0 5px 0 0;text-align: left;}
21344
- .e-imgright, .e-video-right {float: right;margin: 0 0 0 5px;text-align: right;}
21345
- .e-imgcenter, .e-video-center {cursor: pointer;display: block;float: none;height: auto;margin: 5px auto;max-width: 100%;position: relative;}
21346
- .e-control img:not(.e-resize) {border: 2px solid transparent; z-index: 1000}
21347
- .e-imginline , .e-audio-inline, .e-video-inline {display: inline-block;float: none;margin-left: 5px;margin-right: 5px;
21348
- max-width: calc(100% - (2 * 5px));vertical-align: bottom;}
21349
- .e-imgbreak, .e-audio-break, .e-video-break {border: 0;cursor: pointer;
21350
- display: block;float: none;height: auto;margin: 5px auto;max-width: 100%;position: relative;}
21351
- .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;}
21352
- img.e-img-focus::selection, audio.e-audio-focus::selection, .e-video-focus::selection { background: transparent;color: transparent;}
21353
- span.e-rte-imageboxmark, span.e-rte-videoboxmark { width: 10px; height: 10px; position: absolute; display: block;
21354
- background: #4a90e2; border: 1px solid #fff; z-index: 1000;}
21355
- .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; }
21356
- .e-mob-rte span.e-rte-imageboxmark, .e-mob-rte span.e-rte-videoboxmark { background: #fff; border: 1px solid #4a90e2;
21357
- border-radius: 15px; height: 20px; width: 20px; }
21358
- .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; }
21359
- .e-rte-content .e-content img.e-resize, .e-rte-content .e-content video.e-resize { z-index: 1000; }
21360
- .e-img-caption .e-img-inner { outline: 0; }
21361
- .e-rte-img-caption.e-imgleft .e-img-inner { float: left; text-align: left; }
21362
- .e-rte-img-caption.e-imgright .e-img-inner { float: right; text-align: right; }
21363
- .e-rte-img-caption.e-imgleft .e-img-wrap, .e-rte-img-caption.e-imgright .e-img-wrap { display: contents; }
21364
- .e-img-caption a:focus-visible { outline: none; }
21365
- .e-rte-img-caption .e-rte-image.e-imgright { margin-left: auto; margin-right: 0; }
21366
- .e-rte-img-caption .e-rte-image.e-imgleft { margin: 0; }
21367
- body{box-sizing: border-box;min-height: 100px;outline: 0 solid transparent;
21368
- overflow-x: auto;padding: 16px;position: relative;text-align: inherit;z-index: 2;}
21369
- p{margin: 0 0 10px;margin-bottom: 10px;}
21370
- li{margin-bottom: 10px;}
21371
- table{margin-bottom: 10px;}
21372
- h1{font-size: 2.17em;font-weight: 400;line-height: 1;margin: 10px 0;}
21373
- h2{font-size: 1.74em;font-weight: 400;margin: 10px 0;}
21374
- h3{font-size: 1.31em;font-weight: 400;margin: 10px 0;}
21375
- h4{font-size: 16px;font-weight: 400;line-height: 1.5;margin: 0;}
21376
- h5{font-size: 00.8em;font-weight: 400;margin: 0;}
21377
- h6{font-size: 00.65em;font-weight: 400;margin: 0;}
21378
- blockquote{margin: 10px 0;margin-left: 0;padding-left: 5px;border-left: solid 2px #5c5c5c;}
21379
- pre{background-color: inherit;border: 0;border-radius: 0;color: #333;
21380
- font-size: inherit;line-height: inherit;margin: 0 0 10px;overflow: visible;padding: 0;
21381
- white-space: pre-wrap;word-break: inherit;word-wrap: break-word;}
21382
- strong, b{font-weight: 700;}
21383
- a{text-decoration: none;user-select: auto;}
21384
- a:hover{text-decoration: underline;};
21385
- p:last-child, pre:last-child, blockquote:last-child{margin-bottom: 0;}
21386
- h3+h4, h4+h5, h5+h6{margin-top: 00.6em;}
21387
- ul:last-child{margin-bottom: 0;}
21388
- table { border-collapse: collapse; empty-cells: show;}
21389
- table td,table th {border: 1px solid #BDBDBD; height: 20px; padding: 2px 5px; vertical-align: middle;}
21390
- table.e-alternate-border tbody tr:nth-child(2n) {background-color: #F5F5F5;}
21391
- table th {background-color: #E0E0E0;}
21392
- table.e-dashed-border td,table.e-dashed-border th { border: 1px dashed #BDBDBD}
21393
- table .e-cell-select {border: 1px double #4a90e2;}
21394
- span.e-table-box { cursor: nwse-resize; display: block; height: 10px; position: absolute; width: 10px; }
21395
- span.e-table-box.e-rmob {height: 14px;width: 14px;}
21396
- .e-row-resize, .e-column-resize { background-color: transparent; background-repeat: repeat;
21397
- bottom: 0;cursor: col-resize;height: 1px;overflow: visible;position: absolute;width: 1px; }
21398
- .e-row-resize { cursor: row-resize; height: 1px;}
21399
- .e-table-rhelper { cursor: col-resize; opacity: .87;position: absolute;}
21400
- .e-table-rhelper.e-column-helper { width: 1px; }
21401
- .e-table-rhelper.e-row-helper {height: 1px;}
21402
- .e-reicon::before { border-bottom: 6px solid transparent; border-right: 6px solid;
21403
- border-top: 6px solid transparent; content: ''; display: block; height: 0;
21404
- position: absolute; right: 4px; top: 4px; width: 20px; }
21405
- .e-reicon::after { border-bottom: 6px solid transparent; border-left: 6px solid;
21406
- border-top: 6px solid transparent; content: ''; display: block;
21407
- height: 0; left: 4px; position: absolute; top: 4px; width: 20px; z-index: 3; }
21408
- .e-row-helper.e-reicon::after { top: 10px; transform: rotate(90deg); }
21409
- .e-row-helper.e-reicon::before { left: 4px; top: -20px; transform: rotate(90deg); }
21410
- span.e-table-box { background-color: #ffffff; border: 1px solid #BDBDBD; }
21411
- span.e-table-box.e-rbox-select { background-color: #BDBDBD; border: 1px solid #BDBDBD; }
21412
- .e-table-rhelper { background-color: #4a90e2;}
21413
- .e-rtl { direction: rtl; }
21414
- .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; }
21415
- li ol, li ul { margin-block-start: 10px;}
21416
- </style>
21399
+ const IFRAMEHEADER = `
21400
+ <!DOCTYPE html>
21401
+ <html>
21402
+ <head>
21403
+ <meta charset='utf-8' />
21404
+ <style>
21405
+ @charset "UTF-8";
21406
+ body {
21407
+ font-family: "Roboto", sans-serif;
21408
+ font-size: 14px;
21409
+ }
21410
+ html, body{height: 100%;margin: 0;}
21411
+ body.e-cursor{cursor:default}
21412
+ span.e-selected-node {background-color: #939393;color: white;}
21413
+ span.e-selected-node.e-highlight {background-color: #1d9dd8;}
21414
+ body{color:#333;word-wrap:break-word;padding: 8px;box-sizing: border-box;}
21415
+ .e-rte-image, .e-rte-video {border: 0;cursor: pointer;display:
21416
+ block;float: none;height: auto;margin: 5px auto;max-width: 100%;position: relative;}
21417
+ .e-rte-audio {border: 0;cursor: pointer;display:
21418
+ block;float: none;margin: 5px auto;max-width: 100%;position: relative;}
21419
+ .e-rte-image.e-imginline, .e-rte-audio.e-audio-inline, .e-rte-video.e-video-inline {display: inline-block;float: none;
21420
+ margin-left: 5px;margin-right: 5px;max-width: calc(100% - (2 * 5px));padding: 1px;vertical-align: bottom;}
21421
+ .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;}
21422
+ .e-rte-image.e-imgright, .e-rte-video.e-video-right { float: right; margin: 0 auto;margin-left: 5px;text-align: right;}
21423
+ .e-rte-image.e-imgleft, .e-rte-video.e-video-left {float: left;margin: 0 auto;margin-right: 5px;text-align: left;}
21424
+ .e-img-caption { display: inline-block; float: none; margin: 5px auto; max-width: 100%;position: relative;}
21425
+ .e-img-caption.e-caption-inline {display: inline-block;float: none;
21426
+ margin: 5px auto;margin-left: 5px;margin-right: 5px;max-width: calc(100% - (2 * 5px));
21427
+ position: relativetext-align: center;vertical-align: bottom;}
21428
+ .e-rte-img-caption.e-imgcenter {display: contents; margin-left: auto; margin-right: auto;}
21429
+ .e-rte-img-caption.e-imgright {display: contents; margin-left: auto; margin-right: 0;}
21430
+ .e-rte-img-caption.e-imgleft {display: contents;margin-left: 0;margin-right: auto;}
21431
+ .e-img-caption.e-rte-img-caption.e-imgbreak {display: contents;}
21432
+ .e-img-inner {box-sizing: border-box;display: block;font-size: 16px;font-weight: initial;
21433
+ margin: auto;opacity: .9;text-align: center;width: 100%;}
21434
+ .e-img-wrap {display: inline-block;margin: auto;padding: 0;text-align: center;width: 100%;}
21435
+ .e-imgleft, .e-video-left {float: left;margin: 0 5px 0 0;text-align: left;}
21436
+ .e-imgright, .e-video-right {float: right;margin: 0 0 0 5px;text-align: right;}
21437
+ .e-imgcenter, .e-video-center {cursor: pointer;display: block;float: none;height: auto;margin: 5px auto;max-width: 100%;position: relative;}
21438
+ .e-control img:not(.e-resize) {border: 2px solid transparent; z-index: 1000}
21439
+ .e-imginline , .e-audio-inline, .e-video-inline {display: inline-block;float: none;margin-left: 5px;margin-right: 5px;
21440
+ max-width: calc(100% - (2 * 5px));vertical-align: bottom;}
21441
+ .e-imgbreak, .e-audio-break, .e-video-break {border: 0;cursor: pointer;
21442
+ display: block;float: none;height: auto;margin: 5px auto;max-width: 100%;position: relative;}
21443
+ .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;}
21444
+ img.e-img-focus::selection, audio.e-audio-focus::selection, .e-video-focus::selection { background: transparent;color: transparent;}
21445
+ span.e-rte-imageboxmark, span.e-rte-videoboxmark { width: 10px; height: 10px; position: absolute; display: block;
21446
+ background: #4a90e2; border: 1px solid #fff; z-index: 1000;}
21447
+ .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; }
21448
+ .e-mob-rte span.e-rte-imageboxmark, .e-mob-rte span.e-rte-videoboxmark { background: #fff; border: 1px solid #4a90e2;
21449
+ border-radius: 15px; height: 20px; width: 20px; }
21450
+ .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; }
21451
+ .e-rte-content .e-content img.e-resize, .e-rte-content .e-content video.e-resize { z-index: 1000; }
21452
+ .e-img-caption .e-img-inner { outline: 0; }
21453
+ .e-rte-img-caption.e-imgleft .e-img-inner { float: left; text-align: left; }
21454
+ .e-rte-img-caption.e-imgright .e-img-inner { float: right; text-align: right; }
21455
+ .e-rte-img-caption.e-imgleft .e-img-wrap, .e-rte-img-caption.e-imgright .e-img-wrap { display: contents; }
21456
+ .e-img-caption a:focus-visible { outline: none; }
21457
+ .e-rte-img-caption .e-rte-image.e-imgright { margin-left: auto; margin-right: 0; }
21458
+ .e-rte-img-caption .e-rte-image.e-imgleft { margin: 0; }
21459
+ body{box-sizing: border-box;min-height: 100px;outline: 0 solid transparent;
21460
+ overflow-x: auto;padding: 16px;position: relative;text-align: inherit;z-index: 2;}
21461
+ p{margin: 0 0 10px;margin-bottom: 10px;}
21462
+ li{margin-bottom: 10px;}
21463
+ table{margin-bottom: 10px;}
21464
+ h1{font-size: 2.17em;font-weight: 400;line-height: 1;margin: 10px 0;}
21465
+ h2{font-size: 1.74em;font-weight: 400;margin: 10px 0;}
21466
+ h3{font-size: 1.31em;font-weight: 400;margin: 10px 0;}
21467
+ h4{font-size: 16px;font-weight: 400;line-height: 1.5;margin: 0;}
21468
+ h5{font-size: 00.8em;font-weight: 400;margin: 0;}
21469
+ h6{font-size: 00.65em;font-weight: 400;margin: 0;}
21470
+ blockquote{margin: 10px 0;margin-left: 0;padding-left: 5px;border-left: solid 2px #5c5c5c;}
21471
+ pre{background-color: inherit;border: 0;border-radius: 0;color: #333;
21472
+ font-size: inherit;line-height: inherit;margin: 0 0 10px;overflow: visible;padding: 0;
21473
+ white-space: pre-wrap;word-break: inherit;word-wrap: break-word;}
21474
+ strong, b{font-weight: 700;}
21475
+ a{text-decoration: none;user-select: auto;}
21476
+ a:hover{text-decoration: underline;};
21477
+ p:last-child, pre:last-child, blockquote:last-child{margin-bottom: 0;}
21478
+ h3+h4, h4+h5, h5+h6{margin-top: 00.6em;}
21479
+ ul:last-child{margin-bottom: 0;}
21480
+ table { border-collapse: collapse; empty-cells: show;}
21481
+ table td,table th {border: 1px solid #BDBDBD; height: 20px; padding: 2px 5px; vertical-align: middle;}
21482
+ table.e-alternate-border tbody tr:nth-child(2n) {background-color: #F5F5F5;}
21483
+ table th {background-color: #E0E0E0;}
21484
+ table.e-dashed-border td,table.e-dashed-border th { border: 1px dashed #BDBDBD}
21485
+ table .e-cell-select {border: 1px double #4a90e2;}
21486
+ span.e-table-box { cursor: nwse-resize; display: block; height: 10px; position: absolute; width: 10px; }
21487
+ span.e-table-box.e-rmob {height: 14px;width: 14px;}
21488
+ .e-row-resize, .e-column-resize { background-color: transparent; background-repeat: repeat;
21489
+ bottom: 0;cursor: col-resize;height: 1px;overflow: visible;position: absolute;width: 1px; }
21490
+ .e-row-resize { cursor: row-resize; height: 1px;}
21491
+ .e-table-rhelper { cursor: col-resize; opacity: .87;position: absolute;}
21492
+ .e-table-rhelper.e-column-helper { width: 1px; }
21493
+ .e-table-rhelper.e-row-helper {height: 1px;}
21494
+ .e-reicon::before { border-bottom: 6px solid transparent; border-right: 6px solid;
21495
+ border-top: 6px solid transparent; content: ''; display: block; height: 0;
21496
+ position: absolute; right: 4px; top: 4px; width: 20px; }
21497
+ .e-reicon::after { border-bottom: 6px solid transparent; border-left: 6px solid;
21498
+ border-top: 6px solid transparent; content: ''; display: block;
21499
+ height: 0; left: 4px; position: absolute; top: 4px; width: 20px; z-index: 3; }
21500
+ .e-row-helper.e-reicon::after { top: 10px; transform: rotate(90deg); }
21501
+ .e-row-helper.e-reicon::before { left: 4px; top: -20px; transform: rotate(90deg); }
21502
+ span.e-table-box { background-color: #ffffff; border: 1px solid #BDBDBD; }
21503
+ span.e-table-box.e-rbox-select { background-color: #BDBDBD; border: 1px solid #BDBDBD; }
21504
+ .e-table-rhelper { background-color: #4a90e2;}
21505
+ .e-rtl { direction: rtl; }
21506
+ .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; }
21507
+ li ol, li ul { margin-block-start: 10px;}
21508
+ </style>
21417
21509
  </head>`;
21418
21510
  /**
21419
21511
  * Content module is used to render Rich Text Editor content
@@ -21921,25 +22013,54 @@ class HtmlEditor {
21921
22013
  this.deleteCleanup(e, currentRange);
21922
22014
  }
21923
22015
  if (args.keyCode === 9 && this.parent.enableTabKey) {
22016
+ this.parent.formatter.saveData(e);
21924
22017
  if (!isNullOrUndefined(args.target) && isNullOrUndefined(closest(args.target, '.e-rte-toolbar'))) {
21925
22018
  const range = this.nodeSelectionObj.getRange(this.contentRenderer.getDocument());
21926
22019
  const parentNode = this.nodeSelectionObj.getParentNodeCollection(range);
21927
22020
  if (!((parentNode[0].nodeName === 'LI' || closest(parentNode[0], 'li') ||
21928
- closest(parentNode[0], 'table')) && range.startOffset === 0)) {
22021
+ closest(parentNode[0], 'table')))) {
21929
22022
  args.preventDefault();
21930
- if (!args.shiftKey) {
21931
- InsertHtml.Insert(this.contentRenderer.getDocument(), '&nbsp;&nbsp;&nbsp;&nbsp;');
21932
- this.rangeCollection.push(this.nodeSelectionObj.getRange(this.contentRenderer.getDocument()));
22023
+ const selection = this.contentRenderer.getDocument().getSelection().getRangeAt(0);
22024
+ let alignmentNodes = this.parent.formatter.editorManager.domNode.blockNodes();
22025
+ if (this.parent.enterKey === 'BR') {
22026
+ if (selection.startOffset !== selection.endOffset && selection.startOffset === 0) {
22027
+ let save = this.nodeSelectionObj.save(range, this.contentRenderer.getDocument());
22028
+ this.parent.formatter.editorManager.domNode.setMarker(save);
22029
+ alignmentNodes = this.parent.formatter.editorManager.domNode.blockNodes();
22030
+ this.parent.formatter.editorManager.domNode.convertToBlockNodes(alignmentNodes, false);
22031
+ this.marginTabAdd(args.shiftKey, alignmentNodes);
22032
+ save = this.parent.formatter.editorManager.domNode.saveMarker(save);
22033
+ save.restore();
22034
+ }
22035
+ else {
22036
+ InsertHtml.Insert(this.contentRenderer.getDocument(), '&nbsp;&nbsp;&nbsp;&nbsp;');
22037
+ this.rangeCollection.push(this.nodeSelectionObj.getRange(this.contentRenderer.getDocument()));
22038
+ }
21933
22039
  }
21934
- else if (this.rangeCollection.length > 0 &&
21935
- this.rangeCollection[this.rangeCollection.length - 1].startContainer.textContent.length === 4) {
21936
- const textCont = this.rangeCollection[this.rangeCollection.length - 1].startContainer;
21937
- this.nodeSelectionObj.setSelectionText(this.contentRenderer.getDocument(), textCont, textCont, 0, textCont.textContent.length);
21938
- InsertHtml.Insert(this.contentRenderer.getDocument(), document.createTextNode(''));
21939
- this.rangeCollection.pop();
22040
+ else {
22041
+ if (!args.shiftKey) {
22042
+ if (selection.startOffset !== selection.endOffset && selection.startOffset === 0) {
22043
+ this.marginTabAdd(args.shiftKey, alignmentNodes);
22044
+ }
22045
+ else {
22046
+ InsertHtml.Insert(this.contentRenderer.getDocument(), '&nbsp;&nbsp;&nbsp;&nbsp;');
22047
+ this.rangeCollection.push(this.nodeSelectionObj.getRange(this.contentRenderer.getDocument()));
22048
+ }
22049
+ }
22050
+ else if (this.rangeCollection.length > 0 &&
22051
+ this.rangeCollection[this.rangeCollection.length - 1].startContainer.textContent.length === 4) {
22052
+ const textCont = this.rangeCollection[this.rangeCollection.length - 1].startContainer;
22053
+ this.nodeSelectionObj.setSelectionText(this.contentRenderer.getDocument(), textCont, textCont, 0, textCont.textContent.length);
22054
+ InsertHtml.Insert(this.contentRenderer.getDocument(), document.createTextNode(''));
22055
+ this.rangeCollection.pop();
22056
+ }
22057
+ else {
22058
+ this.marginTabAdd(args.shiftKey, alignmentNodes);
22059
+ }
21940
22060
  }
21941
22061
  }
21942
22062
  }
22063
+ this.parent.formatter.saveData(e);
21943
22064
  }
21944
22065
  if (e.args.action === 'space' ||
21945
22066
  e.args.action === 'enter' ||
@@ -22601,6 +22722,30 @@ class HtmlEditor {
22601
22722
  getSelectedHtml(e) {
22602
22723
  e.callBack(this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument()).toString());
22603
22724
  }
22725
+ marginTabAdd(val, alignmentNodes) {
22726
+ for (let index = 0; index < alignmentNodes.length; index++) {
22727
+ const element = alignmentNodes[index];
22728
+ if (element.closest('li')) {
22729
+ continue;
22730
+ }
22731
+ if (element.style.marginLeft) {
22732
+ let count$$1 = parseInt(element.style.marginLeft, 10);
22733
+ if (val) {
22734
+ count$$1 -= 20;
22735
+ }
22736
+ else {
22737
+ count$$1 += 20;
22738
+ }
22739
+ element.style.marginLeft = count$$1.toString() + 'px';
22740
+ if (element.style.marginLeft === '0px') {
22741
+ element.removeAttribute('style');
22742
+ }
22743
+ }
22744
+ else if (!val) {
22745
+ element.style.marginLeft = '20px';
22746
+ }
22747
+ }
22748
+ }
22604
22749
  }
22605
22750
 
22606
22751
  /**
@@ -23254,7 +23399,8 @@ class PasteCleanup {
23254
23399
  clipBoardElem = this.allowedStyle(clipBoardElem);
23255
23400
  }
23256
23401
  this.saveSelection.restore();
23257
- clipBoardElem.innerHTML = this.sanitizeHelper(clipBoardElem.innerHTML);
23402
+ const newText = clipBoardElem.innerHTML.split("&").join("&amp;");
23403
+ clipBoardElem.innerHTML = this.sanitizeHelper(newText);
23258
23404
  const allImg = clipBoardElem.querySelectorAll('img');
23259
23405
  for (let i = 0; i < allImg.length; i++) {
23260
23406
  if (!isNullOrUndefined(allImg[i].getAttribute('src'))) {
@@ -23309,6 +23455,28 @@ class PasteCleanup {
23309
23455
  this.cropImageHandler(this.parent.inputElement);
23310
23456
  }
23311
23457
  }
23458
+ convertBlobToBase64(element) {
23459
+ const imgElem = element.querySelectorAll('img');
23460
+ for (let i = 0; i < imgElem.length; i++) {
23461
+ if (imgElem[i].getAttribute('src') &&
23462
+ imgElem[i].getAttribute('src').startsWith("blob")) {
23463
+ let blobImageUrl = imgElem[i].getAttribute('src');
23464
+ let img = new Image();
23465
+ const onImageLoadEvent = () => {
23466
+ let canvas = document.createElement('canvas');
23467
+ let ctx = canvas.getContext('2d');
23468
+ canvas.width = img.width;
23469
+ canvas.height = img.height;
23470
+ ctx.drawImage(img, 0, 0);
23471
+ let base64String = canvas.toDataURL('image/png');
23472
+ imgElem[i].src = base64String;
23473
+ img.removeEventListener('load', onImageLoadEvent);
23474
+ };
23475
+ img.src = blobImageUrl;
23476
+ img.addEventListener('load', onImageLoadEvent);
23477
+ }
23478
+ }
23479
+ }
23312
23480
  cropImageHandler(element) {
23313
23481
  const allImgElm = element.querySelectorAll('.e-img-cropped');
23314
23482
  if (allImgElm.length > 0) {
@@ -23347,9 +23515,20 @@ class PasteCleanup {
23347
23515
  }
23348
23516
  }
23349
23517
  else {
23350
- this.imgUploading(this.parent.inputElement);
23351
- if (this.parent.iframeSettings.enable) {
23352
- this.parent.updateValue();
23518
+ if (!isNullOrUndefined(this.parent.insertImageSettings.saveUrl) && !isNullOrUndefined(this.parent.insertImageSettings.path) && !isNullOrUndefined(this.parent.inputElement.querySelectorAll("img")) && this.parent.inputElement.querySelectorAll("img")[0].src.startsWith("blob")) {
23519
+ this.convertBlobToBase64(this.parent.inputElement);
23520
+ setTimeout(() => {
23521
+ this.imgUploading(this.parent.inputElement);
23522
+ if (this.parent.iframeSettings.enable) {
23523
+ this.parent.updateValue();
23524
+ }
23525
+ }, 20);
23526
+ }
23527
+ else {
23528
+ this.imgUploading(this.parent.inputElement);
23529
+ if (this.parent.iframeSettings.enable) {
23530
+ this.parent.updateValue();
23531
+ }
23353
23532
  }
23354
23533
  }
23355
23534
  }
@@ -24129,9 +24308,6 @@ class FullScreen {
24129
24308
  && !isNullOrUndefined(this.parent.quickToolbarModule)) {
24130
24309
  this.parent.quickToolbarModule.hideQuickToolbars();
24131
24310
  }
24132
- if (this.parent.showTooltip && !isNullOrUndefined(document.querySelector('.e-tooltip-wrap'))) {
24133
- this.parent.notify(destroyTooltip, { args: event });
24134
- }
24135
24311
  this.scrollableParent = getScrollableParent(this.parent.element);
24136
24312
  if (!this.parent.element.classList.contains(CLS_FULL_SCREEN)) {
24137
24313
  const evenArgs = {
@@ -24183,9 +24359,6 @@ class FullScreen {
24183
24359
  && !isNullOrUndefined(this.parent.quickToolbarModule)) {
24184
24360
  this.parent.quickToolbarModule.hideQuickToolbars();
24185
24361
  }
24186
- if (this.parent.showTooltip && !isNullOrUndefined(document.querySelector('.e-tooltip-wrap'))) {
24187
- this.parent.notify(destroyTooltip, { args: event });
24188
- }
24189
24362
  if (this.parent.element.classList.contains(CLS_FULL_SCREEN)) {
24190
24363
  const evenArgs = {
24191
24364
  cancel: false,
@@ -26586,13 +26759,13 @@ class Image$1 {
26586
26759
  selectParentEle = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);
26587
26760
  if (!originalEvent.ctrlKey && originalEvent.key && (originalEvent.key.length === 1 || originalEvent.action === 'enter') &&
26588
26761
  (!isNullOrUndefined(selectParentEle[0]) && selectParentEle[0].tagName === 'IMG') && selectParentEle[0].parentElement) {
26589
- const prev = selectParentEle[0].parentElement.childNodes[0];
26590
26762
  if (this.contentModule.getEditPanel().querySelector('.e-img-resize')) {
26591
26763
  this.removeResizeEle();
26592
26764
  }
26593
- this.parent.formatter.editorManager.nodeSelection.setSelectionText(this.contentModule.getDocument(), prev, prev, prev.textContent.length, prev.textContent.length);
26594
26765
  removeClass([selectParentEle[0]], 'e-img-focus');
26595
- this.quickToolObj.imageQTBar.hidePopup();
26766
+ if (this.quickToolObj && this.quickToolObj.imageQTBar) {
26767
+ this.quickToolObj.imageQTBar.hidePopup();
26768
+ }
26596
26769
  }
26597
26770
  }
26598
26771
  if (originalEvent.ctrlKey && (originalEvent.keyCode === 89 || originalEvent.keyCode === 90)) {
@@ -27353,7 +27526,12 @@ class Image$1 {
27353
27526
  animationSettings: { effect: 'None' },
27354
27527
  close: (event) => {
27355
27528
  if (this.isImgUploaded) {
27356
- this.uploadObj.remove();
27529
+ if (this.dialogObj.element.querySelector('.e-file-abort-btn')) {
27530
+ this.dialogObj.element.querySelector('.e-file-abort-btn').click();
27531
+ }
27532
+ else {
27533
+ this.uploadObj.remove();
27534
+ }
27357
27535
  }
27358
27536
  this.parent.isBlur = false;
27359
27537
  if (event && !isNullOrUndefined(event.event) && event.event.returnValue) {
@@ -28860,7 +29038,12 @@ class Audio {
28860
29038
  animationSettings: { effect: 'None' },
28861
29039
  close: (event) => {
28862
29040
  if (this.isAudioUploaded) {
28863
- this.uploadObj.removing();
29041
+ if (this.dialogObj.element.querySelector('.e-file-abort-btn')) {
29042
+ this.dialogObj.element.querySelector('.e-file-abort-btn').click();
29043
+ }
29044
+ else {
29045
+ this.uploadObj.remove();
29046
+ }
28864
29047
  }
28865
29048
  this.parent.isBlur = false;
28866
29049
  if (event && !isNullOrUndefined(event.event) && event.event.returnValue) {
@@ -30211,7 +30394,12 @@ class Video {
30211
30394
  animationSettings: { effect: 'None' },
30212
30395
  close: (event) => {
30213
30396
  if (this.isVideoUploaded) {
30214
- this.uploadObj.removing();
30397
+ if (this.dialogObj.element.querySelector('.e-file-abort-btn')) {
30398
+ this.dialogObj.element.querySelector('.e-file-abort-btn').click();
30399
+ }
30400
+ else {
30401
+ this.uploadObj.remove();
30402
+ }
30215
30403
  }
30216
30404
  this.parent.isBlur = false;
30217
30405
  if (event && !isNullOrUndefined(event.event) && event.event.returnValue) {
@@ -32438,7 +32626,8 @@ class Table {
32438
32626
  const argument = ((Browser.isDevice || (!isNullOrUndefined(args.args)
32439
32627
  && !isNullOrUndefined(args.args.originalEvent) &&
32440
32628
  args.args.originalEvent.action === 'insert-table')
32441
- || proxy.parent.inlineMode.enable || !isNullOrUndefined(proxy.parent.quickToolbarSettings.text)) ? args :
32629
+ || proxy.parent.inlineMode.enable || ((!isNullOrUndefined(proxy.parent.quickToolbarSettings.text)) &&
32630
+ !(args instanceof PointerEvent))) ? args :
32442
32631
  this);
32443
32632
  proxy.tableInsert(proxy.rowTextBox.value, proxy.columnTextBox.value, e, argument);
32444
32633
  }
@@ -32887,12 +33076,12 @@ const executeGroup = {
32887
33076
  }
32888
33077
  };
32889
33078
 
32890
- var __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
32891
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
32892
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
32893
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
32894
- return c > 3 && r && Object.defineProperty(target, key, r), r;
32895
- };
33079
+ var __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
33080
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
33081
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
33082
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
33083
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
33084
+ };
32896
33085
  /**
32897
33086
  * Configures the toolbar settings of the RichTextEditor.
32898
33087
  */
@@ -33282,12 +33471,12 @@ __decorate$2([
33282
33471
  Property(bulletFormatList)
33283
33472
  ], BulletFormatList.prototype, "types", void 0);
33284
33473
 
33285
- var __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
33286
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
33287
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
33288
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
33289
- return c > 3 && r && Object.defineProperty(target, key, r), r;
33290
- };
33474
+ var __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
33475
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
33476
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
33477
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
33478
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
33479
+ };
33291
33480
  /**
33292
33481
  * Objects used for configuring the iframe resources properties.
33293
33482
  */
@@ -33314,12 +33503,12 @@ __decorate$3([
33314
33503
  Complex({}, Resources)
33315
33504
  ], IFrameSettings.prototype, "resources", void 0);
33316
33505
 
33317
- var __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
33318
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
33319
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
33320
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
33321
- return c > 3 && r && Object.defineProperty(target, key, r), r;
33322
- };
33506
+ var __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
33507
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
33508
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
33509
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
33510
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
33511
+ };
33323
33512
  /**
33324
33513
  * Configures the inlineMode property of the RTE.
33325
33514
  */
@@ -33370,16 +33559,18 @@ class EnterKeyAction {
33370
33559
  this.getRangeNode();
33371
33560
  let isTableEnter = true;
33372
33561
  this.formatTags = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'blockquote'];
33373
- const isCursorAtTableEnd = this.range.collapsed && (this.range.startContainer.nodeType === 1) &&
33374
- this.range.startContainer.isContentEditable &&
33375
- this.range.startContainer.childNodes[this.range.startOffset - 1] &&
33376
- this.range.startContainer.childNodes[this.range.startOffset - 1].nodeName === 'TABLE';
33377
- const isCursorAtTableStart = this.range.collapsed && (this.range.startContainer.nodeType === 1) &&
33378
- this.range.startContainer.isContentEditable && this.range.startContainer.childNodes[this.range.startOffset] &&
33379
- this.range.startContainer.childNodes[this.range.startOffset].nodeName === 'TABLE';
33380
- if (isCursorAtTableEnd || isCursorAtTableStart) {
33381
- this.handleCursorAtTableSide(e, isCursorAtTableStart, isCursorAtTableEnd);
33382
- return;
33562
+ const tableImagCursor = this.processedTableImageCursor();
33563
+ if (tableImagCursor.start || tableImagCursor.end) {
33564
+ if (tableImagCursor.startName === 'TABLE' || tableImagCursor.endName === 'TABLE') { // Default browser action prevented and hanled manually.
33565
+ this.handleCursorAtTableSide(e, tableImagCursor.start, tableImagCursor.end);
33566
+ return;
33567
+ }
33568
+ }
33569
+ if (tableImagCursor.start || tableImagCursor.end || this.range.startContainer.nodeName === 'IMG') {
33570
+ if (this.parent.enterKey === 'BR' && (tableImagCursor.startName === 'IMG' || tableImagCursor.endName === 'IMG' || this.range.startContainer.nodeName === 'IMG')) { // Default browser action prevented and hanled manually.
33571
+ this.handleEnterKeyAtImageSide(e, tableImagCursor.start, tableImagCursor.end);
33572
+ return;
33573
+ }
33383
33574
  }
33384
33575
  if (!isNullOrUndefined(this.startNode.closest('TABLE')) && !isNullOrUndefined(this.endNode.closest('TABLE'))) {
33385
33576
  isTableEnter = false;
@@ -33747,7 +33938,6 @@ class EnterKeyAction {
33747
33938
  const outerBRElem = this.parent.createElement('br');
33748
33939
  if (this.range.startOffset === 0 && this.range.endOffset === 0 &&
33749
33940
  !isNullOrUndefined(currentParent.previousSibling) && currentParent.previousSibling.nodeName === 'BR' && currentParent.nodeName !== 'P' && currentParent.nodeName !== 'DIV') {
33750
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
33751
33941
  newElem = this.parent.formatter.editorManager.nodeCutter.SplitNode(this.range, currentParent, false).cloneNode(true);
33752
33942
  this.parent.formatter.editorManager.domNode.insertAfter(outerBRElem, currentParent);
33753
33943
  this.insertFocusContent();
@@ -33777,7 +33967,7 @@ class EnterKeyAction {
33777
33967
  }
33778
33968
  e.args.preventDefault();
33779
33969
  }
33780
- this.parent.trigger(actionComplete, { requestType: shiftKey ? 'ShiftEnterAction' : 'EnterAction', args: e.args });
33970
+ this.triggerActionComplete(e, shiftKey);
33781
33971
  }
33782
33972
  });
33783
33973
  }
@@ -33847,6 +34037,9 @@ class EnterKeyAction {
33847
34037
  }
33848
34038
  return insertElem;
33849
34039
  }
34040
+ triggerActionComplete(e, shiftKey) {
34041
+ this.parent.trigger(actionComplete, { requestType: shiftKey ? 'ShiftEnterAction' : 'EnterAction', args: e.args });
34042
+ }
33850
34043
  handleCursorAtTableSide(e, isStart, isEnd) {
33851
34044
  if (this.parent.enterKey !== 'BR') {
33852
34045
  const shiftKey = e.args.shiftKey;
@@ -33876,19 +34069,99 @@ class EnterKeyAction {
33876
34069
  }
33877
34070
  this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), newElement, 0);
33878
34071
  e.args.preventDefault();
33879
- this.parent.trigger(actionComplete, { requestType: shiftKey ? 'ShiftEnterAction' : 'EnterAction', args: e.args });
34072
+ this.triggerActionComplete(e, shiftKey);
33880
34073
  }
33881
34074
  });
33882
34075
  }
33883
34076
  }
34077
+ handleEnterKeyAtImageSide(e, isStart, isEnd) {
34078
+ const actionBeginArgs = {
34079
+ cancel: false,
34080
+ name: actionBegin,
34081
+ requestType: e.args.shiftKey ? 'ShiftEnterAction' : 'EnterAction',
34082
+ originalEvent: e.args
34083
+ };
34084
+ let directRange = false;
34085
+ if (this.range.startContainer.nodeName === 'IMG' && this.range.startOffset === 0) {
34086
+ directRange = true;
34087
+ }
34088
+ this.parent.trigger(actionBegin, actionBeginArgs, (actionBeginArgs) => {
34089
+ if (!actionBeginArgs.cancel) {
34090
+ if (this.parent.enterKey === 'BR') {
34091
+ const newElement = this.parent.createElement('BR');
34092
+ let imageElement;
34093
+ if (directRange) {
34094
+ imageElement = this.range.startContainer;
34095
+ imageElement.parentElement.insertBefore(newElement, imageElement);
34096
+ this.parent.formatter.editorManager.nodeSelection.
34097
+ setCursorPoint(this.parent.contentModule.getDocument(), imageElement, 0);
34098
+ }
34099
+ if (isStart) {
34100
+ imageElement = this.range.startContainer.childNodes[this.range.startOffset];
34101
+ imageElement.parentElement.insertBefore(newElement, imageElement);
34102
+ this.parent.formatter.editorManager.nodeSelection.
34103
+ setCursorPoint(this.parent.contentModule.getDocument(), imageElement, 0);
34104
+ }
34105
+ if (isEnd) {
34106
+ imageElement = this.range.startContainer.childNodes[this.range.startOffset - 1];
34107
+ if (!isNullOrUndefined(imageElement.nextSibling)) {
34108
+ imageElement.parentElement.insertBefore(newElement, imageElement.nextSibling);
34109
+ this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), newElement.nextSibling, 0);
34110
+ }
34111
+ else if (isNullOrUndefined(imageElement.nextSibling)) {
34112
+ imageElement.parentElement.appendChild(newElement);
34113
+ const brElement = this.parent.createElement('BR');
34114
+ imageElement.parentElement.appendChild(brElement);
34115
+ this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), brElement, 0);
34116
+ }
34117
+ }
34118
+ e.args.preventDefault();
34119
+ this.triggerActionComplete(e, e.args.shiftKey);
34120
+ }
34121
+ }
34122
+ });
34123
+ }
34124
+ isTableOrImageStart() {
34125
+ const customHandlerElements = ['IMG', 'TABLE'];
34126
+ const startContainer = this.range.startContainer;
34127
+ const startOffset = this.range.startOffset;
34128
+ const isCursorAtStart = this.range.collapsed && (startContainer.nodeType === 1) &&
34129
+ startContainer.isContentEditable && startContainer.childNodes[startOffset] &&
34130
+ (customHandlerElements.indexOf(startContainer.childNodes[startOffset].nodeName) > -1);
34131
+ if (isCursorAtStart) {
34132
+ return { start: isCursorAtStart, startNodeName: startContainer.childNodes[startOffset].nodeName };
34133
+ }
34134
+ else {
34135
+ return { start: false, startNodeName: '' };
34136
+ }
34137
+ }
34138
+ isTableOrImageEnd() {
34139
+ const customHandlerElements = ['IMG', 'TABLE'];
34140
+ const startContainer = this.range.startContainer;
34141
+ const startOffset = this.range.startOffset;
34142
+ const isCursorAtEnd = this.range.collapsed && (startContainer.nodeType === 1) &&
34143
+ startContainer.isContentEditable && startContainer.childNodes[startOffset - 1] &&
34144
+ (customHandlerElements.indexOf(startContainer.childNodes[startOffset - 1].nodeName) > -1);
34145
+ if (isCursorAtEnd) {
34146
+ return { end: isCursorAtEnd, endNodeName: startContainer.childNodes[startOffset - 1].nodeName };
34147
+ }
34148
+ else {
34149
+ return { end: false, endNodeName: '' };
34150
+ }
34151
+ }
34152
+ processedTableImageCursor() {
34153
+ const { start, startNodeName } = this.isTableOrImageStart();
34154
+ const { end, endNodeName } = this.isTableOrImageEnd();
34155
+ return { start, startName: startNodeName, end, endName: endNodeName };
34156
+ }
33884
34157
  }
33885
34158
 
33886
- var __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
33887
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
33888
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
33889
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
33890
- return c > 3 && r && Object.defineProperty(target, key, r), r;
33891
- };
34159
+ var __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
34160
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
34161
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
34162
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
34163
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
34164
+ };
33892
34165
  /**
33893
34166
  * Represents the Rich Text Editor component.
33894
34167
  * ```html
@@ -34026,6 +34299,7 @@ let RichTextEditor = class RichTextEditor extends Component {
34026
34299
  this.persistData();
34027
34300
  setStyleAttribute(this.element, { 'width': formatUnit(this.width) });
34028
34301
  attributes(this.element, { role: 'application', 'aria-label': 'Rich Text Editor' });
34302
+ this.beforeRenderClassValue = this.element.getAttribute('class');
34029
34303
  }
34030
34304
  persistData() {
34031
34305
  if (this.enablePersistence && this.originalElement.tagName === 'TEXTAREA') {
@@ -34896,6 +35170,10 @@ let RichTextEditor = class RichTextEditor extends Component {
34896
35170
  if (this.isDestroyed || !this.isRendered) {
34897
35171
  return;
34898
35172
  }
35173
+ this.element.className = this.beforeRenderClassValue;
35174
+ this.removeHtmlAttributes();
35175
+ this.removeAttributes();
35176
+ this.beforeRenderClassValue = null;
34899
35177
  if (!isNullOrUndefined(this.timeInterval)) {
34900
35178
  clearInterval(this.timeInterval);
34901
35179
  this.timeInterval = null;
@@ -34963,8 +35241,6 @@ let RichTextEditor = class RichTextEditor extends Component {
34963
35241
  }
34964
35242
  }
34965
35243
  }
34966
- this.removeHtmlAttributes();
34967
- this.removeAttributes();
34968
35244
  super.destroy();
34969
35245
  this.isRendered = false;
34970
35246
  }
@@ -34995,6 +35271,7 @@ let RichTextEditor = class RichTextEditor extends Component {
34995
35271
  this.element.removeAttribute('aria-disabled');
34996
35272
  this.element.removeAttribute('role');
34997
35273
  this.element.removeAttribute('tabindex');
35274
+ this.element.removeAttribute('aria-label');
34998
35275
  }
34999
35276
  destroyDependentModules() {
35000
35277
  /* destroy dependent modules */
@@ -35248,7 +35525,7 @@ let RichTextEditor = class RichTextEditor extends Component {
35248
35525
  }
35249
35526
  }
35250
35527
  updatePanelValue() {
35251
- let value = this.value;
35528
+ let value = this.listOrderCorrection(this.value);
35252
35529
  value = (this.enableHtmlEncode && this.value) ? decode(value) : value;
35253
35530
  const getTextArea = this.element.querySelector('.' + CLS_RTE_SOURCE_CODE_TXTAREA);
35254
35531
  if (value) {
@@ -35292,6 +35569,17 @@ let RichTextEditor = class RichTextEditor extends Component {
35292
35569
  this.countModule.refresh();
35293
35570
  }
35294
35571
  }
35572
+ listOrderCorrection(value) {
35573
+ const valueElementWrapper = this.createElement('div');
35574
+ valueElementWrapper.innerHTML = value;
35575
+ const listElements = valueElementWrapper.querySelectorAll('UL, OL');
35576
+ for (let i = 0; i < listElements.length; i++) {
35577
+ if (!isNullOrUndefined(listElements[i]) && !isNullOrUndefined(listElements[i].parentElement) && !isNullOrUndefined(listElements[i].previousElementSibling) && (listElements[i].parentElement.nodeName === 'UL' || listElements[i].parentElement.nodeName === 'OL')) {
35578
+ listElements[i].previousElementSibling.appendChild(listElements[i]);
35579
+ }
35580
+ }
35581
+ return valueElementWrapper.innerHTML;
35582
+ }
35295
35583
  setHeight(height) {
35296
35584
  if (height !== 'auto') {
35297
35585
  this.element.style.height = formatUnit(height);