@syncfusion/ej2-richtexteditor 25.1.40 → 25.1.41-85815

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 (283) hide show
  1. package/.eslintrc.json +259 -259
  2. package/CHANGELOG.md +2067 -1973
  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 +760 -307
  7. package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
  8. package/dist/es6/ej2-richtexteditor.es5.js +861 -405
  9. package/dist/es6/ej2-richtexteditor.es5.js.map +1 -1
  10. package/ej2-richtexteditor-component.sln +30 -0
  11. package/helpers/e2e/index.js +3 -3
  12. package/helpers/e2e/rte-helper.js +13 -13
  13. package/license +9 -9
  14. package/package.json +74 -74
  15. package/src/common/interface.d.ts +22 -8
  16. package/src/common/util.d.ts +8 -0
  17. package/src/common/util.js +56 -1
  18. package/src/editor-manager/base/classes.d.ts +1 -1
  19. package/src/editor-manager/base/classes.js +1 -1
  20. package/src/editor-manager/base/editor-manager.d.ts +3 -3
  21. package/src/editor-manager/base/editor-manager.js +8 -6
  22. package/src/editor-manager/base/enum.d.ts +2 -2
  23. package/src/editor-manager/base/interface.d.ts +9 -9
  24. package/src/editor-manager/base/types.d.ts +1 -1
  25. package/src/editor-manager/plugin/alignments.d.ts +2 -2
  26. package/src/editor-manager/plugin/alignments.js +5 -2
  27. package/src/editor-manager/plugin/audio.d.ts +3 -3
  28. package/src/editor-manager/plugin/audio.js +3 -3
  29. package/src/editor-manager/plugin/clearformat-exec.d.ts +2 -2
  30. package/src/editor-manager/plugin/clearformat-exec.js +2 -2
  31. package/src/editor-manager/plugin/clearformat.d.ts +1 -1
  32. package/src/editor-manager/plugin/clearformat.js +1 -1
  33. package/src/editor-manager/plugin/dom-node.d.ts +54 -34
  34. package/src/editor-manager/plugin/dom-node.js +139 -36
  35. package/src/editor-manager/plugin/format-painter-actions.d.ts +1 -1
  36. package/src/editor-manager/plugin/format-painter-actions.js +1 -1
  37. package/src/editor-manager/plugin/formats.d.ts +2 -2
  38. package/src/editor-manager/plugin/formats.js +3 -3
  39. package/src/editor-manager/plugin/image.d.ts +3 -3
  40. package/src/editor-manager/plugin/image.js +3 -3
  41. package/src/editor-manager/plugin/indents.d.ts +2 -2
  42. package/src/editor-manager/plugin/indents.js +5 -2
  43. package/src/editor-manager/plugin/insert-methods.d.ts +4 -4
  44. package/src/editor-manager/plugin/insert-methods.js +4 -4
  45. package/src/editor-manager/plugin/insert-text.d.ts +2 -2
  46. package/src/editor-manager/plugin/insert-text.js +2 -2
  47. package/src/editor-manager/plugin/inserthtml-exec.d.ts +2 -2
  48. package/src/editor-manager/plugin/inserthtml-exec.js +2 -2
  49. package/src/editor-manager/plugin/inserthtml.d.ts +2 -2
  50. package/src/editor-manager/plugin/inserthtml.js +13 -4
  51. package/src/editor-manager/plugin/isformatted.d.ts +8 -8
  52. package/src/editor-manager/plugin/isformatted.js +8 -8
  53. package/src/editor-manager/plugin/link.d.ts +2 -2
  54. package/src/editor-manager/plugin/link.js +2 -2
  55. package/src/editor-manager/plugin/lists.d.ts +2 -2
  56. package/src/editor-manager/plugin/lists.js +84 -61
  57. package/src/editor-manager/plugin/ms-word-clean-up.d.ts +1 -1
  58. package/src/editor-manager/plugin/ms-word-clean-up.js +4 -4
  59. package/src/editor-manager/plugin/nodecutter.d.ts +6 -6
  60. package/src/editor-manager/plugin/nodecutter.js +8 -8
  61. package/src/editor-manager/plugin/selection-commands.d.ts +1 -1
  62. package/src/editor-manager/plugin/selection-commands.js +1 -1
  63. package/src/editor-manager/plugin/selection-exec.d.ts +2 -2
  64. package/src/editor-manager/plugin/selection-exec.js +2 -2
  65. package/src/editor-manager/plugin/table.d.ts +2 -2
  66. package/src/editor-manager/plugin/table.js +2 -2
  67. package/src/editor-manager/plugin/toolbar-status.d.ts +2 -2
  68. package/src/editor-manager/plugin/toolbar-status.js +2 -2
  69. package/src/editor-manager/plugin/undo.d.ts +6 -6
  70. package/src/editor-manager/plugin/undo.js +9 -7
  71. package/src/editor-manager/plugin/video.d.ts +3 -3
  72. package/src/editor-manager/plugin/video.js +3 -3
  73. package/src/markdown-parser/base/interface.d.ts +10 -10
  74. package/src/markdown-parser/base/markdown-parser.d.ts +3 -3
  75. package/src/markdown-parser/base/markdown-parser.js +3 -3
  76. package/src/markdown-parser/base/types.d.ts +1 -1
  77. package/src/markdown-parser/plugin/clearformat.d.ts +2 -2
  78. package/src/markdown-parser/plugin/clearformat.js +2 -2
  79. package/src/markdown-parser/plugin/formats.d.ts +2 -2
  80. package/src/markdown-parser/plugin/formats.js +2 -2
  81. package/src/markdown-parser/plugin/insert-text.d.ts +2 -2
  82. package/src/markdown-parser/plugin/insert-text.js +2 -2
  83. package/src/markdown-parser/plugin/link.d.ts +2 -2
  84. package/src/markdown-parser/plugin/link.js +2 -2
  85. package/src/markdown-parser/plugin/markdown-selection.d.ts +14 -14
  86. package/src/markdown-parser/plugin/markdown-selection.js +14 -14
  87. package/src/markdown-parser/plugin/md-selection-formats.d.ts +1 -1
  88. package/src/markdown-parser/plugin/md-selection-formats.js +1 -1
  89. package/src/markdown-parser/plugin/table.d.ts +3 -3
  90. package/src/markdown-parser/plugin/table.js +3 -3
  91. package/src/markdown-parser/plugin/undo.d.ts +6 -6
  92. package/src/markdown-parser/plugin/undo.js +6 -6
  93. package/src/rich-text-editor/actions/base-quick-toolbar.d.ts +9 -9
  94. package/src/rich-text-editor/actions/base-quick-toolbar.js +9 -9
  95. package/src/rich-text-editor/actions/base-toolbar.d.ts +3 -3
  96. package/src/rich-text-editor/actions/base-toolbar.js +3 -3
  97. package/src/rich-text-editor/actions/color-picker.d.ts +2 -2
  98. package/src/rich-text-editor/actions/color-picker.js +2 -2
  99. package/src/rich-text-editor/actions/count.d.ts +3 -3
  100. package/src/rich-text-editor/actions/count.js +3 -3
  101. package/src/rich-text-editor/actions/dropdown-buttons.d.ts +2 -2
  102. package/src/rich-text-editor/actions/dropdown-buttons.js +2 -2
  103. package/src/rich-text-editor/actions/emoji-picker.d.ts +1 -1
  104. package/src/rich-text-editor/actions/emoji-picker.js +2 -2
  105. package/src/rich-text-editor/actions/enter-key.d.ts +5 -0
  106. package/src/rich-text-editor/actions/enter-key.js +107 -13
  107. package/src/rich-text-editor/actions/full-screen.d.ts +3 -3
  108. package/src/rich-text-editor/actions/full-screen.js +3 -9
  109. package/src/rich-text-editor/actions/html-editor.d.ts +5 -3
  110. package/src/rich-text-editor/actions/html-editor.js +106 -26
  111. package/src/rich-text-editor/actions/keyboard-model.d.ts +16 -16
  112. package/src/rich-text-editor/actions/keyboard.d.ts +1 -1
  113. package/src/rich-text-editor/actions/keyboard.js +20 -20
  114. package/src/rich-text-editor/actions/markdown-editor.d.ts +2 -2
  115. package/src/rich-text-editor/actions/markdown-editor.js +2 -2
  116. package/src/rich-text-editor/actions/paste-clean-up.d.ts +2 -1
  117. package/src/rich-text-editor/actions/paste-clean-up.js +57 -16
  118. package/src/rich-text-editor/actions/quick-toolbar.d.ts +9 -9
  119. package/src/rich-text-editor/actions/quick-toolbar.js +9 -9
  120. package/src/rich-text-editor/actions/toolbar.d.ts +13 -13
  121. package/src/rich-text-editor/actions/toolbar.js +13 -13
  122. package/src/rich-text-editor/actions/xhtml-validation.d.ts +1 -1
  123. package/src/rich-text-editor/actions/xhtml-validation.js +1 -1
  124. package/src/rich-text-editor/base/classes.d.ts +121 -121
  125. package/src/rich-text-editor/base/classes.js +121 -121
  126. package/src/rich-text-editor/base/constant.d.ts +158 -158
  127. package/src/rich-text-editor/base/constant.js +158 -158
  128. package/src/rich-text-editor/base/enum.d.ts +5 -5
  129. package/src/rich-text-editor/base/enum.js +10 -10
  130. package/src/rich-text-editor/base/interface.d.ts +53 -53
  131. package/src/rich-text-editor/base/interface.js +1 -1
  132. package/src/rich-text-editor/base/rich-text-editor-model.d.ts +891 -891
  133. package/src/rich-text-editor/base/rich-text-editor.d.ts +63 -61
  134. package/src/rich-text-editor/base/rich-text-editor.js +89 -67
  135. package/src/rich-text-editor/base/util.d.ts +1 -1
  136. package/src/rich-text-editor/base/util.js +1 -1
  137. package/src/rich-text-editor/formatter/formatter.d.ts +8 -8
  138. package/src/rich-text-editor/formatter/formatter.js +8 -8
  139. package/src/rich-text-editor/formatter/html-formatter.d.ts +2 -2
  140. package/src/rich-text-editor/formatter/html-formatter.js +15 -15
  141. package/src/rich-text-editor/formatter/markdown-formatter.d.ts +2 -2
  142. package/src/rich-text-editor/formatter/markdown-formatter.js +15 -15
  143. package/src/rich-text-editor/models/iframe-settings-model.d.ts +26 -26
  144. package/src/rich-text-editor/models/iframe-settings.js +19 -19
  145. package/src/rich-text-editor/models/inline-mode-model.d.ts +11 -11
  146. package/src/rich-text-editor/models/inline-mode.js +19 -19
  147. package/src/rich-text-editor/models/toolbar-settings-model.d.ts +760 -760
  148. package/src/rich-text-editor/models/toolbar-settings.js +19 -19
  149. package/src/rich-text-editor/renderer/audio-module.d.ts +1 -1
  150. package/src/rich-text-editor/renderer/audio-module.js +7 -2
  151. package/src/rich-text-editor/renderer/content-renderer.d.ts +6 -6
  152. package/src/rich-text-editor/renderer/content-renderer.js +6 -6
  153. package/src/rich-text-editor/renderer/dialog-renderer.d.ts +2 -2
  154. package/src/rich-text-editor/renderer/dialog-renderer.js +2 -2
  155. package/src/rich-text-editor/renderer/iframe-content-renderer.d.ts +4 -4
  156. package/src/rich-text-editor/renderer/iframe-content-renderer.js +18 -18
  157. package/src/rich-text-editor/renderer/image-module.d.ts +1 -1
  158. package/src/rich-text-editor/renderer/image-module.js +13 -8
  159. package/src/rich-text-editor/renderer/link-module.d.ts +1 -1
  160. package/src/rich-text-editor/renderer/link-module.js +4 -1
  161. package/src/rich-text-editor/renderer/markdown-renderer.d.ts +6 -6
  162. package/src/rich-text-editor/renderer/markdown-renderer.js +6 -6
  163. package/src/rich-text-editor/renderer/popup-renderer.d.ts +5 -5
  164. package/src/rich-text-editor/renderer/popup-renderer.js +5 -5
  165. package/src/rich-text-editor/renderer/render.d.ts +2 -2
  166. package/src/rich-text-editor/renderer/render.js +2 -2
  167. package/src/rich-text-editor/renderer/table-module.d.ts +1 -1
  168. package/src/rich-text-editor/renderer/table-module.js +6 -2
  169. package/src/rich-text-editor/renderer/toolbar-renderer.d.ts +11 -9
  170. package/src/rich-text-editor/renderer/toolbar-renderer.js +23 -19
  171. package/src/rich-text-editor/renderer/video-module.d.ts +1 -1
  172. package/src/rich-text-editor/renderer/video-module.js +7 -2
  173. package/src/rich-text-editor/renderer/view-source.d.ts +6 -6
  174. package/src/rich-text-editor/renderer/view-source.js +6 -6
  175. package/src/rich-text-editor/services/renderer-factory.d.ts +3 -3
  176. package/src/rich-text-editor/services/renderer-factory.js +3 -3
  177. package/src/rich-text-editor/services/service-locator.d.ts +3 -3
  178. package/src/rich-text-editor/services/service-locator.js +3 -3
  179. package/src/selection/selection.d.ts +22 -22
  180. package/src/selection/selection.js +22 -22
  181. package/styles/_all.scss +1 -1
  182. package/styles/bootstrap-dark.css +739 -801
  183. package/styles/bootstrap-dark.scss +4 -1
  184. package/styles/bootstrap.css +723 -801
  185. package/styles/bootstrap.scss +4 -1
  186. package/styles/bootstrap4.css +726 -803
  187. package/styles/bootstrap4.scss +4 -1
  188. package/styles/bootstrap5-dark.css +750 -840
  189. package/styles/bootstrap5-dark.scss +4 -1
  190. package/styles/bootstrap5.css +749 -839
  191. package/styles/bootstrap5.scss +4 -1
  192. package/styles/fabric-dark.css +724 -797
  193. package/styles/fabric-dark.scss +4 -1
  194. package/styles/fabric.css +720 -797
  195. package/styles/fabric.scss +4 -1
  196. package/styles/fluent-dark.css +727 -820
  197. package/styles/fluent-dark.scss +4 -1
  198. package/styles/fluent.css +726 -819
  199. package/styles/fluent.scss +4 -1
  200. package/styles/fluent2.css +4255 -0
  201. package/styles/fluent2.scss +4 -0
  202. package/styles/highcontrast-light.css +695 -795
  203. package/styles/highcontrast-light.scss +4 -1
  204. package/styles/highcontrast.css +717 -797
  205. package/styles/highcontrast.scss +4 -1
  206. package/styles/material-dark.css +716 -798
  207. package/styles/material-dark.scss +4 -1
  208. package/styles/material.css +713 -800
  209. package/styles/material.scss +4 -1
  210. package/styles/material3-dark.css +751 -857
  211. package/styles/material3-dark.scss +4 -1
  212. package/styles/material3.css +751 -857
  213. package/styles/material3.scss +4 -1
  214. package/styles/rich-text-editor/_all.scss +2 -2
  215. package/styles/rich-text-editor/_bds-definition.scss +290 -285
  216. package/styles/rich-text-editor/_bigger.scss +610 -0
  217. package/styles/rich-text-editor/_bootstrap-dark-definition.scss +291 -287
  218. package/styles/rich-text-editor/_bootstrap-definition.scss +349 -343
  219. package/styles/rich-text-editor/_bootstrap4-definition.scss +476 -470
  220. package/styles/rich-text-editor/_bootstrap5-definition.scss +278 -272
  221. package/styles/rich-text-editor/_bootstrap5.3-definition.scss +278 -0
  222. package/styles/rich-text-editor/_fabric-dark-definition.scss +275 -269
  223. package/styles/rich-text-editor/_fabric-definition.scss +273 -267
  224. package/styles/rich-text-editor/_fluent-definition.scss +279 -273
  225. package/styles/rich-text-editor/_fluent2-definition.scss +287 -0
  226. package/styles/rich-text-editor/_fusionnew-definition.scss +276 -271
  227. package/styles/rich-text-editor/_highcontrast-definition.scss +274 -267
  228. package/styles/rich-text-editor/_highcontrast-light-definition.scss +273 -267
  229. package/styles/rich-text-editor/_layout.scss +2175 -2268
  230. package/styles/rich-text-editor/_material-dark-definition.scss +278 -272
  231. package/styles/rich-text-editor/_material-definition.scss +276 -270
  232. package/styles/rich-text-editor/_material3-definition.scss +278 -272
  233. package/styles/rich-text-editor/_tailwind-definition.scss +273 -267
  234. package/styles/rich-text-editor/_tailwind4-definition.scss +278 -0
  235. package/styles/rich-text-editor/_theme.scss +844 -927
  236. package/styles/rich-text-editor/bootstrap-dark.css +739 -801
  237. package/styles/rich-text-editor/bootstrap.css +723 -801
  238. package/styles/rich-text-editor/bootstrap4.css +726 -803
  239. package/styles/rich-text-editor/bootstrap5-dark.css +750 -840
  240. package/styles/rich-text-editor/bootstrap5.css +749 -839
  241. package/styles/rich-text-editor/fabric-dark.css +724 -797
  242. package/styles/rich-text-editor/fabric.css +720 -797
  243. package/styles/rich-text-editor/fluent-dark.css +727 -820
  244. package/styles/rich-text-editor/fluent.css +726 -819
  245. package/styles/rich-text-editor/fluent2.css +4255 -0
  246. package/styles/rich-text-editor/fluent2.scss +4 -0
  247. package/styles/rich-text-editor/highcontrast-light.css +695 -795
  248. package/styles/rich-text-editor/highcontrast.css +717 -797
  249. package/styles/rich-text-editor/icons/_bds.scss +372 -351
  250. package/styles/rich-text-editor/icons/_bootstrap-dark.scss +373 -352
  251. package/styles/rich-text-editor/icons/_bootstrap.scss +373 -352
  252. package/styles/rich-text-editor/icons/_bootstrap4.scss +373 -352
  253. package/styles/rich-text-editor/icons/_bootstrap5.3.scss +372 -0
  254. package/styles/rich-text-editor/icons/_bootstrap5.scss +372 -351
  255. package/styles/rich-text-editor/icons/_fabric-dark.scss +373 -352
  256. package/styles/rich-text-editor/icons/_fabric.scss +373 -352
  257. package/styles/rich-text-editor/icons/_fluent.scss +372 -351
  258. package/styles/rich-text-editor/icons/_fluent2.scss +369 -0
  259. package/styles/rich-text-editor/icons/_fusionnew.scss +357 -348
  260. package/styles/rich-text-editor/icons/_highcontrast-light.scss +361 -352
  261. package/styles/rich-text-editor/icons/_highcontrast.scss +373 -352
  262. package/styles/rich-text-editor/icons/_material-dark.scss +373 -352
  263. package/styles/rich-text-editor/icons/_material.scss +373 -352
  264. package/styles/rich-text-editor/icons/_material3.scss +372 -351
  265. package/styles/rich-text-editor/icons/_tailwind.scss +372 -351
  266. package/styles/rich-text-editor/icons/_tailwind4.scss +372 -0
  267. package/styles/rich-text-editor/material-dark.css +716 -798
  268. package/styles/rich-text-editor/material.css +713 -800
  269. package/styles/rich-text-editor/material3-dark.css +751 -857
  270. package/styles/rich-text-editor/material3-dark.scss +1 -1
  271. package/styles/rich-text-editor/material3.css +751 -857
  272. package/styles/rich-text-editor/material3.scss +1 -1
  273. package/styles/rich-text-editor/tailwind-dark.css +740 -829
  274. package/styles/rich-text-editor/tailwind.css +740 -829
  275. package/styles/tailwind-dark.css +740 -829
  276. package/styles/tailwind-dark.scss +4 -1
  277. package/styles/tailwind.css +740 -829
  278. package/styles/tailwind.scss +4 -1
  279. package/dist/ej2-richtexteditor.min.js +0 -10
  280. package/dist/global/ej2-richtexteditor.min.js +0 -11
  281. package/dist/global/ej2-richtexteditor.min.js.map +0 -1
  282. package/dist/global/index.d.ts +0 -14
  283. 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
@@ -1651,15 +1651,15 @@ var DialogType;
1651
1651
  /**
1652
1652
  * Defines types to be used as inserted image.
1653
1653
  */
1654
- var UploadRequest;
1655
- (function (UploadRequest) {
1656
- /** Defines UploadRequest as Uploaded */
1657
- UploadRequest["Uploaded"] = "Uploaded";
1658
- /** Defines UploadRequest as Dropped */
1659
- UploadRequest["Dropped"] = "Dropped";
1660
- /** Defines UploadRequest as Pasted */
1661
- UploadRequest["Pasted"] = "Pasted";
1662
- })(UploadRequest || (UploadRequest = {}));
1654
+ var ImageInputSource;
1655
+ (function (ImageInputSource) {
1656
+ /** Defines ImageInputSource as Uploaded */
1657
+ ImageInputSource["Uploaded"] = "Uploaded";
1658
+ /** Defines ImageInputSource as Dropped */
1659
+ ImageInputSource["Dropped"] = "Dropped";
1660
+ /** Defines ImageInputSource as Pasted */
1661
+ ImageInputSource["Pasted"] = "Pasted";
1662
+ })(ImageInputSource || (ImageInputSource = {}));
1663
1663
 
1664
1664
  /* eslint-disable */
1665
1665
  /**
@@ -4477,6 +4477,10 @@ function updateTextNode$1(value, enterAction) {
4477
4477
  tableElm[i].classList.remove('e-rte-paste-onenote-table');
4478
4478
  continue;
4479
4479
  }
4480
+ else if (tableElm[i].classList.contains('e-rte-paste-html-table')) {
4481
+ tableElm[i].classList.remove('e-rte-paste-html-table');
4482
+ continue;
4483
+ }
4480
4484
  }
4481
4485
  }
4482
4486
  const imageElm = resultElm.querySelectorAll('img');
@@ -4570,17 +4574,68 @@ function nestedListCleanUp(range) {
4570
4574
  item.remove();
4571
4575
  });
4572
4576
  }
4577
+ else {
4578
+ break;
4579
+ }
4573
4580
  }
4574
4581
  let liElem = (range.startContainer.nodeName === "#text" ? range.startContainer.parentElement : range.startContainer).querySelectorAll("li");
4575
4582
  if (liElem.length > 0) {
4576
4583
  liElem.forEach((item) => {
4577
- if (item.firstChild.nodeName === "OL" || item.firstChild.nodeName === "UL") {
4584
+ if (!isNullOrUndefined(item.firstChild) && (item.firstChild.nodeName === "OL" || item.firstChild.nodeName === "UL")) {
4578
4585
  item.style.listStyleType = "none";
4579
4586
  }
4580
4587
  });
4581
4588
  }
4582
4589
  }
4583
4590
  }
4591
+ /**
4592
+ * Method to scroll the content to the cursor position
4593
+ *
4594
+ * @param {Document} document - specifies the document.
4595
+ * @param {HTMLElement | HTMLBodyElement} inputElement - specifies the input element.
4596
+ * @returns {void}
4597
+ */
4598
+ function scrollToCursor(document, inputElement) {
4599
+ const rootElement = inputElement.nodeName === 'BODY' ?
4600
+ inputElement.ownerDocument.defaultView.frameElement.closest('.e-richtexteditor') :
4601
+ inputElement.closest('.e-richtexteditor');
4602
+ const height = rootElement.style.height;
4603
+ if (document.getSelection().rangeCount === 0) {
4604
+ return;
4605
+ }
4606
+ const range = document.getSelection().getRangeAt(0);
4607
+ const finalFocusElement = range.startContainer.nodeName === '#text' ? range.startContainer.parentElement :
4608
+ range.startContainer;
4609
+ const rect = finalFocusElement.getBoundingClientRect();
4610
+ const cursorTop = rect.top;
4611
+ const cursorBottom = rect.bottom;
4612
+ const rootRect = rootElement.getBoundingClientRect();
4613
+ const hasMargin = rootElement.querySelectorAll('.e-count-enabled, .e-resize-enabled').length > 0;
4614
+ if (inputElement.nodeName === 'BODY') {
4615
+ if (height === 'auto') {
4616
+ if (window.innerHeight < cursorTop) {
4617
+ finalFocusElement.scrollIntoView(false);
4618
+ }
4619
+ }
4620
+ else {
4621
+ if (cursorTop > inputElement.getBoundingClientRect().height) {
4622
+ finalFocusElement.scrollIntoView({ block: 'nearest', inline: 'nearest' });
4623
+ }
4624
+ }
4625
+ }
4626
+ else {
4627
+ if (height === 'auto') {
4628
+ if (window.innerHeight < cursorTop) {
4629
+ finalFocusElement.scrollIntoView({ block: 'end', inline: 'nearest' });
4630
+ }
4631
+ }
4632
+ else {
4633
+ if (cursorBottom > rootRect.bottom) {
4634
+ rootElement.querySelector('.e-rte-content').scrollTop += (cursorBottom - rootRect.bottom) + (hasMargin ? 20 : 0);
4635
+ }
4636
+ }
4637
+ }
4638
+ }
4584
4639
 
4585
4640
  /**
4586
4641
  * Update Toolbar Status
@@ -5091,6 +5146,7 @@ class ToolbarRenderer {
5091
5146
  openDelay: 400,
5092
5147
  opensOn: 'Hover',
5093
5148
  beforeRender: this.tooltipBeforeRender.bind(this),
5149
+ beforeOpen: this.tooltipBeforeOpen.bind(this),
5094
5150
  cssClass: this.parent.getCssClass(),
5095
5151
  windowCollision: true,
5096
5152
  position: 'BottomCenter'
@@ -5212,7 +5268,7 @@ class ToolbarRenderer {
5212
5268
  if ((divNode.textContent.trim() !== ''
5213
5269
  && args.element.childNodes[index].textContent.trim() === divNode.textContent.trim()) ||
5214
5270
  ((args.items[0].command === 'Formats' && !isNullOrUndefined(toolbarStatus.formats) && this.parent.format.types[index].value.toLowerCase() === toolbarStatus.formats.toLowerCase() && args.element.childNodes[index].classList.contains(this.parent.format.types[index].cssClass))
5215
- || (args.items[0].command === 'Font' && !isNullOrUndefined(toolbarStatus.fontname) && this.parent.fontFamily.items[index].value.toLowerCase() === toolbarStatus.fontname.toLowerCase() && args.element.childNodes[index].classList.contains(this.parent.fontFamily.items[index].cssClass)))) {
5271
+ || (args.items[0].subCommand === 'FontName' && args.items[0].command === 'Font' && !isNullOrUndefined(toolbarStatus.fontname) && !isNullOrUndefined(this.parent.fontFamily.items[index]) && this.parent.fontFamily.items[index].value.toLowerCase() === toolbarStatus.fontname.toLowerCase() && args.element.childNodes[index].classList.contains(this.parent.fontFamily.items[index].cssClass)))) {
5216
5272
  if (!args.element.childNodes[index].classList.contains('e-active')) {
5217
5273
  addClass([args.element.childNodes[index]], 'e-active');
5218
5274
  }
@@ -5396,8 +5452,6 @@ class ToolbarRenderer {
5396
5452
  target: colorPicker.element.parentElement, cssClass: css,
5397
5453
  enablePersistence: this.parent.enablePersistence, enableRtl: this.parent.enableRtl,
5398
5454
  beforeOpen: (dropDownArgs) => {
5399
- colorPicker.inline = true;
5400
- colorPicker.dataBind();
5401
5455
  if (proxy.parent.readonly || !proxy.parent.enabled) {
5402
5456
  dropDownArgs.cancel = true;
5403
5457
  return;
@@ -5535,14 +5589,18 @@ class ToolbarRenderer {
5535
5589
  const colorPicker = new ColorPicker({
5536
5590
  enablePersistence: this.parent.enablePersistence,
5537
5591
  enableRtl: this.parent.enableRtl,
5538
- inline: false,
5539
- 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',
5540
5595
  created: () => {
5541
5596
  const value = (item === 'backgroundcolor') ? proxy.parent.backgroundColor.default : proxy.parent.fontColor.default;
5542
- colorPicker.setProperties({ value: value });
5597
+ colorPicker.cssClass = ((item === 'backgroundcolor') ? CLS_BACKGROUND_COLOR_PICKER : CLS_FONT_COLOR_PICKER) + ' ' + args.cssClass;
5598
+ colorPicker.value = value;
5543
5599
  },
5544
5600
  mode: ((item === 'backgroundcolor') ? proxy.parent.backgroundColor.mode : proxy.parent.fontColor.mode),
5545
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,
5546
5604
  beforeTileRender: (args) => {
5547
5605
  args.element.classList.add(CLS_COLOR_PALETTE);
5548
5606
  args.element.classList.add(CLS_CUSTOM_TILE);
@@ -5587,14 +5645,15 @@ class ToolbarRenderer {
5587
5645
  }
5588
5646
  });
5589
5647
  colorPicker.isStringTemplate = true;
5590
- colorPicker.columns = (item === 'backgroundcolor') ? this.parent.backgroundColor.columns : this.parent.fontColor.columns;
5591
- colorPicker.presetColors = (item === 'backgroundcolor') ? this.parent.backgroundColor.colorCode :
5592
- this.parent.fontColor.colorCode;
5593
- colorPicker.cssClass = ((item === 'backgroundcolor') ? CLS_BACKGROUND_COLOR_PICKER : CLS_FONT_COLOR_PICKER) + ' ' + args.cssClass;
5594
5648
  colorPicker.createElement = this.parent.createElement;
5595
5649
  colorPicker.appendTo(document.getElementById(args.target));
5596
5650
  return colorPicker;
5597
5651
  }
5652
+ tooltipBeforeOpen(args) {
5653
+ if (args.element) {
5654
+ args.element.setAttribute('data-rte-id', this.parent.getID());
5655
+ }
5656
+ }
5598
5657
  /**
5599
5658
  * The function is used to render Rich Text Editor toolbar
5600
5659
  *
@@ -7152,12 +7211,12 @@ class Toolbar$2 {
7152
7211
  }
7153
7212
  }
7154
7213
 
7155
- var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
7156
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
7157
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
7158
- 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;
7159
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7160
- };
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
+ };
7161
7220
  var KeyboardEvents_1;
7162
7221
  const keyCode = {
7163
7222
  'backspace': 8,
@@ -12192,7 +12251,7 @@ class DOMNode {
12192
12251
  unWrap(element) {
12193
12252
  const parent = element.parentNode;
12194
12253
  let unWrapNode = [];
12195
- while (element.firstChild) {
12254
+ while (element.firstChild && (element.previousSibling !== this.parent.querySelector('.e-mention-chip') || element.textContent !== ' ')) {
12196
12255
  unWrapNode.push(element.firstChild);
12197
12256
  parent.insertBefore(element.firstChild, element);
12198
12257
  }
@@ -12542,6 +12601,109 @@ class DOMNode {
12542
12601
  }
12543
12602
  return null;
12544
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
+ }
12545
12707
  /**
12546
12708
  * blockNodes method
12547
12709
  *
@@ -13049,7 +13211,7 @@ class Lists {
13049
13211
  e.event.preventDefault();
13050
13212
  }
13051
13213
  }
13052
- onKeyUp() {
13214
+ onKeyUp(e) {
13053
13215
  if (!isNullOrUndefined(this.commonLIParent) && !isNullOrUndefined(this.commonLIParent.querySelector('.removeList'))) {
13054
13216
  const currentLIElem = this.commonLIParent.querySelector('.removeList');
13055
13217
  while (!isNullOrUndefined(currentLIElem.firstChild)) {
@@ -13057,6 +13219,14 @@ class Lists {
13057
13219
  }
13058
13220
  detach(currentLIElem);
13059
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
+ }
13060
13230
  }
13061
13231
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
13062
13232
  firstListBackSpace(range, _e) {
@@ -13298,6 +13468,8 @@ class Lists {
13298
13468
  else {
13299
13469
  if (prevSibling.tagName === 'LI') {
13300
13470
  const nestedElement = createElement(elements[i].parentNode.tagName);
13471
+ nestedElement.style.listStyleType =
13472
+ elements[i].parentNode.style.listStyleType;
13301
13473
  append([nestedElement], prevSibling);
13302
13474
  append([elements[i]], nestedElement);
13303
13475
  }
@@ -13347,61 +13519,7 @@ class Lists {
13347
13519
  let listsNodes = this.domNode.blockNodes(true);
13348
13520
  if (e.enterAction === 'BR') {
13349
13521
  this.setSelectionBRConfig();
13350
- const allSelectedNode = this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument);
13351
- const selectedNodes = this.parent.nodeSelection.getSelectionNodes(allSelectedNode);
13352
- const currentFormatNodes = [];
13353
- if (selectedNodes.length === 0) {
13354
- selectedNodes.push(listsNodes[0]);
13355
- }
13356
- for (let i = 0; i < selectedNodes.length; i++) {
13357
- let currentNode = selectedNodes[i];
13358
- let previousCurrentNode;
13359
- while (!this.parent.domNode.isBlockNode(currentNode) && currentNode !== this.parent.editableElement) {
13360
- previousCurrentNode = currentNode;
13361
- currentNode = currentNode.parentElement;
13362
- }
13363
- if (this.parent.domNode.isBlockNode(currentNode) && currentNode === this.parent.editableElement) {
13364
- currentFormatNodes.push(previousCurrentNode);
13365
- }
13366
- }
13367
- for (let i = 0; i < currentFormatNodes.length; i++) {
13368
- if (!this.parent.domNode.isBlockNode(currentFormatNodes[i])) {
13369
- let currentNode = currentFormatNodes[i];
13370
- let previousNode = currentNode;
13371
- while (currentNode === this.parent.editableElement) {
13372
- previousNode = currentNode;
13373
- currentNode = currentNode.parentElement;
13374
- }
13375
- let tempElem;
13376
- if (this.parent.domNode.isBlockNode(previousNode.parentElement) &&
13377
- previousNode.parentElement === this.parent.editableElement) {
13378
- tempElem = createElement('p');
13379
- previousNode.parentElement.insertBefore(tempElem, previousNode);
13380
- tempElem.appendChild(previousNode);
13381
- }
13382
- else {
13383
- tempElem = previousNode;
13384
- }
13385
- let preNode = tempElem.previousSibling;
13386
- while (!isNullOrUndefined(preNode) && preNode.nodeName !== 'BR' &&
13387
- !this.parent.domNode.isBlockNode(preNode)) {
13388
- tempElem.firstChild.parentElement.insertBefore(preNode, tempElem.firstChild);
13389
- preNode = tempElem.previousSibling;
13390
- }
13391
- if (!isNullOrUndefined(preNode) && preNode.nodeName === 'BR') {
13392
- detach(preNode);
13393
- }
13394
- let postNode = tempElem.nextSibling;
13395
- while (!isNullOrUndefined(postNode) && postNode.nodeName !== 'BR' &&
13396
- !this.parent.domNode.isBlockNode(postNode)) {
13397
- tempElem.appendChild(postNode);
13398
- postNode = tempElem.nextSibling;
13399
- }
13400
- if (!isNullOrUndefined(postNode) && postNode.nodeName === 'BR') {
13401
- detach(postNode);
13402
- }
13403
- }
13404
- }
13522
+ this.parent.domNode.convertToBlockNodes(this.parent.domNode.blockNodes(), true);
13405
13523
  this.setSelectionBRConfig();
13406
13524
  listsNodes = this.parent.domNode.blockNodes();
13407
13525
  }
@@ -13458,7 +13576,7 @@ class Lists {
13458
13576
  }
13459
13577
  let elemAtt;
13460
13578
  elements[i].style.removeProperty('margin-left');
13461
- 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]);
13462
13580
  if (elements[i].getAttribute('contenteditable') === 'true'
13463
13581
  && elements[i].childNodes.length === 1 && elements[i].childNodes[0].nodeName === 'TABLE') {
13464
13582
  const listEle = document.createElement(type);
@@ -13500,6 +13618,16 @@ class Lists {
13500
13618
  }
13501
13619
  }
13502
13620
  this.cleanNode();
13621
+ if (e.enterAction === 'BR') {
13622
+ const spansToRemove = document.querySelectorAll('span#removeSpan');
13623
+ spansToRemove.forEach((span) => {
13624
+ const fragment = document.createDocumentFragment();
13625
+ while (span.firstChild) {
13626
+ fragment.appendChild(span.firstChild);
13627
+ }
13628
+ span.parentNode.replaceChild(fragment, span);
13629
+ });
13630
+ }
13503
13631
  this.parent.editableElement.focus();
13504
13632
  if (isIDevice$1()) {
13505
13633
  setEditFrameFocus(this.parent.editableElement, selector);
@@ -13569,6 +13697,13 @@ class Lists {
13569
13697
  for (let c = 0; c < liParents.length; c++) {
13570
13698
  const node = liParents[c];
13571
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
+ }
13572
13707
  if (toFindtopOlUl && (liParents[c].parentElement.parentElement.nodeName === 'OL' || liParents[c].parentElement.parentElement.nodeName === 'UL')) {
13573
13708
  toFindtopOlUl = false;
13574
13709
  const preElement = liParents[c].parentElement.parentElement;
@@ -13588,9 +13723,43 @@ class Lists {
13588
13723
  node.previousElementSibling.lastChild.append(node);
13589
13724
  }
13590
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
+ }
13591
13733
  }
13592
13734
  if (firstNodeOL) {
13593
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
+ }
13594
13763
  }
13595
13764
  }
13596
13765
  findUnSelected(temp, elements) {
@@ -13693,10 +13862,16 @@ class Lists {
13693
13862
  parentNode.removeAttribute("style");
13694
13863
  }
13695
13864
  }
13696
- const wrapper = '<' + DEFAULT_TAG + wrapperclass + this.domNode.attributes(element) + '></' + DEFAULT_TAG + '>';
13865
+ const wrapper = '<' + e.enterAction + wrapperclass + this.domNode.attributes(element) + '></' + e.enterAction + '>';
13697
13866
  if (e.enterAction !== 'BR') {
13698
13867
  this.domNode.wrapInner(element, this.domNode.parseHTMLFragment(wrapper));
13699
13868
  }
13869
+ else {
13870
+ const wrapperSpan = '<span class=e-rte-wrap-inner id=removeSpan></span>';
13871
+ const br = document.createElement('br');
13872
+ this.domNode.wrapInner(element, this.domNode.parseHTMLFragment(wrapperSpan));
13873
+ element.appendChild(br);
13874
+ }
13700
13875
  }
13701
13876
  else if (this.domNode.contents(element)[0].nodeType === 3) {
13702
13877
  const replace = this.domNode.createTagString(DEFAULT_TAG, parentNode, this.parent.domNode.encode(this.domNode.contents(element)[0].textContent));
@@ -13709,8 +13884,18 @@ class Lists {
13709
13884
  }
13710
13885
  else {
13711
13886
  const childNode = element.firstChild;
13887
+ if (childNode) {
13888
+ const attributes$$1 = element.parentElement.attributes;
13889
+ if (attributes$$1.length > 0) {
13890
+ for (let d = 0; d < attributes$$1.length; d++) {
13891
+ const e = attributes$$1[d];
13892
+ const existingValue = childNode.getAttribute(e.nodeName);
13893
+ const parentValue = (element.parentElement).getAttribute(e.nodeName);
13894
+ childNode.setAttribute(e.nodeName, existingValue ? parentValue + ' ' + existingValue : parentValue);
13895
+ }
13896
+ }
13897
+ }
13712
13898
  className = childNode.getAttribute('class');
13713
- attributes(childNode, this.domNode.rawAttributes(parentNode));
13714
13899
  if (className && childNode.getAttribute('class')) {
13715
13900
  attributes(childNode, { 'class': className + ' ' + childNode.getAttribute('class') });
13716
13901
  }
@@ -13875,7 +14060,7 @@ class NodeCutter {
13875
14060
  fragment = this.spliceEmptyNode(fragment, false);
13876
14061
  if (fragment && fragment.childNodes.length > 0) {
13877
14062
  const isEmpty = (fragment.childNodes.length === 1 && fragment.childNodes[0].nodeName !== 'IMG' && !(fragment.querySelectorAll('img').length > 0)
13878
- && this.isRteElm(fragment) && fragment.textContent === '') ? true : false;
14063
+ && this.isRteElm(fragment) && fragment.textContent.trim() === '') ? true : false;
13879
14064
  if (!isEmpty) {
13880
14065
  if (node) {
13881
14066
  InsertMethods.AppendBefore(fragment, node);
@@ -13896,7 +14081,7 @@ class NodeCutter {
13896
14081
  fragment = this.spliceEmptyNode(fragment, true);
13897
14082
  if (fragment && fragment.childNodes.length > 0) {
13898
14083
  const isEmpty = (fragment.childNodes.length === 1 && fragment.childNodes[0].nodeName !== 'IMG'
13899
- && this.isRteElm(fragment) && fragment.textContent === '') ? true : false;
14084
+ && this.isRteElm(fragment) && fragment.textContent.trim() === '') ? true : false;
13900
14085
  if (!isEmpty) {
13901
14086
  if (node) {
13902
14087
  InsertMethods.AppendBefore(fragment, node, true);
@@ -14085,8 +14270,8 @@ class Formats {
14085
14270
  }
14086
14271
  }
14087
14272
  }
14088
- 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) {
14089
- 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);
14090
14275
  range.startContainer.parentElement.insertBefore(pTag, range.startContainer);
14091
14276
  pTag.appendChild(range.startContainer);
14092
14277
  this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, pTag, 1);
@@ -14498,11 +14683,14 @@ class InsertHtml {
14498
14683
  range.startContainer === range.endContainer;
14499
14684
  const isCollapsed = range.collapsed;
14500
14685
  const nodes = this.getNodeCollection(range, nodeSelection, node);
14501
- const closestParentNode = (node.nodeName.toLowerCase() === 'table') ? this.closestEle(nodes[0].parentNode, editNode) : nodes[0];
14686
+ const closestParentNode = (node.nodeName.toLowerCase() === 'table') ? (!isNullOrUndefined(nodes[0]) ? this.closestEle(nodes[0].parentNode, editNode) : range.startContainer) : nodes[0];
14502
14687
  if (closestParentNode && closestParentNode.nodeName === 'LI' && node.nodeName.toLowerCase() === 'table') {
14503
14688
  this.insertTableInList(range, node, closestParentNode, nodes[0], nodeCutter);
14504
14689
  return;
14505
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
+ }
14506
14694
  if (isExternal || (!isNullOrUndefined(node) && !isNullOrUndefined(node.classList) &&
14507
14695
  node.classList.contains('pasteContent'))) {
14508
14696
  this.pasteInsertHTML(nodes, node, range, nodeSelection, nodeCutter, docElement, isCollapsed, closestParentNode, editNode, enterAction);
@@ -14543,7 +14731,7 @@ class InsertHtml {
14543
14731
  nodes[index].parentNode.removeChild(nodes[index]);
14544
14732
  }
14545
14733
  }
14546
- if (sibNode) {
14734
+ if (!isNullOrUndefined(sibNode) && !isNullOrUndefined(sibNode.parentNode)) {
14547
14735
  InsertMethods.AppendBefore(node, sibNode, true);
14548
14736
  }
14549
14737
  else {
@@ -14794,6 +14982,12 @@ class InsertHtml {
14794
14982
  node.parentNode.replaceChild(fragment, node);
14795
14983
  }
14796
14984
  }
14985
+ if (lastSelectionNode.nodeName === 'TABLE') {
14986
+ const pTag = createElement('p');
14987
+ pTag.appendChild(createElement('br'));
14988
+ lastSelectionNode.parentElement.insertBefore(pTag, lastSelectionNode.nextSibling);
14989
+ lastSelectionNode = pTag;
14990
+ }
14797
14991
  if (lastSelectionNode.nodeName === '#text') {
14798
14992
  this.placeCursorEnd(lastSelectionNode, node, nodeSelection, docElement, editNode);
14799
14993
  }
@@ -15420,7 +15614,10 @@ class Alignments {
15420
15614
  let save = this.parent.nodeSelection.save(range, this.parent.currentDocument);
15421
15615
  if (!isTableAlign) {
15422
15616
  this.parent.domNode.setMarker(save);
15423
- 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
+ }
15424
15621
  for (let i = 0; i < alignmentNodes.length; i++) {
15425
15622
  const parentNode = alignmentNodes[i];
15426
15623
  setStyleAttribute(parentNode, { 'text-align': this.alignments[e.subCommand] });
@@ -15502,7 +15699,10 @@ class Indents {
15502
15699
  const range = this.parent.nodeSelection.getRange(this.parent.currentDocument);
15503
15700
  let save = this.parent.nodeSelection.save(range, this.parent.currentDocument);
15504
15701
  this.parent.domNode.setMarker(save);
15505
- 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
+ }
15506
15706
  const parentNodes = indentsNodes.slice();
15507
15707
  const listsNodes = [];
15508
15708
  for (let i = 0; i < parentNodes.length; i++) {
@@ -18895,6 +19095,7 @@ class UndoRedoManager {
18895
19095
  this.parent.editableElement.innerHTML = '';
18896
19096
  this.parent.editableElement.appendChild(removedContent.cloneNode(true));
18897
19097
  this.parent.editableElement.focus();
19098
+ scrollToCursor(this.parent.currentDocument, this.parent.editableElement);
18898
19099
  if (isIDevice$1()) {
18899
19100
  setEditFrameFocus(this.parent.editableElement, e.selector);
18900
19101
  }
@@ -18927,6 +19128,7 @@ class UndoRedoManager {
18927
19128
  this.parent.editableElement.innerHTML = '';
18928
19129
  this.parent.editableElement.appendChild(addedContent.cloneNode(true));
18929
19130
  this.parent.editableElement.focus();
19131
+ scrollToCursor(this.parent.currentDocument, this.parent.editableElement);
18930
19132
  if (isIDevice$1()) {
18931
19133
  setEditFrameFocus(this.parent.editableElement, e.selector);
18932
19134
  }
@@ -19027,9 +19229,9 @@ class MsWordPaste {
19027
19229
  const patern2 = /class="?Mso|style="[^ ]*\bmso-/i;
19028
19230
  const patern3 = /(class="?Mso|class='?Mso|class="?Xl|class='?Xl|class=Xl|style="[^"]*\bmso-|style='[^']*\bmso-|w:WordDocument)/gi;
19029
19231
  const pattern4 = /style='mso-width-source:/i;
19232
+ const source = this.findSource(elm);
19030
19233
  if (patern.test(tempHTMLContent) || patern2.test(tempHTMLContent) || patern3.test(tempHTMLContent) ||
19031
19234
  pattern4.test(tempHTMLContent)) {
19032
- const source = this.findSource(elm);
19033
19235
  tempHTMLContent = tempHTMLContent.replace(/<img[^>]+>/i, '');
19034
19236
  this.addListClass(elm);
19035
19237
  listNodes = this.cleanUp(elm, listNodes);
@@ -19054,7 +19256,7 @@ class MsWordPaste {
19054
19256
  e.callBack(elm.innerHTML, this.cropImageDimensions, source);
19055
19257
  }
19056
19258
  else {
19057
- e.callBack(elm.innerHTML);
19259
+ e.callBack(elm.innerHTML, null, source);
19058
19260
  }
19059
19261
  }
19060
19262
  addDoubleBr(elm) {
@@ -19782,7 +19984,7 @@ class MsWordPaste {
19782
19984
  !isNormalList) {
19783
19985
  prevList = null;
19784
19986
  }
19785
- const pElement = createElement('p', { className: 'MsoNormal' });
19987
+ const pElement = createElement('p', { className: 'MsoNoSpacing' });
19786
19988
  pElement.innerHTML = collection[index].content.join(' ');
19787
19989
  if ((collection[index].nestedLevel === 1) &&
19788
19990
  (listCount === 0 || lfo !== collection[index].listFormatOverride) &&
@@ -20858,12 +21060,14 @@ class EditorManager {
20858
21060
  case 'alignments':
20859
21061
  this.observer.notify(ALIGNMENT_TYPE, {
20860
21062
  subCommand: value, event: event, callBack: callBack,
20861
- selector: selector,
20862
- value: exeValue
21063
+ selector: selector, value: exeValue, enterAction: enterAction
20863
21064
  });
20864
21065
  break;
20865
21066
  case 'indents':
20866
- 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
+ });
20867
21071
  break;
20868
21072
  case 'links':
20869
21073
  this.observer.notify(LINK, { command: command, value: value, item: exeValue, event: event, callBack: callBack });
@@ -21192,115 +21396,116 @@ class ContentRender {
21192
21396
  }
21193
21397
  }
21194
21398
 
21195
- const IFRAMEHEADER = `
21196
- <!DOCTYPE html>
21197
- <html>
21198
- <head>
21199
- <meta charset='utf-8' />
21200
- <style>
21201
- @charset "UTF-8";
21202
- body {
21203
- font-family: "Roboto", sans-serif;
21204
- font-size: 14px;
21205
- }
21206
- html, body{height: 100%;margin: 0;}
21207
- body.e-cursor{cursor:default}
21208
- span.e-selected-node {background-color: #939393;color: white;}
21209
- span.e-selected-node.e-highlight {background-color: #1d9dd8;}
21210
- body{color:#333;word-wrap:break-word;padding: 8px;box-sizing: border-box;}
21211
- .e-rte-image, .e-rte-video {border: 0;cursor: pointer;display:
21212
- block;float: none;height: auto;margin: 5px auto;max-width: 100%;position: relative;}
21213
- .e-rte-audio {border: 0;cursor: pointer;display:
21214
- block;float: none;margin: 5px auto;max-width: 100%;position: relative;}
21215
- .e-rte-image.e-imginline, .e-rte-audio.e-audio-inline, .e-rte-video.e-video-inline {display: inline-block;float: none;
21216
- margin-left: 5px;margin-right: 5px;max-width: calc(100% - (2 * 5px));padding: 1px;vertical-align: bottom;}
21217
- .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;}
21218
- .e-rte-image.e-imgright, .e-rte-video.e-video-right { float: right; margin: 0 auto;margin-left: 5px;text-align: right;}
21219
- .e-rte-image.e-imgleft, .e-rte-video.e-video-left {float: left;margin: 0 auto;margin-right: 5px;text-align: left;}
21220
- .e-img-caption { display: inline-block; float: none; margin: 5px auto; max-width: 100%;position: relative;}
21221
- .e-img-caption.e-caption-inline {display: inline-block;float: none;
21222
- margin: 5px auto;margin-left: 5px;margin-right: 5px;max-width: calc(100% - (2 * 5px));
21223
- position: relativetext-align: center;vertical-align: bottom;}
21224
- .e-rte-img-caption.e-imgcenter {display: contents; margin-left: auto; margin-right: auto;}
21225
- .e-rte-img-caption.e-imgright {display: contents; margin-left: auto; margin-right: 0;}
21226
- .e-rte-img-caption.e-imgleft {display: contents;margin-left: 0;margin-right: auto;}
21227
- .e-img-caption.e-rte-img-caption.e-imgbreak {display: contents;}
21228
- .e-img-inner {box-sizing: border-box;display: block;font-size: 16px;font-weight: initial;
21229
- margin: auto;opacity: .9;text-align: center;width: 100%;}
21230
- .e-img-wrap {display: inline-block;margin: auto;padding: 0;text-align: center;width: 100%;}
21231
- .e-imgleft, .e-video-left {float: left;margin: 0 5px 0 0;text-align: left;}
21232
- .e-imgright, .e-video-right {float: right;margin: 0 0 0 5px;text-align: right;}
21233
- .e-imgcenter, .e-video-center {cursor: pointer;display: block;float: none;height: auto;margin: 5px auto;max-width: 100%;position: relative;}
21234
- .e-control img:not(.e-resize) {border: 2px solid transparent; z-index: 1000}
21235
- .e-imginline , .e-audio-inline, .e-video-inline {display: inline-block;float: none;margin-left: 5px;margin-right: 5px;
21236
- max-width: calc(100% - (2 * 5px));vertical-align: bottom;}
21237
- .e-imgbreak, .e-audio-break, .e-video-break {border: 0;cursor: pointer;
21238
- display: block;float: none;height: auto;margin: 5px auto;max-width: 100%;position: relative;}
21239
- .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;}
21240
- img.e-img-focus::selection, audio.e-audio-focus::selection, .e-video-focus::selection { background: transparent;color: transparent;}
21241
- span.e-rte-imageboxmark, span.e-rte-videoboxmark { width: 10px; height: 10px; position: absolute; display: block;
21242
- background: #4a90e2; border: 1px solid #fff; z-index: 1000;}
21243
- .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; }
21244
- .e-mob-rte span.e-rte-imageboxmark, .e-mob-rte span.e-rte-videoboxmark { background: #fff; border: 1px solid #4a90e2;
21245
- border-radius: 15px; height: 20px; width: 20px; }
21246
- .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; }
21247
- .e-rte-content .e-content img.e-resize, .e-rte-content .e-content video.e-resize { z-index: 1000; }
21248
- .e-img-caption .e-img-inner { outline: 0; }
21249
- .e-rte-img-caption.e-imgleft .e-img-inner { float: left; text-align: left; }
21250
- .e-rte-img-caption.e-imgright .e-img-inner { float: right; text-align: right; }
21251
- .e-rte-img-caption.e-imgleft .e-img-wrap, .e-rte-img-caption.e-imgright .e-img-wrap { display: contents; }
21252
- .e-img-caption a:focus-visible { outline: none; }
21253
- .e-rte-img-caption .e-rte-image.e-imgright { margin-left: auto; margin-right: 0; }
21254
- .e-rte-img-caption .e-rte-image.e-imgleft { margin: 0; }
21255
- body{box-sizing: border-box;min-height: 100px;outline: 0 solid transparent;
21256
- overflow-x: auto;padding: 16px;position: relative;text-align: inherit;z-index: 2;}
21257
- p{margin: 0 0 10px;margin-bottom: 10px;}
21258
- li{margin-bottom: 10px;}
21259
- h1{font-size: 2.17em;font-weight: 400;line-height: 1;margin: 10px 0;}
21260
- h2{font-size: 1.74em;font-weight: 400;margin: 10px 0;}
21261
- h3{font-size: 1.31em;font-weight: 400;margin: 10px 0;}
21262
- h4{font-size: 16px;font-weight: 400;line-height: 1.5;margin: 0;}
21263
- h5{font-size: 00.8em;font-weight: 400;margin: 0;}
21264
- h6{font-size: 00.65em;font-weight: 400;margin: 0;}
21265
- blockquote{margin: 10px 0;margin-left: 0;padding-left: 5px;border-left: solid 2px #5c5c5c;}
21266
- pre{background-color: inherit;border: 0;border-radius: 0;color: #333;
21267
- font-size: inherit;line-height: inherit;margin: 0 0 10px;overflow: visible;padding: 0;
21268
- white-space: pre-wrap;word-break: inherit;word-wrap: break-word;}
21269
- strong, b{font-weight: 700;}
21270
- a{text-decoration: none;user-select: auto;}
21271
- a:hover{text-decoration: underline;};
21272
- p:last-child, pre:last-child, blockquote:last-child{margin-bottom: 0;}
21273
- h3+h4, h4+h5, h5+h6{margin-top: 00.6em;}
21274
- ul:last-child{margin-bottom: 0;}
21275
- table { border-collapse: collapse; empty-cells: show;}
21276
- table td,table th {border: 1px solid #BDBDBD; height: 20px; padding: 2px 5px; vertical-align: middle;}
21277
- table.e-alternate-border tbody tr:nth-child(2n) {background-color: #F5F5F5;}
21278
- table th {background-color: #E0E0E0;}
21279
- table.e-dashed-border td,table.e-dashed-border th { border: 1px dashed #BDBDBD}
21280
- table .e-cell-select {border: 1px double #4a90e2;}
21281
- span.e-table-box { cursor: nwse-resize; display: block; height: 10px; position: absolute; width: 10px; }
21282
- span.e-table-box.e-rmob {height: 14px;width: 14px;}
21283
- .e-row-resize, .e-column-resize { background-color: transparent; background-repeat: repeat;
21284
- bottom: 0;cursor: col-resize;height: 1px;overflow: visible;position: absolute;width: 1px; }
21285
- .e-row-resize { cursor: row-resize; height: 1px;}
21286
- .e-table-rhelper { cursor: col-resize; opacity: .87;position: absolute;}
21287
- .e-table-rhelper.e-column-helper { width: 1px; }
21288
- .e-table-rhelper.e-row-helper {height: 1px;}
21289
- .e-reicon::before { border-bottom: 6px solid transparent; border-right: 6px solid;
21290
- border-top: 6px solid transparent; content: ''; display: block; height: 0;
21291
- position: absolute; right: 4px; top: 4px; width: 20px; }
21292
- .e-reicon::after { border-bottom: 6px solid transparent; border-left: 6px solid;
21293
- border-top: 6px solid transparent; content: ''; display: block;
21294
- height: 0; left: 4px; position: absolute; top: 4px; width: 20px; z-index: 3; }
21295
- .e-row-helper.e-reicon::after { top: 10px; transform: rotate(90deg); }
21296
- .e-row-helper.e-reicon::before { left: 4px; top: -20px; transform: rotate(90deg); }
21297
- span.e-table-box { background-color: #ffffff; border: 1px solid #BDBDBD; }
21298
- span.e-table-box.e-rbox-select { background-color: #BDBDBD; border: 1px solid #BDBDBD; }
21299
- .e-table-rhelper { background-color: #4a90e2;}
21300
- .e-rtl { direction: rtl; }
21301
- .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; }
21302
- li ol, li ul { margin-block-start: 10px;}
21303
- </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>
21304
21509
  </head>`;
21305
21510
  /**
21306
21511
  * Content module is used to render Rich Text Editor content
@@ -21738,8 +21943,14 @@ class HtmlEditor {
21738
21943
  range.insertNode(tempSpan);
21739
21944
  }
21740
21945
  let currentChild = this.parent.inputElement.firstChild;
21741
- while (!isNullOrUndefined(currentChild) && currentChild.textContent.replace(regEx, '').trim().length > 0) {
21742
- currentChild.innerHTML = currentChild.innerHTML.replace(regEx, '');
21946
+ while (!isNullOrUndefined(currentChild)) {
21947
+ if (currentChild.nodeName === '#text') {
21948
+ currentChild = currentChild.nextElementSibling;
21949
+ continue;
21950
+ }
21951
+ if (currentChild.textContent.replace(regEx, '').trim().length > 0) {
21952
+ currentChild.innerHTML = currentChild.innerHTML.replace(regEx, '');
21953
+ }
21743
21954
  currentChild = currentChild.nextElementSibling;
21744
21955
  }
21745
21956
  let tempSpanToRemove = this.parent.inputElement.querySelector('.tempSpan');
@@ -21802,25 +22013,54 @@ class HtmlEditor {
21802
22013
  this.deleteCleanup(e, currentRange);
21803
22014
  }
21804
22015
  if (args.keyCode === 9 && this.parent.enableTabKey) {
22016
+ this.parent.formatter.saveData(e);
21805
22017
  if (!isNullOrUndefined(args.target) && isNullOrUndefined(closest(args.target, '.e-rte-toolbar'))) {
21806
22018
  const range = this.nodeSelectionObj.getRange(this.contentRenderer.getDocument());
21807
22019
  const parentNode = this.nodeSelectionObj.getParentNodeCollection(range);
21808
22020
  if (!((parentNode[0].nodeName === 'LI' || closest(parentNode[0], 'li') ||
21809
- closest(parentNode[0], 'table')) && range.startOffset === 0)) {
22021
+ closest(parentNode[0], 'table')))) {
21810
22022
  args.preventDefault();
21811
- if (!args.shiftKey) {
21812
- InsertHtml.Insert(this.contentRenderer.getDocument(), '&nbsp;&nbsp;&nbsp;&nbsp;');
21813
- 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
+ }
21814
22039
  }
21815
- else if (this.rangeCollection.length > 0 &&
21816
- this.rangeCollection[this.rangeCollection.length - 1].startContainer.textContent.length === 4) {
21817
- const textCont = this.rangeCollection[this.rangeCollection.length - 1].startContainer;
21818
- this.nodeSelectionObj.setSelectionText(this.contentRenderer.getDocument(), textCont, textCont, 0, textCont.textContent.length);
21819
- InsertHtml.Insert(this.contentRenderer.getDocument(), document.createTextNode(''));
21820
- 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
+ }
21821
22060
  }
21822
22061
  }
21823
22062
  }
22063
+ this.parent.formatter.saveData(e);
21824
22064
  }
21825
22065
  if (e.args.action === 'space' ||
21826
22066
  e.args.action === 'enter' ||
@@ -21837,15 +22077,7 @@ class HtmlEditor {
21837
22077
  }
21838
22078
  else {
21839
22079
  this.parent.notify(enterHandler, { args: e.args });
21840
- const newRange = this.parent.getRange();
21841
- if (!isNullOrUndefined(newRange.startContainer) && this.parent.height !== 'auto' && newRange.startContainer.nodeName !== '#text'
21842
- && !this.parent.iframeSettings.enable && newRange.startContainer.getBoundingClientRect().bottom > this.parent.element.getBoundingClientRect().bottom) {
21843
- this.parent.element.querySelector('.e-rte-content').scrollTop += newRange.startContainer.getBoundingClientRect().bottom - this.parent.element.getBoundingClientRect().bottom;
21844
- }
21845
- else if (!isNullOrUndefined(newRange.startContainer) && this.parent.height === 'auto' && newRange.startContainer.nodeName !== '#text'
21846
- && !this.parent.iframeSettings.enable && window.innerHeight < newRange.startContainer.getBoundingClientRect().top) {
21847
- newRange.startContainer.scrollIntoView({ block: 'end', inline: 'nearest' });
21848
- }
22080
+ scrollToCursor(this.parent.contentModule.getDocument(), this.parent.inputElement);
21849
22081
  }
21850
22082
  }
21851
22083
  }
@@ -21854,7 +22086,11 @@ class HtmlEditor {
21854
22086
  const editorValue = currentRange.startContainer.textContent.slice(0, currentRange.startOffset);
21855
22087
  const orderedList = this.isOrderedList(editorValue);
21856
22088
  const unOrderedList = this.isUnOrderedList(editorValue);
21857
- if (orderedList && !unOrderedList || unOrderedList && !orderedList) {
22089
+ let hasSplitedText = false;
22090
+ if (orderedList || unOrderedList) {
22091
+ hasSplitedText = this.hasMultipleTextNode(currentRange);
22092
+ }
22093
+ if (!hasSplitedText && (orderedList && !unOrderedList || unOrderedList && !orderedList)) {
21858
22094
  const eventArgs = {
21859
22095
  callBack: null,
21860
22096
  event: e.args,
@@ -21919,6 +22155,31 @@ class HtmlEditor {
21919
22155
  }
21920
22156
  return false;
21921
22157
  }
22158
+ hasMultipleTextNode(range) {
22159
+ if (range && range.startContainer && range.startContainer.parentNode) {
22160
+ const parentNode = range.startContainer.parentNode;
22161
+ if (range.startContainer.previousElementSibling &&
22162
+ range.startContainer.previousElementSibling.classList.contains('e-mention-chip')
22163
+ && !range.startContainer.previousElementSibling.isContentEditable) {
22164
+ return true;
22165
+ }
22166
+ if (this.parent.enterKey === 'BR' || closest(parentNode, 'table')) {
22167
+ return false;
22168
+ }
22169
+ const childNodes = parentNode.childNodes;
22170
+ const textNodes = [];
22171
+ for (let i = 0; i < childNodes.length; i++) {
22172
+ const node = childNodes[i];
22173
+ if (node && node.nodeType === Node.TEXT_NODE) {
22174
+ textNodes.push(node);
22175
+ if (textNodes.length > 1) {
22176
+ return true;
22177
+ }
22178
+ }
22179
+ }
22180
+ }
22181
+ return false;
22182
+ }
21922
22183
  backSpaceCleanup(e, currentRange) {
21923
22184
  let isLiElement = false;
21924
22185
  let isPreviousNotContentEditable = true;
@@ -22490,6 +22751,30 @@ class HtmlEditor {
22490
22751
  getSelectedHtml(e) {
22491
22752
  e.callBack(this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument()).toString());
22492
22753
  }
22754
+ marginTabAdd(val, alignmentNodes) {
22755
+ for (let index = 0; index < alignmentNodes.length; index++) {
22756
+ const element = alignmentNodes[index];
22757
+ if (element.closest('li')) {
22758
+ continue;
22759
+ }
22760
+ if (element.style.marginLeft) {
22761
+ let count$$1 = parseInt(element.style.marginLeft, 10);
22762
+ if (val) {
22763
+ count$$1 -= 20;
22764
+ }
22765
+ else {
22766
+ count$$1 += 20;
22767
+ }
22768
+ element.style.marginLeft = count$$1.toString() + 'px';
22769
+ if (element.style.marginLeft === '0px') {
22770
+ element.removeAttribute('style');
22771
+ }
22772
+ }
22773
+ else if (!val) {
22774
+ element.style.marginLeft = '20px';
22775
+ }
22776
+ }
22777
+ }
22493
22778
  }
22494
22779
 
22495
22780
  /**
@@ -22877,12 +23162,14 @@ class PasteCleanup {
22877
23162
  popupObj.close();
22878
23163
  }
22879
23164
  this.parent.trigger(imageUploadFailed, e);
22880
- uploadObj.destroy();
23165
+ if (uploadObj && document.body.contains(uploadObj.element)) {
23166
+ uploadObj.destroy();
23167
+ }
22881
23168
  }
22882
23169
  popupClose(popupObj, uploadObj, imgElem, e) {
22883
23170
  this.parent.inputElement.contentEditable = 'true';
22884
23171
  e.element = imgElem;
22885
- e.requestType = UploadRequest.Pasted;
23172
+ e.detectImageSource = ImageInputSource.Pasted;
22886
23173
  this.parent.trigger(imageUploadSuccess, e, (e) => {
22887
23174
  if (!isNullOrUndefined(this.parent.insertImageSettings.path)) {
22888
23175
  const url = this.parent.insertImageSettings.path + e.file.name;
@@ -22892,7 +23179,7 @@ class PasteCleanup {
22892
23179
  });
22893
23180
  popupObj.close();
22894
23181
  imgElem.style.opacity = '1';
22895
- if (!uploadObj.isDestroyed) {
23182
+ if (uploadObj && document.body.contains(uploadObj.element)) {
22896
23183
  uploadObj.destroy();
22897
23184
  }
22898
23185
  this.toolbarEnableDisable(false);
@@ -23141,7 +23428,8 @@ class PasteCleanup {
23141
23428
  clipBoardElem = this.allowedStyle(clipBoardElem);
23142
23429
  }
23143
23430
  this.saveSelection.restore();
23144
- clipBoardElem.innerHTML = this.sanitizeHelper(clipBoardElem.innerHTML);
23431
+ const newText = clipBoardElem.innerHTML.split("&").join("&amp;");
23432
+ clipBoardElem.innerHTML = this.sanitizeHelper(newText);
23145
23433
  const allImg = clipBoardElem.querySelectorAll('img');
23146
23434
  for (let i = 0; i < allImg.length; i++) {
23147
23435
  if (!isNullOrUndefined(allImg[i].getAttribute('src'))) {
@@ -23190,11 +23478,34 @@ class PasteCleanup {
23190
23478
  extend(args, { elements: returnArgs.elements, imageElements: returnArgs.imgElem }, true);
23191
23479
  this.parent.formatter.onSuccess(this.parent, args);
23192
23480
  }, clipBoardElem, null, null, this.parent.enterKey);
23481
+ scrollToCursor(this.parent.contentModule.getDocument(), this.parent.inputElement);
23193
23482
  this.removeTempClass();
23194
23483
  this.parent.notify(toolbarRefresh, {});
23195
23484
  this.cropImageHandler(this.parent.inputElement);
23196
23485
  }
23197
23486
  }
23487
+ convertBlobToBase64(element) {
23488
+ const imgElem = element.querySelectorAll('img');
23489
+ for (let i = 0; i < imgElem.length; i++) {
23490
+ if (imgElem[i].getAttribute('src') &&
23491
+ imgElem[i].getAttribute('src').startsWith("blob")) {
23492
+ let blobImageUrl = imgElem[i].getAttribute('src');
23493
+ let img = new Image();
23494
+ const onImageLoadEvent = () => {
23495
+ let canvas = document.createElement('canvas');
23496
+ let ctx = canvas.getContext('2d');
23497
+ canvas.width = img.width;
23498
+ canvas.height = img.height;
23499
+ ctx.drawImage(img, 0, 0);
23500
+ let base64String = canvas.toDataURL('image/png');
23501
+ imgElem[i].src = base64String;
23502
+ img.removeEventListener('load', onImageLoadEvent);
23503
+ };
23504
+ img.src = blobImageUrl;
23505
+ img.addEventListener('load', onImageLoadEvent);
23506
+ }
23507
+ }
23508
+ }
23198
23509
  cropImageHandler(element) {
23199
23510
  const allImgElm = element.querySelectorAll('.e-img-cropped');
23200
23511
  if (allImgElm.length > 0) {
@@ -23233,22 +23544,33 @@ class PasteCleanup {
23233
23544
  }
23234
23545
  }
23235
23546
  else {
23236
- this.imgUploading(this.parent.inputElement);
23237
- if (this.parent.iframeSettings.enable) {
23238
- this.parent.updateValue();
23547
+ 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")) {
23548
+ this.convertBlobToBase64(this.parent.inputElement);
23549
+ setTimeout(() => {
23550
+ this.imgUploading(this.parent.inputElement);
23551
+ if (this.parent.iframeSettings.enable) {
23552
+ this.parent.updateValue();
23553
+ }
23554
+ }, 20);
23555
+ }
23556
+ else {
23557
+ this.imgUploading(this.parent.inputElement);
23558
+ if (this.parent.iframeSettings.enable) {
23559
+ this.parent.updateValue();
23560
+ }
23239
23561
  }
23240
23562
  }
23241
23563
  }
23242
23564
  addTableClass(element, source) {
23243
- source = isNullOrUndefined(source) ? '' : source;
23244
23565
  const tableElement = element.querySelectorAll('table');
23245
23566
  for (let i = 0; i < tableElement.length; i++) {
23246
- if (!tableElement[i].classList.contains('e-rte-table') && (source === 'html' || source === '')) {
23247
- tableElement[i].classList.add('e-rte-table');
23248
- }
23249
- else if (source && source !== 'html') {
23567
+ const isMSTeamsTable = tableElement[i].parentElement.nodeName === 'FIGURE';
23568
+ if (this.parent.pasteCleanupSettings.keepFormat && source && !isMSTeamsTable) {
23250
23569
  tableElement[i].classList.add('e-rte-paste-' + source + '-table');
23251
23570
  }
23571
+ else if (!tableElement[i].classList.contains('e-rte-table')) {
23572
+ tableElement[i].classList.add('e-rte-table');
23573
+ }
23252
23574
  }
23253
23575
  return element;
23254
23576
  }
@@ -24015,9 +24337,6 @@ class FullScreen {
24015
24337
  && !isNullOrUndefined(this.parent.quickToolbarModule)) {
24016
24338
  this.parent.quickToolbarModule.hideQuickToolbars();
24017
24339
  }
24018
- if (this.parent.showTooltip && !isNullOrUndefined(document.querySelector('.e-tooltip-wrap'))) {
24019
- this.parent.notify(destroyTooltip, { args: event });
24020
- }
24021
24340
  this.scrollableParent = getScrollableParent(this.parent.element);
24022
24341
  if (!this.parent.element.classList.contains(CLS_FULL_SCREEN)) {
24023
24342
  const evenArgs = {
@@ -24069,9 +24388,6 @@ class FullScreen {
24069
24388
  && !isNullOrUndefined(this.parent.quickToolbarModule)) {
24070
24389
  this.parent.quickToolbarModule.hideQuickToolbars();
24071
24390
  }
24072
- if (this.parent.showTooltip && !isNullOrUndefined(document.querySelector('.e-tooltip-wrap'))) {
24073
- this.parent.notify(destroyTooltip, { args: event });
24074
- }
24075
24391
  if (this.parent.element.classList.contains(CLS_FULL_SCREEN)) {
24076
24392
  const evenArgs = {
24077
24393
  cancel: false,
@@ -25142,7 +25458,7 @@ class EmojiPicker {
25142
25458
  const popupHeight = 330;
25143
25459
  let popupTop = cursorTop;
25144
25460
  const popupLeft = cursorLeft + rect.width;
25145
- if (rteEle.getBoundingClientRect().top < 0) {
25461
+ if (rteEle.getBoundingClientRect().top < 0 && !this.parent.inlineMode.enable) {
25146
25462
  popupTop = popupTop + rteContent.getBoundingClientRect().top - toolbarHeight;
25147
25463
  }
25148
25464
  if (rect.top < popupHeight) {
@@ -25809,7 +26125,10 @@ class Link {
25809
26125
  this.selection.restore();
25810
26126
  }
25811
26127
  else {
26128
+ const x = window.scrollX;
26129
+ const y = window.scrollY;
25812
26130
  this.selfLink.parent.contentModule.getEditPanel().focus();
26131
+ window.scrollTo(x, y);
25813
26132
  }
25814
26133
  }
25815
26134
  onDocumentClick(e) {
@@ -26469,13 +26788,13 @@ class Image$1 {
26469
26788
  selectParentEle = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);
26470
26789
  if (!originalEvent.ctrlKey && originalEvent.key && (originalEvent.key.length === 1 || originalEvent.action === 'enter') &&
26471
26790
  (!isNullOrUndefined(selectParentEle[0]) && selectParentEle[0].tagName === 'IMG') && selectParentEle[0].parentElement) {
26472
- const prev = selectParentEle[0].parentElement.childNodes[0];
26473
26791
  if (this.contentModule.getEditPanel().querySelector('.e-img-resize')) {
26474
26792
  this.removeResizeEle();
26475
26793
  }
26476
- this.parent.formatter.editorManager.nodeSelection.setSelectionText(this.contentModule.getDocument(), prev, prev, prev.textContent.length, prev.textContent.length);
26477
26794
  removeClass([selectParentEle[0]], 'e-img-focus');
26478
- this.quickToolObj.imageQTBar.hidePopup();
26795
+ if (this.quickToolObj && this.quickToolObj.imageQTBar) {
26796
+ this.quickToolObj.imageQTBar.hidePopup();
26797
+ }
26479
26798
  }
26480
26799
  }
26481
26800
  if (originalEvent.ctrlKey && (originalEvent.keyCode === 89 || originalEvent.keyCode === 90)) {
@@ -27236,7 +27555,12 @@ class Image$1 {
27236
27555
  animationSettings: { effect: 'None' },
27237
27556
  close: (event) => {
27238
27557
  if (this.isImgUploaded) {
27239
- this.uploadObj.remove();
27558
+ if (this.dialogObj.element.querySelector('.e-file-abort-btn')) {
27559
+ this.dialogObj.element.querySelector('.e-file-abort-btn').click();
27560
+ }
27561
+ else {
27562
+ this.uploadObj.remove();
27563
+ }
27240
27564
  }
27241
27565
  this.parent.isBlur = false;
27242
27566
  if (event && !isNullOrUndefined(event.event) && event.event.returnValue) {
@@ -27634,7 +27958,7 @@ class Image$1 {
27634
27958
  }
27635
27959
  },
27636
27960
  success: (e) => {
27637
- e.requestType = UploadRequest.Uploaded;
27961
+ e.detectImageSource = ImageInputSource.Uploaded;
27638
27962
  this.parent.trigger(imageUploadSuccess, e, (e) => {
27639
27963
  if (!isNullOrUndefined(this.parent.insertImageSettings.path)) {
27640
27964
  const url = this.parent.insertImageSettings.path + e.file.name;
@@ -28074,7 +28398,7 @@ class Image$1 {
28074
28398
  imageElement.style.opacity = '1';
28075
28399
  imageElement.classList.add(CLS_IMG_FOCUS);
28076
28400
  e.element = imageElement;
28077
- e.requestType = UploadRequest.Dropped;
28401
+ e.detectImageSource = ImageInputSource.Dropped;
28078
28402
  this.parent.trigger(imageUploadSuccess, e, (e) => {
28079
28403
  if (!isNullOrUndefined(this.parent.insertImageSettings.path)) {
28080
28404
  const url = this.parent.insertImageSettings.path + e.file.name;
@@ -28743,7 +29067,12 @@ class Audio {
28743
29067
  animationSettings: { effect: 'None' },
28744
29068
  close: (event) => {
28745
29069
  if (this.isAudioUploaded) {
28746
- this.uploadObj.removing();
29070
+ if (this.dialogObj.element.querySelector('.e-file-abort-btn')) {
29071
+ this.dialogObj.element.querySelector('.e-file-abort-btn').click();
29072
+ }
29073
+ else {
29074
+ this.uploadObj.remove();
29075
+ }
28747
29076
  }
28748
29077
  this.parent.isBlur = false;
28749
29078
  if (event && !isNullOrUndefined(event.event) && event.event.returnValue) {
@@ -30094,7 +30423,12 @@ class Video {
30094
30423
  animationSettings: { effect: 'None' },
30095
30424
  close: (event) => {
30096
30425
  if (this.isVideoUploaded) {
30097
- this.uploadObj.removing();
30426
+ if (this.dialogObj.element.querySelector('.e-file-abort-btn')) {
30427
+ this.dialogObj.element.querySelector('.e-file-abort-btn').click();
30428
+ }
30429
+ else {
30430
+ this.uploadObj.remove();
30431
+ }
30098
30432
  }
30099
30433
  this.parent.isBlur = false;
30100
30434
  if (event && !isNullOrUndefined(event.event) && event.event.returnValue) {
@@ -31341,8 +31675,11 @@ class Table {
31341
31675
  if (proxy.editdlgObj) {
31342
31676
  proxy.editdlgObj.hide();
31343
31677
  }
31678
+ const x = window.scrollX;
31679
+ const y = window.scrollY;
31344
31680
  proxy.parent.formatter.process(proxy.parent, selectionObj.args, selectionObj.args.originalEvent, value);
31345
31681
  proxy.contentModule.getEditPanel().focus();
31682
+ window.scrollTo(x, y);
31346
31683
  proxy.parent.on(mouseDown, proxy.cellSelect, proxy);
31347
31684
  }
31348
31685
  cellSelect(e) {
@@ -32318,7 +32655,8 @@ class Table {
32318
32655
  const argument = ((Browser.isDevice || (!isNullOrUndefined(args.args)
32319
32656
  && !isNullOrUndefined(args.args.originalEvent) &&
32320
32657
  args.args.originalEvent.action === 'insert-table')
32321
- || proxy.parent.inlineMode.enable || !isNullOrUndefined(proxy.parent.quickToolbarSettings.text)) ? args :
32658
+ || proxy.parent.inlineMode.enable || ((!isNullOrUndefined(proxy.parent.quickToolbarSettings.text)) &&
32659
+ !(args instanceof PointerEvent))) ? args :
32322
32660
  this);
32323
32661
  proxy.tableInsert(proxy.rowTextBox.value, proxy.columnTextBox.value, e, argument);
32324
32662
  }
@@ -32767,12 +33105,12 @@ const executeGroup = {
32767
33105
  }
32768
33106
  };
32769
33107
 
32770
- var __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
32771
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
32772
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
32773
- 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;
32774
- return c > 3 && r && Object.defineProperty(target, key, r), r;
32775
- };
33108
+ var __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
33109
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
33110
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
33111
+ 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;
33112
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
33113
+ };
32776
33114
  /**
32777
33115
  * Configures the toolbar settings of the RichTextEditor.
32778
33116
  */
@@ -33162,12 +33500,12 @@ __decorate$2([
33162
33500
  Property(bulletFormatList)
33163
33501
  ], BulletFormatList.prototype, "types", void 0);
33164
33502
 
33165
- var __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
33166
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
33167
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
33168
- 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;
33169
- return c > 3 && r && Object.defineProperty(target, key, r), r;
33170
- };
33503
+ var __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
33504
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
33505
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
33506
+ 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;
33507
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
33508
+ };
33171
33509
  /**
33172
33510
  * Objects used for configuring the iframe resources properties.
33173
33511
  */
@@ -33194,12 +33532,12 @@ __decorate$3([
33194
33532
  Complex({}, Resources)
33195
33533
  ], IFrameSettings.prototype, "resources", void 0);
33196
33534
 
33197
- var __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
33198
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
33199
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
33200
- 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;
33201
- return c > 3 && r && Object.defineProperty(target, key, r), r;
33202
- };
33535
+ var __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
33536
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
33537
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
33538
+ 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;
33539
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
33540
+ };
33203
33541
  /**
33204
33542
  * Configures the inlineMode property of the RTE.
33205
33543
  */
@@ -33250,16 +33588,18 @@ class EnterKeyAction {
33250
33588
  this.getRangeNode();
33251
33589
  let isTableEnter = true;
33252
33590
  this.formatTags = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'blockquote'];
33253
- const isCursorAtTableEnd = this.range.collapsed && (this.range.startContainer.nodeType === 1) &&
33254
- this.range.startContainer.isContentEditable &&
33255
- this.range.startContainer.childNodes[this.range.startOffset - 1] &&
33256
- this.range.startContainer.childNodes[this.range.startOffset - 1].nodeName === 'TABLE';
33257
- const isCursorAtTableStart = this.range.collapsed && (this.range.startContainer.nodeType === 1) &&
33258
- this.range.startContainer.isContentEditable && this.range.startContainer.childNodes[this.range.startOffset] &&
33259
- this.range.startContainer.childNodes[this.range.startOffset].nodeName === 'TABLE';
33260
- if (isCursorAtTableEnd || isCursorAtTableStart) {
33261
- this.handleCursorAtTableSide(e, isCursorAtTableStart, isCursorAtTableEnd);
33262
- return;
33591
+ const tableImagCursor = this.processedTableImageCursor();
33592
+ if (tableImagCursor.start || tableImagCursor.end) {
33593
+ if (tableImagCursor.startName === 'TABLE' || tableImagCursor.endName === 'TABLE') { // Default browser action prevented and hanled manually.
33594
+ this.handleCursorAtTableSide(e, tableImagCursor.start, tableImagCursor.end);
33595
+ return;
33596
+ }
33597
+ }
33598
+ if (tableImagCursor.start || tableImagCursor.end || this.range.startContainer.nodeName === 'IMG') {
33599
+ if (this.parent.enterKey === 'BR' && (tableImagCursor.startName === 'IMG' || tableImagCursor.endName === 'IMG' || this.range.startContainer.nodeName === 'IMG')) { // Default browser action prevented and hanled manually.
33600
+ this.handleEnterKeyAtImageSide(e, tableImagCursor.start, tableImagCursor.end);
33601
+ return;
33602
+ }
33263
33603
  }
33264
33604
  if (!isNullOrUndefined(this.startNode.closest('TABLE')) && !isNullOrUndefined(this.endNode.closest('TABLE'))) {
33265
33605
  isTableEnter = false;
@@ -33575,6 +33915,7 @@ class EnterKeyAction {
33575
33915
  else {
33576
33916
  currentParent = this.startNode;
33577
33917
  }
33918
+ const currentParentStyle = window.getComputedStyle(currentParent);
33578
33919
  this.removeBRElement(currentParent);
33579
33920
  let currentParentLastChild = currentParent.lastChild;
33580
33921
  while (!isNullOrUndefined(currentParentLastChild) && !(currentParentLastChild.nodeName === '#text' || currentParentLastChild.nodeName === 'BR'
@@ -33626,7 +33967,6 @@ class EnterKeyAction {
33626
33967
  const outerBRElem = this.parent.createElement('br');
33627
33968
  if (this.range.startOffset === 0 && this.range.endOffset === 0 &&
33628
33969
  !isNullOrUndefined(currentParent.previousSibling) && currentParent.previousSibling.nodeName === 'BR' && currentParent.nodeName !== 'P' && currentParent.nodeName !== 'DIV') {
33629
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
33630
33970
  newElem = this.parent.formatter.editorManager.nodeCutter.SplitNode(this.range, currentParent, false).cloneNode(true);
33631
33971
  this.parent.formatter.editorManager.domNode.insertAfter(outerBRElem, currentParent);
33632
33972
  this.insertFocusContent();
@@ -33638,6 +33978,14 @@ class EnterKeyAction {
33638
33978
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
33639
33979
 
33640
33980
  }
33981
+ else if (currentParent !== this.parent.inputElement &&
33982
+ (currentParentStyle.display === 'inline' || currentParentStyle.display === 'inline-block')) {
33983
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
33984
+ newElem = this.parent.formatter.editorManager.nodeCutter.SplitNode(this.range, currentParent, true).cloneNode(true);
33985
+ currentParent.parentElement.insertBefore(outerBRElem, currentParent);
33986
+ this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), currentParent, 0);
33987
+ this.insertFocusContent();
33988
+ }
33641
33989
  else {
33642
33990
  this.insertBRElement();
33643
33991
  }
@@ -33648,7 +33996,7 @@ class EnterKeyAction {
33648
33996
  }
33649
33997
  e.args.preventDefault();
33650
33998
  }
33651
- this.parent.trigger(actionComplete, { requestType: shiftKey ? 'ShiftEnterAction' : 'EnterAction', args: e.args });
33999
+ this.triggerActionComplete(e, shiftKey);
33652
34000
  }
33653
34001
  });
33654
34002
  }
@@ -33718,6 +34066,9 @@ class EnterKeyAction {
33718
34066
  }
33719
34067
  return insertElem;
33720
34068
  }
34069
+ triggerActionComplete(e, shiftKey) {
34070
+ this.parent.trigger(actionComplete, { requestType: shiftKey ? 'ShiftEnterAction' : 'EnterAction', args: e.args });
34071
+ }
33721
34072
  handleCursorAtTableSide(e, isStart, isEnd) {
33722
34073
  if (this.parent.enterKey !== 'BR') {
33723
34074
  const shiftKey = e.args.shiftKey;
@@ -33747,19 +34098,99 @@ class EnterKeyAction {
33747
34098
  }
33748
34099
  this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), newElement, 0);
33749
34100
  e.args.preventDefault();
33750
- this.parent.trigger(actionComplete, { requestType: shiftKey ? 'ShiftEnterAction' : 'EnterAction', args: e.args });
34101
+ this.triggerActionComplete(e, shiftKey);
33751
34102
  }
33752
34103
  });
33753
34104
  }
33754
34105
  }
34106
+ handleEnterKeyAtImageSide(e, isStart, isEnd) {
34107
+ const actionBeginArgs = {
34108
+ cancel: false,
34109
+ name: actionBegin,
34110
+ requestType: e.args.shiftKey ? 'ShiftEnterAction' : 'EnterAction',
34111
+ originalEvent: e.args
34112
+ };
34113
+ let directRange = false;
34114
+ if (this.range.startContainer.nodeName === 'IMG' && this.range.startOffset === 0) {
34115
+ directRange = true;
34116
+ }
34117
+ this.parent.trigger(actionBegin, actionBeginArgs, (actionBeginArgs) => {
34118
+ if (!actionBeginArgs.cancel) {
34119
+ if (this.parent.enterKey === 'BR') {
34120
+ const newElement = this.parent.createElement('BR');
34121
+ let imageElement;
34122
+ if (directRange) {
34123
+ imageElement = this.range.startContainer;
34124
+ imageElement.parentElement.insertBefore(newElement, imageElement);
34125
+ this.parent.formatter.editorManager.nodeSelection.
34126
+ setCursorPoint(this.parent.contentModule.getDocument(), imageElement, 0);
34127
+ }
34128
+ if (isStart) {
34129
+ imageElement = this.range.startContainer.childNodes[this.range.startOffset];
34130
+ imageElement.parentElement.insertBefore(newElement, imageElement);
34131
+ this.parent.formatter.editorManager.nodeSelection.
34132
+ setCursorPoint(this.parent.contentModule.getDocument(), imageElement, 0);
34133
+ }
34134
+ if (isEnd) {
34135
+ imageElement = this.range.startContainer.childNodes[this.range.startOffset - 1];
34136
+ if (!isNullOrUndefined(imageElement.nextSibling)) {
34137
+ imageElement.parentElement.insertBefore(newElement, imageElement.nextSibling);
34138
+ this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), newElement.nextSibling, 0);
34139
+ }
34140
+ else if (isNullOrUndefined(imageElement.nextSibling)) {
34141
+ imageElement.parentElement.appendChild(newElement);
34142
+ const brElement = this.parent.createElement('BR');
34143
+ imageElement.parentElement.appendChild(brElement);
34144
+ this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), brElement, 0);
34145
+ }
34146
+ }
34147
+ e.args.preventDefault();
34148
+ this.triggerActionComplete(e, e.args.shiftKey);
34149
+ }
34150
+ }
34151
+ });
34152
+ }
34153
+ isTableOrImageStart() {
34154
+ const customHandlerElements = ['IMG', 'TABLE'];
34155
+ const startContainer = this.range.startContainer;
34156
+ const startOffset = this.range.startOffset;
34157
+ const isCursorAtStart = this.range.collapsed && (startContainer.nodeType === 1) &&
34158
+ startContainer.isContentEditable && startContainer.childNodes[startOffset] &&
34159
+ (customHandlerElements.indexOf(startContainer.childNodes[startOffset].nodeName) > -1);
34160
+ if (isCursorAtStart) {
34161
+ return { start: isCursorAtStart, startNodeName: startContainer.childNodes[startOffset].nodeName };
34162
+ }
34163
+ else {
34164
+ return { start: false, startNodeName: '' };
34165
+ }
34166
+ }
34167
+ isTableOrImageEnd() {
34168
+ const customHandlerElements = ['IMG', 'TABLE'];
34169
+ const startContainer = this.range.startContainer;
34170
+ const startOffset = this.range.startOffset;
34171
+ const isCursorAtEnd = this.range.collapsed && (startContainer.nodeType === 1) &&
34172
+ startContainer.isContentEditable && startContainer.childNodes[startOffset - 1] &&
34173
+ (customHandlerElements.indexOf(startContainer.childNodes[startOffset - 1].nodeName) > -1);
34174
+ if (isCursorAtEnd) {
34175
+ return { end: isCursorAtEnd, endNodeName: startContainer.childNodes[startOffset - 1].nodeName };
34176
+ }
34177
+ else {
34178
+ return { end: false, endNodeName: '' };
34179
+ }
34180
+ }
34181
+ processedTableImageCursor() {
34182
+ const { start, startNodeName } = this.isTableOrImageStart();
34183
+ const { end, endNodeName } = this.isTableOrImageEnd();
34184
+ return { start, startName: startNodeName, end, endName: endNodeName };
34185
+ }
33755
34186
  }
33756
34187
 
33757
- var __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
33758
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
33759
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
33760
- 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;
33761
- return c > 3 && r && Object.defineProperty(target, key, r), r;
33762
- };
34188
+ var __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
34189
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
34190
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
34191
+ 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;
34192
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
34193
+ };
33763
34194
  /**
33764
34195
  * Represents the Rich Text Editor component.
33765
34196
  * ```html
@@ -33897,6 +34328,7 @@ let RichTextEditor = class RichTextEditor extends Component {
33897
34328
  this.persistData();
33898
34329
  setStyleAttribute(this.element, { 'width': formatUnit(this.width) });
33899
34330
  attributes(this.element, { role: 'application', 'aria-label': 'Rich Text Editor' });
34331
+ this.beforeRenderClassValue = this.element.getAttribute('class');
33900
34332
  }
33901
34333
  persistData() {
33902
34334
  if (this.enablePersistence && this.originalElement.tagName === 'TEXTAREA') {
@@ -34767,10 +35199,21 @@ let RichTextEditor = class RichTextEditor extends Component {
34767
35199
  if (this.isDestroyed || !this.isRendered) {
34768
35200
  return;
34769
35201
  }
35202
+ this.element.className = this.beforeRenderClassValue;
35203
+ this.removeHtmlAttributes();
35204
+ this.removeAttributes();
35205
+ this.beforeRenderClassValue = null;
34770
35206
  if (!isNullOrUndefined(this.timeInterval)) {
34771
35207
  clearInterval(this.timeInterval);
34772
35208
  this.timeInterval = null;
34773
35209
  }
35210
+ const tooltipElements = document.querySelectorAll('[data-rte-id="' + this.getID() + '"]');
35211
+ for (let i = 0; i < tooltipElements.length; i++) {
35212
+ const tooltipEle = tooltipElements[i];
35213
+ if (this.getID() === tooltipEle.getAttribute('data-rte-id')) {
35214
+ detach(tooltipEle);
35215
+ }
35216
+ }
34774
35217
  if (this.element.offsetParent === null) {
34775
35218
  if (!isNullOrUndefined(this.toolbarModule)) {
34776
35219
  this.toolbarModule.destroy();
@@ -34827,8 +35270,6 @@ let RichTextEditor = class RichTextEditor extends Component {
34827
35270
  }
34828
35271
  }
34829
35272
  }
34830
- this.removeHtmlAttributes();
34831
- this.removeAttributes();
34832
35273
  super.destroy();
34833
35274
  this.isRendered = false;
34834
35275
  }
@@ -34859,6 +35300,7 @@ let RichTextEditor = class RichTextEditor extends Component {
34859
35300
  this.element.removeAttribute('aria-disabled');
34860
35301
  this.element.removeAttribute('role');
34861
35302
  this.element.removeAttribute('tabindex');
35303
+ this.element.removeAttribute('aria-label');
34862
35304
  }
34863
35305
  destroyDependentModules() {
34864
35306
  /* destroy dependent modules */
@@ -35112,7 +35554,7 @@ let RichTextEditor = class RichTextEditor extends Component {
35112
35554
  }
35113
35555
  }
35114
35556
  updatePanelValue() {
35115
- let value = this.value;
35557
+ let value = this.listOrderCorrection(this.value);
35116
35558
  value = (this.enableHtmlEncode && this.value) ? decode(value) : value;
35117
35559
  const getTextArea = this.element.querySelector('.' + CLS_RTE_SOURCE_CODE_TXTAREA);
35118
35560
  if (value) {
@@ -35156,6 +35598,17 @@ let RichTextEditor = class RichTextEditor extends Component {
35156
35598
  this.countModule.refresh();
35157
35599
  }
35158
35600
  }
35601
+ listOrderCorrection(value) {
35602
+ const valueElementWrapper = this.createElement('div');
35603
+ valueElementWrapper.innerHTML = value;
35604
+ const listElements = valueElementWrapper.querySelectorAll('UL, OL');
35605
+ for (let i = 0; i < listElements.length; i++) {
35606
+ if (!isNullOrUndefined(listElements[i]) && !isNullOrUndefined(listElements[i].parentElement) && !isNullOrUndefined(listElements[i].previousElementSibling) && (listElements[i].parentElement.nodeName === 'UL' || listElements[i].parentElement.nodeName === 'OL')) {
35607
+ listElements[i].previousElementSibling.appendChild(listElements[i]);
35608
+ }
35609
+ }
35610
+ return valueElementWrapper.innerHTML;
35611
+ }
35159
35612
  setHeight(height) {
35160
35613
  if (height !== 'auto') {
35161
35614
  this.element.style.height = formatUnit(height);
@@ -36622,5 +37075,5 @@ RichTextEditor = __decorate$1([
36622
37075
  * Rich Text Editor component exported items
36623
37076
  */
36624
37077
 
36625
- export { Toolbar$2 as Toolbar, KeyboardEvents$1 as KeyboardEvents, BaseToolbar, BaseQuickToolbar, QuickToolbar, Count, ColorPickerInput, MarkdownToolbarStatus, ExecCommandCallBack, ToolbarAction, MarkdownEditor, HtmlEditor, PasteCleanup, Resize, DropDownButtons, FileManager$1 as FileManager, FullScreen, setAttributes, HtmlToolbarStatus, XhtmlValidation, FormatPainter, EmojiPicker, HTMLFormatter, Formatter, MarkdownFormatter, ContentRender, Render, ToolbarRenderer, Link, Image$1 as Image, Audio, Video, ViewSource, Table, DialogRenderer, IframeContentRender, MarkdownRender, PopupRenderer, RichTextEditor, RenderType, ToolbarType, DialogType, UploadRequest, executeGroup, created, destroyed, tableclass, load, initialLoad, contentChanged, initialEnd, iframeMouseDown, destroy, toolbarClick, toolbarRefresh, refreshBegin, toolbarUpdated, bindOnEnd, renderColorPicker, htmlToolbarClick, markdownToolbarClick, destroyColorPicker, modelChanged, tableModulekeyUp, keyUp, keyDown, mouseUp, toolbarCreated, toolbarRenderComplete, enableFullScreen, disableFullScreen, dropDownSelect, beforeDropDownItemRender, execCommandCallBack, imageToolbarAction, audioToolbarAction, videoToolbarAction, linkToolbarAction, windowResize, resizeStart, onResize, resizeStop, undo, redo, insertLink, unLink, editLink, openLink, actionBegin, actionComplete, updatedToolbarStatus, actionSuccess, updateToolbarItem, insertImage, insertAudio, insertVideo, insertCompleted, imageLeft, imageRight, imageCenter, imageBreak, imageInline, imageLink, imageAlt, imageDelete, audioDelete, videoDelete, imageCaption, imageSize, videoSize, sourceCode, updateSource, toolbarOpen, beforeDropDownOpen, selectionSave, selectionRestore, expandPopupClick, count, contentFocus, contentBlur, mouseDown, sourceCodeMouseDown, editAreaClick, scroll, contentscroll, colorPickerChanged, tableColorPickerChanged, focusChange, selectAll$1 as selectAll, selectRange, getSelectedHtml, renderInlineToolbar, paste, imgModule, rtlMode, createTable, docClick, tableToolbarAction, checkUndo, readOnlyMode, moduleDestroy, pasteClean, enterHandler, beforeDialogOpen, clearDialogObj, dialogOpen, beforeDialogClose, dialogClose, beforeQuickToolbarOpen, quickToolbarOpen, quickToolbarClose, popupHide, imageSelected, imageUploading, imageUploadSuccess, imageUploadFailed, imageRemoving, fileSelected, fileUploading, fileUploadSuccess, fileUploadFailed, fileRemoving, afterImageDelete, afterMediaDelete, drop, xhtmlValidation, beforeImageUpload, beforeFileUpload, resizeInitialized, renderFileManager, beforeImageDrop, dynamicModule, beforePasteCleanup, afterPasteCleanup, updateTbItemsStatus, showLinkDialog, closeLinkDialog, showImageDialog, showAudioDialog, showVideoDialog, closeImageDialog, closeAudioDialog, closeVideoDialog, showTableDialog, closeTableDialog, bindCssClass, formatPainterClick, formatPainterDoubleClick, emojiPicker, destroyTooltip, hidePopup, cleanupResizeElements, afterKeyDown, updateValueOnIdle, documentClickClosedBy, showColorPicker, closeTooltip, blockEmptyNodes, inlineEmptyNodes, supportedUnits, conversionFactors, onHandleFontsizeChange, CLS_RTE, CLS_RTL, CLS_CONTENT, CLS_DISABLED, CLS_SCRIPT_SHEET, CLS_STYLE_SHEET, CLS_TOOLBAR, CLS_TB_FIXED, CLS_TB_FLOAT, CLS_INLINE, CLS_TB_INLINE, CLS_RTE_EXPAND_TB, CLS_FULL_SCREEN, CLS_QUICK_TB, CLS_TEXT_QUICK_TB, CLS_POP, CLS_TB_STATIC, CLS_QUICK_POP, CLS_QUICK_DROPDOWN, CLS_IMAGE_POP, CLS_TEXT_POP, CLS_INLINE_POP, CLS_INLINE_DROPDOWN, CLS_DROPDOWN_POPUP, CLS_DROPDOWN_ICONS, CLS_DROPDOWN_ITEMS, CLS_DROPDOWN_BTN, CLS_RTE_CONTENT, CLS_TB_ITEM, CLS_TB_EXTENDED, CLS_TB_WRAP, CLS_POPUP, CLS_SEPARATOR, CLS_MINIMIZE, CLS_MAXIMIZE, CLS_BACK, CLS_SHOW, CLS_HIDE, CLS_VISIBLE, CLS_FOCUS, CLS_RM_WHITE_SPACE, CLS_IMGRIGHT, CLS_IMGLEFT, CLS_IMGCENTER, CLS_IMGBREAK, CLS_AUDIOBREAK, CLS_CLICKELEM, CLS_VID_CLICK_ELEM, CLS_AUDIOWRAP, CLS_VIDEOWRAP, CLS_VIDEOBREAK, CLS_CAPTION, CLS_RTE_CAPTION, CLS_CAPINLINE, CLS_IMGINLINE, CLS_AUDIOINLINE, CLS_VIDEOINLINE, CLS_COUNT, CLS_WARNING, CLS_ERROR, CLS_ICONS, CLS_ACTIVE, CLS_EXPAND_OPEN, CLS_RTE_ELEMENTS, CLS_TB_BTN, CLS_HR_SEPARATOR, CLS_TB_IOS_FIX, CLS_LIST_PRIMARY_CONTENT, CLS_NUMBERFORMATLIST_TB_BTN, CLS_BULLETFORMATLIST_TB_BTN, CLS_FORMATS_TB_BTN, CLS_FONT_NAME_TB_BTN, CLS_FONT_SIZE_TB_BTN, CLS_ALIGN_TB_BTN, CLS_FONT_COLOR_TARGET, CLS_BACKGROUND_COLOR_TARGET, CLS_COLOR_CONTENT, CLS_FONT_COLOR_DROPDOWN, CLS_BACKGROUND_COLOR_DROPDOWN, CLS_COLOR_PALETTE, CLS_FONT_COLOR_PICKER, CLS_BACKGROUND_COLOR_PICKER, CLS_RTE_READONLY, CLS_TABLE_SEL, CLS_TB_DASH_BOR, CLS_TB_ALT_BOR, CLS_TB_COL_RES, CLS_TB_ROW_RES, CLS_TB_BOX_RES, CLS_RTE_HIDDEN, CLS_RTE_PASTE_KEEP_FORMAT, CLS_RTE_PASTE_REMOVE_FORMAT, CLS_RTE_PASTE_PLAIN_FORMAT, CLS_RTE_PASTE_OK, CLS_RTE_PASTE_CANCEL, CLS_RTE_DIALOG_MIN_HEIGHT, CLS_RTE_RES_HANDLE, CLS_RTE_RES_EAST, CLS_RTE_IMAGE, CLS_RESIZE, CLS_IMG_FOCUS, CLS_AUD_FOCUS, CLS_VID_FOCUS, CLS_RTE_DRAG_IMAGE, CLS_RTE_UPLOAD_POPUP, CLS_POPUP_OPEN, CLS_IMG_RESIZE, CLS_DROPAREA, CLS_IMG_INNER, CLS_UPLOAD_FILES, CLS_RTE_DIALOG_UPLOAD, CLS_RTE_RES_CNT, CLS_CUSTOM_TILE, CLS_NOCOLOR_ITEM, CLS_TABLE, CLS_TABLE_BORDER, CLS_RTE_TABLE_RESIZE, CLS_RTE_FIXED_TB_EXPAND, CLS_RTE_TB_ENABLED, CLS_RTE_RES_WEST, CLS_RTE_SOURCE_CODE_TXTAREA, getIndex, hasClass, getDropDownValue, isIDevice, getFormattedFontSize, pageYOffset, getTooltipText, setToolbarStatus, getCollection, getTBarItemsIndex, updateUndoRedoStatus, dispatchEvent, parseHtml, getTextNodesUnder, toObjectLowerCase, getEditValue, updateTextNode, getDefaultValue, isEditableValueEmpty, decode, sanitizeHelper, convertToBlob, getLocaleFontFormat, updateDropDownFontFormatLocale, ServiceLocator, RendererFactory, EditorManager, IMAGE, AUDIO, VIDEO, TABLE, LINK, INSERT_ROW, INSERT_COLUMN, DELETEROW, DELETECOLUMN, REMOVETABLE, TABLEHEADER, TABLE_VERTICAL_ALIGN, TABLE_MERGE, TABLE_VERTICAL_SPLIT, TABLE_HORIZONTAL_SPLIT, TABLE_MOVE, ALIGNMENT_TYPE, INDENT_TYPE, DEFAULT_TAG, BLOCK_TAGS, IGNORE_BLOCK_TAGS, TABLE_BLOCK_TAGS, SELECTION_TYPE, INSERTHTML_TYPE, INSERT_TEXT_TYPE, CLEAR_TYPE, SELF_CLOSING_TAGS, PASTE_SOURCE, CLASS_IMAGE_RIGHT, CLASS_IMAGE_LEFT, CLASS_IMAGE_CENTER, CLASS_VIDEO_RIGHT, CLASS_VIDEO_LEFT, CLASS_VIDEO_CENTER, CLASS_IMAGE_BREAK, CLASS_AUDIO_BREAK, CLASS_VIDEO_BREAK, CLASS_CAPTION, CLASS_RTE_CAPTION, CLASS_CAPTION_INLINE, CLASS_IMAGE_INLINE, CLASS_AUDIO_INLINE, CLASS_CLICK_ELEM, CLASS_VIDEO_CLICK_ELEM, CLASS_AUDIO, CLASS_VIDEO, CLASS_AUDIO_WRAP, CLASS_VIDEO_WRAP, CLASS_EMBED_VIDEO_WRAP, CLASS_AUDIO_FOCUS, CLASS_VIDEO_FOCUS, CLASS_VIDEO_INLINE, Lists, markerClassName, DOMNode, Alignments, Indents, Formats, LinkCommand, InsertMethods, InsertTextExec, InsertHtmlExec, InsertHtml, IsFormatted, MsWordPaste, NodeCutter, ImageCommand, AudioCommand, VideoCommand, SelectionCommands, SelectionBasedExec, ClearFormatExec, UndoRedoManager, TableCommand, statusCollection, ToolbarStatus, FormatPainterActions, EmojiPickerAction, NodeSelection, MarkdownParser, LISTS_COMMAND, selectionCommand, LINK_COMMAND, CLEAR_COMMAND, MD_TABLE, INSERT_TEXT_COMMAND, ClearFormat, MDLists, MDFormats, MarkdownSelection, UndoRedoCommands, MDSelectionFormats, MDLink, MDTable, markdownFormatTags, markdownSelectionTags, markdownListsTags, htmlKeyConfig, markdownKeyConfig, pasteCleanupGroupingTags, listConversionFilters, selfClosingTags, imageResizeFactor, KEY_DOWN, ACTION, FORMAT_TYPE, KEY_DOWN_HANDLER, LIST_TYPE, KEY_UP_HANDLER, KEY_UP, MODEL_CHANGED_PLUGIN, MODEL_CHANGED, MS_WORD_CLEANUP_PLUGIN, MS_WORD_CLEANUP, ON_BEGIN, SPACE_ACTION, FORMAT_PAINTER_ACTIONS, EMOJI_PICKER_ACTIONS, MOUSE_DOWN };
37078
+ export { Toolbar$2 as Toolbar, KeyboardEvents$1 as KeyboardEvents, BaseToolbar, BaseQuickToolbar, QuickToolbar, Count, ColorPickerInput, MarkdownToolbarStatus, ExecCommandCallBack, ToolbarAction, MarkdownEditor, HtmlEditor, PasteCleanup, Resize, DropDownButtons, FileManager$1 as FileManager, FullScreen, setAttributes, HtmlToolbarStatus, XhtmlValidation, FormatPainter, EmojiPicker, HTMLFormatter, Formatter, MarkdownFormatter, ContentRender, Render, ToolbarRenderer, Link, Image$1 as Image, Audio, Video, ViewSource, Table, DialogRenderer, IframeContentRender, MarkdownRender, PopupRenderer, RichTextEditor, RenderType, ToolbarType, DialogType, ImageInputSource, executeGroup, created, destroyed, tableclass, load, initialLoad, contentChanged, initialEnd, iframeMouseDown, destroy, toolbarClick, toolbarRefresh, refreshBegin, toolbarUpdated, bindOnEnd, renderColorPicker, htmlToolbarClick, markdownToolbarClick, destroyColorPicker, modelChanged, tableModulekeyUp, keyUp, keyDown, mouseUp, toolbarCreated, toolbarRenderComplete, enableFullScreen, disableFullScreen, dropDownSelect, beforeDropDownItemRender, execCommandCallBack, imageToolbarAction, audioToolbarAction, videoToolbarAction, linkToolbarAction, windowResize, resizeStart, onResize, resizeStop, undo, redo, insertLink, unLink, editLink, openLink, actionBegin, actionComplete, updatedToolbarStatus, actionSuccess, updateToolbarItem, insertImage, insertAudio, insertVideo, insertCompleted, imageLeft, imageRight, imageCenter, imageBreak, imageInline, imageLink, imageAlt, imageDelete, audioDelete, videoDelete, imageCaption, imageSize, videoSize, sourceCode, updateSource, toolbarOpen, beforeDropDownOpen, selectionSave, selectionRestore, expandPopupClick, count, contentFocus, contentBlur, mouseDown, sourceCodeMouseDown, editAreaClick, scroll, contentscroll, colorPickerChanged, tableColorPickerChanged, focusChange, selectAll$1 as selectAll, selectRange, getSelectedHtml, renderInlineToolbar, paste, imgModule, rtlMode, createTable, docClick, tableToolbarAction, checkUndo, readOnlyMode, moduleDestroy, pasteClean, enterHandler, beforeDialogOpen, clearDialogObj, dialogOpen, beforeDialogClose, dialogClose, beforeQuickToolbarOpen, quickToolbarOpen, quickToolbarClose, popupHide, imageSelected, imageUploading, imageUploadSuccess, imageUploadFailed, imageRemoving, fileSelected, fileUploading, fileUploadSuccess, fileUploadFailed, fileRemoving, afterImageDelete, afterMediaDelete, drop, xhtmlValidation, beforeImageUpload, beforeFileUpload, resizeInitialized, renderFileManager, beforeImageDrop, dynamicModule, beforePasteCleanup, afterPasteCleanup, updateTbItemsStatus, showLinkDialog, closeLinkDialog, showImageDialog, showAudioDialog, showVideoDialog, closeImageDialog, closeAudioDialog, closeVideoDialog, showTableDialog, closeTableDialog, bindCssClass, formatPainterClick, formatPainterDoubleClick, emojiPicker, destroyTooltip, hidePopup, cleanupResizeElements, afterKeyDown, updateValueOnIdle, documentClickClosedBy, showColorPicker, closeTooltip, blockEmptyNodes, inlineEmptyNodes, supportedUnits, conversionFactors, onHandleFontsizeChange, CLS_RTE, CLS_RTL, CLS_CONTENT, CLS_DISABLED, CLS_SCRIPT_SHEET, CLS_STYLE_SHEET, CLS_TOOLBAR, CLS_TB_FIXED, CLS_TB_FLOAT, CLS_INLINE, CLS_TB_INLINE, CLS_RTE_EXPAND_TB, CLS_FULL_SCREEN, CLS_QUICK_TB, CLS_TEXT_QUICK_TB, CLS_POP, CLS_TB_STATIC, CLS_QUICK_POP, CLS_QUICK_DROPDOWN, CLS_IMAGE_POP, CLS_TEXT_POP, CLS_INLINE_POP, CLS_INLINE_DROPDOWN, CLS_DROPDOWN_POPUP, CLS_DROPDOWN_ICONS, CLS_DROPDOWN_ITEMS, CLS_DROPDOWN_BTN, CLS_RTE_CONTENT, CLS_TB_ITEM, CLS_TB_EXTENDED, CLS_TB_WRAP, CLS_POPUP, CLS_SEPARATOR, CLS_MINIMIZE, CLS_MAXIMIZE, CLS_BACK, CLS_SHOW, CLS_HIDE, CLS_VISIBLE, CLS_FOCUS, CLS_RM_WHITE_SPACE, CLS_IMGRIGHT, CLS_IMGLEFT, CLS_IMGCENTER, CLS_IMGBREAK, CLS_AUDIOBREAK, CLS_CLICKELEM, CLS_VID_CLICK_ELEM, CLS_AUDIOWRAP, CLS_VIDEOWRAP, CLS_VIDEOBREAK, CLS_CAPTION, CLS_RTE_CAPTION, CLS_CAPINLINE, CLS_IMGINLINE, CLS_AUDIOINLINE, CLS_VIDEOINLINE, CLS_COUNT, CLS_WARNING, CLS_ERROR, CLS_ICONS, CLS_ACTIVE, CLS_EXPAND_OPEN, CLS_RTE_ELEMENTS, CLS_TB_BTN, CLS_HR_SEPARATOR, CLS_TB_IOS_FIX, CLS_LIST_PRIMARY_CONTENT, CLS_NUMBERFORMATLIST_TB_BTN, CLS_BULLETFORMATLIST_TB_BTN, CLS_FORMATS_TB_BTN, CLS_FONT_NAME_TB_BTN, CLS_FONT_SIZE_TB_BTN, CLS_ALIGN_TB_BTN, CLS_FONT_COLOR_TARGET, CLS_BACKGROUND_COLOR_TARGET, CLS_COLOR_CONTENT, CLS_FONT_COLOR_DROPDOWN, CLS_BACKGROUND_COLOR_DROPDOWN, CLS_COLOR_PALETTE, CLS_FONT_COLOR_PICKER, CLS_BACKGROUND_COLOR_PICKER, CLS_RTE_READONLY, CLS_TABLE_SEL, CLS_TB_DASH_BOR, CLS_TB_ALT_BOR, CLS_TB_COL_RES, CLS_TB_ROW_RES, CLS_TB_BOX_RES, CLS_RTE_HIDDEN, CLS_RTE_PASTE_KEEP_FORMAT, CLS_RTE_PASTE_REMOVE_FORMAT, CLS_RTE_PASTE_PLAIN_FORMAT, CLS_RTE_PASTE_OK, CLS_RTE_PASTE_CANCEL, CLS_RTE_DIALOG_MIN_HEIGHT, CLS_RTE_RES_HANDLE, CLS_RTE_RES_EAST, CLS_RTE_IMAGE, CLS_RESIZE, CLS_IMG_FOCUS, CLS_AUD_FOCUS, CLS_VID_FOCUS, CLS_RTE_DRAG_IMAGE, CLS_RTE_UPLOAD_POPUP, CLS_POPUP_OPEN, CLS_IMG_RESIZE, CLS_DROPAREA, CLS_IMG_INNER, CLS_UPLOAD_FILES, CLS_RTE_DIALOG_UPLOAD, CLS_RTE_RES_CNT, CLS_CUSTOM_TILE, CLS_NOCOLOR_ITEM, CLS_TABLE, CLS_TABLE_BORDER, CLS_RTE_TABLE_RESIZE, CLS_RTE_FIXED_TB_EXPAND, CLS_RTE_TB_ENABLED, CLS_RTE_RES_WEST, CLS_RTE_SOURCE_CODE_TXTAREA, getIndex, hasClass, getDropDownValue, isIDevice, getFormattedFontSize, pageYOffset, getTooltipText, setToolbarStatus, getCollection, getTBarItemsIndex, updateUndoRedoStatus, dispatchEvent, parseHtml, getTextNodesUnder, toObjectLowerCase, getEditValue, updateTextNode, getDefaultValue, isEditableValueEmpty, decode, sanitizeHelper, convertToBlob, getLocaleFontFormat, updateDropDownFontFormatLocale, ServiceLocator, RendererFactory, EditorManager, IMAGE, AUDIO, VIDEO, TABLE, LINK, INSERT_ROW, INSERT_COLUMN, DELETEROW, DELETECOLUMN, REMOVETABLE, TABLEHEADER, TABLE_VERTICAL_ALIGN, TABLE_MERGE, TABLE_VERTICAL_SPLIT, TABLE_HORIZONTAL_SPLIT, TABLE_MOVE, ALIGNMENT_TYPE, INDENT_TYPE, DEFAULT_TAG, BLOCK_TAGS, IGNORE_BLOCK_TAGS, TABLE_BLOCK_TAGS, SELECTION_TYPE, INSERTHTML_TYPE, INSERT_TEXT_TYPE, CLEAR_TYPE, SELF_CLOSING_TAGS, PASTE_SOURCE, CLASS_IMAGE_RIGHT, CLASS_IMAGE_LEFT, CLASS_IMAGE_CENTER, CLASS_VIDEO_RIGHT, CLASS_VIDEO_LEFT, CLASS_VIDEO_CENTER, CLASS_IMAGE_BREAK, CLASS_AUDIO_BREAK, CLASS_VIDEO_BREAK, CLASS_CAPTION, CLASS_RTE_CAPTION, CLASS_CAPTION_INLINE, CLASS_IMAGE_INLINE, CLASS_AUDIO_INLINE, CLASS_CLICK_ELEM, CLASS_VIDEO_CLICK_ELEM, CLASS_AUDIO, CLASS_VIDEO, CLASS_AUDIO_WRAP, CLASS_VIDEO_WRAP, CLASS_EMBED_VIDEO_WRAP, CLASS_AUDIO_FOCUS, CLASS_VIDEO_FOCUS, CLASS_VIDEO_INLINE, Lists, markerClassName, DOMNode, Alignments, Indents, Formats, LinkCommand, InsertMethods, InsertTextExec, InsertHtmlExec, InsertHtml, IsFormatted, MsWordPaste, NodeCutter, ImageCommand, AudioCommand, VideoCommand, SelectionCommands, SelectionBasedExec, ClearFormatExec, UndoRedoManager, TableCommand, statusCollection, ToolbarStatus, FormatPainterActions, EmojiPickerAction, NodeSelection, MarkdownParser, LISTS_COMMAND, selectionCommand, LINK_COMMAND, CLEAR_COMMAND, MD_TABLE, INSERT_TEXT_COMMAND, ClearFormat, MDLists, MDFormats, MarkdownSelection, UndoRedoCommands, MDSelectionFormats, MDLink, MDTable, markdownFormatTags, markdownSelectionTags, markdownListsTags, htmlKeyConfig, markdownKeyConfig, pasteCleanupGroupingTags, listConversionFilters, selfClosingTags, imageResizeFactor, KEY_DOWN, ACTION, FORMAT_TYPE, KEY_DOWN_HANDLER, LIST_TYPE, KEY_UP_HANDLER, KEY_UP, MODEL_CHANGED_PLUGIN, MODEL_CHANGED, MS_WORD_CLEANUP_PLUGIN, MS_WORD_CLEANUP, ON_BEGIN, SPACE_ACTION, FORMAT_PAINTER_ACTIONS, EMOJI_PICKER_ACTIONS, MOUSE_DOWN };
36626
37079
  //# sourceMappingURL=ej2-richtexteditor.es2015.js.map