jodit-pro 4.10.4 → 4.11.2

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/es2021/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.2
5
5
  * Url: https://xdsoft.net/jodit/pro/
6
6
  * License(s): SEE LICENSE IN LICENSE.md
7
7
  */
@@ -1721,7 +1721,7 @@ __webpack_require__.r(__webpack_exports__);
1721
1721
  * ```
1722
1722
  * @packageDocumentation
1723
1723
  * @module constants
1724
- */ const APP_VERSION = "4.10.4";
1724
+ */ const APP_VERSION = "4.11.2";
1725
1725
  // prettier-ignore
1726
1726
  const ES = "es2021";
1727
1727
  const IS_ES_MODERN = true;
@@ -5775,17 +5775,54 @@ function normalizeCSS(s) {
5775
5775
  /**
5776
5776
  * Removes dangerous constructs from HTML
5777
5777
  */ function safeHTML(box, options) {
5778
+ var _a;
5778
5779
  if (!_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(box) && !_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isFragment(box)) {
5779
5780
  return;
5780
5781
  }
5781
- if (options.removeOnError) {
5782
- sanitizeHTMLElement(box);
5782
+ const removeEvents = (_a = options.removeEventAttributes) !== null && _a !== void 0 ? _a : options.removeOnError;
5783
+ if (removeEvents) {
5784
+ removeAllEventAttributes(box);
5785
+ (0,_utils_index_js__WEBPACK_IMPORTED_MODULE_1__.$$)('*', box).forEach((elm)=>removeAllEventAttributes(elm));
5786
+ } else if (options.removeOnError) {
5787
+ sanitizeHTMLElement(box, options);
5783
5788
  (0,_utils_index_js__WEBPACK_IMPORTED_MODULE_1__.$$)('[onerror]', box).forEach((elm)=>sanitizeHTMLElement(elm, options));
5784
5789
  }
5785
5790
  if (options.safeJavaScriptLink) {
5786
- sanitizeHTMLElement(box);
5791
+ sanitizeHTMLElement(box, options);
5787
5792
  (0,_utils_index_js__WEBPACK_IMPORTED_MODULE_1__.$$)('a[href^="javascript"]', box).forEach((elm)=>sanitizeHTMLElement(elm, options));
5788
5793
  }
5794
+ if (options.safeLinksTarget) {
5795
+ (0,_utils_index_js__WEBPACK_IMPORTED_MODULE_1__.$$)('a[target="_blank"]', box).forEach((elm)=>{
5796
+ const rel = elm.getAttribute('rel') || '';
5797
+ const parts = rel.split(/\s+/).filter(Boolean);
5798
+ if (!parts.includes('noopener')) {
5799
+ parts.push('noopener');
5800
+ }
5801
+ if (!parts.includes('noreferrer')) {
5802
+ parts.push('noreferrer');
5803
+ }
5804
+ (0,_utils_index_js__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, 'rel', parts.join(' '));
5805
+ });
5806
+ }
5807
+ }
5808
+ /**
5809
+ * Remove all on* event handler attributes from an element
5810
+ */ function removeAllEventAttributes(elm) {
5811
+ if (!_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(elm)) {
5812
+ return false;
5813
+ }
5814
+ let effected = false;
5815
+ const toRemove = [];
5816
+ for(let i = 0; i < elm.attributes.length; i++){
5817
+ if (elm.attributes[i].name.toLowerCase().startsWith('on')) {
5818
+ toRemove.push(elm.attributes[i].name);
5819
+ }
5820
+ }
5821
+ for (const name of toRemove){
5822
+ elm.removeAttribute(name);
5823
+ effected = true;
5824
+ }
5825
+ return effected;
5789
5826
  }
5790
5827
  function sanitizeHTMLElement(elm, { safeJavaScriptLink, removeOnError } = {
5791
5828
  safeJavaScriptLink: true,
@@ -31587,6 +31624,10 @@ _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_4__.Icon.set('class-span', _class_span
31587
31624
  return false;
31588
31625
  }
31589
31626
  onSafeHTML(sandBox) {
31627
+ const sanitizer = this.j.o.cleanHTML.sanitizer;
31628
+ if (sanitizer) {
31629
+ sandBox.innerHTML = sanitizer(sandBox.innerHTML);
31630
+ }
31590
31631
  (0,_core_helpers_html_safe_html_js__WEBPACK_IMPORTED_MODULE_4__.safeHTML)(sandBox, this.j.o.cleanHTML);
31591
31632
  }
31592
31633
  /** @override */ beforeDestruct() {
@@ -31655,10 +31696,19 @@ _config_js__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.cleanHTML = {
31655
31696
  b: 'strong'
31656
31697
  },
31657
31698
  allowTags: false,
31658
- denyTags: 'script',
31699
+ denyTags: 'script,iframe,object,embed',
31659
31700
  useIframeSandbox: false,
31660
31701
  removeOnError: true,
31702
+ removeEventAttributes: true,
31661
31703
  safeJavaScriptLink: true,
31704
+ safeLinksTarget: true,
31705
+ allowedStyles: false,
31706
+ sanitizer: false,
31707
+ sandboxIframesInContent: true,
31708
+ convertUnsafeEmbeds: [
31709
+ 'object',
31710
+ 'embed'
31711
+ ],
31662
31712
  disableCleanFilter: null
31663
31713
  };
31664
31714
  _config_js__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.controls.eraser = {
@@ -31915,6 +31965,53 @@ _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_0__.Icon.set('eraser', _eraser_svg_js_
31915
31965
  }
31916
31966
 
31917
31967
 
31968
+ /***/ }),
31969
+
31970
+ /***/ 1962:
31971
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
31972
+
31973
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
31974
+ /* harmony export */ convertUnsafeEmbeds: function() { return /* binding */ convertUnsafeEmbeds; }
31975
+ /* harmony export */ });
31976
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
31977
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29960);
31978
+ /*!
31979
+ * Jodit Editor (https://xdsoft.net/jodit/)
31980
+ * Released under MIT see LICENSE.txt in the project root for license information.
31981
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
31982
+ */
31983
+
31984
+ /**
31985
+ * Convert `<object>` and `<embed>` elements to safer `<iframe>` elements.
31986
+ * @private
31987
+ */ function convertUnsafeEmbeds(jodit, nodeElm, hadEffect) {
31988
+ const opt = jodit.o.cleanHTML.convertUnsafeEmbeds;
31989
+ if (!opt || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(nodeElm)) {
31990
+ return hadEffect;
31991
+ }
31992
+ const tag = nodeElm.nodeName.toLowerCase();
31993
+ if (!opt.includes(tag)) {
31994
+ return hadEffect;
31995
+ }
31996
+ const elm = nodeElm;
31997
+ const 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') || '';
31998
+ if (!src) {
31999
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(elm);
32000
+ return true;
32001
+ }
32002
+ const iframe = jodit.createInside.element('iframe');
32003
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(iframe, {
32004
+ src,
32005
+ sandbox: '',
32006
+ frameborder: '0',
32007
+ width: (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, 'width'),
32008
+ height: (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, 'height')
32009
+ });
32010
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.replace(elm, iframe, undefined, false, true);
32011
+ return true;
32012
+ }
32013
+
32014
+
31918
32015
  /***/ }),
31919
32016
 
31920
32017
  /***/ 39433:
@@ -31958,20 +32055,28 @@ const TABLE_CONTAINER_TAGS = new Set([
31958
32055
  __webpack_require__.r(__webpack_exports__);
31959
32056
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
31960
32057
  /* harmony export */ allowAttributes: function() { return /* reexport safe */ _allow_attributes_js__WEBPACK_IMPORTED_MODULE_0__.allowAttributes; },
31961
- /* harmony export */ fillEmptyParagraph: function() { return /* reexport safe */ _fill_empty_paragraph_js__WEBPACK_IMPORTED_MODULE_1__.fillEmptyParagraph; },
31962
- /* harmony export */ removeEmptyTextNode: function() { return /* reexport safe */ _remove_empty_text_node_js__WEBPACK_IMPORTED_MODULE_2__.removeEmptyTextNode; },
31963
- /* harmony export */ removeInvTextNodes: function() { return /* reexport safe */ _remove_inv_text_nodes_js__WEBPACK_IMPORTED_MODULE_3__.removeInvTextNodes; },
31964
- /* harmony export */ replaceOldTags: function() { return /* reexport safe */ _replace_old_tags_js__WEBPACK_IMPORTED_MODULE_4__.replaceOldTags; },
31965
- /* harmony export */ sanitizeAttributes: function() { return /* reexport safe */ _sanitize_attributes_js__WEBPACK_IMPORTED_MODULE_5__.sanitizeAttributes; },
31966
- /* harmony export */ tryRemoveNode: function() { return /* reexport safe */ _try_remove_node_js__WEBPACK_IMPORTED_MODULE_6__.tryRemoveNode; }
32058
+ /* harmony export */ convertUnsafeEmbeds: function() { return /* reexport safe */ _convert_unsafe_embeds_js__WEBPACK_IMPORTED_MODULE_1__.convertUnsafeEmbeds; },
32059
+ /* harmony export */ fillEmptyParagraph: function() { return /* reexport safe */ _fill_empty_paragraph_js__WEBPACK_IMPORTED_MODULE_2__.fillEmptyParagraph; },
32060
+ /* harmony export */ removeEmptyTextNode: function() { return /* reexport safe */ _remove_empty_text_node_js__WEBPACK_IMPORTED_MODULE_3__.removeEmptyTextNode; },
32061
+ /* harmony export */ removeInvTextNodes: function() { return /* reexport safe */ _remove_inv_text_nodes_js__WEBPACK_IMPORTED_MODULE_4__.removeInvTextNodes; },
32062
+ /* harmony export */ replaceOldTags: function() { return /* reexport safe */ _replace_old_tags_js__WEBPACK_IMPORTED_MODULE_5__.replaceOldTags; },
32063
+ /* harmony export */ safeLinksTarget: function() { return /* reexport safe */ _safe_links_target_js__WEBPACK_IMPORTED_MODULE_6__.safeLinksTarget; },
32064
+ /* harmony export */ sandboxIframesInContent: function() { return /* reexport safe */ _sandbox_iframes_in_content_js__WEBPACK_IMPORTED_MODULE_7__.sandboxIframesInContent; },
32065
+ /* harmony export */ sanitizeAttributes: function() { return /* reexport safe */ _sanitize_attributes_js__WEBPACK_IMPORTED_MODULE_8__.sanitizeAttributes; },
32066
+ /* harmony export */ sanitizeStyles: function() { return /* reexport safe */ _sanitize_styles_js__WEBPACK_IMPORTED_MODULE_9__.sanitizeStyles; },
32067
+ /* harmony export */ tryRemoveNode: function() { return /* reexport safe */ _try_remove_node_js__WEBPACK_IMPORTED_MODULE_10__.tryRemoveNode; }
31967
32068
  /* harmony export */ });
31968
32069
  /* harmony import */ var _allow_attributes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82558);
31969
- /* harmony import */ var _fill_empty_paragraph_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(39433);
31970
- /* harmony import */ var _remove_empty_text_node_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(53392);
31971
- /* harmony import */ var _remove_inv_text_nodes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(25813);
31972
- /* harmony import */ var _replace_old_tags_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(80973);
31973
- /* harmony import */ var _sanitize_attributes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(384);
31974
- /* harmony import */ var _try_remove_node_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(28800);
32070
+ /* harmony import */ var _convert_unsafe_embeds_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1962);
32071
+ /* harmony import */ var _fill_empty_paragraph_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(39433);
32072
+ /* harmony import */ var _remove_empty_text_node_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(53392);
32073
+ /* harmony import */ var _remove_inv_text_nodes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(25813);
32074
+ /* harmony import */ var _replace_old_tags_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(80973);
32075
+ /* harmony import */ var _safe_links_target_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(95614);
32076
+ /* harmony import */ var _sandbox_iframes_in_content_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(85978);
32077
+ /* harmony import */ var _sanitize_attributes_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(384);
32078
+ /* harmony import */ var _sanitize_styles_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(15583);
32079
+ /* harmony import */ var _try_remove_node_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(28800);
31975
32080
  /*!
31976
32081
  * Jodit Editor (https://xdsoft.net/jodit/)
31977
32082
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -31989,6 +32094,10 @@ __webpack_require__.r(__webpack_exports__);
31989
32094
 
31990
32095
 
31991
32096
 
32097
+
32098
+
32099
+
32100
+
31992
32101
  /***/ }),
31993
32102
 
31994
32103
  /***/ 53392:
@@ -32096,6 +32205,84 @@ __webpack_require__.r(__webpack_exports__);
32096
32205
  }
32097
32206
 
32098
32207
 
32208
+ /***/ }),
32209
+
32210
+ /***/ 95614:
32211
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
32212
+
32213
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
32214
+ /* harmony export */ safeLinksTarget: function() { return /* binding */ safeLinksTarget; }
32215
+ /* harmony export */ });
32216
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
32217
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29960);
32218
+ /*!
32219
+ * Jodit Editor (https://xdsoft.net/jodit/)
32220
+ * Released under MIT see LICENSE.txt in the project root for license information.
32221
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
32222
+ */
32223
+
32224
+ /**
32225
+ * Automatically add `rel="noopener noreferrer"` to links with `target="_blank"`
32226
+ * @private
32227
+ */ function safeLinksTarget(jodit, nodeElm, hadEffect) {
32228
+ if (!jodit.o.cleanHTML.safeLinksTarget || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(nodeElm) || nodeElm.nodeName !== 'A') {
32229
+ return hadEffect;
32230
+ }
32231
+ const elm = nodeElm;
32232
+ if ((0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, 'target') !== '_blank') {
32233
+ return hadEffect;
32234
+ }
32235
+ const rel = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, 'rel') || '';
32236
+ const parts = rel.split(/\s+/).filter(Boolean);
32237
+ let changed = false;
32238
+ if (!parts.includes('noopener')) {
32239
+ parts.push('noopener');
32240
+ changed = true;
32241
+ }
32242
+ if (!parts.includes('noreferrer')) {
32243
+ parts.push('noreferrer');
32244
+ changed = true;
32245
+ }
32246
+ if (changed) {
32247
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, 'rel', parts.join(' '));
32248
+ return true;
32249
+ }
32250
+ return hadEffect;
32251
+ }
32252
+
32253
+
32254
+ /***/ }),
32255
+
32256
+ /***/ 85978:
32257
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
32258
+
32259
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
32260
+ /* harmony export */ sandboxIframesInContent: function() { return /* binding */ sandboxIframesInContent; }
32261
+ /* harmony export */ });
32262
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
32263
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29960);
32264
+ /*!
32265
+ * Jodit Editor (https://xdsoft.net/jodit/)
32266
+ * Released under MIT see LICENSE.txt in the project root for license information.
32267
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
32268
+ */
32269
+
32270
+ /**
32271
+ * Add `sandbox=""` attribute to all `<iframe>` elements in the editor content
32272
+ * @private
32273
+ */ function sandboxIframesInContent(jodit, nodeElm, hadEffect) {
32274
+ if (!jodit.o.cleanHTML.sandboxIframesInContent || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(nodeElm) || nodeElm.nodeName !== 'IFRAME') {
32275
+ return hadEffect;
32276
+ }
32277
+ const elm = nodeElm;
32278
+ if (!elm.hasAttribute('sandbox')) {
32279
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, 'sandbox', '');
32280
+ return true;
32281
+ }
32282
+ return hadEffect;
32283
+ }
32284
+
32285
+
32099
32286
  /***/ }),
32100
32287
 
32101
32288
  /***/ 384:
@@ -32115,9 +32302,15 @@ __webpack_require__.r(__webpack_exports__);
32115
32302
  /**
32116
32303
  * @private
32117
32304
  */ function sanitizeAttributes(jodit, nodeElm, hadEffect) {
32118
- if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(nodeElm) && (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.sanitizeHTMLElement)(nodeElm, {
32119
- safeJavaScriptLink: jodit.options.cleanHTML.safeJavaScriptLink,
32120
- removeOnError: jodit.options.cleanHTML.removeOnError
32305
+ if (!_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(nodeElm)) {
32306
+ return hadEffect;
32307
+ }
32308
+ const opts = jodit.options.cleanHTML;
32309
+ if ((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.sanitizeHTMLElement)(nodeElm, {
32310
+ safeJavaScriptLink: opts.safeJavaScriptLink,
32311
+ removeOnError: opts.removeOnError,
32312
+ removeEventAttributes: opts.removeEventAttributes,
32313
+ safeLinksTarget: opts.safeLinksTarget
32121
32314
  })) {
32122
32315
  return true;
32123
32316
  }
@@ -32125,6 +32318,81 @@ __webpack_require__.r(__webpack_exports__);
32125
32318
  }
32126
32319
 
32127
32320
 
32321
+ /***/ }),
32322
+
32323
+ /***/ 15583:
32324
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
32325
+
32326
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
32327
+ /* harmony export */ sanitizeStyles: function() { return /* binding */ sanitizeStyles; }
32328
+ /* harmony export */ });
32329
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
32330
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29960);
32331
+ /*!
32332
+ * Jodit Editor (https://xdsoft.net/jodit/)
32333
+ * Released under MIT see LICENSE.txt in the project root for license information.
32334
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
32335
+ */
32336
+
32337
+ /**
32338
+ * Filter CSS properties in style attributes based on allowedStyles whitelist
32339
+ * @private
32340
+ */ function sanitizeStyles(jodit, nodeElm, hadEffect) {
32341
+ const allowedStyles = jodit.o.cleanHTML.allowedStyles;
32342
+ if (!allowedStyles || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(nodeElm)) {
32343
+ return hadEffect;
32344
+ }
32345
+ const elm = nodeElm;
32346
+ const style = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, 'style');
32347
+ if (!style) {
32348
+ return hadEffect;
32349
+ }
32350
+ const tagName = nodeElm.nodeName.toLowerCase();
32351
+ const allowed = getAllowedPropsForTag(tagName, allowedStyles);
32352
+ if (!allowed) {
32353
+ return hadEffect;
32354
+ }
32355
+ const filtered = filterStyleProperties(style, allowed);
32356
+ if (filtered !== style) {
32357
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, 'style', filtered || null);
32358
+ return true;
32359
+ }
32360
+ return hadEffect;
32361
+ }
32362
+ function getAllowedPropsForTag(tagName, allowedStyles) {
32363
+ const tagSpecific = allowedStyles[tagName];
32364
+ const global = allowedStyles['*'];
32365
+ if (!tagSpecific && !global) {
32366
+ return null;
32367
+ }
32368
+ const set = new Set();
32369
+ if (global) {
32370
+ for (const prop of global){
32371
+ set.add(prop.toLowerCase());
32372
+ }
32373
+ }
32374
+ if (tagSpecific) {
32375
+ for (const prop of tagSpecific){
32376
+ set.add(prop.toLowerCase());
32377
+ }
32378
+ }
32379
+ return set;
32380
+ }
32381
+ function filterStyleProperties(style, allowed) {
32382
+ return style.split(';').map((s)=>s.trim()).filter((s)=>{
32383
+ if (!s) {
32384
+ return false;
32385
+ }
32386
+ const colonIdx = s.indexOf(':');
32387
+ if (colonIdx === -1) {
32388
+ return false;
32389
+ }
32390
+ const prop = s.substring(0, colonIdx).trim().toLowerCase();
32391
+ return allowed.has(prop);
32392
+ }).join('; ').replace(/;\s*$/, '');
32393
+ }
32394
+
32395
+
32128
32396
  /***/ }),
32129
32397
 
32130
32398
  /***/ 28800:
@@ -33579,7 +33847,7 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('dragAndDropElemen
33579
33847
  'src'
33580
33848
  ];
33581
33849
  fragment = this.j.createInside.element(tagName);
33582
- 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') || '');
33850
+ (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') || '');
33583
33851
  if (tagName === 'a') {
33584
33852
  fragment.textContent = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(fragment, field) || '';
33585
33853
  }
@@ -34176,13 +34444,15 @@ function brBefore(start) {
34176
34444
  /* harmony export */ insertParagraph: function() { return /* binding */ insertParagraph; }
34177
34445
  /* harmony export */ });
34178
34446
  /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
34179
- /* harmony import */ var _core_helpers_utils_scroll_into_view_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26395);
34447
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29960);
34448
+ /* harmony import */ var _core_helpers_utils_scroll_into_view_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(26395);
34180
34449
  /*!
34181
34450
  * Jodit Editor (https://xdsoft.net/jodit/)
34182
34451
  * Released under MIT see LICENSE.txt in the project root for license information.
34183
34452
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
34184
34453
  */
34185
34454
 
34455
+
34186
34456
  /**
34187
34457
  * Insert default paragraph
34188
34458
  * @private
@@ -34192,11 +34462,11 @@ function brBefore(start) {
34192
34462
  p.appendChild(br);
34193
34463
  }
34194
34464
  if (style && style.cssText) {
34195
- p.setAttribute('style', style.cssText);
34465
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(p, 'style', style.cssText);
34196
34466
  }
34197
34467
  _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.after(fake, p);
34198
34468
  _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.before(isBR ? p : br, fake);
34199
- (0,_core_helpers_utils_scroll_into_view_js__WEBPACK_IMPORTED_MODULE_1__.scrollIntoViewIfNeeded)(p, editor.editor, editor.ed);
34469
+ (0,_core_helpers_utils_scroll_into_view_js__WEBPACK_IMPORTED_MODULE_2__.scrollIntoViewIfNeeded)(p, editor.editor, editor.ed);
34200
34470
  return p;
34201
34471
  }
34202
34472
 
@@ -34373,8 +34643,9 @@ function brBefore(start) {
34373
34643
  /* unused harmony export file */
34374
34644
  /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
34375
34645
  /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(580);
34376
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6441);
34377
- /* harmony import */ var _modules_widget_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(92762);
34646
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29960);
34647
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6441);
34648
+ /* harmony import */ var _modules_widget_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(92762);
34378
34649
  /*!
34379
34650
  * Jodit Editor (https://xdsoft.net/jodit/)
34380
34651
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -34383,7 +34654,8 @@ function brBefore(start) {
34383
34654
 
34384
34655
 
34385
34656
 
34386
- _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.controls.file = {
34657
+
34658
+ _config_js__WEBPACK_IMPORTED_MODULE_3__.Config.prototype.controls.file = {
34387
34659
  popup: (editor, current, close)=>{
34388
34660
  const insert = (url, title = '')=>{
34389
34661
  editor.s.insertNode(editor.createInside.fromHTML(`<a href="${url}" title="${title}">${title || url}</a>`));
@@ -34392,7 +34664,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.controls.file = {
34392
34664
  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))) {
34393
34665
  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);
34394
34666
  }
34395
- return (0,_modules_widget_index_js__WEBPACK_IMPORTED_MODULE_3__.FileSelectorWidget)(editor, {
34667
+ return (0,_modules_widget_index_js__WEBPACK_IMPORTED_MODULE_4__.FileSelectorWidget)(editor, {
34396
34668
  filebrowser: (data)=>{
34397
34669
  data.files && data.files.forEach((file)=>insert(data.baseurl + file));
34398
34670
  close();
@@ -34400,8 +34672,8 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.controls.file = {
34400
34672
  upload: true,
34401
34673
  url: (url, text)=>{
34402
34674
  if (sourceAnchor) {
34403
- sourceAnchor.setAttribute('href', url);
34404
- sourceAnchor.setAttribute('title', text);
34675
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_2__.attr)(sourceAnchor, 'href', url);
34676
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_2__.attr)(sourceAnchor, 'title', text);
34405
34677
  } else {
34406
34678
  insert(url, text);
34407
34679
  }
@@ -35263,8 +35535,8 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeSandbox = null;
35263
35535
  if (opt.iframeCSSLinks) {
35264
35536
  opt.iframeCSSLinks.forEach((href)=>{
35265
35537
  const link = doc.createElement('link');
35266
- link.setAttribute('rel', 'stylesheet');
35267
- link.setAttribute('href', href);
35538
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.attr)(link, 'rel', 'stylesheet');
35539
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.attr)(link, 'href', href);
35268
35540
  doc.head && doc.head.appendChild(link);
35269
35541
  });
35270
35542
  }
@@ -35281,11 +35553,13 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeSandbox = null;
35281
35553
  iframe.style.display = 'block';
35282
35554
  iframe.src = 'about:blank';
35283
35555
  iframe.className = 'jodit-wysiwyg_iframe';
35284
- iframe.setAttribute('allowtransparency', 'true');
35285
- iframe.setAttribute('tabindex', opt.tabIndex.toString());
35286
- iframe.setAttribute('frameborder', '0');
35556
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.attr)(iframe, {
35557
+ allowtransparency: 'true',
35558
+ tabindex: opt.tabIndex.toString(),
35559
+ frameborder: '0'
35560
+ });
35287
35561
  if (opt.iframeSandbox != null) {
35288
- iframe.setAttribute('sandbox', opt.iframeSandbox);
35562
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.attr)(iframe, 'sandbox', opt.iframeSandbox);
35289
35563
  }
35290
35564
  editor.workplace.appendChild(iframe);
35291
35565
  editor.iframe = iframe;
@@ -36952,6 +37226,10 @@ UIImagePositionTab = __decorate([
36952
37226
  }
36953
37227
  (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(link, 'href', imageLink);
36954
37228
  (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(link, 'target', imageLinkOpenInNewTab ? '_blank' : null);
37229
+ if (!imageLinkOpenInNewTab) {
37230
+ const relParts = ((0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(link, 'rel') || '').split(/\s+/).filter((p)=>p && p !== 'noopener' && p !== 'noreferrer');
37231
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(link, 'rel', relParts.length ? relParts.join(' ') : null);
37232
+ }
36955
37233
  } else {
36956
37234
  if (link && link.parentNode) {
36957
37235
  link.parentNode.replaceChild(image, link);
@@ -37056,10 +37334,11 @@ UIImagePositionTab = __decorate([
37056
37334
  /* harmony import */ var _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(22732);
37057
37335
  /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(580);
37058
37336
  /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(21537);
37059
- /* harmony import */ var _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12153);
37060
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(6441);
37061
- /* harmony import */ var _modules_widget_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(92762);
37062
- /* harmony import */ var _image_svg_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(25179);
37337
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(29960);
37338
+ /* harmony import */ var _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(12153);
37339
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(6441);
37340
+ /* harmony import */ var _modules_widget_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(92762);
37341
+ /* harmony import */ var _image_svg_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(25179);
37063
37342
  /*!
37064
37343
  * Jodit Editor (https://xdsoft.net/jodit/)
37065
37344
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -37071,15 +37350,16 @@ UIImagePositionTab = __decorate([
37071
37350
 
37072
37351
 
37073
37352
 
37074
- _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_3__.Icon.set('image', _image_svg_js__WEBPACK_IMPORTED_MODULE_6__["default"]);
37075
- _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.image = {
37353
+
37354
+ _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_4__.Icon.set('image', _image_svg_js__WEBPACK_IMPORTED_MODULE_7__["default"]);
37355
+ _config_js__WEBPACK_IMPORTED_MODULE_5__.Config.prototype.controls.image = {
37076
37356
  popup: (editor, current, close)=>{
37077
37357
  let sourceImage = null;
37078
37358
  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)) {
37079
37359
  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];
37080
37360
  }
37081
37361
  editor.s.save();
37082
- return (0,_modules_widget_index_js__WEBPACK_IMPORTED_MODULE_5__.FileSelectorWidget)(editor, {
37362
+ return (0,_modules_widget_index_js__WEBPACK_IMPORTED_MODULE_6__.FileSelectorWidget)(editor, {
37083
37363
  filebrowser: (data)=>{
37084
37364
  editor.s.restore();
37085
37365
  data.files && data.files.forEach((file)=>editor.s.insertImage(data.baseurl + file, null, editor.o.imageDefaultWidth));
@@ -37092,8 +37372,8 @@ _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.image = {
37092
37372
  url = '//' + url;
37093
37373
  }
37094
37374
  const image = sourceImage || editor.createInside.element('img');
37095
- image.setAttribute('src', url);
37096
- image.setAttribute('alt', text);
37375
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_3__.attr)(image, 'src', url);
37376
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_3__.attr)(image, 'alt', text);
37097
37377
  if (!sourceImage) {
37098
37378
  await editor.s.insertImage(image, null, editor.o.imageDefaultWidth);
37099
37379
  }
@@ -39101,7 +39381,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.controls.link = {
39101
39381
  }
39102
39382
  if (jodit.s.isCollapsed()) {
39103
39383
  const a = jodit.createInside.element('a');
39104
- a.setAttribute('href', html);
39384
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(a, 'href', html);
39105
39385
  a.textContent = html;
39106
39386
  jodit.e.fire('applyLink', jodit, a, null);
39107
39387
  return a;
@@ -39161,7 +39441,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.controls.link = {
39161
39441
  target_checkbox.checked = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(link, 'target') === '_blank';
39162
39442
  }
39163
39443
  if (noFollowCheckbox && nofollow_checkbox) {
39164
- nofollow_checkbox.checked = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(link, 'rel') === 'nofollow';
39444
+ nofollow_checkbox.checked = ((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(link, 'rel') || '').split(/\s+/).includes('nofollow');
39165
39445
  }
39166
39446
  insert.textContent = i18n('Update');
39167
39447
  } else {
@@ -39227,7 +39507,14 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.controls.link = {
39227
39507
  (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(a, 'target', target_checkbox.checked ? '_blank' : null);
39228
39508
  }
39229
39509
  if (noFollowCheckbox && nofollow_checkbox) {
39230
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(a, 'rel', nofollow_checkbox.checked ? 'nofollow' : null);
39510
+ const relParts = ((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(a, 'rel') || '').split(/\s+/).filter(Boolean);
39511
+ const hasNofollow = relParts.includes('nofollow');
39512
+ if (nofollow_checkbox.checked && !hasNofollow) {
39513
+ relParts.push('nofollow');
39514
+ } else if (!nofollow_checkbox.checked && hasNofollow) {
39515
+ relParts.splice(relParts.indexOf('nofollow'), 1);
39516
+ }
39517
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(a, 'rel', relParts.length ? relParts.join(' ') : null);
39231
39518
  }
39232
39519
  jodit.e.fire('applyLink', jodit, a, form);
39233
39520
  });
@@ -41837,8 +42124,8 @@ const keyBInd = '__jodit-resizer_binded';
41837
42124
  this.j.e.off(element, 'mousedown.select touchstart.select').on(element, 'mousedown.select touchstart.select', ()=>{
41838
42125
  this.j.s.select(element);
41839
42126
  }).off(element, 'changesize').on(element, 'changesize', ()=>{
41840
- iframe.setAttribute('width', element.offsetWidth + 'px');
41841
- iframe.setAttribute('height', element.offsetHeight + 'px');
42127
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(iframe, 'width', element.offsetWidth + 'px');
42128
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(iframe, 'height', element.offsetHeight + 'px');
41842
42129
  });
41843
42130
  }
41844
42131
  this.j.e.on(element, 'dragstart', this.hide);
@@ -43887,8 +44174,9 @@ class AceEditor extends _sourceEditor_js__WEBPACK_IMPORTED_MODULE_2__.SourceEdit
43887
44174
  /* harmony export */ TextAreaEditor: function() { return /* binding */ TextAreaEditor; }
43888
44175
  /* harmony export */ });
43889
44176
  /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
43890
- /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(41180);
43891
- /* harmony import */ var _sourceEditor_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23370);
44177
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29960);
44178
+ /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(41180);
44179
+ /* harmony import */ var _sourceEditor_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(23370);
43892
44180
  /*!
43893
44181
  * Jodit Editor (https://xdsoft.net/jodit/)
43894
44182
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -43896,7 +44184,8 @@ class AceEditor extends _sourceEditor_js__WEBPACK_IMPORTED_MODULE_2__.SourceEdit
43896
44184
  */
43897
44185
 
43898
44186
 
43899
- class TextAreaEditor extends _sourceEditor_js__WEBPACK_IMPORTED_MODULE_2__.SourceEditor {
44187
+
44188
+ class TextAreaEditor extends _sourceEditor_js__WEBPACK_IMPORTED_MODULE_3__.SourceEditor {
43900
44189
  init(editor) {
43901
44190
  this.instance = editor.c.element('textarea', {
43902
44191
  class: 'jodit-source__mirror',
@@ -43904,7 +44193,7 @@ class TextAreaEditor extends _sourceEditor_js__WEBPACK_IMPORTED_MODULE_2__.Sourc
43904
44193
  });
43905
44194
  this.container.appendChild(this.instance);
43906
44195
  editor.e.on(this.instance, 'mousedown keydown touchstart input', editor.async.debounce(this.toWYSIWYG, editor.defaultTimeout)).on('setMinHeight.source', (minHeightD)=>{
43907
- (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_1__.css)(this.instance, 'minHeight', minHeightD);
44196
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(this.instance, 'minHeight', minHeightD);
43908
44197
  }).on(this.instance, 'change keydown mousedown touchstart input', this.autosize).on('afterSetMode.source', this.autosize).on(this.instance, 'mousedown focus', (e)=>{
43909
44198
  editor.e.fire(e.type, e);
43910
44199
  });
@@ -43948,14 +44237,10 @@ class TextAreaEditor extends _sourceEditor_js__WEBPACK_IMPORTED_MODULE_2__.Sourc
43948
44237
  this.instance.blur();
43949
44238
  }
43950
44239
  setPlaceHolder(title) {
43951
- this.instance.setAttribute('placeholder', title);
44240
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(this.instance, 'placeholder', title);
43952
44241
  }
43953
44242
  setReadOnly(isReadOnly) {
43954
- if (isReadOnly) {
43955
- this.instance.setAttribute('readonly', 'true');
43956
- } else {
43957
- this.instance.removeAttribute('readonly');
43958
- }
44243
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(this.instance, 'readonly', isReadOnly ? 'true' : null);
43959
44244
  }
43960
44245
  selectAll() {
43961
44246
  this.instance.select();