jodit-pro 4.10.4 → 4.11.1

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 (300) hide show
  1. package/CHANGELOG.md +74 -1
  2. package/es2015/jodit.css +1 -1
  3. package/es2015/jodit.fat.min.js +6 -6
  4. package/es2015/jodit.js +346 -61
  5. package/es2015/jodit.min.js +9 -9
  6. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  7. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  8. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  9. package/es2015/plugins/autocomplete/autocomplete.js +1 -1
  10. package/es2015/plugins/autocomplete/autocomplete.min.js +1 -1
  11. package/es2015/plugins/backup/backup.css +1 -1
  12. package/es2015/plugins/backup/backup.js +1 -1
  13. package/es2015/plugins/backup/backup.min.js +1 -1
  14. package/es2015/plugins/button-generator/button-generator.css +1 -1
  15. package/es2015/plugins/button-generator/button-generator.js +1 -1
  16. package/es2015/plugins/button-generator/button-generator.min.js +1 -1
  17. package/es2015/plugins/change-case/change-case.js +1 -1
  18. package/es2015/plugins/change-case/change-case.min.js +1 -1
  19. package/es2015/plugins/color-picker/color-picker.css +1 -1
  20. package/es2015/plugins/color-picker/color-picker.js +1 -1
  21. package/es2015/plugins/color-picker/color-picker.min.js +1 -1
  22. package/es2015/plugins/emoji/emoji.css +1 -1
  23. package/es2015/plugins/emoji/emoji.js +1 -1
  24. package/es2015/plugins/emoji/emoji.min.js +1 -1
  25. package/es2015/plugins/export-docs/export-docs.js +1 -1
  26. package/es2015/plugins/export-docs/export-docs.min.js +1 -1
  27. package/es2015/plugins/finder/finder.css +1 -1
  28. package/es2015/plugins/finder/finder.js +1 -1
  29. package/es2015/plugins/finder/finder.min.js +1 -1
  30. package/es2015/plugins/google-maps/google-maps.css +1 -1
  31. package/es2015/plugins/google-maps/google-maps.js +1 -1
  32. package/es2015/plugins/google-maps/google-maps.min.js +1 -1
  33. package/es2015/plugins/google-search/google-search.js +1 -1
  34. package/es2015/plugins/google-search/google-search.min.js +1 -1
  35. package/es2015/plugins/highlight-signature/highlight-signature.js +1 -1
  36. package/es2015/plugins/highlight-signature/highlight-signature.min.js +1 -1
  37. package/es2015/plugins/iframe-editor/iframe-editor.css +1 -1
  38. package/es2015/plugins/iframe-editor/iframe-editor.js +1 -1
  39. package/es2015/plugins/iframe-editor/iframe-editor.min.js +1 -1
  40. package/es2015/plugins/keyboard/keyboard.css +1 -1
  41. package/es2015/plugins/keyboard/keyboard.js +1 -1
  42. package/es2015/plugins/keyboard/keyboard.min.js +1 -1
  43. package/es2015/plugins/mobile-view/mobile-view.js +1 -1
  44. package/es2015/plugins/mobile-view/mobile-view.min.js +1 -1
  45. package/es2015/plugins/page-break/page-break.js +1 -1
  46. package/es2015/plugins/page-break/page-break.min.js +1 -1
  47. package/es2015/plugins/paste-code/paste-code.css +1 -1
  48. package/es2015/plugins/paste-code/paste-code.js +1 -1
  49. package/es2015/plugins/paste-code/paste-code.min.js +1 -1
  50. package/es2015/plugins/paste-from-word/paste-from-word.js +1 -1
  51. package/es2015/plugins/paste-from-word/paste-from-word.min.js +1 -1
  52. package/es2015/plugins/show-blocks/show-blocks.js +1 -1
  53. package/es2015/plugins/show-blocks/show-blocks.min.js +1 -1
  54. package/es2015/plugins/style/style.css +1 -1
  55. package/es2015/plugins/style/style.js +1 -1
  56. package/es2015/plugins/style/style.min.js +1 -1
  57. package/es2015/plugins/templates/templates.css +1 -1
  58. package/es2015/plugins/templates/templates.js +1 -1
  59. package/es2015/plugins/templates/templates.min.js +1 -1
  60. package/es2015/plugins/todo-list/todo-list.css +1 -1
  61. package/es2015/plugins/todo-list/todo-list.js +1 -1
  62. package/es2015/plugins/todo-list/todo-list.min.js +1 -1
  63. package/es2015/plugins/translate/translate.css +1 -1
  64. package/es2015/plugins/translate/translate.js +1 -1
  65. package/es2015/plugins/translate/translate.min.js +1 -1
  66. package/es2015/plugins/tune-block/tune-block.css +1 -1
  67. package/es2015/plugins/tune-block/tune-block.js +1 -1
  68. package/es2015/plugins/tune-block/tune-block.min.js +1 -1
  69. package/es2018/jodit.fat.min.js +6 -6
  70. package/es2018/jodit.min.js +15 -15
  71. package/es2018/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  72. package/es2018/plugins/autocomplete/autocomplete.min.js +1 -1
  73. package/es2018/plugins/backup/backup.min.js +1 -1
  74. package/es2018/plugins/button-generator/button-generator.min.js +1 -1
  75. package/es2018/plugins/change-case/change-case.min.js +1 -1
  76. package/es2018/plugins/color-picker/color-picker.min.js +1 -1
  77. package/es2018/plugins/emoji/emoji.min.js +1 -1
  78. package/es2018/plugins/export-docs/export-docs.min.js +1 -1
  79. package/es2018/plugins/finder/finder.min.js +1 -1
  80. package/es2018/plugins/google-maps/google-maps.min.js +1 -1
  81. package/es2018/plugins/google-search/google-search.min.js +1 -1
  82. package/es2018/plugins/highlight-signature/highlight-signature.min.js +1 -1
  83. package/es2018/plugins/iframe-editor/iframe-editor.min.js +1 -1
  84. package/es2018/plugins/keyboard/keyboard.min.js +1 -1
  85. package/es2018/plugins/mobile-view/mobile-view.min.js +1 -1
  86. package/es2018/plugins/page-break/page-break.min.js +1 -1
  87. package/es2018/plugins/paste-code/paste-code.min.js +1 -1
  88. package/es2018/plugins/paste-from-word/paste-from-word.min.js +1 -1
  89. package/es2018/plugins/show-blocks/show-blocks.min.js +1 -1
  90. package/es2018/plugins/style/style.min.js +1 -1
  91. package/es2018/plugins/templates/templates.min.js +1 -1
  92. package/es2018/plugins/todo-list/todo-list.min.js +1 -1
  93. package/es2018/plugins/translate/translate.min.js +1 -1
  94. package/es2018/plugins/tune-block/tune-block.min.js +1 -1
  95. package/es2021/jodit.css +1 -1
  96. package/es2021/jodit.fat.min.js +8 -8
  97. package/es2021/jodit.js +346 -61
  98. package/es2021/jodit.min.js +21 -21
  99. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  100. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  101. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  102. package/es2021/plugins/autocomplete/autocomplete.js +1 -1
  103. package/es2021/plugins/autocomplete/autocomplete.min.js +1 -1
  104. package/es2021/plugins/backup/backup.css +1 -1
  105. package/es2021/plugins/backup/backup.js +1 -1
  106. package/es2021/plugins/backup/backup.min.js +1 -1
  107. package/es2021/plugins/button-generator/button-generator.css +1 -1
  108. package/es2021/plugins/button-generator/button-generator.js +1 -1
  109. package/es2021/plugins/button-generator/button-generator.min.js +1 -1
  110. package/es2021/plugins/change-case/change-case.js +1 -1
  111. package/es2021/plugins/change-case/change-case.min.js +1 -1
  112. package/es2021/plugins/color-picker/color-picker.css +1 -1
  113. package/es2021/plugins/color-picker/color-picker.js +1 -1
  114. package/es2021/plugins/color-picker/color-picker.min.js +1 -1
  115. package/es2021/plugins/emoji/emoji.css +1 -1
  116. package/es2021/plugins/emoji/emoji.js +1 -1
  117. package/es2021/plugins/emoji/emoji.min.js +1 -1
  118. package/es2021/plugins/export-docs/export-docs.js +1 -1
  119. package/es2021/plugins/export-docs/export-docs.min.js +1 -1
  120. package/es2021/plugins/finder/finder.css +1 -1
  121. package/es2021/plugins/finder/finder.js +1 -1
  122. package/es2021/plugins/finder/finder.min.js +1 -1
  123. package/es2021/plugins/google-maps/google-maps.css +1 -1
  124. package/es2021/plugins/google-maps/google-maps.js +1 -1
  125. package/es2021/plugins/google-maps/google-maps.min.js +1 -1
  126. package/es2021/plugins/google-search/google-search.js +1 -1
  127. package/es2021/plugins/google-search/google-search.min.js +1 -1
  128. package/es2021/plugins/highlight-signature/highlight-signature.js +1 -1
  129. package/es2021/plugins/highlight-signature/highlight-signature.min.js +1 -1
  130. package/es2021/plugins/iframe-editor/iframe-editor.css +1 -1
  131. package/es2021/plugins/iframe-editor/iframe-editor.js +1 -1
  132. package/es2021/plugins/iframe-editor/iframe-editor.min.js +1 -1
  133. package/es2021/plugins/keyboard/keyboard.css +1 -1
  134. package/es2021/plugins/keyboard/keyboard.js +1 -1
  135. package/es2021/plugins/keyboard/keyboard.min.js +1 -1
  136. package/es2021/plugins/mobile-view/mobile-view.js +1 -1
  137. package/es2021/plugins/mobile-view/mobile-view.min.js +1 -1
  138. package/es2021/plugins/page-break/page-break.js +1 -1
  139. package/es2021/plugins/page-break/page-break.min.js +1 -1
  140. package/es2021/plugins/paste-code/paste-code.css +1 -1
  141. package/es2021/plugins/paste-code/paste-code.js +1 -1
  142. package/es2021/plugins/paste-code/paste-code.min.js +1 -1
  143. package/es2021/plugins/paste-from-word/paste-from-word.js +1 -1
  144. package/es2021/plugins/paste-from-word/paste-from-word.min.js +1 -1
  145. package/es2021/plugins/show-blocks/show-blocks.js +1 -1
  146. package/es2021/plugins/show-blocks/show-blocks.min.js +1 -1
  147. package/es2021/plugins/style/style.css +1 -1
  148. package/es2021/plugins/style/style.js +1 -1
  149. package/es2021/plugins/style/style.min.js +1 -1
  150. package/es2021/plugins/templates/templates.css +1 -1
  151. package/es2021/plugins/templates/templates.js +1 -1
  152. package/es2021/plugins/templates/templates.min.js +1 -1
  153. package/es2021/plugins/todo-list/todo-list.css +1 -1
  154. package/es2021/plugins/todo-list/todo-list.js +1 -1
  155. package/es2021/plugins/todo-list/todo-list.min.js +1 -1
  156. package/es2021/plugins/translate/translate.css +1 -1
  157. package/es2021/plugins/translate/translate.js +1 -1
  158. package/es2021/plugins/translate/translate.min.js +1 -1
  159. package/es2021/plugins/tune-block/tune-block.css +1 -1
  160. package/es2021/plugins/tune-block/tune-block.js +1 -1
  161. package/es2021/plugins/tune-block/tune-block.min.js +1 -1
  162. package/es2021.en/jodit.css +1 -1
  163. package/es2021.en/jodit.fat.min.js +8 -8
  164. package/es2021.en/jodit.js +346 -61
  165. package/es2021.en/jodit.min.js +8 -8
  166. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  167. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  168. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  169. package/es2021.en/plugins/autocomplete/autocomplete.js +1 -1
  170. package/es2021.en/plugins/autocomplete/autocomplete.min.js +1 -1
  171. package/es2021.en/plugins/backup/backup.css +1 -1
  172. package/es2021.en/plugins/backup/backup.js +1 -1
  173. package/es2021.en/plugins/backup/backup.min.js +1 -1
  174. package/es2021.en/plugins/button-generator/button-generator.css +1 -1
  175. package/es2021.en/plugins/button-generator/button-generator.js +1 -1
  176. package/es2021.en/plugins/button-generator/button-generator.min.js +1 -1
  177. package/es2021.en/plugins/change-case/change-case.js +1 -1
  178. package/es2021.en/plugins/change-case/change-case.min.js +1 -1
  179. package/es2021.en/plugins/color-picker/color-picker.css +1 -1
  180. package/es2021.en/plugins/color-picker/color-picker.js +1 -1
  181. package/es2021.en/plugins/color-picker/color-picker.min.js +1 -1
  182. package/es2021.en/plugins/emoji/emoji.css +1 -1
  183. package/es2021.en/plugins/emoji/emoji.js +1 -1
  184. package/es2021.en/plugins/emoji/emoji.min.js +1 -1
  185. package/es2021.en/plugins/export-docs/export-docs.js +1 -1
  186. package/es2021.en/plugins/export-docs/export-docs.min.js +1 -1
  187. package/es2021.en/plugins/finder/finder.css +1 -1
  188. package/es2021.en/plugins/finder/finder.js +1 -1
  189. package/es2021.en/plugins/finder/finder.min.js +1 -1
  190. package/es2021.en/plugins/google-maps/google-maps.css +1 -1
  191. package/es2021.en/plugins/google-maps/google-maps.js +1 -1
  192. package/es2021.en/plugins/google-maps/google-maps.min.js +1 -1
  193. package/es2021.en/plugins/google-search/google-search.js +1 -1
  194. package/es2021.en/plugins/google-search/google-search.min.js +1 -1
  195. package/es2021.en/plugins/highlight-signature/highlight-signature.js +1 -1
  196. package/es2021.en/plugins/highlight-signature/highlight-signature.min.js +1 -1
  197. package/es2021.en/plugins/iframe-editor/iframe-editor.css +1 -1
  198. package/es2021.en/plugins/iframe-editor/iframe-editor.js +1 -1
  199. package/es2021.en/plugins/iframe-editor/iframe-editor.min.js +1 -1
  200. package/es2021.en/plugins/keyboard/keyboard.css +1 -1
  201. package/es2021.en/plugins/keyboard/keyboard.js +1 -1
  202. package/es2021.en/plugins/keyboard/keyboard.min.js +1 -1
  203. package/es2021.en/plugins/mobile-view/mobile-view.js +1 -1
  204. package/es2021.en/plugins/mobile-view/mobile-view.min.js +1 -1
  205. package/es2021.en/plugins/page-break/page-break.js +1 -1
  206. package/es2021.en/plugins/page-break/page-break.min.js +1 -1
  207. package/es2021.en/plugins/paste-code/paste-code.css +1 -1
  208. package/es2021.en/plugins/paste-code/paste-code.js +1 -1
  209. package/es2021.en/plugins/paste-code/paste-code.min.js +1 -1
  210. package/es2021.en/plugins/paste-from-word/paste-from-word.js +1 -1
  211. package/es2021.en/plugins/paste-from-word/paste-from-word.min.js +1 -1
  212. package/es2021.en/plugins/show-blocks/show-blocks.js +1 -1
  213. package/es2021.en/plugins/show-blocks/show-blocks.min.js +1 -1
  214. package/es2021.en/plugins/style/style.css +1 -1
  215. package/es2021.en/plugins/style/style.js +1 -1
  216. package/es2021.en/plugins/style/style.min.js +1 -1
  217. package/es2021.en/plugins/templates/templates.css +1 -1
  218. package/es2021.en/plugins/templates/templates.js +1 -1
  219. package/es2021.en/plugins/templates/templates.min.js +1 -1
  220. package/es2021.en/plugins/todo-list/todo-list.css +1 -1
  221. package/es2021.en/plugins/todo-list/todo-list.js +1 -1
  222. package/es2021.en/plugins/todo-list/todo-list.min.js +1 -1
  223. package/es2021.en/plugins/translate/translate.css +1 -1
  224. package/es2021.en/plugins/translate/translate.js +1 -1
  225. package/es2021.en/plugins/translate/translate.min.js +1 -1
  226. package/es2021.en/plugins/tune-block/tune-block.css +1 -1
  227. package/es2021.en/plugins/tune-block/tune-block.js +1 -1
  228. package/es2021.en/plugins/tune-block/tune-block.min.js +1 -1
  229. package/es5/jodit.css +2 -2
  230. package/es5/jodit.fat.min.js +2 -2
  231. package/es5/jodit.js +403 -61
  232. package/es5/jodit.min.css +2 -2
  233. package/es5/jodit.min.js +2 -2
  234. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  235. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  236. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  237. package/es5/plugins/autocomplete/autocomplete.js +1 -1
  238. package/es5/plugins/autocomplete/autocomplete.min.js +1 -1
  239. package/es5/plugins/backup/backup.css +1 -1
  240. package/es5/plugins/backup/backup.js +1 -1
  241. package/es5/plugins/backup/backup.min.js +1 -1
  242. package/es5/plugins/button-generator/button-generator.css +1 -1
  243. package/es5/plugins/button-generator/button-generator.js +1 -1
  244. package/es5/plugins/button-generator/button-generator.min.js +1 -1
  245. package/es5/plugins/change-case/change-case.js +1 -1
  246. package/es5/plugins/change-case/change-case.min.js +1 -1
  247. package/es5/plugins/color-picker/color-picker.css +1 -1
  248. package/es5/plugins/color-picker/color-picker.js +1 -1
  249. package/es5/plugins/color-picker/color-picker.min.js +1 -1
  250. package/es5/plugins/emoji/emoji.css +1 -1
  251. package/es5/plugins/emoji/emoji.js +1 -1
  252. package/es5/plugins/emoji/emoji.min.js +1 -1
  253. package/es5/plugins/export-docs/export-docs.js +1 -1
  254. package/es5/plugins/export-docs/export-docs.min.js +1 -1
  255. package/es5/plugins/finder/finder.css +1 -1
  256. package/es5/plugins/finder/finder.js +1 -1
  257. package/es5/plugins/finder/finder.min.js +1 -1
  258. package/es5/plugins/google-maps/google-maps.css +1 -1
  259. package/es5/plugins/google-maps/google-maps.js +1 -1
  260. package/es5/plugins/google-maps/google-maps.min.js +1 -1
  261. package/es5/plugins/google-search/google-search.js +1 -1
  262. package/es5/plugins/google-search/google-search.min.js +1 -1
  263. package/es5/plugins/highlight-signature/highlight-signature.js +1 -1
  264. package/es5/plugins/highlight-signature/highlight-signature.min.js +1 -1
  265. package/es5/plugins/iframe-editor/iframe-editor.css +1 -1
  266. package/es5/plugins/iframe-editor/iframe-editor.js +1 -1
  267. package/es5/plugins/iframe-editor/iframe-editor.min.js +1 -1
  268. package/es5/plugins/keyboard/keyboard.css +1 -1
  269. package/es5/plugins/keyboard/keyboard.js +1 -1
  270. package/es5/plugins/keyboard/keyboard.min.js +1 -1
  271. package/es5/plugins/mobile-view/mobile-view.js +1 -1
  272. package/es5/plugins/mobile-view/mobile-view.min.js +1 -1
  273. package/es5/plugins/page-break/page-break.js +1 -1
  274. package/es5/plugins/page-break/page-break.min.js +1 -1
  275. package/es5/plugins/paste-code/paste-code.css +1 -1
  276. package/es5/plugins/paste-code/paste-code.js +1 -1
  277. package/es5/plugins/paste-code/paste-code.min.js +1 -1
  278. package/es5/plugins/paste-from-word/paste-from-word.js +1 -1
  279. package/es5/plugins/paste-from-word/paste-from-word.min.js +1 -1
  280. package/es5/plugins/show-blocks/show-blocks.js +1 -1
  281. package/es5/plugins/show-blocks/show-blocks.min.js +1 -1
  282. package/es5/plugins/style/style.css +1 -1
  283. package/es5/plugins/style/style.js +1 -1
  284. package/es5/plugins/style/style.min.js +1 -1
  285. package/es5/plugins/templates/templates.css +1 -1
  286. package/es5/plugins/templates/templates.js +1 -1
  287. package/es5/plugins/templates/templates.min.js +1 -1
  288. package/es5/plugins/todo-list/todo-list.css +1 -1
  289. package/es5/plugins/todo-list/todo-list.js +1 -1
  290. package/es5/plugins/todo-list/todo-list.min.js +1 -1
  291. package/es5/plugins/translate/translate.css +1 -1
  292. package/es5/plugins/translate/translate.js +1 -1
  293. package/es5/plugins/translate/translate.min.js +1 -1
  294. package/es5/plugins/tune-block/tune-block.css +1 -1
  295. package/es5/plugins/tune-block/tune-block.js +1 -1
  296. package/es5/plugins/tune-block/tune-block.min.js +1 -1
  297. package/es5/polyfills.fat.min.js +1 -1
  298. package/es5/polyfills.js +1 -1
  299. package/es5/polyfills.min.js +1 -1
  300. package/package.json +1 -1
package/es5/jodit.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * jodit-pro - PRO Version of Jodit Editor
3
3
  * Author: Chupurnov Valerii <chupurnov@gmail.com>
4
- * Version: v4.10.4
4
+ * Version: v4.11.1
5
5
  * Url: https://xdsoft.net/jodit/pro/
6
6
  * License(s): SEE LICENSE IN LICENSE.md
7
7
  */
@@ -2233,7 +2233,7 @@ function _unsupported_iterable_to_array(o, minLen) {
2233
2233
  if (n === "Map" || n === "Set") return Array.from(n);
2234
2234
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
2235
2235
  }
2236
- var APP_VERSION = "4.10.4";
2236
+ var APP_VERSION = "4.11.1";
2237
2237
  // prettier-ignore
2238
2238
  var ES = "es5";
2239
2239
  var IS_ES_MODERN = false;
@@ -7547,21 +7547,77 @@ function normalizeCSS(s) {
7547
7547
  /**
7548
7548
  * Removes dangerous constructs from HTML
7549
7549
  */ function safeHTML(box, options) {
7550
+ var _a;
7550
7551
  if (!_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(box) && !_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isFragment(box)) {
7551
7552
  return;
7552
7553
  }
7553
- if (options.removeOnError) {
7554
- sanitizeHTMLElement(box);
7554
+ var removeEvents = (_a = options.removeEventAttributes) !== null && _a !== void 0 ? _a : options.removeOnError;
7555
+ if (removeEvents) {
7556
+ removeAllEventAttributes(box);
7557
+ (0,_utils_index_js__WEBPACK_IMPORTED_MODULE_1__.$$)('*', box).forEach(function(elm) {
7558
+ return removeAllEventAttributes(elm);
7559
+ });
7560
+ } else if (options.removeOnError) {
7561
+ sanitizeHTMLElement(box, options);
7555
7562
  (0,_utils_index_js__WEBPACK_IMPORTED_MODULE_1__.$$)('[onerror]', box).forEach(function(elm) {
7556
7563
  return sanitizeHTMLElement(elm, options);
7557
7564
  });
7558
7565
  }
7559
7566
  if (options.safeJavaScriptLink) {
7560
- sanitizeHTMLElement(box);
7567
+ sanitizeHTMLElement(box, options);
7561
7568
  (0,_utils_index_js__WEBPACK_IMPORTED_MODULE_1__.$$)('a[href^="javascript"]', box).forEach(function(elm) {
7562
7569
  return sanitizeHTMLElement(elm, options);
7563
7570
  });
7564
7571
  }
7572
+ if (options.safeLinksTarget) {
7573
+ (0,_utils_index_js__WEBPACK_IMPORTED_MODULE_1__.$$)('a[target="_blank"]', box).forEach(function(elm) {
7574
+ var rel = elm.getAttribute('rel') || '';
7575
+ var parts = rel.split(/\s+/).filter(Boolean);
7576
+ if (!parts.includes('noopener')) {
7577
+ parts.push('noopener');
7578
+ }
7579
+ if (!parts.includes('noreferrer')) {
7580
+ parts.push('noreferrer');
7581
+ }
7582
+ (0,_utils_index_js__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, 'rel', parts.join(' '));
7583
+ });
7584
+ }
7585
+ }
7586
+ /**
7587
+ * Remove all on* event handler attributes from an element
7588
+ */ function removeAllEventAttributes(elm) {
7589
+ if (!_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(elm)) {
7590
+ return false;
7591
+ }
7592
+ var effected = false;
7593
+ var toRemove = [];
7594
+ for(var i = 0; i < elm.attributes.length; i++){
7595
+ if (elm.attributes[i].name.toLowerCase().startsWith('on')) {
7596
+ toRemove.push(elm.attributes[i].name);
7597
+ }
7598
+ }
7599
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
7600
+ try {
7601
+ for(var _iterator = toRemove[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
7602
+ var name = _step.value;
7603
+ elm.removeAttribute(name);
7604
+ effected = true;
7605
+ }
7606
+ } catch (err) {
7607
+ _didIteratorError = true;
7608
+ _iteratorError = err;
7609
+ } finally{
7610
+ try {
7611
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
7612
+ _iterator.return();
7613
+ }
7614
+ } finally{
7615
+ if (_didIteratorError) {
7616
+ throw _iteratorError;
7617
+ }
7618
+ }
7619
+ }
7620
+ return effected;
7565
7621
  }
7566
7622
  function sanitizeHTMLElement(elm) {
7567
7623
  var _ref = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {
@@ -44657,6 +44713,10 @@ function _is_native_reflect_construct() {
44657
44713
  {
44658
44714
  key: "onSafeHTML",
44659
44715
  value: function onSafeHTML(sandBox) {
44716
+ var sanitizer = this.j.o.cleanHTML.sanitizer;
44717
+ if (sanitizer) {
44718
+ sandBox.innerHTML = sanitizer(sandBox.innerHTML);
44719
+ }
44660
44720
  (0,_core_helpers_html_safe_html_js__WEBPACK_IMPORTED_MODULE_4__.safeHTML)(sandBox, this.j.o.cleanHTML);
44661
44721
  }
44662
44722
  },
@@ -44718,10 +44778,19 @@ _config_js__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.cleanHTML = {
44718
44778
  b: 'strong'
44719
44779
  },
44720
44780
  allowTags: false,
44721
- denyTags: 'script',
44781
+ denyTags: 'script,iframe,object,embed',
44722
44782
  useIframeSandbox: false,
44723
44783
  removeOnError: true,
44784
+ removeEventAttributes: true,
44724
44785
  safeJavaScriptLink: true,
44786
+ safeLinksTarget: true,
44787
+ allowedStyles: false,
44788
+ sanitizer: false,
44789
+ sandboxIframesInContent: true,
44790
+ convertUnsafeEmbeds: [
44791
+ 'object',
44792
+ 'embed'
44793
+ ],
44725
44794
  disableCleanFilter: null
44726
44795
  };
44727
44796
  _config_js__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.controls.eraser = {
@@ -44980,6 +45049,53 @@ _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_0__.Icon.set('eraser', _eraser_svg_js_
44980
45049
  }
44981
45050
 
44982
45051
 
45052
+ /***/ }),
45053
+
45054
+ /***/ 1962:
45055
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
45056
+
45057
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
45058
+ /* harmony export */ convertUnsafeEmbeds: function() { return /* binding */ convertUnsafeEmbeds; }
45059
+ /* harmony export */ });
45060
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
45061
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29960);
45062
+ /*!
45063
+ * Jodit Editor (https://xdsoft.net/jodit/)
45064
+ * Released under MIT see LICENSE.txt in the project root for license information.
45065
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
45066
+ */
45067
+
45068
+ /**
45069
+ * Convert `<object>` and `<embed>` elements to safer `<iframe>` elements.
45070
+ * @private
45071
+ */ function convertUnsafeEmbeds(jodit, nodeElm, hadEffect) {
45072
+ var opt = jodit.o.cleanHTML.convertUnsafeEmbeds;
45073
+ if (!opt || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(nodeElm)) {
45074
+ return hadEffect;
45075
+ }
45076
+ var tag = nodeElm.nodeName.toLowerCase();
45077
+ if (!opt.includes(tag)) {
45078
+ return hadEffect;
45079
+ }
45080
+ var elm = nodeElm;
45081
+ var src = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, 'data') || (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, 'src') || (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, 'movie') || '';
45082
+ if (!src) {
45083
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(elm);
45084
+ return true;
45085
+ }
45086
+ var iframe = jodit.createInside.element('iframe');
45087
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(iframe, {
45088
+ src: src,
45089
+ sandbox: '',
45090
+ frameborder: '0',
45091
+ width: (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, 'width'),
45092
+ height: (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, 'height')
45093
+ });
45094
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.replace(elm, iframe, undefined, false, true);
45095
+ return true;
45096
+ }
45097
+
45098
+
44983
45099
  /***/ }),
44984
45100
 
44985
45101
  /***/ 39433:
@@ -45023,20 +45139,28 @@ var TABLE_CONTAINER_TAGS = new Set([
45023
45139
  __webpack_require__.r(__webpack_exports__);
45024
45140
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
45025
45141
  /* harmony export */ allowAttributes: function() { return /* reexport safe */ _allow_attributes_js__WEBPACK_IMPORTED_MODULE_0__.allowAttributes; },
45026
- /* harmony export */ fillEmptyParagraph: function() { return /* reexport safe */ _fill_empty_paragraph_js__WEBPACK_IMPORTED_MODULE_1__.fillEmptyParagraph; },
45027
- /* harmony export */ removeEmptyTextNode: function() { return /* reexport safe */ _remove_empty_text_node_js__WEBPACK_IMPORTED_MODULE_2__.removeEmptyTextNode; },
45028
- /* harmony export */ removeInvTextNodes: function() { return /* reexport safe */ _remove_inv_text_nodes_js__WEBPACK_IMPORTED_MODULE_3__.removeInvTextNodes; },
45029
- /* harmony export */ replaceOldTags: function() { return /* reexport safe */ _replace_old_tags_js__WEBPACK_IMPORTED_MODULE_4__.replaceOldTags; },
45030
- /* harmony export */ sanitizeAttributes: function() { return /* reexport safe */ _sanitize_attributes_js__WEBPACK_IMPORTED_MODULE_5__.sanitizeAttributes; },
45031
- /* harmony export */ tryRemoveNode: function() { return /* reexport safe */ _try_remove_node_js__WEBPACK_IMPORTED_MODULE_6__.tryRemoveNode; }
45142
+ /* harmony export */ convertUnsafeEmbeds: function() { return /* reexport safe */ _convert_unsafe_embeds_js__WEBPACK_IMPORTED_MODULE_1__.convertUnsafeEmbeds; },
45143
+ /* harmony export */ fillEmptyParagraph: function() { return /* reexport safe */ _fill_empty_paragraph_js__WEBPACK_IMPORTED_MODULE_2__.fillEmptyParagraph; },
45144
+ /* harmony export */ removeEmptyTextNode: function() { return /* reexport safe */ _remove_empty_text_node_js__WEBPACK_IMPORTED_MODULE_3__.removeEmptyTextNode; },
45145
+ /* harmony export */ removeInvTextNodes: function() { return /* reexport safe */ _remove_inv_text_nodes_js__WEBPACK_IMPORTED_MODULE_4__.removeInvTextNodes; },
45146
+ /* harmony export */ replaceOldTags: function() { return /* reexport safe */ _replace_old_tags_js__WEBPACK_IMPORTED_MODULE_5__.replaceOldTags; },
45147
+ /* harmony export */ safeLinksTarget: function() { return /* reexport safe */ _safe_links_target_js__WEBPACK_IMPORTED_MODULE_6__.safeLinksTarget; },
45148
+ /* harmony export */ sandboxIframesInContent: function() { return /* reexport safe */ _sandbox_iframes_in_content_js__WEBPACK_IMPORTED_MODULE_7__.sandboxIframesInContent; },
45149
+ /* harmony export */ sanitizeAttributes: function() { return /* reexport safe */ _sanitize_attributes_js__WEBPACK_IMPORTED_MODULE_8__.sanitizeAttributes; },
45150
+ /* harmony export */ sanitizeStyles: function() { return /* reexport safe */ _sanitize_styles_js__WEBPACK_IMPORTED_MODULE_9__.sanitizeStyles; },
45151
+ /* harmony export */ tryRemoveNode: function() { return /* reexport safe */ _try_remove_node_js__WEBPACK_IMPORTED_MODULE_10__.tryRemoveNode; }
45032
45152
  /* harmony export */ });
45033
45153
  /* harmony import */ var _allow_attributes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82558);
45034
- /* harmony import */ var _fill_empty_paragraph_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(39433);
45035
- /* harmony import */ var _remove_empty_text_node_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(53392);
45036
- /* harmony import */ var _remove_inv_text_nodes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(25813);
45037
- /* harmony import */ var _replace_old_tags_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(80973);
45038
- /* harmony import */ var _sanitize_attributes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(384);
45039
- /* harmony import */ var _try_remove_node_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(28800);
45154
+ /* harmony import */ var _convert_unsafe_embeds_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1962);
45155
+ /* harmony import */ var _fill_empty_paragraph_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(39433);
45156
+ /* harmony import */ var _remove_empty_text_node_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(53392);
45157
+ /* harmony import */ var _remove_inv_text_nodes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(25813);
45158
+ /* harmony import */ var _replace_old_tags_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(80973);
45159
+ /* harmony import */ var _safe_links_target_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(95614);
45160
+ /* harmony import */ var _sandbox_iframes_in_content_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(85978);
45161
+ /* harmony import */ var _sanitize_attributes_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(384);
45162
+ /* harmony import */ var _sanitize_styles_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(15583);
45163
+ /* harmony import */ var _try_remove_node_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(28800);
45040
45164
  /*!
45041
45165
  * Jodit Editor (https://xdsoft.net/jodit/)
45042
45166
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -45054,6 +45178,10 @@ __webpack_require__.r(__webpack_exports__);
45054
45178
 
45055
45179
 
45056
45180
 
45181
+
45182
+
45183
+
45184
+
45057
45185
  /***/ }),
45058
45186
 
45059
45187
  /***/ 53392:
@@ -45161,6 +45289,84 @@ __webpack_require__.r(__webpack_exports__);
45161
45289
  }
45162
45290
 
45163
45291
 
45292
+ /***/ }),
45293
+
45294
+ /***/ 95614:
45295
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
45296
+
45297
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
45298
+ /* harmony export */ safeLinksTarget: function() { return /* binding */ safeLinksTarget; }
45299
+ /* harmony export */ });
45300
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
45301
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29960);
45302
+ /*!
45303
+ * Jodit Editor (https://xdsoft.net/jodit/)
45304
+ * Released under MIT see LICENSE.txt in the project root for license information.
45305
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
45306
+ */
45307
+
45308
+ /**
45309
+ * Automatically add `rel="noopener noreferrer"` to links with `target="_blank"`
45310
+ * @private
45311
+ */ function safeLinksTarget(jodit, nodeElm, hadEffect) {
45312
+ if (!jodit.o.cleanHTML.safeLinksTarget || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(nodeElm) || nodeElm.nodeName !== 'A') {
45313
+ return hadEffect;
45314
+ }
45315
+ var elm = nodeElm;
45316
+ if ((0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, 'target') !== '_blank') {
45317
+ return hadEffect;
45318
+ }
45319
+ var rel = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, 'rel') || '';
45320
+ var parts = rel.split(/\s+/).filter(Boolean);
45321
+ var changed = false;
45322
+ if (!parts.includes('noopener')) {
45323
+ parts.push('noopener');
45324
+ changed = true;
45325
+ }
45326
+ if (!parts.includes('noreferrer')) {
45327
+ parts.push('noreferrer');
45328
+ changed = true;
45329
+ }
45330
+ if (changed) {
45331
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, 'rel', parts.join(' '));
45332
+ return true;
45333
+ }
45334
+ return hadEffect;
45335
+ }
45336
+
45337
+
45338
+ /***/ }),
45339
+
45340
+ /***/ 85978:
45341
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
45342
+
45343
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
45344
+ /* harmony export */ sandboxIframesInContent: function() { return /* binding */ sandboxIframesInContent; }
45345
+ /* harmony export */ });
45346
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
45347
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29960);
45348
+ /*!
45349
+ * Jodit Editor (https://xdsoft.net/jodit/)
45350
+ * Released under MIT see LICENSE.txt in the project root for license information.
45351
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
45352
+ */
45353
+
45354
+ /**
45355
+ * Add `sandbox=""` attribute to all `<iframe>` elements in the editor content
45356
+ * @private
45357
+ */ function sandboxIframesInContent(jodit, nodeElm, hadEffect) {
45358
+ if (!jodit.o.cleanHTML.sandboxIframesInContent || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(nodeElm) || nodeElm.nodeName !== 'IFRAME') {
45359
+ return hadEffect;
45360
+ }
45361
+ var elm = nodeElm;
45362
+ if (!elm.hasAttribute('sandbox')) {
45363
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, 'sandbox', '');
45364
+ return true;
45365
+ }
45366
+ return hadEffect;
45367
+ }
45368
+
45369
+
45164
45370
  /***/ }),
45165
45371
 
45166
45372
  /***/ 384:
@@ -45180,9 +45386,15 @@ __webpack_require__.r(__webpack_exports__);
45180
45386
  /**
45181
45387
  * @private
45182
45388
  */ function sanitizeAttributes(jodit, nodeElm, hadEffect) {
45183
- if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(nodeElm) && (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.sanitizeHTMLElement)(nodeElm, {
45184
- safeJavaScriptLink: jodit.options.cleanHTML.safeJavaScriptLink,
45185
- removeOnError: jodit.options.cleanHTML.removeOnError
45389
+ if (!_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(nodeElm)) {
45390
+ return hadEffect;
45391
+ }
45392
+ var opts = jodit.options.cleanHTML;
45393
+ if ((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.sanitizeHTMLElement)(nodeElm, {
45394
+ safeJavaScriptLink: opts.safeJavaScriptLink,
45395
+ removeOnError: opts.removeOnError,
45396
+ removeEventAttributes: opts.removeEventAttributes,
45397
+ safeLinksTarget: opts.safeLinksTarget
45186
45398
  })) {
45187
45399
  return true;
45188
45400
  }
@@ -45190,6 +45402,117 @@ __webpack_require__.r(__webpack_exports__);
45190
45402
  }
45191
45403
 
45192
45404
 
45405
+ /***/ }),
45406
+
45407
+ /***/ 15583:
45408
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
45409
+
45410
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
45411
+ /* harmony export */ sanitizeStyles: function() { return /* binding */ sanitizeStyles; }
45412
+ /* harmony export */ });
45413
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
45414
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29960);
45415
+ /*!
45416
+ * Jodit Editor (https://xdsoft.net/jodit/)
45417
+ * Released under MIT see LICENSE.txt in the project root for license information.
45418
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
45419
+ */
45420
+
45421
+ /**
45422
+ * Filter CSS properties in style attributes based on allowedStyles whitelist
45423
+ * @private
45424
+ */ function sanitizeStyles(jodit, nodeElm, hadEffect) {
45425
+ var allowedStyles = jodit.o.cleanHTML.allowedStyles;
45426
+ if (!allowedStyles || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(nodeElm)) {
45427
+ return hadEffect;
45428
+ }
45429
+ var elm = nodeElm;
45430
+ var style = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, 'style');
45431
+ if (!style) {
45432
+ return hadEffect;
45433
+ }
45434
+ var tagName = nodeElm.nodeName.toLowerCase();
45435
+ var allowed = getAllowedPropsForTag(tagName, allowedStyles);
45436
+ if (!allowed) {
45437
+ return hadEffect;
45438
+ }
45439
+ var filtered = filterStyleProperties(style, allowed);
45440
+ if (filtered !== style) {
45441
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, 'style', filtered || null);
45442
+ return true;
45443
+ }
45444
+ return hadEffect;
45445
+ }
45446
+ function getAllowedPropsForTag(tagName, allowedStyles) {
45447
+ var tagSpecific = allowedStyles[tagName];
45448
+ var global = allowedStyles['*'];
45449
+ if (!tagSpecific && !global) {
45450
+ return null;
45451
+ }
45452
+ var set = new Set();
45453
+ if (global) {
45454
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
45455
+ try {
45456
+ for(var _iterator = global[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
45457
+ var prop = _step.value;
45458
+ set.add(prop.toLowerCase());
45459
+ }
45460
+ } catch (err) {
45461
+ _didIteratorError = true;
45462
+ _iteratorError = err;
45463
+ } finally{
45464
+ try {
45465
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
45466
+ _iterator.return();
45467
+ }
45468
+ } finally{
45469
+ if (_didIteratorError) {
45470
+ throw _iteratorError;
45471
+ }
45472
+ }
45473
+ }
45474
+ }
45475
+ if (tagSpecific) {
45476
+ var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
45477
+ try {
45478
+ for(var _iterator1 = tagSpecific[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
45479
+ var prop1 = _step1.value;
45480
+ set.add(prop1.toLowerCase());
45481
+ }
45482
+ } catch (err) {
45483
+ _didIteratorError1 = true;
45484
+ _iteratorError1 = err;
45485
+ } finally{
45486
+ try {
45487
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
45488
+ _iterator1.return();
45489
+ }
45490
+ } finally{
45491
+ if (_didIteratorError1) {
45492
+ throw _iteratorError1;
45493
+ }
45494
+ }
45495
+ }
45496
+ }
45497
+ return set;
45498
+ }
45499
+ function filterStyleProperties(style, allowed) {
45500
+ return style.split(';').map(function(s) {
45501
+ return s.trim();
45502
+ }).filter(function(s) {
45503
+ if (!s) {
45504
+ return false;
45505
+ }
45506
+ var colonIdx = s.indexOf(':');
45507
+ if (colonIdx === -1) {
45508
+ return false;
45509
+ }
45510
+ var prop = s.substring(0, colonIdx).trim().toLowerCase();
45511
+ return allowed.has(prop);
45512
+ }).join('; ').replace(/;\s*$/, '');
45513
+ }
45514
+
45515
+
45193
45516
  /***/ }),
45194
45517
 
45195
45518
  /***/ 28800:
@@ -47225,7 +47548,7 @@ function _is_native_reflect_construct() {
47225
47548
  'src'
47226
47549
  ], 2), tagName = _ref[0], field = _ref[1];
47227
47550
  fragment = this.j.createInside.element(tagName);
47228
- fragment.setAttribute(field, (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(this.draggable, 'data-src') || (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(this.draggable, 'src') || '');
47551
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(fragment, field, (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(this.draggable, 'data-src') || (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(this.draggable, 'src') || '');
47229
47552
  if (tagName === 'a') {
47230
47553
  fragment.textContent = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(fragment, field) || '';
47231
47554
  }
@@ -48110,13 +48433,15 @@ function brBefore(start) {
48110
48433
  /* harmony export */ insertParagraph: function() { return /* binding */ insertParagraph; }
48111
48434
  /* harmony export */ });
48112
48435
  /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
48113
- /* harmony import */ var _core_helpers_utils_scroll_into_view_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26395);
48436
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29960);
48437
+ /* harmony import */ var _core_helpers_utils_scroll_into_view_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(26395);
48114
48438
  /*!
48115
48439
  * Jodit Editor (https://xdsoft.net/jodit/)
48116
48440
  * Released under MIT see LICENSE.txt in the project root for license information.
48117
48441
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
48118
48442
  */
48119
48443
 
48444
+
48120
48445
  /**
48121
48446
  * Insert default paragraph
48122
48447
  * @private
@@ -48126,11 +48451,11 @@ function brBefore(start) {
48126
48451
  p.appendChild(br);
48127
48452
  }
48128
48453
  if (style && style.cssText) {
48129
- p.setAttribute('style', style.cssText);
48454
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(p, 'style', style.cssText);
48130
48455
  }
48131
48456
  _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.after(fake, p);
48132
48457
  _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.before(isBR ? p : br, fake);
48133
- (0,_core_helpers_utils_scroll_into_view_js__WEBPACK_IMPORTED_MODULE_1__.scrollIntoViewIfNeeded)(p, editor.editor, editor.ed);
48458
+ (0,_core_helpers_utils_scroll_into_view_js__WEBPACK_IMPORTED_MODULE_2__.scrollIntoViewIfNeeded)(p, editor.editor, editor.ed);
48134
48459
  return p;
48135
48460
  }
48136
48461
 
@@ -48307,8 +48632,9 @@ function brBefore(start) {
48307
48632
  /* unused harmony export file */
48308
48633
  /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
48309
48634
  /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(580);
48310
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6441);
48311
- /* harmony import */ var _modules_widget_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(92762);
48635
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29960);
48636
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6441);
48637
+ /* harmony import */ var _modules_widget_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(92762);
48312
48638
  /*!
48313
48639
  * Jodit Editor (https://xdsoft.net/jodit/)
48314
48640
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -48317,7 +48643,8 @@ function brBefore(start) {
48317
48643
 
48318
48644
 
48319
48645
 
48320
- _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.controls.file = {
48646
+
48647
+ _config_js__WEBPACK_IMPORTED_MODULE_3__.Config.prototype.controls.file = {
48321
48648
  popup: function popup(editor, current, close) {
48322
48649
  var insert = function insert(url) {
48323
48650
  var title = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : '';
@@ -48327,7 +48654,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.controls.file = {
48327
48654
  if (current && (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(current, 'a') || _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(current, 'a', editor.editor))) {
48328
48655
  sourceAnchor = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(current, 'a') ? current : _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(current, 'a', editor.editor);
48329
48656
  }
48330
- return (0,_modules_widget_index_js__WEBPACK_IMPORTED_MODULE_3__.FileSelectorWidget)(editor, {
48657
+ return (0,_modules_widget_index_js__WEBPACK_IMPORTED_MODULE_4__.FileSelectorWidget)(editor, {
48331
48658
  filebrowser: function filebrowser(data) {
48332
48659
  data.files && data.files.forEach(function(file) {
48333
48660
  return insert(data.baseurl + file);
@@ -48337,8 +48664,8 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.controls.file = {
48337
48664
  upload: true,
48338
48665
  url: function url(url, text) {
48339
48666
  if (sourceAnchor) {
48340
- sourceAnchor.setAttribute('href', url);
48341
- sourceAnchor.setAttribute('title', text);
48667
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_2__.attr)(sourceAnchor, 'href', url);
48668
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_2__.attr)(sourceAnchor, 'title', text);
48342
48669
  } else {
48343
48670
  insert(url, text);
48344
48671
  }
@@ -49439,8 +49766,8 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeSandbox = null;
49439
49766
  if (opt.iframeCSSLinks) {
49440
49767
  opt.iframeCSSLinks.forEach(function(href) {
49441
49768
  var link = doc.createElement('link');
49442
- link.setAttribute('rel', 'stylesheet');
49443
- link.setAttribute('href', href);
49769
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.attr)(link, 'rel', 'stylesheet');
49770
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.attr)(link, 'href', href);
49444
49771
  doc.head && doc.head.appendChild(link);
49445
49772
  });
49446
49773
  }
@@ -49457,11 +49784,13 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeSandbox = null;
49457
49784
  _$iframe.style.display = 'block';
49458
49785
  _$iframe.src = 'about:blank';
49459
49786
  _$iframe.className = 'jodit-wysiwyg_iframe';
49460
- _$iframe.setAttribute('allowtransparency', 'true');
49461
- _$iframe.setAttribute('tabindex', opt.tabIndex.toString());
49462
- _$iframe.setAttribute('frameborder', '0');
49787
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.attr)(_$iframe, {
49788
+ allowtransparency: 'true',
49789
+ tabindex: opt.tabIndex.toString(),
49790
+ frameborder: '0'
49791
+ });
49463
49792
  if (opt.iframeSandbox != null) {
49464
- _$iframe.setAttribute('sandbox', opt.iframeSandbox);
49793
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.attr)(_$iframe, 'sandbox', opt.iframeSandbox);
49465
49794
  }
49466
49795
  editor.workplace.appendChild(_$iframe);
49467
49796
  editor.iframe = _$iframe;
@@ -52859,6 +53188,12 @@ function _ts_generator(thisArg, body) {
52859
53188
  }
52860
53189
  (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(link, 'href', imageLink);
52861
53190
  (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(link, 'target', imageLinkOpenInNewTab ? '_blank' : null);
53191
+ if (!imageLinkOpenInNewTab) {
53192
+ var relParts = ((0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(link, 'rel') || '').split(/\s+/).filter(function(p) {
53193
+ return p && p !== 'noopener' && p !== 'noreferrer';
53194
+ });
53195
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(link, 'rel', relParts.length ? relParts.join(' ') : null);
53196
+ }
52862
53197
  } else {
52863
53198
  if (link && link.parentNode) {
52864
53199
  link.parentNode.replaceChild(image, link);
@@ -52963,10 +53298,11 @@ function _ts_generator(thisArg, body) {
52963
53298
  /* harmony import */ var _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(22732);
52964
53299
  /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(580);
52965
53300
  /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(21537);
52966
- /* harmony import */ var _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12153);
52967
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(6441);
52968
- /* harmony import */ var _modules_widget_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(92762);
52969
- /* harmony import */ var _image_svg_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(25179);
53301
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(29960);
53302
+ /* harmony import */ var _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(12153);
53303
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(6441);
53304
+ /* harmony import */ var _modules_widget_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(92762);
53305
+ /* harmony import */ var _image_svg_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(25179);
52970
53306
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
52971
53307
  try {
52972
53308
  var info = gen[key](arg);
@@ -53106,15 +53442,16 @@ function _ts_generator(thisArg, body) {
53106
53442
 
53107
53443
 
53108
53444
 
53109
- _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_3__.Icon.set('image', _image_svg_js__WEBPACK_IMPORTED_MODULE_6__["default"]);
53110
- _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.image = {
53445
+
53446
+ _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_4__.Icon.set('image', _image_svg_js__WEBPACK_IMPORTED_MODULE_7__["default"]);
53447
+ _config_js__WEBPACK_IMPORTED_MODULE_5__.Config.prototype.controls.image = {
53111
53448
  popup: function popup(editor, current, close) {
53112
53449
  var sourceImage = null;
53113
53450
  if (current && !_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isText(current) && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isHTMLElement(current) && (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(current, 'img') || (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.$$)('img', current).length)) {
53114
53451
  sourceImage = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(current, 'img') ? current : (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.$$)('img', current)[0];
53115
53452
  }
53116
53453
  editor.s.save();
53117
- return (0,_modules_widget_index_js__WEBPACK_IMPORTED_MODULE_5__.FileSelectorWidget)(editor, {
53454
+ return (0,_modules_widget_index_js__WEBPACK_IMPORTED_MODULE_6__.FileSelectorWidget)(editor, {
53118
53455
  filebrowser: function filebrowser(data) {
53119
53456
  editor.s.restore();
53120
53457
  data.files && data.files.forEach(function(file) {
@@ -53134,8 +53471,8 @@ _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.image = {
53134
53471
  url = '//' + url;
53135
53472
  }
53136
53473
  _$image = sourceImage || editor.createInside.element('img');
53137
- _$image.setAttribute('src', url);
53138
- _$image.setAttribute('alt', text);
53474
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_3__.attr)(_$image, 'src', url);
53475
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_3__.attr)(_$image, 'alt', text);
53139
53476
  if (!!sourceImage) return [
53140
53477
  3,
53141
53478
  2
@@ -55949,7 +56286,7 @@ function _is_native_reflect_construct() {
55949
56286
  }
55950
56287
  if (jodit.s.isCollapsed()) {
55951
56288
  var a = jodit.createInside.element('a');
55952
- a.setAttribute('href', html);
56289
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(a, 'href', html);
55953
56290
  a.textContent = html;
55954
56291
  jodit.e.fire('applyLink', jodit, a, null);
55955
56292
  return a;
@@ -56014,7 +56351,7 @@ function _is_native_reflect_construct() {
56014
56351
  target_checkbox.checked = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(_$link, 'target') === '_blank';
56015
56352
  }
56016
56353
  if (noFollowCheckbox && nofollow_checkbox) {
56017
- nofollow_checkbox.checked = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(_$link, 'rel') === 'nofollow';
56354
+ nofollow_checkbox.checked = ((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(_$link, 'rel') || '').split(/\s+/).includes('nofollow');
56018
56355
  }
56019
56356
  insert.textContent = i18n('Update');
56020
56357
  } else {
@@ -56082,7 +56419,14 @@ function _is_native_reflect_construct() {
56082
56419
  (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(a, 'target', target_checkbox.checked ? '_blank' : null);
56083
56420
  }
56084
56421
  if (noFollowCheckbox && nofollow_checkbox) {
56085
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(a, 'rel', nofollow_checkbox.checked ? 'nofollow' : null);
56422
+ var relParts = ((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(a, 'rel') || '').split(/\s+/).filter(Boolean);
56423
+ var hasNofollow = relParts.includes('nofollow');
56424
+ if (nofollow_checkbox.checked && !hasNofollow) {
56425
+ relParts.push('nofollow');
56426
+ } else if (!nofollow_checkbox.checked && hasNofollow) {
56427
+ relParts.splice(relParts.indexOf('nofollow'), 1);
56428
+ }
56429
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(a, 'rel', relParts.length ? relParts.join(' ') : null);
56086
56430
  }
56087
56431
  jodit.e.fire('applyLink', jodit, a, form);
56088
56432
  });
@@ -60497,8 +60841,8 @@ var keyBInd = '__jodit-resizer_binded';
60497
60841
  this.j.e.off(element, 'mousedown.select touchstart.select').on(element, 'mousedown.select touchstart.select', function() {
60498
60842
  _this.j.s.select(element);
60499
60843
  }).off(element, 'changesize').on(element, 'changesize', function() {
60500
- iframe.setAttribute('width', element.offsetWidth + 'px');
60501
- iframe.setAttribute('height', element.offsetHeight + 'px');
60844
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(iframe, 'width', element.offsetWidth + 'px');
60845
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(iframe, 'height', element.offsetHeight + 'px');
60502
60846
  });
60503
60847
  }
60504
60848
  this.j.e.on(element, 'dragstart', this.hide);
@@ -64102,8 +64446,9 @@ var AceEditor = /*#__PURE__*/ function(SourceEditor) {
64102
64446
  /* harmony export */ TextAreaEditor: function() { return /* binding */ TextAreaEditor; }
64103
64447
  /* harmony export */ });
64104
64448
  /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
64105
- /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(41180);
64106
- /* harmony import */ var _sourceEditor_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23370);
64449
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29960);
64450
+ /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(41180);
64451
+ /* harmony import */ var _sourceEditor_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(23370);
64107
64452
  function _assert_this_initialized(self) {
64108
64453
  if (self === void 0) {
64109
64454
  throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
@@ -64184,6 +64529,7 @@ function _is_native_reflect_construct() {
64184
64529
  */
64185
64530
 
64186
64531
 
64532
+
64187
64533
  var TextAreaEditor = /*#__PURE__*/ function(SourceEditor) {
64188
64534
  "use strict";
64189
64535
  _inherits(TextAreaEditor, SourceEditor);
@@ -64208,7 +64554,7 @@ var TextAreaEditor = /*#__PURE__*/ function(SourceEditor) {
64208
64554
  });
64209
64555
  this.container.appendChild(this.instance);
64210
64556
  editor.e.on(this.instance, 'mousedown keydown touchstart input', editor.async.debounce(this.toWYSIWYG, editor.defaultTimeout)).on('setMinHeight.source', function(minHeightD) {
64211
- (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_1__.css)(_this.instance, 'minHeight', minHeightD);
64557
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(_this.instance, 'minHeight', minHeightD);
64212
64558
  }).on(this.instance, 'change keydown mousedown touchstart input', this.autosize).on('afterSetMode.source', this.autosize).on(this.instance, 'mousedown focus', function(e) {
64213
64559
  editor.e.fire(e.type, e);
64214
64560
  });
@@ -64286,17 +64632,13 @@ var TextAreaEditor = /*#__PURE__*/ function(SourceEditor) {
64286
64632
  {
64287
64633
  key: "setPlaceHolder",
64288
64634
  value: function setPlaceHolder(title) {
64289
- this.instance.setAttribute('placeholder', title);
64635
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(this.instance, 'placeholder', title);
64290
64636
  }
64291
64637
  },
64292
64638
  {
64293
64639
  key: "setReadOnly",
64294
64640
  value: function setReadOnly(isReadOnly) {
64295
- if (isReadOnly) {
64296
- this.instance.setAttribute('readonly', 'true');
64297
- } else {
64298
- this.instance.removeAttribute('readonly');
64299
- }
64641
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(this.instance, 'readonly', isReadOnly ? 'true' : null);
64300
64642
  }
64301
64643
  },
64302
64644
  {
@@ -64325,7 +64667,7 @@ var TextAreaEditor = /*#__PURE__*/ function(SourceEditor) {
64325
64667
  }
64326
64668
  ]);
64327
64669
  return TextAreaEditor;
64328
- }(_sourceEditor_js__WEBPACK_IMPORTED_MODULE_2__.SourceEditor);
64670
+ }(_sourceEditor_js__WEBPACK_IMPORTED_MODULE_3__.SourceEditor);
64329
64671
 
64330
64672
 
64331
64673
  /***/ }),