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/es2015/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
  */
@@ -1797,7 +1797,7 @@ __webpack_require__.r(__webpack_exports__);
1797
1797
  * ```
1798
1798
  * @packageDocumentation
1799
1799
  * @module constants
1800
- */ const APP_VERSION = "4.12.24";
1800
+ */ const APP_VERSION = "4.12.26";
1801
1801
  // prettier-ignore
1802
1802
  const ES = "es2015";
1803
1803
  const IS_ES_MODERN = true;
@@ -3152,12 +3152,12 @@ function wait(condition) {
3152
3152
  /**
3153
3153
  * Check if element is element node
3154
3154
  */ static isElement(node) {
3155
- var _a;
3156
3155
  if (!Dom.isNode(node)) {
3157
3156
  return false;
3158
3157
  }
3159
- const win = (_a = node.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView;
3160
- return Boolean(win && node.nodeType === Node.ELEMENT_NODE);
3158
+ // no `defaultView` requirement nodes of an inert document
3159
+ // (`DOMParser`, `implementation.createHTMLDocument`) are still elements
3160
+ return node.nodeType === Node.ELEMENT_NODE;
3161
3161
  }
3162
3162
  /**
3163
3163
  * Check if element is document fragment
@@ -3176,8 +3176,10 @@ function wait(condition) {
3176
3176
  if (!Dom.isNode(node)) {
3177
3177
  return false;
3178
3178
  }
3179
+ // an inert document has no browsing context (`defaultView` is null),
3180
+ // but its nodes are same-realm HTMLElements
3179
3181
  const win = (_a = node.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView;
3180
- return Boolean(win && node instanceof win.HTMLElement);
3182
+ return node instanceof (win ? win.HTMLElement : HTMLElement);
3181
3183
  }
3182
3184
  /**
3183
3185
  * Check element is inline block
@@ -22662,7 +22664,7 @@ function addClassNames(className, elm) {
22662
22664
  Clean: 'Temizle',
22663
22665
  'Insert as Text': 'Yazı olarak ekle',
22664
22666
  'Word Paste Detected': 'Word biçiminde yapıştırma algılandı',
22665
- '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?',
22667
+ '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?',
22666
22668
  'Insert only Text': 'Sadece yazıyı ekle',
22667
22669
  'File Browser': 'Dosya Listeleyici',
22668
22670
  'Error on load list': 'Liste yüklenirken hata oluştu',
@@ -23992,7 +23994,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_12__.Config.prototype.controls.dialog = {
23992
23994
  e.stopImmediatePropagation();
23993
23995
  }
23994
23996
  if (this.resizable && this.o.resizable) {
23995
- this.setSize(this.startPoint.w + e.clientX - this.startX, this.startPoint.h + e.clientY - this.startY);
23997
+ 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));
23996
23998
  if (this.e) {
23997
23999
  /**
23998
24000
  * Fired when dialog box is resized
@@ -24015,11 +24017,20 @@ _config_js__WEBPACK_IMPORTED_MODULE_12__.Config.prototype.controls.dialog = {
24015
24017
  }
24016
24018
  }
24017
24019
  __onResizerMouseDown(e) {
24020
+ var _a, _b, _c;
24018
24021
  this.resizable = true;
24019
24022
  this.startX = e.clientX;
24020
24023
  this.startY = e.clientY;
24021
24024
  this.startPoint.w = this.dialog.offsetWidth;
24022
24025
  this.startPoint.h = this.dialog.offsetHeight;
24026
+ const header = this.getElm('header');
24027
+ const footer = this.getElm('footer');
24028
+ const content = this.getElm('content');
24029
+ // the content area does not shrink below its CSS `min-height`,
24030
+ // so it is part of the smallest height the panel can take
24031
+ const contentMinHeight = content ? parseFloat(this.ow.getComputedStyle(content).minHeight) || 0 : 0;
24032
+ 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);
24033
+ 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;
24023
24034
  this.lockSelect();
24024
24035
  this.__addGlobalResizeListeners();
24025
24036
  if (this.e) {
@@ -24325,6 +24336,13 @@ _config_js__WEBPACK_IMPORTED_MODULE_12__.Config.prototype.controls.dialog = {
24325
24336
  this.setPosition();
24326
24337
  }
24327
24338
  };
24339
+ /**
24340
+ * Minimal size the dialog can be resized to — the header and the footer
24341
+ * (with its buttons) must always stay inside the panel
24342
+ */ this.minSize = {
24343
+ w: 0,
24344
+ h: 0
24345
+ };
24328
24346
  this.isModal = false;
24329
24347
  /**
24330
24348
  * True, if dialog was opened
@@ -33256,10 +33274,14 @@ _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_4__.Icon.set('class-span', _class_span
33256
33274
  * Event handler when manually assigning a value to the HTML editor.
33257
33275
  */ onBeforeSetNativeEditorValue(data) {
33258
33276
  const [sandBox, iframe] = this.j.o.cleanHTML.useIframeSandbox ? this.j.createInside.sandbox() : [
33259
- this.j.createInside.div()
33277
+ // an inert document never loads sub-resources, so the
33278
+ // images in the value are not re-requested from the
33279
+ // server on every assignment (e.g. on each change in
33280
+ // jodit-react). See #1237
33281
+ this.j.od.implementation.createHTMLDocument('').body
33260
33282
  ];
33261
33283
  sandBox.innerHTML = data.value;
33262
- this.onSafeHTML(sandBox);
33284
+ this.j.e.fire('safeHTML', sandBox);
33263
33285
  data.value = sandBox.innerHTML;
33264
33286
  (0,_core_helpers_html_safe_html_js__WEBPACK_IMPORTED_MODULE_4__.safeHTML)(sandBox, {
33265
33287
  safeJavaScriptLink: true,
@@ -33588,12 +33610,19 @@ _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_0__.Icon.set('eraser', _eraser_svg_js_
33588
33610
  /**
33589
33611
  * @private
33590
33612
  */ function allowAttributes(jodit, nodeElm, hadEffect, allow) {
33591
- if (allow && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(nodeElm) && allow[nodeElm.nodeName] !== true) {
33613
+ const allowedForTag = allow && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(nodeElm) && allow[nodeElm.nodeName];
33614
+ if (allow && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(nodeElm) && allowedForTag !== true) {
33615
+ // the tag is not in the allow list at all — attributes do not matter,
33616
+ // the element itself will be removed by the tags filter. Without this
33617
+ // check `allow[nodeName][attr]` threw on e.g. `<meta charset>`. See #1224
33618
+ if (!allowedForTag) {
33619
+ return hadEffect;
33620
+ }
33592
33621
  const attrs = nodeElm.attributes;
33593
33622
  if (attrs && attrs.length) {
33594
33623
  const removeAttrs = [];
33595
33624
  for(let i = 0; i < attrs.length; i += 1){
33596
- const attr = allow[nodeElm.nodeName][attrs[i].name];
33625
+ const attr = allowedForTag[attrs[i].name];
33597
33626
  if (!attr || attr !== true && attr !== attrs[i].value) {
33598
33627
  removeAttrs.push(attrs[i].name);
33599
33628
  }
@@ -34135,9 +34164,10 @@ const keys = Object.keys(_filters_index_js__WEBPACK_IMPORTED_MODULE_1__);
34135
34164
  /* unused harmony export clipboard */
34136
34165
  /* harmony import */ var _core_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82758);
34137
34166
  /* harmony import */ var _core_decorators_cache_cache_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(33433);
34138
- /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(580);
34139
- /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21537);
34140
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(79419);
34167
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2748);
34168
+ /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(580);
34169
+ /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(21537);
34170
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(79419);
34141
34171
  /*!
34142
34172
  * Jodit Editor (https://xdsoft.net/jodit/)
34143
34173
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -34147,6 +34177,7 @@ const keys = Object.keys(_filters_index_js__WEBPACK_IMPORTED_MODULE_1__);
34147
34177
 
34148
34178
 
34149
34179
 
34180
+
34150
34181
  /**
34151
34182
  * Clipboard plugin - cut and copy functionality
34152
34183
  */ class clipboard {
@@ -34155,10 +34186,10 @@ const keys = Object.keys(_filters_index_js__WEBPACK_IMPORTED_MODULE_1__);
34155
34186
  (_a = this.buttons) === null || _a === void 0 ? void 0 : _a.forEach((btn)=>editor.registerButton(btn));
34156
34187
  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)=>{
34157
34188
  var _a;
34158
- const selectedText = editor.s.html;
34159
- 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);
34189
+ const selectedText = wrapWithInlineAncestors(editor, editor.s.html);
34190
+ 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);
34160
34191
  if (clipboardData) {
34161
- clipboardData.setData(_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.TEXT_PLAIN, (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.stripTags)(selectedText));
34192
+ clipboardData.setData(_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.TEXT_PLAIN, (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.stripTags)(selectedText));
34162
34193
  clipboardData.setData(_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.TEXT_HTML, selectedText);
34163
34194
  }
34164
34195
  editor.buffer.set(_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.CLIPBOARD_ID, selectedText);
@@ -34200,7 +34231,30 @@ const keys = Object.keys(_filters_index_js__WEBPACK_IMPORTED_MODULE_1__);
34200
34231
  ];
34201
34232
  }
34202
34233
  }
34203
- _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('clipboard', clipboard);
34234
+ /**
34235
+ * `Selection.html` clones only the range contents — when the selection sits
34236
+ * entirely inside the text of a formatted element (`<strong>te|st|</strong>`),
34237
+ * the clone is bare text and the formatting would be lost on paste. Native
34238
+ * browser copy keeps that context, so the interception must restore it: wrap
34239
+ * the fragment in shallow clones of the inline ancestors of the range. See #1202
34240
+ */ function wrapWithInlineAncestors(editor, html) {
34241
+ if (!html || editor.s.isCollapsed()) {
34242
+ return html;
34243
+ }
34244
+ let node = editor.s.range.commonAncestorContainer;
34245
+ if (!_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isElement(node)) {
34246
+ node = node.parentElement;
34247
+ }
34248
+ let result = html;
34249
+ 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)){
34250
+ const shell = node.cloneNode(false);
34251
+ shell.innerHTML = result;
34252
+ result = shell.outerHTML;
34253
+ node = node.parentElement;
34254
+ }
34255
+ return result;
34256
+ }
34257
+ _core_global_js__WEBPACK_IMPORTED_MODULE_3__.pluginSystem.add('clipboard', clipboard);
34204
34258
 
34205
34259
 
34206
34260
  /***/ }),
@@ -40233,9 +40287,34 @@ const align = {
40233
40287
  }).on([
40234
40288
  this.j.ew,
40235
40289
  this.j.ow
40236
- ], 'mouseup keyup', this.onSelectionEnd);
40290
+ ], 'mouseup keyup', this.onSelectionEnd).on([
40291
+ this.j.ew,
40292
+ this.j.ow
40293
+ ], 'mousedown touchstart', this.__onDocumentMouseDown).on('closeAllPopups', this.__onCloseAllPopups);
40237
40294
  this.addListenersForElements();
40238
40295
  }
40296
+ __onDocumentMouseDown(e) {
40297
+ 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)) {
40298
+ this.__reopenSelectionPopup = true;
40299
+ }
40300
+ }
40301
+ __onCloseAllPopups() {
40302
+ if (!this.__reopenSelectionPopup) {
40303
+ return;
40304
+ }
40305
+ this.__reopenSelectionPopup = false;
40306
+ if (!this.j.o.toolbarInlineForSelection) {
40307
+ return;
40308
+ }
40309
+ // a zero timeout would run synchronously — before the popup's own
40310
+ // `closeAllPopups` handler closes it; defer to the next macrotask
40311
+ this.j.async.setTimeout(()=>{
40312
+ const sel = this.j.s.sel;
40313
+ if (sel && !sel.isCollapsed) {
40314
+ this.showPopup(()=>this.j.s.range.getBoundingClientRect(), 'selection');
40315
+ }
40316
+ }, 1);
40317
+ }
40239
40318
  onSelectionStart() {
40240
40319
  this.snapRange = this.j.s.range.cloneRange();
40241
40320
  }
@@ -40284,7 +40363,10 @@ const align = {
40284
40363
  jodit.e.off('showPopup').off([
40285
40364
  this.j.ew,
40286
40365
  this.j.ow
40287
- ], 'mouseup keyup', this.onSelectionEnd);
40366
+ ], 'mouseup keyup', this.onSelectionEnd).off([
40367
+ this.j.ew,
40368
+ this.j.ow
40369
+ ], 'mousedown touchstart', this.__onDocumentMouseDown).off('closeAllPopups', this.__onCloseAllPopups);
40288
40370
  this.removeListenersForElements();
40289
40371
  }
40290
40372
  _eventsList() {
@@ -40311,6 +40393,11 @@ const align = {
40311
40393
  constructor(){
40312
40394
  super(...arguments);
40313
40395
  this.type = null;
40396
+ /**
40397
+ * The user pressed a button inside the selection toolbar — after the
40398
+ * command fires `closeAllPopups`, the toolbar should be shown again
40399
+ * while the selection is still there. See #1238
40400
+ */ this.__reopenSelectionPopup = false;
40314
40401
  this.snapRange = null;
40315
40402
  this.elmsList = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.keys)(this.j.o.popup, false).filter((s)=>!this.isExcludedTarget(s));
40316
40403
  }
@@ -40341,6 +40428,12 @@ __decorate([
40341
40428
  __decorate([
40342
40429
  (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)(':outsideClick')
40343
40430
  ], inlinePopup.prototype, "onOutsideClick", null);
40431
+ __decorate([
40432
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.autobind
40433
+ ], inlinePopup.prototype, "__onDocumentMouseDown", null);
40434
+ __decorate([
40435
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.autobind
40436
+ ], inlinePopup.prototype, "__onCloseAllPopups", null);
40344
40437
  __decorate([
40345
40438
  _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.autobind
40346
40439
  ], inlinePopup.prototype, "onSelectionStart", null);
@@ -40626,7 +40719,10 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.limitHTML = false;
40626
40719
  jodit.e.fire('denyWords.limit limit.limit');
40627
40720
  return true;
40628
40721
  }
40629
- const should = Boolean(limitChars && isGt(words.join('').length, limitChars, strict));
40722
+ // with `countTextSpaces` enabled the limiter counts characters the
40723
+ // same way as the `stat` plugin's counter — including spaces. See #1144
40724
+ 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;
40725
+ const should = Boolean(limitChars && isGt(charsCount, limitChars, strict));
40630
40726
  if (should) {
40631
40727
  jodit.e.fire('denyChars.limit limit.limit');
40632
40728
  }
@@ -42796,9 +42892,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.controls.paste = {
42796
42892
  */ class paste extends _core_plugin_plugin_js__WEBPACK_IMPORTED_MODULE_5__.Plugin {
42797
42893
  /** @override **/ afterInit(jodit) {
42798
42894
  jodit.e.on('paste.paste', this.onPaste).on('pasteStack.paste', (item)=>this.pasteStack.push(item));
42799
- if (jodit.o.nl2brInPlainText) {
42800
- this.j.e.on('processPaste.paste', this.onProcessPasteReplaceNl2Br);
42801
- }
42895
+ this.j.e.on('processPaste.paste', this.onProcessPasteReplaceNl2Br);
42802
42896
  }
42803
42897
  /** @override **/ beforeDestruct(jodit) {
42804
42898
  jodit.e.off('paste.paste', this.onPaste).off('processPaste.paste', this.onProcessPasteReplaceNl2Br).off('.paste');
@@ -42918,10 +43012,14 @@ _config_js__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.controls.paste = {
42918
43012
  (0,_helpers_js__WEBPACK_IMPORTED_MODULE_7__.pasteInsertHtml)(e, this.j, html);
42919
43013
  }
42920
43014
  /**
42921
- * Replace all \\n chars in plain text to br
43015
+ * Escape plain text and replace all \\n chars with br
42922
43016
  */ onProcessPasteReplaceNl2Br(ignore, text, type) {
42923
43017
  if (type === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.TEXT_PLAIN + ';' && !(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.isHTML)(text)) {
42924
- return (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.nl2br)(text);
43018
+ // the clipboard contains only plain text — escape special chars
43019
+ // so a stray `<` is not parsed as an unclosed tag and does not
43020
+ // swallow the rest of the string. See #1227
43021
+ const escaped = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.htmlspecialchars)(text);
43022
+ return this.j.o.nl2brInPlainText ? (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.nl2br)(escaped) : escaped;
42925
43023
  }
42926
43024
  }
42927
43025
  constructor(){
@@ -43785,9 +43883,10 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.allowResizeY = true;
43785
43883
  /* harmony import */ var _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(65478);
43786
43884
  /* harmony import */ var _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(22732);
43787
43885
  /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(580);
43788
- /* harmony import */ var _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(50911);
43789
- /* harmony import */ var _core_ui_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(67510);
43790
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(68252);
43886
+ /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21537);
43887
+ /* harmony import */ var _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(50911);
43888
+ /* harmony import */ var _core_ui_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(67510);
43889
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(68252);
43791
43890
  /*!
43792
43891
  * Jodit Editor (https://xdsoft.net/jodit/)
43793
43892
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -43804,7 +43903,8 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.allowResizeY = true;
43804
43903
 
43805
43904
 
43806
43905
 
43807
- class resizeHandler extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_3__.Plugin {
43906
+
43907
+ class resizeHandler extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_4__.Plugin {
43808
43908
  /** @override **/ afterInit(editor) {
43809
43909
  const { height, width, allowResizeX } = editor.o;
43810
43910
  let { allowResizeY } = editor.o;
@@ -43838,11 +43938,21 @@ class resizeHandler extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_3__.P
43838
43938
  if (!this.isResized) {
43839
43939
  return;
43840
43940
  }
43941
+ let { clientX, clientY } = e;
43942
+ if (e.view === this.j.ew && this.j.ew !== this.j.ow) {
43943
+ // the event was proxied from the editor's iframe — its client
43944
+ // coordinates are relative to the iframe viewport, while the
43945
+ // start point was captured on the host-document handle;
43946
+ // shift them into the host coordinate space
43947
+ const workplacePosition = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.offset)(this.j.workplace, this.j, this.j.od, true);
43948
+ clientX += workplacePosition.left;
43949
+ clientY += workplacePosition.top;
43950
+ }
43841
43951
  if (this.j.o.allowResizeY) {
43842
- this.j.e.fire('setHeight', this.start.h + e.clientY - this.start.y);
43952
+ this.j.e.fire('setHeight', this.start.h + clientY - this.start.y);
43843
43953
  }
43844
43954
  if (this.j.o.allowResizeX) {
43845
- this.j.e.fire('setWidth', this.start.w + e.clientX - this.start.x);
43955
+ this.j.e.fire('setWidth', this.start.w + clientX - this.start.x);
43846
43956
  }
43847
43957
  this.j.e.fire('resize');
43848
43958
  }
@@ -43874,7 +43984,7 @@ class resizeHandler extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_3__.P
43874
43984
  };
43875
43985
  /**
43876
43986
  * Resize handle
43877
- */ this.handle = this.j.c.div('jodit-editor__resize', _core_ui_index_js__WEBPACK_IMPORTED_MODULE_4__.Icon.get('resize_handler'));
43987
+ */ this.handle = this.j.c.div('jodit-editor__resize', _core_ui_index_js__WEBPACK_IMPORTED_MODULE_5__.Icon.get('resize_handler'));
43878
43988
  }
43879
43989
  }
43880
43990
  /** @override **/ resizeHandler.requires = [
@@ -44052,7 +44162,11 @@ const keyBInd = '__jodit-resizer_binded';
44052
44162
  this.pointerX = e.clientX;
44053
44163
  this.pointerY = e.clientY;
44054
44164
  let diff_x, diff_y;
44055
- if (this.j.options.iframe) {
44165
+ if (this.j.options.iframe && e.view === this.j.ew) {
44166
+ // the event was proxied from the editor's iframe — its client
44167
+ // coordinates are relative to the iframe viewport, while
44168
+ // `startX/startY` were captured on a host-document handle;
44169
+ // shift them into the host coordinate space
44056
44170
  const workplacePosition = this.getWorkplacePosition();
44057
44171
  diff_x = e.clientX + workplacePosition.left - this.startX;
44058
44172
  diff_y = e.clientY + workplacePosition.top - this.startY;
@@ -46739,6 +46853,13 @@ function createSourceEditor(type, editor, container, toWYSIWYG, fromWYSIWYG) {
46739
46853
  }
46740
46854
  setFocusToMirror() {
46741
46855
  var _a;
46856
+ const active = this.j.od.activeElement;
46857
+ // do not steal focus from another editor or control — e.g. when the
46858
+ // mode is switched programmatically (a Vue/React wrapper re-render)
46859
+ // while the user is already typing elsewhere. See #1356
46860
+ if (active && active !== this.j.od.body && !this.j.container.contains(active)) {
46861
+ return;
46862
+ }
46742
46863
  (_a = this.sourceEditor) === null || _a === void 0 ? void 0 : _a.focus();
46743
46864
  }
46744
46865
  saveSelection() {