@syncfusion/ej2-richtexteditor 29.2.4-771571 → 29.2.4-803054

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 (316) hide show
  1. package/dist/ej2-richtexteditor.umd.min.js +1 -1
  2. package/dist/ej2-richtexteditor.umd.min.js.map +1 -1
  3. package/dist/es6/ej2-richtexteditor.es2015.js +140 -18
  4. package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
  5. package/dist/es6/ej2-richtexteditor.es5.js +162 -35
  6. package/dist/es6/ej2-richtexteditor.es5.js.map +1 -1
  7. package/package.json +1 -1
  8. package/src/editor-manager/plugin/clearformat.js +53 -22
  9. package/src/rich-text-editor/actions/enter-key.js +25 -9
  10. package/src/rich-text-editor/actions/paste-clean-up.d.ts +4 -0
  11. package/src/rich-text-editor/actions/paste-clean-up.js +79 -2
  12. package/src/rich-text-editor/base/rich-text-editor.js +4 -3
  13. package/src/rich-text-editor/models/toolbar-settings-model.d.ts +7 -0
  14. package/src/rich-text-editor/models/toolbar-settings.d.ts +6 -0
  15. package/src/rich-text-editor/models/toolbar-settings.js +3 -0
  16. package/styles/_all.bds.scss +1 -0
  17. package/styles/_all.bootstrap-dark.scss +1 -0
  18. package/styles/_all.bootstrap.scss +1 -0
  19. package/styles/_all.bootstrap4.scss +1 -0
  20. package/styles/_all.bootstrap5-dark.scss +1 -0
  21. package/styles/_all.bootstrap5.3.scss +1 -0
  22. package/styles/_all.bootstrap5.scss +1 -0
  23. package/styles/_all.fabric-dark.scss +1 -0
  24. package/styles/_all.fabric.scss +1 -0
  25. package/styles/_all.fluent-dark.scss +1 -0
  26. package/styles/_all.fluent.scss +1 -0
  27. package/styles/_all.fluent2.scss +1 -0
  28. package/styles/_all.highcontrast-light.scss +1 -0
  29. package/styles/_all.highcontrast.scss +1 -0
  30. package/styles/_all.material-dark.scss +1 -0
  31. package/styles/_all.material.scss +1 -0
  32. package/styles/_all.material3-dark.scss +1 -0
  33. package/styles/_all.material3.scss +1 -0
  34. package/styles/_all.scss +1 -1
  35. package/styles/_all.tailwind-dark.scss +1 -0
  36. package/styles/_all.tailwind.scss +1 -0
  37. package/styles/_all.tailwind3.scss +1 -0
  38. package/styles/bds-lite.css +239 -89
  39. package/styles/bds-lite.scss +3 -4
  40. package/styles/bds.css +347 -98
  41. package/styles/bds.scss +4 -5
  42. package/styles/bootstrap-dark-lite.css +206 -86
  43. package/styles/bootstrap-dark-lite.scss +3 -4
  44. package/styles/bootstrap-dark.css +299 -95
  45. package/styles/bootstrap-dark.scss +4 -5
  46. package/styles/bootstrap-lite.css +384 -86
  47. package/styles/bootstrap-lite.scss +3 -4
  48. package/styles/bootstrap.css +566 -95
  49. package/styles/bootstrap.scss +4 -5
  50. package/styles/bootstrap4-lite.css +565 -93
  51. package/styles/bootstrap4-lite.scss +3 -4
  52. package/styles/bootstrap4.css +850 -115
  53. package/styles/bootstrap4.scss +4 -5
  54. package/styles/bootstrap5-dark-lite.css +193 -87
  55. package/styles/bootstrap5-dark-lite.scss +3 -4
  56. package/styles/bootstrap5-dark.css +279 -96
  57. package/styles/bootstrap5-dark.scss +4 -5
  58. package/styles/bootstrap5-lite.css +187 -87
  59. package/styles/bootstrap5-lite.scss +4 -4
  60. package/styles/bootstrap5.3-lite.css +456 -108
  61. package/styles/bootstrap5.3-lite.scss +4 -4
  62. package/styles/bootstrap5.3.css +627 -118
  63. package/styles/bootstrap5.3.scss +5 -5
  64. package/styles/bootstrap5.css +273 -96
  65. package/styles/bootstrap5.scss +5 -5
  66. package/styles/fabric-dark-lite.css +193 -87
  67. package/styles/fabric-dark-lite.scss +4 -4
  68. package/styles/fabric-dark.css +279 -96
  69. package/styles/fabric-dark.scss +5 -5
  70. package/styles/fabric-lite.css +193 -87
  71. package/styles/fabric-lite.scss +4 -4
  72. package/styles/fabric.css +279 -96
  73. package/styles/fabric.scss +5 -5
  74. package/styles/fluent-dark-lite.css +195 -98
  75. package/styles/fluent-dark-lite.scss +4 -4
  76. package/styles/fluent-dark.css +281 -107
  77. package/styles/fluent-dark.scss +5 -5
  78. package/styles/fluent-lite.css +195 -89
  79. package/styles/fluent-lite.scss +4 -4
  80. package/styles/fluent.css +281 -98
  81. package/styles/fluent.scss +5 -5
  82. package/styles/fluent2-lite.css +519 -114
  83. package/styles/fluent2-lite.scss +4 -4
  84. package/styles/fluent2.css +703 -126
  85. package/styles/fluent2.scss +5 -5
  86. package/styles/highcontrast-light-lite.css +193 -87
  87. package/styles/highcontrast-light-lite.scss +4 -4
  88. package/styles/highcontrast-light.css +279 -96
  89. package/styles/highcontrast-light.scss +5 -5
  90. package/styles/highcontrast-lite.css +193 -87
  91. package/styles/highcontrast-lite.scss +4 -4
  92. package/styles/highcontrast.css +279 -96
  93. package/styles/highcontrast.scss +5 -5
  94. package/styles/material-dark-lite.css +192 -86
  95. package/styles/material-dark-lite.scss +4 -4
  96. package/styles/material-dark.css +278 -95
  97. package/styles/material-dark.scss +5 -5
  98. package/styles/material-lite.css +192 -86
  99. package/styles/material-lite.scss +3 -4
  100. package/styles/material.css +278 -95
  101. package/styles/material.scss +4 -5
  102. package/styles/material3-dark-lite.css +539 -105
  103. package/styles/material3-dark-lite.scss +4 -4
  104. package/styles/material3-dark.css +723 -130
  105. package/styles/material3-dark.scss +5 -7
  106. package/styles/material3-lite.css +459 -105
  107. package/styles/material3-lite.scss +4 -4
  108. package/styles/material3.css +645 -130
  109. package/styles/material3.scss +5 -7
  110. package/styles/rich-text-editor/_all.bds.scss +2 -0
  111. package/styles/rich-text-editor/_all.bootstrap-dark.scss +2 -0
  112. package/styles/rich-text-editor/_all.bootstrap.scss +2 -0
  113. package/styles/rich-text-editor/_all.bootstrap4.scss +2 -0
  114. package/styles/rich-text-editor/_all.bootstrap5-dark.scss +2 -0
  115. package/styles/rich-text-editor/_all.bootstrap5.3.scss +2 -0
  116. package/styles/rich-text-editor/_all.bootstrap5.scss +2 -0
  117. package/styles/rich-text-editor/_all.fabric-dark.scss +2 -0
  118. package/styles/rich-text-editor/_all.fabric.scss +2 -0
  119. package/styles/rich-text-editor/_all.fluent-dark.scss +2 -0
  120. package/styles/rich-text-editor/_all.fluent.scss +2 -0
  121. package/styles/rich-text-editor/_all.fluent2.scss +2 -0
  122. package/styles/rich-text-editor/_all.highcontrast-light.scss +2 -0
  123. package/styles/rich-text-editor/_all.highcontrast.scss +2 -0
  124. package/styles/rich-text-editor/_all.material-dark.scss +2 -0
  125. package/styles/rich-text-editor/_all.material.scss +2 -0
  126. package/styles/rich-text-editor/_all.material3-dark.scss +2 -0
  127. package/styles/rich-text-editor/_all.material3.scss +2 -0
  128. package/styles/rich-text-editor/_all.scss +2 -2
  129. package/styles/rich-text-editor/_all.tailwind-dark.scss +2 -0
  130. package/styles/rich-text-editor/_all.tailwind.scss +2 -0
  131. package/styles/rich-text-editor/_all.tailwind3.scss +2 -0
  132. package/styles/rich-text-editor/_bds-definition.scss +468 -27
  133. package/styles/rich-text-editor/_bigger.bds.scss +3 -0
  134. package/styles/rich-text-editor/_bigger.bootstrap-dark.scss +3 -0
  135. package/styles/rich-text-editor/_bigger.bootstrap.scss +3 -0
  136. package/styles/rich-text-editor/_bigger.bootstrap4.scss +3 -0
  137. package/styles/rich-text-editor/_bigger.bootstrap5-dark.scss +3 -0
  138. package/styles/rich-text-editor/_bigger.bootstrap5.3.scss +3 -0
  139. package/styles/rich-text-editor/_bigger.bootstrap5.scss +3 -0
  140. package/styles/rich-text-editor/_bigger.fabric-dark.scss +3 -0
  141. package/styles/rich-text-editor/_bigger.fabric.scss +3 -0
  142. package/styles/rich-text-editor/_bigger.fluent-dark.scss +3 -0
  143. package/styles/rich-text-editor/_bigger.fluent.scss +3 -0
  144. package/styles/rich-text-editor/_bigger.fluent2.scss +3 -0
  145. package/styles/rich-text-editor/_bigger.highcontrast-light.scss +3 -0
  146. package/styles/rich-text-editor/_bigger.highcontrast.scss +3 -0
  147. package/styles/rich-text-editor/_bigger.material-dark.scss +3 -0
  148. package/styles/rich-text-editor/_bigger.material.scss +3 -0
  149. package/styles/rich-text-editor/_bigger.material3-dark.scss +3 -0
  150. package/styles/rich-text-editor/_bigger.material3.scss +3 -0
  151. package/styles/rich-text-editor/_bigger.scss +152 -57
  152. package/styles/rich-text-editor/_bigger.tailwind-dark.scss +3 -0
  153. package/styles/rich-text-editor/_bigger.tailwind.scss +3 -0
  154. package/styles/rich-text-editor/_bigger.tailwind3.scss +3 -0
  155. package/styles/rich-text-editor/_bootstrap-dark-definition.scss +467 -26
  156. package/styles/rich-text-editor/_bootstrap-definition.scss +467 -26
  157. package/styles/rich-text-editor/_bootstrap4-definition.scss +473 -33
  158. package/styles/rich-text-editor/_bootstrap5-dark-definition.scss +709 -1
  159. package/styles/rich-text-editor/_bootstrap5-definition.scss +467 -27
  160. package/styles/rich-text-editor/_bootstrap5.3-definition.scss +469 -29
  161. package/styles/rich-text-editor/_fabric-dark-definition.scss +467 -27
  162. package/styles/rich-text-editor/_fabric-definition.scss +466 -27
  163. package/styles/rich-text-editor/_fluent-dark-definition.scss +710 -1
  164. package/styles/rich-text-editor/_fluent-definition.scss +470 -27
  165. package/styles/rich-text-editor/_fluent2-definition.scss +478 -33
  166. package/styles/rich-text-editor/_fusionnew-definition.scss +464 -26
  167. package/styles/rich-text-editor/_highcontrast-definition.scss +466 -26
  168. package/styles/rich-text-editor/_highcontrast-light-definition.scss +466 -26
  169. package/styles/rich-text-editor/_layout.bds.scss +3 -0
  170. package/styles/rich-text-editor/_layout.bootstrap-dark.scss +3 -0
  171. package/styles/rich-text-editor/_layout.bootstrap.scss +3 -0
  172. package/styles/rich-text-editor/_layout.bootstrap4.scss +3 -0
  173. package/styles/rich-text-editor/_layout.bootstrap5-dark.scss +3 -0
  174. package/styles/rich-text-editor/_layout.bootstrap5.3.scss +3 -0
  175. package/styles/rich-text-editor/_layout.bootstrap5.scss +3 -0
  176. package/styles/rich-text-editor/_layout.fabric-dark.scss +3 -0
  177. package/styles/rich-text-editor/_layout.fabric.scss +3 -0
  178. package/styles/rich-text-editor/_layout.fluent-dark.scss +3 -0
  179. package/styles/rich-text-editor/_layout.fluent.scss +3 -0
  180. package/styles/rich-text-editor/_layout.fluent2.scss +3 -0
  181. package/styles/rich-text-editor/_layout.highcontrast-light.scss +3 -0
  182. package/styles/rich-text-editor/_layout.highcontrast.scss +3 -0
  183. package/styles/rich-text-editor/_layout.material-dark.scss +3 -0
  184. package/styles/rich-text-editor/_layout.material.scss +3 -0
  185. package/styles/rich-text-editor/_layout.material3-dark.scss +3 -0
  186. package/styles/rich-text-editor/_layout.material3.scss +3 -0
  187. package/styles/rich-text-editor/_layout.scss +448 -353
  188. package/styles/rich-text-editor/_layout.tailwind-dark.scss +3 -0
  189. package/styles/rich-text-editor/_layout.tailwind.scss +3 -0
  190. package/styles/rich-text-editor/_layout.tailwind3.scss +3 -0
  191. package/styles/rich-text-editor/_material-dark-definition.scss +466 -28
  192. package/styles/rich-text-editor/_material-definition.scss +466 -26
  193. package/styles/rich-text-editor/_material3-dark-definition.scss +714 -1
  194. package/styles/rich-text-editor/_material3-definition.scss +473 -30
  195. package/styles/rich-text-editor/_tailwind-dark-definition.scss +706 -1
  196. package/styles/rich-text-editor/_tailwind-definition.scss +468 -28
  197. package/styles/rich-text-editor/_tailwind3-definition.scss +474 -34
  198. package/styles/rich-text-editor/_theme-variables.bds.scss +1 -0
  199. package/styles/rich-text-editor/_theme-variables.bootstrap-dark.scss +1 -0
  200. package/styles/rich-text-editor/_theme-variables.bootstrap.scss +1 -0
  201. package/styles/rich-text-editor/_theme-variables.bootstrap4.scss +1 -0
  202. package/styles/rich-text-editor/_theme-variables.bootstrap5-dark.scss +1 -0
  203. package/styles/rich-text-editor/_theme-variables.bootstrap5.3.scss +1 -0
  204. package/styles/rich-text-editor/_theme-variables.bootstrap5.scss +1 -0
  205. package/styles/rich-text-editor/_theme-variables.fabric-dark.scss +1 -0
  206. package/styles/rich-text-editor/_theme-variables.fabric.scss +1 -0
  207. package/styles/rich-text-editor/_theme-variables.fluent-dark.scss +1 -0
  208. package/styles/rich-text-editor/_theme-variables.fluent.scss +1 -0
  209. package/styles/rich-text-editor/_theme-variables.fluent2.scss +1 -0
  210. package/styles/rich-text-editor/_theme-variables.highcontrast-light.scss +1 -0
  211. package/styles/rich-text-editor/_theme-variables.highcontrast.scss +1 -0
  212. package/styles/rich-text-editor/_theme-variables.material-dark.scss +1 -0
  213. package/styles/rich-text-editor/_theme-variables.material.scss +1 -0
  214. package/styles/rich-text-editor/_theme-variables.material3-dark.scss +1 -0
  215. package/styles/rich-text-editor/_theme-variables.material3.scss +1 -0
  216. package/styles/rich-text-editor/_theme-variables.tailwind-dark.scss +1 -0
  217. package/styles/rich-text-editor/_theme-variables.tailwind.scss +1 -0
  218. package/styles/rich-text-editor/_theme-variables.tailwind3.scss +1 -0
  219. package/styles/rich-text-editor/_theme.bds.scss +4 -0
  220. package/styles/rich-text-editor/_theme.bootstrap-dark.scss +4 -0
  221. package/styles/rich-text-editor/_theme.bootstrap.scss +4 -0
  222. package/styles/rich-text-editor/_theme.bootstrap4.scss +4 -0
  223. package/styles/rich-text-editor/_theme.bootstrap5-dark.scss +4 -0
  224. package/styles/rich-text-editor/_theme.bootstrap5.3.scss +4 -0
  225. package/styles/rich-text-editor/_theme.bootstrap5.scss +4 -0
  226. package/styles/rich-text-editor/_theme.fabric-dark.scss +4 -0
  227. package/styles/rich-text-editor/_theme.fabric.scss +4 -0
  228. package/styles/rich-text-editor/_theme.fluent-dark.scss +4 -0
  229. package/styles/rich-text-editor/_theme.fluent.scss +4 -0
  230. package/styles/rich-text-editor/_theme.fluent2.scss +4 -0
  231. package/styles/rich-text-editor/_theme.highcontrast-light.scss +4 -0
  232. package/styles/rich-text-editor/_theme.highcontrast.scss +4 -0
  233. package/styles/rich-text-editor/_theme.material-dark.scss +4 -0
  234. package/styles/rich-text-editor/_theme.material.scss +4 -0
  235. package/styles/rich-text-editor/_theme.material3-dark.scss +4 -0
  236. package/styles/rich-text-editor/_theme.material3.scss +4 -0
  237. package/styles/rich-text-editor/_theme.scss +65 -36
  238. package/styles/rich-text-editor/_theme.tailwind-dark.scss +4 -0
  239. package/styles/rich-text-editor/_theme.tailwind.scss +4 -0
  240. package/styles/rich-text-editor/_theme.tailwind3.scss +4 -0
  241. package/styles/rich-text-editor/bds.css +347 -98
  242. package/styles/rich-text-editor/bds.scss +5 -5
  243. package/styles/rich-text-editor/bootstrap-dark.css +299 -95
  244. package/styles/rich-text-editor/bootstrap-dark.scss +5 -5
  245. package/styles/rich-text-editor/bootstrap.css +566 -95
  246. package/styles/rich-text-editor/bootstrap.scss +5 -5
  247. package/styles/rich-text-editor/bootstrap4.css +850 -115
  248. package/styles/rich-text-editor/bootstrap4.scss +5 -5
  249. package/styles/rich-text-editor/bootstrap5-dark.css +279 -96
  250. package/styles/rich-text-editor/bootstrap5-dark.scss +5 -5
  251. package/styles/rich-text-editor/bootstrap5.3.css +627 -118
  252. package/styles/rich-text-editor/bootstrap5.3.scss +5 -5
  253. package/styles/rich-text-editor/bootstrap5.css +273 -96
  254. package/styles/rich-text-editor/bootstrap5.scss +5 -5
  255. package/styles/rich-text-editor/fabric-dark.css +279 -96
  256. package/styles/rich-text-editor/fabric-dark.scss +5 -5
  257. package/styles/rich-text-editor/fabric.css +279 -96
  258. package/styles/rich-text-editor/fabric.scss +5 -5
  259. package/styles/rich-text-editor/fluent-dark.css +281 -107
  260. package/styles/rich-text-editor/fluent-dark.scss +5 -5
  261. package/styles/rich-text-editor/fluent.css +281 -98
  262. package/styles/rich-text-editor/fluent.scss +5 -5
  263. package/styles/rich-text-editor/fluent2.css +703 -126
  264. package/styles/rich-text-editor/fluent2.scss +5 -5
  265. package/styles/rich-text-editor/highcontrast-light.css +279 -96
  266. package/styles/rich-text-editor/highcontrast-light.scss +5 -5
  267. package/styles/rich-text-editor/highcontrast.css +279 -96
  268. package/styles/rich-text-editor/highcontrast.scss +5 -5
  269. package/styles/rich-text-editor/icons/_bds.scss +7 -0
  270. package/styles/rich-text-editor/icons/_bootstrap-dark.scss +7 -0
  271. package/styles/rich-text-editor/icons/_bootstrap.scss +7 -0
  272. package/styles/rich-text-editor/icons/_bootstrap4.scss +7 -0
  273. package/styles/rich-text-editor/icons/_bootstrap5-dark.scss +1 -1
  274. package/styles/rich-text-editor/icons/_bootstrap5.3.scss +7 -0
  275. package/styles/rich-text-editor/icons/_bootstrap5.scss +7 -0
  276. package/styles/rich-text-editor/icons/_fabric-dark.scss +7 -0
  277. package/styles/rich-text-editor/icons/_fabric.scss +7 -0
  278. package/styles/rich-text-editor/icons/_fluent-dark.scss +1 -1
  279. package/styles/rich-text-editor/icons/_fluent.scss +6 -0
  280. package/styles/rich-text-editor/icons/_fluent2.scss +7 -0
  281. package/styles/rich-text-editor/icons/_fusionnew.scss +7 -0
  282. package/styles/rich-text-editor/icons/_highcontrast-light.scss +7 -0
  283. package/styles/rich-text-editor/icons/_highcontrast.scss +7 -0
  284. package/styles/rich-text-editor/icons/_material-dark.scss +7 -0
  285. package/styles/rich-text-editor/icons/_material.scss +7 -0
  286. package/styles/rich-text-editor/icons/_material3-dark.scss +1 -1
  287. package/styles/rich-text-editor/icons/_material3.scss +7 -0
  288. package/styles/rich-text-editor/icons/_tailwind-dark.scss +1 -1
  289. package/styles/rich-text-editor/icons/_tailwind.scss +7 -0
  290. package/styles/rich-text-editor/icons/_tailwind3.scss +7 -0
  291. package/styles/rich-text-editor/material-dark.css +278 -95
  292. package/styles/rich-text-editor/material-dark.scss +5 -5
  293. package/styles/rich-text-editor/material.css +278 -95
  294. package/styles/rich-text-editor/material.scss +5 -5
  295. package/styles/rich-text-editor/material3-dark.css +723 -130
  296. package/styles/rich-text-editor/material3-dark.scss +5 -6
  297. package/styles/rich-text-editor/material3.css +645 -130
  298. package/styles/rich-text-editor/material3.scss +5 -6
  299. package/styles/rich-text-editor/tailwind-dark.css +282 -99
  300. package/styles/rich-text-editor/tailwind-dark.scss +5 -5
  301. package/styles/rich-text-editor/tailwind.css +282 -99
  302. package/styles/rich-text-editor/tailwind.scss +5 -5
  303. package/styles/rich-text-editor/tailwind3.css +593 -115
  304. package/styles/rich-text-editor/tailwind3.scss +5 -5
  305. package/styles/tailwind-dark-lite.css +196 -90
  306. package/styles/tailwind-dark-lite.scss +4 -4
  307. package/styles/tailwind-dark.css +282 -99
  308. package/styles/tailwind-dark.scss +5 -5
  309. package/styles/tailwind-lite.css +196 -90
  310. package/styles/tailwind-lite.scss +4 -4
  311. package/styles/tailwind.css +282 -99
  312. package/styles/tailwind.scss +5 -5
  313. package/styles/tailwind3-lite.css +430 -104
  314. package/styles/tailwind3-lite.scss +4 -4
  315. package/styles/tailwind3.css +593 -115
  316. package/styles/tailwind3.scss +5 -5
@@ -14232,9 +14232,36 @@ class ClearFormat {
14232
14232
  && this.IGNORE_PARENT_TAGS.indexOf(parentNodes[index1].childNodes[0].nodeName.toLocaleLowerCase()) > -1)
14233
14233
  && !(parentNodes[index1].childNodes.length === 1
14234
14234
  && parentNodes[index1].childNodes[0].nodeName.toLocaleLowerCase() === 'p')) {
14235
- InsertMethods.Wrap(parentNodes[index1], docElement.createElement(this.defaultTag));
14235
+ const target = parentNodes[index1];
14236
+ if (['TABLE', 'TD', 'TH', 'TBODY', 'TR'].indexOf(target.nodeName) !== -1) {
14237
+ if (target.hasAttribute('style')) {
14238
+ target.removeAttribute('style'); // Remove style if present
14239
+ }
14240
+ if (target.hasAttribute('class')) {
14241
+ const allowedClasses = new Set(['e-rte-table', 'e-rte-paste-table', 'e-rte-custom-table']);
14242
+ const filteredClasses = target.className
14243
+ .split(/\s+/)
14244
+ .filter((cls) => allowedClasses.has(cls));
14245
+ if (filteredClasses.length > 0) {
14246
+ target.className = filteredClasses.join(' ');
14247
+ }
14248
+ else {
14249
+ target.removeAttribute('class');
14250
+ }
14251
+ }
14252
+ }
14253
+ else {
14254
+ InsertMethods.Wrap(parentNodes[index1], docElement.createElement(this.defaultTag));
14255
+ }
14256
+ }
14257
+ let childNodes = [];
14258
+ if (parentNodes[index1].nodeName === 'TABLE' || parentNodes[index1].nodeName === 'TD' || parentNodes[index1].nodeName === 'TH' ||
14259
+ parentNodes[index1].nodeName === 'TBODY' || parentNodes[index1].nodeName === 'TR') {
14260
+ childNodes = Array.from(parentNodes[index1].childNodes);
14261
+ }
14262
+ else {
14263
+ childNodes = InsertMethods.unwrap(parentNodes[index1]);
14236
14264
  }
14237
- const childNodes = InsertMethods.unwrap(parentNodes[index1]);
14238
14265
  if (childNodes.length === 1
14239
14266
  && childNodes[0].parentNode.nodeName.toLocaleLowerCase() === 'p') {
14240
14267
  InsertMethods.Wrap(parentNodes[index1], docElement.createElement(this.defaultTag));
@@ -14304,10 +14331,10 @@ class ClearFormat {
14304
14331
  ClearFormat.BLOCK_TAGS = ['address', 'article', 'aside', 'blockquote',
14305
14332
  'details', 'dd', 'div', 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer',
14306
14333
  'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hgroup', 'li', 'main', 'nav',
14307
- 'noscript', 'ol', 'p', 'pre', 'section', 'ul'];
14308
- ClearFormat.NONVALID_PARENT_TAGS = ['thead', 'tbody', 'ul', 'ol', 'table', 'tfoot', 'tr'];
14334
+ 'noscript', 'ol', 'p', 'pre', 'section', 'ul', 'table', 'td', 'th', 'tbody', 'tr'];
14335
+ ClearFormat.NONVALID_PARENT_TAGS = ['thead', 'ul', 'ol', 'tfoot'];
14309
14336
  ClearFormat.IGNORE_PARENT_TAGS = ['ul', 'ol', 'table'];
14310
- ClearFormat.NONVALID_TAGS = ['thead', 'tbody', 'figcaption', 'td', 'tr', 'th', 'tfoot', 'figcaption', 'li'];
14337
+ ClearFormat.NONVALID_TAGS = ['thead', 'figcaption', 'tr', 'tfoot', 'figcaption', 'li'];
14311
14338
  ClearFormat.defaultTag = 'p';
14312
14339
 
14313
14340
  /**
@@ -28337,6 +28364,9 @@ __decorate$1([
28337
28364
  __decorate$1([
28338
28365
  Property(false)
28339
28366
  ], ImageSettings.prototype, "resizeByPercent", void 0);
28367
+ __decorate$1([
28368
+ Property(false)
28369
+ ], ImageSettings.prototype, "uploadRemoteURLs", void 0);
28340
28370
  /**
28341
28371
  * Configures the audio settings of the RichTextEditor.
28342
28372
  */
@@ -29239,7 +29269,7 @@ class EnterKeyAction {
29239
29269
  }
29240
29270
  }
29241
29271
  else if (nearBlockNode !== this.parent.inputElement && nearBlockNode.textContent.length === 0 && !(!isNullOrUndefined(nearBlockNode.childNodes[0]) && nearBlockNode.childNodes[0].nodeName === 'IMG' ||
29242
- (nearBlockNode.querySelectorAll('video').length > 0) || (nearBlockNode.querySelectorAll('audio').length > 0) || (nearBlockNode.querySelectorAll('img').length > 0))) {
29272
+ (nearBlockNode.querySelectorAll('video').length > 0) || (nearBlockNode.querySelectorAll('.e-video-wrap').length > 0) || (nearBlockNode.querySelectorAll('audio').length > 0) || (nearBlockNode.querySelectorAll('img').length > 0))) {
29243
29273
  if (!isNullOrUndefined(nearBlockNode.children[0]) && nearBlockNode.children[0].tagName !== 'BR') {
29244
29274
  const newElem = this.parent.formatter.editorManager.nodeCutter.SplitNode(this.range, nearBlockNode, false).cloneNode(true);
29245
29275
  this.parent.formatter.editorManager.domNode.insertAfter(newElem, nearBlockNode);
@@ -29255,7 +29285,7 @@ class EnterKeyAction {
29255
29285
  else if (this.range.startContainer === this.range.endContainer && this.range.startContainer.nodeType !== Node.TEXT_NODE && ((this.range.startContainer.nodeName === 'IMG' || this.range.startContainer.querySelector('img')) ||
29256
29286
  (this.range.startContainer.nodeName === 'SPAN' && (this.range.startContainer.classList.contains('e-video-wrap') ||
29257
29287
  this.range.startContainer.classList.contains('e-audio-wrap'))))) {
29258
- if (nearBlockNode.textContent.trim().length > 0) {
29288
+ if (nearBlockNode.textContent.trim().length > 0 && !(nearBlockNode.querySelector('iframe') && nearBlockNode.textContent === '​')) {
29259
29289
  const newElem = this.parent.formatter.editorManager.nodeCutter.SplitNode(this.range, nearBlockNode, true);
29260
29290
  const audioVideoElem = !isNullOrUndefined(newElem.previousSibling.querySelector('.e-video-wrap')) ?
29261
29291
  newElem.previousSibling.querySelector('.e-video-wrap') : newElem.previousSibling.querySelector('.e-audio-wrap');
@@ -29278,20 +29308,32 @@ class EnterKeyAction {
29278
29308
  }
29279
29309
  detach(audioVideoElem);
29280
29310
  }
29311
+ else if (!isNullOrUndefined(newElem) && !newElem.hasChildNodes()) {
29312
+ const brElm = this.parent.createElement('br');
29313
+ newElem.appendChild(brElm);
29314
+ this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), newElem, 0);
29315
+ }
29281
29316
  }
29282
29317
  else {
29283
29318
  const newElem = this.parent.formatter.editorManager.nodeCutter.SplitNode(this.range, nearBlockNode, true);
29284
29319
  let focusElem = newElem.hasChildNodes() ? newElem.previousSibling : newElem;
29285
29320
  const imageElem = !isNullOrUndefined(newElem.querySelector('img')) ?
29286
29321
  newElem.querySelector('img') : null;
29322
+ const videoElem = !isNullOrUndefined(newElem.querySelector('.e-video-wrap')) ?
29323
+ newElem.querySelector('.e-video-wrap') : null;
29287
29324
  const insertElem = this.createInsertElement(shiftKey);
29288
- if (!isNullOrUndefined(imageElem)) {
29325
+ if (!isNullOrUndefined(imageElem) || !isNullOrUndefined(videoElem)) {
29289
29326
  if (isFocusedFirst) {
29290
29327
  newElem.parentElement.insertBefore(insertElem, newElem);
29291
29328
  focusElem = newElem.previousSibling;
29292
29329
  }
29293
29330
  else {
29294
29331
  this.parent.formatter.editorManager.domNode.insertAfter(insertElem, newElem);
29332
+ const isVideoInfocusElem = videoElem && focusElem.nodeType === Node.ELEMENT_NODE && focusElem.children.length === 1 && focusElem.lastChild.classList.contains('e-video-wrap');
29333
+ if (!isNullOrUndefined(focusElem) && focusElem !== newElem && newElem.previousSibling === focusElem &&
29334
+ isVideoInfocusElem) {
29335
+ detach(focusElem);
29336
+ }
29295
29337
  focusElem = newElem.nextSibling;
29296
29338
  }
29297
29339
  }
@@ -29425,11 +29467,12 @@ class EnterKeyAction {
29425
29467
  const isImageElement = (this.range.startContainer.nodeName === 'IMG' || (this.range.startContainer.childNodes.length > 0
29426
29468
  && !isNullOrUndefined(this.range.startContainer.childNodes[this.range.startOffset]) && this.range.startContainer.childNodes[this.range.startOffset].nodeName === 'IMG') || (this.range.startContainer.nodeType === 1 &&
29427
29469
  this.range.startContainer.querySelector('img') !== null));
29470
+ const isImageWithWhiteSpace = this.range.startContainer.nodeName === '#text' && this.range.startContainer.textContent.trim() === '' && this.range.startContainer.textContent.length === 1 && this.range.startContainer.previousSibling && this.range.startContainer.previousSibling.nodeName === 'IMG';
29428
29471
  if (currentParent !== this.parent.inputElement &&
29429
29472
  this.parent.formatter.editorManager.domNode.isBlockNode(currentParent) &&
29430
29473
  this.range.startOffset === this.range.endOffset &&
29431
29474
  (this.range.startOffset === isLastNodeLength ||
29432
- (currentParent.textContent.trim().length === 0 && isImageElement))) {
29475
+ (currentParent.textContent.trim().length === 0 && (isImageElement || isImageWithWhiteSpace)))) {
29433
29476
  const focusBRElem = this.parent.createElement('br');
29434
29477
  if (this.range.startOffset === 0 && this.range.startContainer.nodeName === 'TABLE') {
29435
29478
  this.range.startContainer.parentElement.insertBefore(focusBRElem, this.range.startContainer);
@@ -29446,11 +29489,17 @@ class EnterKeyAction {
29446
29489
  else {
29447
29490
  const lineBreakBRElem = this.parent.createElement('br');
29448
29491
  const parentElement = this.range.startContainer.parentElement;
29492
+ const startContainer = this.range.startContainer;
29493
+ const isImageInBlock = isImageElement && startContainer.nodeName !== 'IMG' && startContainer.childNodes[this.range.startOffset - 1] &&
29494
+ startContainer.childNodes[this.range.startOffset - 1].nodeName === 'IMG';
29449
29495
  let anchorElement;
29450
29496
  if (parentElement && parentElement.nodeName === 'A' &&
29451
29497
  parentElement.textContent.length === this.range.startOffset) {
29452
29498
  anchorElement = parentElement;
29453
29499
  }
29500
+ else if (isImageInBlock) {
29501
+ anchorElement = startContainer.childNodes[this.range.startOffset - 1];
29502
+ }
29454
29503
  else if (parentElement) {
29455
29504
  const closestAnchor = parentElement.closest('a');
29456
29505
  anchorElement = closestAnchor ? closestAnchor : this.range.startContainer;
@@ -29471,7 +29520,7 @@ class EnterKeyAction {
29471
29520
  if (currentParent.textContent.trim().length === 0 || (currentParent.textContent.trim().length === 1 &&
29472
29521
  currentParent.textContent.charCodeAt(0) === 8203)) {
29473
29522
  if ((currentParent.childElementCount > 0 && currentParent.lastElementChild.nodeName === 'IMG') || (currentParent.lastElementChild && currentParent.lastElementChild.nodeName === 'BR') || !isNullOrUndefined(currentParent.firstElementChild) &&
29474
- (currentParent.querySelector('.e-video-wrap') || currentParent.querySelector('.e-audio-wrap'))) {
29523
+ (currentParent.querySelector('.e-video-wrap') || currentParent.classList.contains('e-video-wrap') || currentParent.querySelector('.e-audio-wrap') || currentParent.classList.contains('e-audio-wrap'))) {
29475
29524
  this.insertBRElement();
29476
29525
  }
29477
29526
  else {
@@ -29572,9 +29621,6 @@ class EnterKeyAction {
29572
29621
  }
29573
29622
  else if (this.startNode.tagName === 'SPAN' && (this.startNode.classList.contains('e-video-wrap') || this.startNode.classList.contains('e-audio-wrap'))) {
29574
29623
  this.startNode.parentElement.insertBefore(brElm, this.startNode);
29575
- const nearBlockNode = this.parent.formatter.editorManager.domNode.blockParentNode(this.startNode);
29576
- const newElem = this.parent.formatter.editorManager.nodeCutter.SplitNode(this.range, nearBlockNode, true);
29577
- detach(newElem.previousSibling.childNodes[1]);
29578
29624
  isEmptyBrInserted = true;
29579
29625
  }
29580
29626
  else if (this.startNode.nodeType === Node.ELEMENT_NODE && this.startNode.childElementCount > 0 && this.startNode.lastElementChild.nodeName === 'IMG') {
@@ -29587,7 +29633,7 @@ class EnterKeyAction {
29587
29633
  isEmptyBrInserted = true;
29588
29634
  }
29589
29635
  }
29590
- const isBRNextElement = ((!isNullOrUndefined(brElm.nextSibling) && (brElm.nextSibling.textContent.length > 0 || brElm.nextSibling.nodeName !== '#text' && brElm.nextSibling.querySelectorAll('audio,video,table,img').length > 0)) || (!isNullOrUndefined(brElm.nextElementSibling) && brElm.nextElementSibling.tagName === 'BR') || this.range.startContainer.nodeName === 'BR');
29636
+ const isBRNextElement = ((!isNullOrUndefined(brElm.nextSibling) && (brElm.nextSibling.textContent.length > 0 || brElm.nextSibling.nodeName !== '#text' && (brElm.nextSibling.querySelectorAll('audio,video,table,img').length > 0 || brElm.nextSibling.querySelectorAll('.e-video-wrap').length > 0))) || (!isNullOrUndefined(brElm.nextElementSibling) && brElm.nextElementSibling.tagName === 'BR') || this.range.startContainer.nodeName === 'BR');
29591
29637
  const isMediaElement = !isNullOrUndefined(brElm.nextSibling) && (!isNullOrUndefined(brElm.nextSibling.classList) && (brElm.nextSibling.classList.contains('e-video-wrap') || brElm.nextSibling.classList.contains('e-audio-wrap')));
29592
29638
  if (isBRNextElement && (isEmptyBrInserted || (!isNullOrUndefined(brElm.nextSibling) && brElm.nextSibling.nodeName === '#text' && brElm.nextSibling.textContent.trim().length === 0 && !isNullOrUndefined(brElm.nextSibling.nextSibling) && brElm.nextSibling.nextSibling.textContent.trim().length > 0))) {
29593
29639
  this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), !isNullOrUndefined(brElm.nextSibling) && isFocusTextNode &&
@@ -30691,12 +30737,13 @@ let RichTextEditor = class RichTextEditor extends Component {
30691
30737
  if (!isNullOrUndefined(this.placeholder)) {
30692
30738
  this.setPlaceHolder();
30693
30739
  }
30694
- if (!isNullOrUndefined(e) && !isNullOrUndefined(e.code) && (e.code === 'Backspace' || e.code === 'Delete')) {
30740
+ if (!isNullOrUndefined(e) && !isNullOrUndefined(e.code) && (e.code === 'Backspace' || e.code === 'Delete' || e.code === 'KeyX')) {
30695
30741
  const range = this.contentModule.getDocument().getSelection().getRangeAt(0);
30696
30742
  const div = document.createElement('div');
30697
30743
  div.appendChild(range.cloneContents());
30698
30744
  const selectedHTML = div.innerHTML;
30699
- if (selectedHTML === this.inputElement.innerHTML) {
30745
+ if (selectedHTML === this.inputElement.innerHTML || (range.commonAncestorContainer === this.inputElement &&
30746
+ selectedHTML === this.inputElement.textContent.trim())) {
30700
30747
  this.isCopyAll = true;
30701
30748
  }
30702
30749
  }
@@ -30708,7 +30755,7 @@ let RichTextEditor = class RichTextEditor extends Component {
30708
30755
  keyUp(e) {
30709
30756
  if (this.editorMode === 'HTML') {
30710
30757
  const range = this.getRange();
30711
- if (!isNullOrUndefined(e) && !isNullOrUndefined(e.code) && (e.code === 'Backspace' || e.code === 'Delete')) {
30758
+ if (!isNullOrUndefined(e) && !isNullOrUndefined(e.code) && (e.code === 'Backspace' || e.code === 'Delete' || e.code === 'KeyX')) {
30712
30759
  // To prevent the reformatting the content removed browser behavior.
30713
30760
  const currentRange = this.getRange();
30714
30761
  const selection = this.iframeSettings.enable ? this.contentModule.getPanel().ownerDocument.getSelection() :
@@ -40546,7 +40593,12 @@ class PasteCleanup {
40546
40593
  }
40547
40594
  if (e.args && value !== null && this.parent.editorMode === 'HTML') {
40548
40595
  let file;
40549
- if (value.length === 0) {
40596
+ const files = e.args.clipboardData.files;
40597
+ const elm = createElement('p');
40598
+ elm.innerHTML = value;
40599
+ const source = this.findSource(elm);
40600
+ const extractedSRC = this.parent.insertImageSettings.uploadRemoteURLs ? this.extractImageSrcDOM(value) : null;
40601
+ if (value.length === 0 || (!isNullOrUndefined(files) && files.length > 0 && source === 'html')) {
40550
40602
  const htmlRegex = new RegExp(/<\/[a-z][\s\S]*>/i);
40551
40603
  value = e.args.clipboardData.getData('text/plain');
40552
40604
  this.parent.trigger(beforePasteCleanup, { value: value });
@@ -40589,6 +40641,14 @@ class PasteCleanup {
40589
40641
  value = divElement.innerHTML;
40590
40642
  }
40591
40643
  }
40644
+ else if (Array.isArray(extractedSRC) && extractedSRC.length &&
40645
+ this.parent.insertImageSettings.saveUrl && this.parent.insertImageSettings.path) {
40646
+ this.parent.trigger(beforePasteCleanup, { value: value });
40647
+ for (let i = 0; i < extractedSRC.length; i++) {
40648
+ const src = extractedSRC[i];
40649
+ this.fetchImageWithMetadata(src);
40650
+ }
40651
+ }
40592
40652
  else if (value.length > 0) {
40593
40653
  this.parent.trigger(beforePasteCleanup, { value: value });
40594
40654
  this.parent.formatter.editorManager.observer.notify(MS_WORD_CLEANUP, {
@@ -40645,6 +40705,68 @@ class PasteCleanup {
40645
40705
  }
40646
40706
  }
40647
40707
  }
40708
+ findSource(element) {
40709
+ const metaNodes = element.querySelectorAll('meta');
40710
+ for (let i = 0; i < metaNodes.length; i++) {
40711
+ const metaNode = metaNodes[i];
40712
+ const content = metaNode.getAttribute('content');
40713
+ const name = metaNode.getAttribute('name');
40714
+ if (name && name.toLowerCase().indexOf('generator') >= 0 && content && content.toLowerCase().indexOf('microsoft') >= 0) {
40715
+ for (let j = 0; j < PASTE_SOURCE.length; j++) {
40716
+ if (content.toLowerCase().indexOf(PASTE_SOURCE[j]) >= 0) {
40717
+ return PASTE_SOURCE[j];
40718
+ }
40719
+ }
40720
+ }
40721
+ }
40722
+ return 'html';
40723
+ }
40724
+ extractImageSrcDOM(value) {
40725
+ if (!value || typeof value !== 'string') {
40726
+ return null;
40727
+ }
40728
+ const parser = new DOMParser();
40729
+ const doc = parser.parseFromString(value, 'text/html');
40730
+ const images = doc.querySelectorAll('img');
40731
+ if (images.length === 0) {
40732
+ return null;
40733
+ }
40734
+ const srcs = Array.from(images)
40735
+ .map((img) => img.getAttribute('src') || img.src || '')
40736
+ .map((src) => src.trim())
40737
+ .filter((src) => !!src)
40738
+ // Exclude base64/data URLs, blob URLs, and anything containing "id="
40739
+ .filter((src) => {
40740
+ const s = src.toLowerCase();
40741
+ return !s.startsWith('data:') && !s.includes('base64') && !s.startsWith('blob:') && !s.includes('id=');
40742
+ });
40743
+ return srcs.length ? srcs : null;
40744
+ }
40745
+ fetchImageWithMetadata(url) {
40746
+ fetch(url)
40747
+ .then((response) => {
40748
+ if (!response.ok) {
40749
+ console.warn(`Fetch status ${response.status} for: ${url}`);
40750
+ return null;
40751
+ }
40752
+ return response.blob();
40753
+ })
40754
+ .then((blob) => {
40755
+ if (blob) {
40756
+ const filename = this.getFilenameFromUrl(url) || 'downloaded-image.jpg';
40757
+ const mimeType = blob.type || 'image/jpeg';
40758
+ const file = new File([blob], filename, { type: mimeType });
40759
+ const imageElement = this.parent.inputElement.querySelector(`img[src="${url}"]`);
40760
+ this.uploadMethod(file, imageElement);
40761
+ }
40762
+ });
40763
+ }
40764
+ // Helper method to extract filename from URL
40765
+ getFilenameFromUrl(url) {
40766
+ const pathname = new URL(url).pathname;
40767
+ const filename = pathname.substring(pathname.lastIndexOf('/') + 1);
40768
+ return filename || 'image.jpg';
40769
+ }
40648
40770
  splitBreakLine(value) {
40649
40771
  const enterSplitText = value.split('\r\n\r\n');
40650
40772
  let finalText = '';