jodit-pro 4.12.24 → 4.12.26

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 (299) hide show
  1. package/es2015/jodit.css +1 -1
  2. package/es2015/jodit.fat.min.js +7 -7
  3. package/es2015/jodit.js +156 -35
  4. package/es2015/jodit.min.js +38 -38
  5. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  6. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  7. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  8. package/es2015/plugins/autocomplete/autocomplete.js +1 -1
  9. package/es2015/plugins/autocomplete/autocomplete.min.js +1 -1
  10. package/es2015/plugins/backup/backup.css +1 -1
  11. package/es2015/plugins/backup/backup.js +1 -1
  12. package/es2015/plugins/backup/backup.min.js +1 -1
  13. package/es2015/plugins/button-generator/button-generator.css +1 -1
  14. package/es2015/plugins/button-generator/button-generator.js +1 -1
  15. package/es2015/plugins/button-generator/button-generator.min.js +1 -1
  16. package/es2015/plugins/change-case/change-case.js +1 -1
  17. package/es2015/plugins/change-case/change-case.min.js +1 -1
  18. package/es2015/plugins/color-picker/color-picker.css +1 -1
  19. package/es2015/plugins/color-picker/color-picker.js +1 -1
  20. package/es2015/plugins/color-picker/color-picker.min.js +1 -1
  21. package/es2015/plugins/emoji/emoji.css +1 -1
  22. package/es2015/plugins/emoji/emoji.js +1 -1
  23. package/es2015/plugins/emoji/emoji.min.js +1 -1
  24. package/es2015/plugins/export-docs/export-docs.js +1 -1
  25. package/es2015/plugins/export-docs/export-docs.min.js +1 -1
  26. package/es2015/plugins/finder/finder.css +1 -1
  27. package/es2015/plugins/finder/finder.js +1 -1
  28. package/es2015/plugins/finder/finder.min.js +1 -1
  29. package/es2015/plugins/google-maps/google-maps.css +1 -1
  30. package/es2015/plugins/google-maps/google-maps.js +1 -1
  31. package/es2015/plugins/google-maps/google-maps.min.js +1 -1
  32. package/es2015/plugins/google-search/google-search.js +1 -1
  33. package/es2015/plugins/google-search/google-search.min.js +1 -1
  34. package/es2015/plugins/highlight-signature/highlight-signature.js +1 -1
  35. package/es2015/plugins/highlight-signature/highlight-signature.min.js +1 -1
  36. package/es2015/plugins/iframe-editor/iframe-editor.css +1 -1
  37. package/es2015/plugins/iframe-editor/iframe-editor.js +1 -1
  38. package/es2015/plugins/iframe-editor/iframe-editor.min.js +1 -1
  39. package/es2015/plugins/keyboard/keyboard.css +1 -1
  40. package/es2015/plugins/keyboard/keyboard.js +1 -1
  41. package/es2015/plugins/keyboard/keyboard.min.js +1 -1
  42. package/es2015/plugins/mobile-view/mobile-view.js +1 -1
  43. package/es2015/plugins/mobile-view/mobile-view.min.js +1 -1
  44. package/es2015/plugins/page-break/page-break.js +1 -1
  45. package/es2015/plugins/page-break/page-break.min.js +1 -1
  46. package/es2015/plugins/paste-code/paste-code.css +1 -1
  47. package/es2015/plugins/paste-code/paste-code.js +1 -1
  48. package/es2015/plugins/paste-code/paste-code.min.js +1 -1
  49. package/es2015/plugins/paste-from-word/paste-from-word.js +1 -1
  50. package/es2015/plugins/paste-from-word/paste-from-word.min.js +1 -1
  51. package/es2015/plugins/show-blocks/show-blocks.js +1 -1
  52. package/es2015/plugins/show-blocks/show-blocks.min.js +1 -1
  53. package/es2015/plugins/style/style.css +1 -1
  54. package/es2015/plugins/style/style.js +1 -1
  55. package/es2015/plugins/style/style.min.js +1 -1
  56. package/es2015/plugins/templates/templates.css +1 -1
  57. package/es2015/plugins/templates/templates.js +1 -1
  58. package/es2015/plugins/templates/templates.min.js +1 -1
  59. package/es2015/plugins/todo-list/todo-list.css +1 -1
  60. package/es2015/plugins/todo-list/todo-list.js +1 -1
  61. package/es2015/plugins/todo-list/todo-list.min.js +1 -1
  62. package/es2015/plugins/translate/translate.css +1 -1
  63. package/es2015/plugins/translate/translate.js +1 -1
  64. package/es2015/plugins/translate/translate.min.js +1 -1
  65. package/es2015/plugins/tune-block/tune-block.css +1 -1
  66. package/es2015/plugins/tune-block/tune-block.js +1 -1
  67. package/es2015/plugins/tune-block/tune-block.min.js +1 -1
  68. package/es2018/jodit.fat.min.js +9 -9
  69. package/es2018/jodit.min.js +7 -7
  70. package/es2018/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  71. package/es2018/plugins/autocomplete/autocomplete.min.js +1 -1
  72. package/es2018/plugins/backup/backup.min.js +1 -1
  73. package/es2018/plugins/button-generator/button-generator.min.js +1 -1
  74. package/es2018/plugins/change-case/change-case.min.js +1 -1
  75. package/es2018/plugins/color-picker/color-picker.min.js +1 -1
  76. package/es2018/plugins/emoji/emoji.min.js +1 -1
  77. package/es2018/plugins/export-docs/export-docs.min.js +1 -1
  78. package/es2018/plugins/finder/finder.min.js +1 -1
  79. package/es2018/plugins/google-maps/google-maps.min.js +1 -1
  80. package/es2018/plugins/google-search/google-search.min.js +1 -1
  81. package/es2018/plugins/highlight-signature/highlight-signature.min.js +1 -1
  82. package/es2018/plugins/iframe-editor/iframe-editor.min.js +1 -1
  83. package/es2018/plugins/keyboard/keyboard.min.js +1 -1
  84. package/es2018/plugins/mobile-view/mobile-view.min.js +1 -1
  85. package/es2018/plugins/page-break/page-break.min.js +1 -1
  86. package/es2018/plugins/paste-code/paste-code.min.js +1 -1
  87. package/es2018/plugins/paste-from-word/paste-from-word.min.js +1 -1
  88. package/es2018/plugins/show-blocks/show-blocks.min.js +1 -1
  89. package/es2018/plugins/style/style.min.js +1 -1
  90. package/es2018/plugins/templates/templates.min.js +1 -1
  91. package/es2018/plugins/todo-list/todo-list.min.js +1 -1
  92. package/es2018/plugins/translate/translate.min.js +1 -1
  93. package/es2018/plugins/tune-block/tune-block.min.js +1 -1
  94. package/es2021/jodit.css +1 -1
  95. package/es2021/jodit.fat.min.js +11 -11
  96. package/es2021/jodit.js +156 -35
  97. package/es2021/jodit.min.js +8 -8
  98. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  99. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  100. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  101. package/es2021/plugins/autocomplete/autocomplete.js +1 -1
  102. package/es2021/plugins/autocomplete/autocomplete.min.js +1 -1
  103. package/es2021/plugins/backup/backup.css +1 -1
  104. package/es2021/plugins/backup/backup.js +1 -1
  105. package/es2021/plugins/backup/backup.min.js +1 -1
  106. package/es2021/plugins/button-generator/button-generator.css +1 -1
  107. package/es2021/plugins/button-generator/button-generator.js +1 -1
  108. package/es2021/plugins/button-generator/button-generator.min.js +1 -1
  109. package/es2021/plugins/change-case/change-case.js +1 -1
  110. package/es2021/plugins/change-case/change-case.min.js +1 -1
  111. package/es2021/plugins/color-picker/color-picker.css +1 -1
  112. package/es2021/plugins/color-picker/color-picker.js +1 -1
  113. package/es2021/plugins/color-picker/color-picker.min.js +1 -1
  114. package/es2021/plugins/emoji/emoji.css +1 -1
  115. package/es2021/plugins/emoji/emoji.js +1 -1
  116. package/es2021/plugins/emoji/emoji.min.js +1 -1
  117. package/es2021/plugins/export-docs/export-docs.js +1 -1
  118. package/es2021/plugins/export-docs/export-docs.min.js +1 -1
  119. package/es2021/plugins/finder/finder.css +1 -1
  120. package/es2021/plugins/finder/finder.js +1 -1
  121. package/es2021/plugins/finder/finder.min.js +1 -1
  122. package/es2021/plugins/google-maps/google-maps.css +1 -1
  123. package/es2021/plugins/google-maps/google-maps.js +1 -1
  124. package/es2021/plugins/google-maps/google-maps.min.js +1 -1
  125. package/es2021/plugins/google-search/google-search.js +1 -1
  126. package/es2021/plugins/google-search/google-search.min.js +1 -1
  127. package/es2021/plugins/highlight-signature/highlight-signature.js +1 -1
  128. package/es2021/plugins/highlight-signature/highlight-signature.min.js +1 -1
  129. package/es2021/plugins/iframe-editor/iframe-editor.css +1 -1
  130. package/es2021/plugins/iframe-editor/iframe-editor.js +1 -1
  131. package/es2021/plugins/iframe-editor/iframe-editor.min.js +1 -1
  132. package/es2021/plugins/keyboard/keyboard.css +1 -1
  133. package/es2021/plugins/keyboard/keyboard.js +1 -1
  134. package/es2021/plugins/keyboard/keyboard.min.js +1 -1
  135. package/es2021/plugins/mobile-view/mobile-view.js +1 -1
  136. package/es2021/plugins/mobile-view/mobile-view.min.js +1 -1
  137. package/es2021/plugins/page-break/page-break.js +1 -1
  138. package/es2021/plugins/page-break/page-break.min.js +1 -1
  139. package/es2021/plugins/paste-code/paste-code.css +1 -1
  140. package/es2021/plugins/paste-code/paste-code.js +1 -1
  141. package/es2021/plugins/paste-code/paste-code.min.js +1 -1
  142. package/es2021/plugins/paste-from-word/paste-from-word.js +1 -1
  143. package/es2021/plugins/paste-from-word/paste-from-word.min.js +1 -1
  144. package/es2021/plugins/show-blocks/show-blocks.js +1 -1
  145. package/es2021/plugins/show-blocks/show-blocks.min.js +1 -1
  146. package/es2021/plugins/style/style.css +1 -1
  147. package/es2021/plugins/style/style.js +1 -1
  148. package/es2021/plugins/style/style.min.js +1 -1
  149. package/es2021/plugins/templates/templates.css +1 -1
  150. package/es2021/plugins/templates/templates.js +1 -1
  151. package/es2021/plugins/templates/templates.min.js +1 -1
  152. package/es2021/plugins/todo-list/todo-list.css +1 -1
  153. package/es2021/plugins/todo-list/todo-list.js +1 -1
  154. package/es2021/plugins/todo-list/todo-list.min.js +1 -1
  155. package/es2021/plugins/translate/translate.css +1 -1
  156. package/es2021/plugins/translate/translate.js +1 -1
  157. package/es2021/plugins/translate/translate.min.js +1 -1
  158. package/es2021/plugins/tune-block/tune-block.css +1 -1
  159. package/es2021/plugins/tune-block/tune-block.js +1 -1
  160. package/es2021/plugins/tune-block/tune-block.min.js +1 -1
  161. package/es2021.en/jodit.css +1 -1
  162. package/es2021.en/jodit.fat.min.js +8 -8
  163. package/es2021.en/jodit.js +156 -35
  164. package/es2021.en/jodit.min.js +8 -8
  165. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  166. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  167. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  168. package/es2021.en/plugins/autocomplete/autocomplete.js +1 -1
  169. package/es2021.en/plugins/autocomplete/autocomplete.min.js +1 -1
  170. package/es2021.en/plugins/backup/backup.css +1 -1
  171. package/es2021.en/plugins/backup/backup.js +1 -1
  172. package/es2021.en/plugins/backup/backup.min.js +1 -1
  173. package/es2021.en/plugins/button-generator/button-generator.css +1 -1
  174. package/es2021.en/plugins/button-generator/button-generator.js +1 -1
  175. package/es2021.en/plugins/button-generator/button-generator.min.js +1 -1
  176. package/es2021.en/plugins/change-case/change-case.js +1 -1
  177. package/es2021.en/plugins/change-case/change-case.min.js +1 -1
  178. package/es2021.en/plugins/color-picker/color-picker.css +1 -1
  179. package/es2021.en/plugins/color-picker/color-picker.js +1 -1
  180. package/es2021.en/plugins/color-picker/color-picker.min.js +1 -1
  181. package/es2021.en/plugins/emoji/emoji.css +1 -1
  182. package/es2021.en/plugins/emoji/emoji.js +1 -1
  183. package/es2021.en/plugins/emoji/emoji.min.js +1 -1
  184. package/es2021.en/plugins/export-docs/export-docs.js +1 -1
  185. package/es2021.en/plugins/export-docs/export-docs.min.js +1 -1
  186. package/es2021.en/plugins/finder/finder.css +1 -1
  187. package/es2021.en/plugins/finder/finder.js +1 -1
  188. package/es2021.en/plugins/finder/finder.min.js +1 -1
  189. package/es2021.en/plugins/google-maps/google-maps.css +1 -1
  190. package/es2021.en/plugins/google-maps/google-maps.js +1 -1
  191. package/es2021.en/plugins/google-maps/google-maps.min.js +1 -1
  192. package/es2021.en/plugins/google-search/google-search.js +1 -1
  193. package/es2021.en/plugins/google-search/google-search.min.js +1 -1
  194. package/es2021.en/plugins/highlight-signature/highlight-signature.js +1 -1
  195. package/es2021.en/plugins/highlight-signature/highlight-signature.min.js +1 -1
  196. package/es2021.en/plugins/iframe-editor/iframe-editor.css +1 -1
  197. package/es2021.en/plugins/iframe-editor/iframe-editor.js +1 -1
  198. package/es2021.en/plugins/iframe-editor/iframe-editor.min.js +1 -1
  199. package/es2021.en/plugins/keyboard/keyboard.css +1 -1
  200. package/es2021.en/plugins/keyboard/keyboard.js +1 -1
  201. package/es2021.en/plugins/keyboard/keyboard.min.js +1 -1
  202. package/es2021.en/plugins/mobile-view/mobile-view.js +1 -1
  203. package/es2021.en/plugins/mobile-view/mobile-view.min.js +1 -1
  204. package/es2021.en/plugins/page-break/page-break.js +1 -1
  205. package/es2021.en/plugins/page-break/page-break.min.js +1 -1
  206. package/es2021.en/plugins/paste-code/paste-code.css +1 -1
  207. package/es2021.en/plugins/paste-code/paste-code.js +1 -1
  208. package/es2021.en/plugins/paste-code/paste-code.min.js +1 -1
  209. package/es2021.en/plugins/paste-from-word/paste-from-word.js +1 -1
  210. package/es2021.en/plugins/paste-from-word/paste-from-word.min.js +1 -1
  211. package/es2021.en/plugins/show-blocks/show-blocks.js +1 -1
  212. package/es2021.en/plugins/show-blocks/show-blocks.min.js +1 -1
  213. package/es2021.en/plugins/style/style.css +1 -1
  214. package/es2021.en/plugins/style/style.js +1 -1
  215. package/es2021.en/plugins/style/style.min.js +1 -1
  216. package/es2021.en/plugins/templates/templates.css +1 -1
  217. package/es2021.en/plugins/templates/templates.js +1 -1
  218. package/es2021.en/plugins/templates/templates.min.js +1 -1
  219. package/es2021.en/plugins/todo-list/todo-list.css +1 -1
  220. package/es2021.en/plugins/todo-list/todo-list.js +1 -1
  221. package/es2021.en/plugins/todo-list/todo-list.min.js +1 -1
  222. package/es2021.en/plugins/translate/translate.css +1 -1
  223. package/es2021.en/plugins/translate/translate.js +1 -1
  224. package/es2021.en/plugins/translate/translate.min.js +1 -1
  225. package/es2021.en/plugins/tune-block/tune-block.css +1 -1
  226. package/es2021.en/plugins/tune-block/tune-block.js +1 -1
  227. package/es2021.en/plugins/tune-block/tune-block.min.js +1 -1
  228. package/es5/jodit.css +2 -2
  229. package/es5/jodit.fat.min.js +2 -2
  230. package/es5/jodit.js +165 -35
  231. package/es5/jodit.min.css +2 -2
  232. package/es5/jodit.min.js +2 -2
  233. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  234. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  235. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  236. package/es5/plugins/autocomplete/autocomplete.js +1 -1
  237. package/es5/plugins/autocomplete/autocomplete.min.js +1 -1
  238. package/es5/plugins/backup/backup.css +1 -1
  239. package/es5/plugins/backup/backup.js +1 -1
  240. package/es5/plugins/backup/backup.min.js +1 -1
  241. package/es5/plugins/button-generator/button-generator.css +1 -1
  242. package/es5/plugins/button-generator/button-generator.js +1 -1
  243. package/es5/plugins/button-generator/button-generator.min.js +1 -1
  244. package/es5/plugins/change-case/change-case.js +1 -1
  245. package/es5/plugins/change-case/change-case.min.js +1 -1
  246. package/es5/plugins/color-picker/color-picker.css +1 -1
  247. package/es5/plugins/color-picker/color-picker.js +1 -1
  248. package/es5/plugins/color-picker/color-picker.min.js +1 -1
  249. package/es5/plugins/emoji/emoji.css +1 -1
  250. package/es5/plugins/emoji/emoji.js +1 -1
  251. package/es5/plugins/emoji/emoji.min.js +1 -1
  252. package/es5/plugins/export-docs/export-docs.js +1 -1
  253. package/es5/plugins/export-docs/export-docs.min.js +1 -1
  254. package/es5/plugins/finder/finder.css +1 -1
  255. package/es5/plugins/finder/finder.js +1 -1
  256. package/es5/plugins/finder/finder.min.js +1 -1
  257. package/es5/plugins/google-maps/google-maps.css +1 -1
  258. package/es5/plugins/google-maps/google-maps.js +1 -1
  259. package/es5/plugins/google-maps/google-maps.min.js +1 -1
  260. package/es5/plugins/google-search/google-search.js +1 -1
  261. package/es5/plugins/google-search/google-search.min.js +1 -1
  262. package/es5/plugins/highlight-signature/highlight-signature.js +1 -1
  263. package/es5/plugins/highlight-signature/highlight-signature.min.js +1 -1
  264. package/es5/plugins/iframe-editor/iframe-editor.css +1 -1
  265. package/es5/plugins/iframe-editor/iframe-editor.js +1 -1
  266. package/es5/plugins/iframe-editor/iframe-editor.min.js +1 -1
  267. package/es5/plugins/keyboard/keyboard.css +1 -1
  268. package/es5/plugins/keyboard/keyboard.js +1 -1
  269. package/es5/plugins/keyboard/keyboard.min.js +1 -1
  270. package/es5/plugins/mobile-view/mobile-view.js +1 -1
  271. package/es5/plugins/mobile-view/mobile-view.min.js +1 -1
  272. package/es5/plugins/page-break/page-break.js +1 -1
  273. package/es5/plugins/page-break/page-break.min.js +1 -1
  274. package/es5/plugins/paste-code/paste-code.css +1 -1
  275. package/es5/plugins/paste-code/paste-code.js +1 -1
  276. package/es5/plugins/paste-code/paste-code.min.js +1 -1
  277. package/es5/plugins/paste-from-word/paste-from-word.js +1 -1
  278. package/es5/plugins/paste-from-word/paste-from-word.min.js +1 -1
  279. package/es5/plugins/show-blocks/show-blocks.js +1 -1
  280. package/es5/plugins/show-blocks/show-blocks.min.js +1 -1
  281. package/es5/plugins/style/style.css +1 -1
  282. package/es5/plugins/style/style.js +1 -1
  283. package/es5/plugins/style/style.min.js +1 -1
  284. package/es5/plugins/templates/templates.css +1 -1
  285. package/es5/plugins/templates/templates.js +1 -1
  286. package/es5/plugins/templates/templates.min.js +1 -1
  287. package/es5/plugins/todo-list/todo-list.css +1 -1
  288. package/es5/plugins/todo-list/todo-list.js +1 -1
  289. package/es5/plugins/todo-list/todo-list.min.js +1 -1
  290. package/es5/plugins/translate/translate.css +1 -1
  291. package/es5/plugins/translate/translate.js +1 -1
  292. package/es5/plugins/translate/translate.min.js +1 -1
  293. package/es5/plugins/tune-block/tune-block.css +1 -1
  294. package/es5/plugins/tune-block/tune-block.js +1 -1
  295. package/es5/plugins/tune-block/tune-block.min.js +1 -1
  296. package/es5/polyfills.fat.min.js +1 -1
  297. package/es5/polyfills.js +1 -1
  298. package/es5/polyfills.min.js +1 -1
  299. 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.12.24
4
+ * Version: v4.12.26
5
5
  * Url: https://xdsoft.net/jodit/pro/
6
6
  * License(s): SEE LICENSE IN LICENSE.md
7
7
  */
@@ -1746,7 +1746,7 @@ __webpack_require__.r(__webpack_exports__);
1746
1746
  * ```
1747
1747
  * @packageDocumentation
1748
1748
  * @module constants
1749
- */ const APP_VERSION = "4.12.24";
1749
+ */ const APP_VERSION = "4.12.26";
1750
1750
  // prettier-ignore
1751
1751
  const ES = "es2021";
1752
1752
  const IS_ES_MODERN = true;
@@ -3101,12 +3101,12 @@ function wait(condition) {
3101
3101
  /**
3102
3102
  * Check if element is element node
3103
3103
  */ static isElement(node) {
3104
- var _a;
3105
3104
  if (!Dom.isNode(node)) {
3106
3105
  return false;
3107
3106
  }
3108
- const win = (_a = node.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView;
3109
- return Boolean(win && node.nodeType === Node.ELEMENT_NODE);
3107
+ // no `defaultView` requirement nodes of an inert document
3108
+ // (`DOMParser`, `implementation.createHTMLDocument`) are still elements
3109
+ return node.nodeType === Node.ELEMENT_NODE;
3110
3110
  }
3111
3111
  /**
3112
3112
  * Check if element is document fragment
@@ -3125,8 +3125,10 @@ function wait(condition) {
3125
3125
  if (!Dom.isNode(node)) {
3126
3126
  return false;
3127
3127
  }
3128
+ // an inert document has no browsing context (`defaultView` is null),
3129
+ // but its nodes are same-realm HTMLElements
3128
3130
  const win = (_a = node.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView;
3129
- return Boolean(win && node instanceof win.HTMLElement);
3131
+ return node instanceof (win ? win.HTMLElement : HTMLElement);
3130
3132
  }
3131
3133
  /**
3132
3134
  * Check element is inline block
@@ -21932,7 +21934,7 @@ function addClassNames(className, elm) {
21932
21934
  Clean: 'Temizle',
21933
21935
  'Insert as Text': 'Yazı olarak ekle',
21934
21936
  'Word Paste Detected': 'Word biçiminde yapıştırma algılandı',
21935
- 'The pasted content is coming from a Microsoft Word/Excel document. Do you want to keep the format or clean it up?': 'Der Inhalt, den Sie einfügen, stammt aus einem Microsoft Word / Excel-Dokument. Möchten Sie das Format erhalten oder löschen?',
21937
+ 'The pasted content is coming from a Microsoft Word/Excel document. Do you want to keep the format or clean it up?': 'Yapıştırılan içerik bir Microsoft Word/Excel belgesinden geliyor. Formatı korumak yoksa temizlemek mi istiyorsunuz?',
21936
21938
  'Insert only Text': 'Sadece yazıyı ekle',
21937
21939
  'File Browser': 'Dosya Listeleyici',
21938
21940
  'Error on load list': 'Liste yüklenirken hata oluştu',
@@ -23210,7 +23212,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_12__.Config.prototype.controls.dialog = {
23210
23212
  e.stopImmediatePropagation();
23211
23213
  }
23212
23214
  if (this.resizable && this.o.resizable) {
23213
- this.setSize(this.startPoint.w + e.clientX - this.startX, this.startPoint.h + e.clientY - this.startY);
23215
+ this.setSize(Math.max(this.startPoint.w + e.clientX - this.startX, this.minSize.w), Math.max(this.startPoint.h + e.clientY - this.startY, this.minSize.h));
23214
23216
  if (this.e) {
23215
23217
  /**
23216
23218
  * Fired when dialog box is resized
@@ -23233,11 +23235,20 @@ _config_js__WEBPACK_IMPORTED_MODULE_12__.Config.prototype.controls.dialog = {
23233
23235
  }
23234
23236
  }
23235
23237
  __onResizerMouseDown(e) {
23238
+ var _a, _b, _c;
23236
23239
  this.resizable = true;
23237
23240
  this.startX = e.clientX;
23238
23241
  this.startY = e.clientY;
23239
23242
  this.startPoint.w = this.dialog.offsetWidth;
23240
23243
  this.startPoint.h = this.dialog.offsetHeight;
23244
+ const header = this.getElm('header');
23245
+ const footer = this.getElm('footer');
23246
+ const content = this.getElm('content');
23247
+ // the content area does not shrink below its CSS `min-height`,
23248
+ // so it is part of the smallest height the panel can take
23249
+ const contentMinHeight = content ? parseFloat(this.ow.getComputedStyle(content).minHeight) || 0 : 0;
23250
+ this.minSize.w = (0,_core_helpers_checker_index_js__WEBPACK_IMPORTED_MODULE_6__.isNumber)(this.o.minWidth) ? this.o.minWidth : Math.max(100, (_a = footer === null || footer === void 0 ? void 0 : footer.scrollWidth) !== null && _a !== void 0 ? _a : 0);
23251
+ this.minSize.h = (0,_core_helpers_checker_index_js__WEBPACK_IMPORTED_MODULE_6__.isNumber)(this.o.minHeight) ? this.o.minHeight : ((_b = header === null || header === void 0 ? void 0 : header.offsetHeight) !== null && _b !== void 0 ? _b : 0) + ((_c = footer === null || footer === void 0 ? void 0 : footer.offsetHeight) !== null && _c !== void 0 ? _c : 0) + contentMinHeight + this.resizer.offsetHeight;
23241
23252
  this.lockSelect();
23242
23253
  this.__addGlobalResizeListeners();
23243
23254
  if (this.e) {
@@ -23543,6 +23554,13 @@ _config_js__WEBPACK_IMPORTED_MODULE_12__.Config.prototype.controls.dialog = {
23543
23554
  this.setPosition();
23544
23555
  }
23545
23556
  };
23557
+ /**
23558
+ * Minimal size the dialog can be resized to — the header and the footer
23559
+ * (with its buttons) must always stay inside the panel
23560
+ */ this.minSize = {
23561
+ w: 0,
23562
+ h: 0
23563
+ };
23546
23564
  this.isModal = false;
23547
23565
  /**
23548
23566
  * True, if dialog was opened
@@ -32178,10 +32196,14 @@ _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_4__.Icon.set('class-span', _class_span
32178
32196
  * Event handler when manually assigning a value to the HTML editor.
32179
32197
  */ onBeforeSetNativeEditorValue(data) {
32180
32198
  const [sandBox, iframe] = this.j.o.cleanHTML.useIframeSandbox ? this.j.createInside.sandbox() : [
32181
- this.j.createInside.div()
32199
+ // an inert document never loads sub-resources, so the
32200
+ // images in the value are not re-requested from the
32201
+ // server on every assignment (e.g. on each change in
32202
+ // jodit-react). See #1237
32203
+ this.j.od.implementation.createHTMLDocument('').body
32182
32204
  ];
32183
32205
  sandBox.innerHTML = data.value;
32184
- this.onSafeHTML(sandBox);
32206
+ this.j.e.fire('safeHTML', sandBox);
32185
32207
  data.value = sandBox.innerHTML;
32186
32208
  (0,_core_helpers_html_safe_html_js__WEBPACK_IMPORTED_MODULE_4__.safeHTML)(sandBox, {
32187
32209
  safeJavaScriptLink: true,
@@ -32510,12 +32532,19 @@ _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_0__.Icon.set('eraser', _eraser_svg_js_
32510
32532
  /**
32511
32533
  * @private
32512
32534
  */ function allowAttributes(jodit, nodeElm, hadEffect, allow) {
32513
- if (allow && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(nodeElm) && allow[nodeElm.nodeName] !== true) {
32535
+ const allowedForTag = allow && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(nodeElm) && allow[nodeElm.nodeName];
32536
+ if (allow && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(nodeElm) && allowedForTag !== true) {
32537
+ // the tag is not in the allow list at all — attributes do not matter,
32538
+ // the element itself will be removed by the tags filter. Without this
32539
+ // check `allow[nodeName][attr]` threw on e.g. `<meta charset>`. See #1224
32540
+ if (!allowedForTag) {
32541
+ return hadEffect;
32542
+ }
32514
32543
  const attrs = nodeElm.attributes;
32515
32544
  if (attrs && attrs.length) {
32516
32545
  const removeAttrs = [];
32517
32546
  for(let i = 0; i < attrs.length; i += 1){
32518
- const attr = allow[nodeElm.nodeName][attrs[i].name];
32547
+ const attr = allowedForTag[attrs[i].name];
32519
32548
  if (!attr || attr !== true && attr !== attrs[i].value) {
32520
32549
  removeAttrs.push(attrs[i].name);
32521
32550
  }
@@ -33057,9 +33086,10 @@ const keys = Object.keys(_filters_index_js__WEBPACK_IMPORTED_MODULE_1__);
33057
33086
  /* unused harmony export clipboard */
33058
33087
  /* harmony import */ var _core_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82758);
33059
33088
  /* harmony import */ var _core_decorators_cache_cache_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(33433);
33060
- /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(580);
33061
- /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21537);
33062
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(79419);
33089
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2748);
33090
+ /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(580);
33091
+ /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(21537);
33092
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(79419);
33063
33093
  /*!
33064
33094
  * Jodit Editor (https://xdsoft.net/jodit/)
33065
33095
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -33069,6 +33099,7 @@ const keys = Object.keys(_filters_index_js__WEBPACK_IMPORTED_MODULE_1__);
33069
33099
 
33070
33100
 
33071
33101
 
33102
+
33072
33103
  /**
33073
33104
  * Clipboard plugin - cut and copy functionality
33074
33105
  */ class clipboard {
@@ -33077,10 +33108,10 @@ const keys = Object.keys(_filters_index_js__WEBPACK_IMPORTED_MODULE_1__);
33077
33108
  (_a = this.buttons) === null || _a === void 0 ? void 0 : _a.forEach((btn)=>editor.registerButton(btn));
33078
33109
  editor.e.off(`copy.${_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.CLIPBOARD_ID} cut.${_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.CLIPBOARD_ID}`).on(`copy.${_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.CLIPBOARD_ID} cut.${_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.CLIPBOARD_ID}`, (event)=>{
33079
33110
  var _a;
33080
- const selectedText = editor.s.html;
33081
- const clipboardData = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.getDataTransfer)(event) || (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.getDataTransfer)(editor.ew) || (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.getDataTransfer)(event.originalEvent);
33111
+ const selectedText = wrapWithInlineAncestors(editor, editor.s.html);
33112
+ const clipboardData = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.getDataTransfer)(event) || (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.getDataTransfer)(editor.ew) || (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.getDataTransfer)(event.originalEvent);
33082
33113
  if (clipboardData) {
33083
- clipboardData.setData(_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.TEXT_PLAIN, (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.stripTags)(selectedText));
33114
+ clipboardData.setData(_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.TEXT_PLAIN, (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.stripTags)(selectedText));
33084
33115
  clipboardData.setData(_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.TEXT_HTML, selectedText);
33085
33116
  }
33086
33117
  editor.buffer.set(_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.CLIPBOARD_ID, selectedText);
@@ -33122,7 +33153,30 @@ const keys = Object.keys(_filters_index_js__WEBPACK_IMPORTED_MODULE_1__);
33122
33153
  ];
33123
33154
  }
33124
33155
  }
33125
- _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('clipboard', clipboard);
33156
+ /**
33157
+ * `Selection.html` clones only the range contents — when the selection sits
33158
+ * entirely inside the text of a formatted element (`<strong>te|st|</strong>`),
33159
+ * the clone is bare text and the formatting would be lost on paste. Native
33160
+ * browser copy keeps that context, so the interception must restore it: wrap
33161
+ * the fragment in shallow clones of the inline ancestors of the range. See #1202
33162
+ */ function wrapWithInlineAncestors(editor, html) {
33163
+ if (!html || editor.s.isCollapsed()) {
33164
+ return html;
33165
+ }
33166
+ let node = editor.s.range.commonAncestorContainer;
33167
+ if (!_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isElement(node)) {
33168
+ node = node.parentElement;
33169
+ }
33170
+ let result = html;
33171
+ while(node && node !== editor.editor && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isElement(node) && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isBlock(node)){
33172
+ const shell = node.cloneNode(false);
33173
+ shell.innerHTML = result;
33174
+ result = shell.outerHTML;
33175
+ node = node.parentElement;
33176
+ }
33177
+ return result;
33178
+ }
33179
+ _core_global_js__WEBPACK_IMPORTED_MODULE_3__.pluginSystem.add('clipboard', clipboard);
33126
33180
 
33127
33181
 
33128
33182
  /***/ }),
@@ -38891,9 +38945,34 @@ const align = {
38891
38945
  }).on([
38892
38946
  this.j.ew,
38893
38947
  this.j.ow
38894
- ], 'mouseup keyup', this.onSelectionEnd);
38948
+ ], 'mouseup keyup', this.onSelectionEnd).on([
38949
+ this.j.ew,
38950
+ this.j.ow
38951
+ ], 'mousedown touchstart', this.__onDocumentMouseDown).on('closeAllPopups', this.__onCloseAllPopups);
38895
38952
  this.addListenersForElements();
38896
38953
  }
38954
+ __onDocumentMouseDown(e) {
38955
+ if (this.popup.isOpened && this.type === 'selection' && e.target && _core_ui_index_js__WEBPACK_IMPORTED_MODULE_5__.UIElement.closestElement(e.target, _core_ui_popup_index_js__WEBPACK_IMPORTED_MODULE_6__.Popup)) {
38956
+ this.__reopenSelectionPopup = true;
38957
+ }
38958
+ }
38959
+ __onCloseAllPopups() {
38960
+ if (!this.__reopenSelectionPopup) {
38961
+ return;
38962
+ }
38963
+ this.__reopenSelectionPopup = false;
38964
+ if (!this.j.o.toolbarInlineForSelection) {
38965
+ return;
38966
+ }
38967
+ // a zero timeout would run synchronously — before the popup's own
38968
+ // `closeAllPopups` handler closes it; defer to the next macrotask
38969
+ this.j.async.setTimeout(()=>{
38970
+ const sel = this.j.s.sel;
38971
+ if (sel && !sel.isCollapsed) {
38972
+ this.showPopup(()=>this.j.s.range.getBoundingClientRect(), 'selection');
38973
+ }
38974
+ }, 1);
38975
+ }
38897
38976
  onSelectionStart() {
38898
38977
  this.snapRange = this.j.s.range.cloneRange();
38899
38978
  }
@@ -38942,7 +39021,10 @@ const align = {
38942
39021
  jodit.e.off('showPopup').off([
38943
39022
  this.j.ew,
38944
39023
  this.j.ow
38945
- ], 'mouseup keyup', this.onSelectionEnd);
39024
+ ], 'mouseup keyup', this.onSelectionEnd).off([
39025
+ this.j.ew,
39026
+ this.j.ow
39027
+ ], 'mousedown touchstart', this.__onDocumentMouseDown).off('closeAllPopups', this.__onCloseAllPopups);
38946
39028
  this.removeListenersForElements();
38947
39029
  }
38948
39030
  _eventsList() {
@@ -38969,6 +39051,11 @@ const align = {
38969
39051
  constructor(){
38970
39052
  super(...arguments);
38971
39053
  this.type = null;
39054
+ /**
39055
+ * The user pressed a button inside the selection toolbar — after the
39056
+ * command fires `closeAllPopups`, the toolbar should be shown again
39057
+ * while the selection is still there. See #1238
39058
+ */ this.__reopenSelectionPopup = false;
38972
39059
  this.snapRange = null;
38973
39060
  this.elmsList = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.keys)(this.j.o.popup, false).filter((s)=>!this.isExcludedTarget(s));
38974
39061
  }
@@ -38999,6 +39086,12 @@ __decorate([
38999
39086
  __decorate([
39000
39087
  (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)(':outsideClick')
39001
39088
  ], inlinePopup.prototype, "onOutsideClick", null);
39089
+ __decorate([
39090
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.autobind
39091
+ ], inlinePopup.prototype, "__onDocumentMouseDown", null);
39092
+ __decorate([
39093
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.autobind
39094
+ ], inlinePopup.prototype, "__onCloseAllPopups", null);
39002
39095
  __decorate([
39003
39096
  _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.autobind
39004
39097
  ], inlinePopup.prototype, "onSelectionStart", null);
@@ -39284,7 +39377,10 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.limitHTML = false;
39284
39377
  jodit.e.fire('denyWords.limit limit.limit');
39285
39378
  return true;
39286
39379
  }
39287
- const should = Boolean(limitChars && isGt(words.join('').length, limitChars, strict));
39380
+ // with `countTextSpaces` enabled the limiter counts characters the
39381
+ // same way as the `stat` plugin's counter — including spaces. See #1144
39382
+ const charsCount = jodit.o.countTextSpaces ? text.replace((0,_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.INVISIBLE_SPACE_REG_EXP)(), '').replace(/[\r\n]/g, '').length : words.join('').length;
39383
+ const should = Boolean(limitChars && isGt(charsCount, limitChars, strict));
39288
39384
  if (should) {
39289
39385
  jodit.e.fire('denyChars.limit limit.limit');
39290
39386
  }
@@ -41423,9 +41519,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.controls.paste = {
41423
41519
  */ class paste extends _core_plugin_plugin_js__WEBPACK_IMPORTED_MODULE_5__.Plugin {
41424
41520
  /** @override **/ afterInit(jodit) {
41425
41521
  jodit.e.on('paste.paste', this.onPaste).on('pasteStack.paste', (item)=>this.pasteStack.push(item));
41426
- if (jodit.o.nl2brInPlainText) {
41427
- this.j.e.on('processPaste.paste', this.onProcessPasteReplaceNl2Br);
41428
- }
41522
+ this.j.e.on('processPaste.paste', this.onProcessPasteReplaceNl2Br);
41429
41523
  }
41430
41524
  /** @override **/ beforeDestruct(jodit) {
41431
41525
  jodit.e.off('paste.paste', this.onPaste).off('processPaste.paste', this.onProcessPasteReplaceNl2Br).off('.paste');
@@ -41545,10 +41639,14 @@ _config_js__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.controls.paste = {
41545
41639
  (0,_helpers_js__WEBPACK_IMPORTED_MODULE_7__.pasteInsertHtml)(e, this.j, html);
41546
41640
  }
41547
41641
  /**
41548
- * Replace all \\n chars in plain text to br
41642
+ * Escape plain text and replace all \\n chars with br
41549
41643
  */ onProcessPasteReplaceNl2Br(ignore, text, type) {
41550
41644
  if (type === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.TEXT_PLAIN + ';' && !(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.isHTML)(text)) {
41551
- return (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.nl2br)(text);
41645
+ // the clipboard contains only plain text — escape special chars
41646
+ // so a stray `<` is not parsed as an unclosed tag and does not
41647
+ // swallow the rest of the string. See #1227
41648
+ const escaped = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.htmlspecialchars)(text);
41649
+ return this.j.o.nl2brInPlainText ? (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.nl2br)(escaped) : escaped;
41552
41650
  }
41553
41651
  }
41554
41652
  constructor(){
@@ -42412,9 +42510,10 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.allowResizeY = true;
42412
42510
  /* harmony import */ var _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(65478);
42413
42511
  /* harmony import */ var _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(22732);
42414
42512
  /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(580);
42415
- /* harmony import */ var _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(50911);
42416
- /* harmony import */ var _core_ui_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(67510);
42417
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(68252);
42513
+ /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21537);
42514
+ /* harmony import */ var _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(50911);
42515
+ /* harmony import */ var _core_ui_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(67510);
42516
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(68252);
42418
42517
  /*!
42419
42518
  * Jodit Editor (https://xdsoft.net/jodit/)
42420
42519
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -42431,7 +42530,8 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.allowResizeY = true;
42431
42530
 
42432
42531
 
42433
42532
 
42434
- class resizeHandler extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_3__.Plugin {
42533
+
42534
+ class resizeHandler extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_4__.Plugin {
42435
42535
  /** @override **/ afterInit(editor) {
42436
42536
  const { height, width, allowResizeX } = editor.o;
42437
42537
  let { allowResizeY } = editor.o;
@@ -42465,11 +42565,21 @@ class resizeHandler extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_3__.P
42465
42565
  if (!this.isResized) {
42466
42566
  return;
42467
42567
  }
42568
+ let { clientX, clientY } = e;
42569
+ if (e.view === this.j.ew && this.j.ew !== this.j.ow) {
42570
+ // the event was proxied from the editor's iframe — its client
42571
+ // coordinates are relative to the iframe viewport, while the
42572
+ // start point was captured on the host-document handle;
42573
+ // shift them into the host coordinate space
42574
+ const workplacePosition = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.offset)(this.j.workplace, this.j, this.j.od, true);
42575
+ clientX += workplacePosition.left;
42576
+ clientY += workplacePosition.top;
42577
+ }
42468
42578
  if (this.j.o.allowResizeY) {
42469
- this.j.e.fire('setHeight', this.start.h + e.clientY - this.start.y);
42579
+ this.j.e.fire('setHeight', this.start.h + clientY - this.start.y);
42470
42580
  }
42471
42581
  if (this.j.o.allowResizeX) {
42472
- this.j.e.fire('setWidth', this.start.w + e.clientX - this.start.x);
42582
+ this.j.e.fire('setWidth', this.start.w + clientX - this.start.x);
42473
42583
  }
42474
42584
  this.j.e.fire('resize');
42475
42585
  }
@@ -42501,7 +42611,7 @@ class resizeHandler extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_3__.P
42501
42611
  };
42502
42612
  /**
42503
42613
  * Resize handle
42504
- */ this.handle = this.j.c.div('jodit-editor__resize', _core_ui_index_js__WEBPACK_IMPORTED_MODULE_4__.Icon.get('resize_handler'));
42614
+ */ this.handle = this.j.c.div('jodit-editor__resize', _core_ui_index_js__WEBPACK_IMPORTED_MODULE_5__.Icon.get('resize_handler'));
42505
42615
  }
42506
42616
  }
42507
42617
  /** @override **/ resizeHandler.requires = [
@@ -42679,7 +42789,11 @@ const keyBInd = '__jodit-resizer_binded';
42679
42789
  this.pointerX = e.clientX;
42680
42790
  this.pointerY = e.clientY;
42681
42791
  let diff_x, diff_y;
42682
- if (this.j.options.iframe) {
42792
+ if (this.j.options.iframe && e.view === this.j.ew) {
42793
+ // the event was proxied from the editor's iframe — its client
42794
+ // coordinates are relative to the iframe viewport, while
42795
+ // `startX/startY` were captured on a host-document handle;
42796
+ // shift them into the host coordinate space
42683
42797
  const workplacePosition = this.getWorkplacePosition();
42684
42798
  diff_x = e.clientX + workplacePosition.left - this.startX;
42685
42799
  diff_y = e.clientY + workplacePosition.top - this.startY;
@@ -45293,6 +45407,13 @@ function createSourceEditor(type, editor, container, toWYSIWYG, fromWYSIWYG) {
45293
45407
  }
45294
45408
  setFocusToMirror() {
45295
45409
  var _a;
45410
+ const active = this.j.od.activeElement;
45411
+ // do not steal focus from another editor or control — e.g. when the
45412
+ // mode is switched programmatically (a Vue/React wrapper re-render)
45413
+ // while the user is already typing elsewhere. See #1356
45414
+ if (active && active !== this.j.od.body && !this.j.container.contains(active)) {
45415
+ return;
45416
+ }
45296
45417
  (_a = this.sourceEditor) === null || _a === void 0 ? void 0 : _a.focus();
45297
45418
  }
45298
45419
  saveSelection() {