jodit-pro 2.0.0-beta.18 → 2.0.0-beta.21

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 (292) hide show
  1. package/es2015/jodit.css +1 -1
  2. package/es2015/jodit.fat.min.js +2 -2
  3. package/es2015/jodit.js +85 -58
  4. package/es2015/jodit.min.js +2 -2
  5. package/es2015/plugins/autocomplete/autocomplete.js +1 -1
  6. package/es2015/plugins/autocomplete/autocomplete.min.js +1 -1
  7. package/es2015/plugins/backup/backup.css +1 -1
  8. package/es2015/plugins/backup/backup.js +1 -1
  9. package/es2015/plugins/backup/backup.min.js +1 -1
  10. package/es2015/plugins/button-generator/button-generator.css +1 -1
  11. package/es2015/plugins/button-generator/button-generator.js +1 -1
  12. package/es2015/plugins/button-generator/button-generator.min.js +1 -1
  13. package/es2015/plugins/change-case/change-case.js +1 -1
  14. package/es2015/plugins/change-case/change-case.min.js +1 -1
  15. package/es2015/plugins/color-picker/color-picker.css +1 -1
  16. package/es2015/plugins/color-picker/color-picker.js +1 -1
  17. package/es2015/plugins/color-picker/color-picker.min.js +1 -1
  18. package/es2015/plugins/emoji/emoji.css +1 -1
  19. package/es2015/plugins/emoji/emoji.js +1 -1
  20. package/es2015/plugins/emoji/emoji.min.js +1 -1
  21. package/es2015/plugins/export-docs/export-docs.js +1 -1
  22. package/es2015/plugins/export-docs/export-docs.min.js +1 -1
  23. package/es2015/plugins/finder/finder.css +1 -1
  24. package/es2015/plugins/finder/finder.js +1 -1
  25. package/es2015/plugins/finder/finder.min.js +1 -1
  26. package/es2015/plugins/google-maps/google-maps.css +1 -1
  27. package/es2015/plugins/google-maps/google-maps.js +1 -1
  28. package/es2015/plugins/google-maps/google-maps.min.js +1 -1
  29. package/es2015/plugins/google-search/google-search.js +1 -1
  30. package/es2015/plugins/google-search/google-search.min.js +1 -1
  31. package/es2015/plugins/highlight-signature/highlight-signature.js +1 -1
  32. package/es2015/plugins/highlight-signature/highlight-signature.min.js +1 -1
  33. package/es2015/plugins/iframe-editor/iframe-editor.css +1 -1
  34. package/es2015/plugins/iframe-editor/iframe-editor.js +1 -1
  35. package/es2015/plugins/iframe-editor/iframe-editor.min.js +1 -1
  36. package/es2015/plugins/keyboard/keyboard.css +1 -1
  37. package/es2015/plugins/keyboard/keyboard.js +1 -1
  38. package/es2015/plugins/keyboard/keyboard.min.js +1 -1
  39. package/es2015/plugins/mobile-view/mobile-view.js +1 -1
  40. package/es2015/plugins/mobile-view/mobile-view.min.js +1 -1
  41. package/es2015/plugins/page-break/page-break.js +1 -1
  42. package/es2015/plugins/page-break/page-break.min.js +1 -1
  43. package/es2015/plugins/paste-code/paste-code.css +1 -1
  44. package/es2015/plugins/paste-code/paste-code.js +1 -1
  45. package/es2015/plugins/paste-code/paste-code.min.js +1 -1
  46. package/es2015/plugins/paste-from-word/paste-from-word.js +1 -1
  47. package/es2015/plugins/paste-from-word/paste-from-word.min.js +1 -1
  48. package/es2015/plugins/show-blocks/show-blocks.js +1 -1
  49. package/es2015/plugins/show-blocks/show-blocks.min.js +1 -1
  50. package/es2015/plugins/todo-list/todo-list.css +1 -1
  51. package/es2015/plugins/todo-list/todo-list.js +1 -1
  52. package/es2015/plugins/todo-list/todo-list.min.js +1 -1
  53. package/es2015/plugins/translate/translate.css +1 -1
  54. package/es2015/plugins/translate/translate.js +1 -1
  55. package/es2015/plugins/translate/translate.min.js +1 -1
  56. package/es2015/plugins/tune-block/tune-block.css +1 -1
  57. package/es2015/plugins/tune-block/tune-block.js +1 -1
  58. package/es2015/plugins/tune-block/tune-block.min.js +1 -1
  59. package/es2018/jodit.css +1 -1
  60. package/es2018/jodit.fat.min.js +2 -2
  61. package/es2018/jodit.js +85 -58
  62. package/es2018/jodit.min.js +2 -2
  63. package/es2018/plugins/autocomplete/autocomplete.js +1 -1
  64. package/es2018/plugins/autocomplete/autocomplete.min.js +1 -1
  65. package/es2018/plugins/backup/backup.css +1 -1
  66. package/es2018/plugins/backup/backup.js +1 -1
  67. package/es2018/plugins/backup/backup.min.js +1 -1
  68. package/es2018/plugins/button-generator/button-generator.css +1 -1
  69. package/es2018/plugins/button-generator/button-generator.js +1 -1
  70. package/es2018/plugins/button-generator/button-generator.min.js +1 -1
  71. package/es2018/plugins/change-case/change-case.js +1 -1
  72. package/es2018/plugins/change-case/change-case.min.js +1 -1
  73. package/es2018/plugins/color-picker/color-picker.css +1 -1
  74. package/es2018/plugins/color-picker/color-picker.js +1 -1
  75. package/es2018/plugins/color-picker/color-picker.min.js +1 -1
  76. package/es2018/plugins/emoji/emoji.css +1 -1
  77. package/es2018/plugins/emoji/emoji.js +1 -1
  78. package/es2018/plugins/emoji/emoji.min.js +1 -1
  79. package/es2018/plugins/export-docs/export-docs.js +1 -1
  80. package/es2018/plugins/export-docs/export-docs.min.js +1 -1
  81. package/es2018/plugins/finder/finder.css +1 -1
  82. package/es2018/plugins/finder/finder.js +1 -1
  83. package/es2018/plugins/finder/finder.min.js +1 -1
  84. package/es2018/plugins/google-maps/google-maps.css +1 -1
  85. package/es2018/plugins/google-maps/google-maps.js +1 -1
  86. package/es2018/plugins/google-maps/google-maps.min.js +1 -1
  87. package/es2018/plugins/google-search/google-search.js +1 -1
  88. package/es2018/plugins/google-search/google-search.min.js +1 -1
  89. package/es2018/plugins/highlight-signature/highlight-signature.js +1 -1
  90. package/es2018/plugins/highlight-signature/highlight-signature.min.js +1 -1
  91. package/es2018/plugins/iframe-editor/iframe-editor.css +1 -1
  92. package/es2018/plugins/iframe-editor/iframe-editor.js +1 -1
  93. package/es2018/plugins/iframe-editor/iframe-editor.min.js +1 -1
  94. package/es2018/plugins/keyboard/keyboard.css +1 -1
  95. package/es2018/plugins/keyboard/keyboard.js +1 -1
  96. package/es2018/plugins/keyboard/keyboard.min.js +1 -1
  97. package/es2018/plugins/mobile-view/mobile-view.js +1 -1
  98. package/es2018/plugins/mobile-view/mobile-view.min.js +1 -1
  99. package/es2018/plugins/page-break/page-break.js +1 -1
  100. package/es2018/plugins/page-break/page-break.min.js +1 -1
  101. package/es2018/plugins/paste-code/paste-code.css +1 -1
  102. package/es2018/plugins/paste-code/paste-code.js +1 -1
  103. package/es2018/plugins/paste-code/paste-code.min.js +1 -1
  104. package/es2018/plugins/paste-from-word/paste-from-word.js +1 -1
  105. package/es2018/plugins/paste-from-word/paste-from-word.min.js +1 -1
  106. package/es2018/plugins/show-blocks/show-blocks.js +1 -1
  107. package/es2018/plugins/show-blocks/show-blocks.min.js +1 -1
  108. package/es2018/plugins/todo-list/todo-list.css +1 -1
  109. package/es2018/plugins/todo-list/todo-list.js +1 -1
  110. package/es2018/plugins/todo-list/todo-list.min.js +1 -1
  111. package/es2018/plugins/translate/translate.css +1 -1
  112. package/es2018/plugins/translate/translate.js +1 -1
  113. package/es2018/plugins/translate/translate.min.js +1 -1
  114. package/es2018/plugins/tune-block/tune-block.css +1 -1
  115. package/es2018/plugins/tune-block/tune-block.js +1 -1
  116. package/es2018/plugins/tune-block/tune-block.min.js +1 -1
  117. package/es2021/jodit.css +1 -1
  118. package/es2021/jodit.fat.min.js +2 -2
  119. package/es2021/jodit.js +85 -57
  120. package/es2021/jodit.min.js +2 -2
  121. package/es2021/plugins/autocomplete/autocomplete.js +1 -1
  122. package/es2021/plugins/autocomplete/autocomplete.min.js +1 -1
  123. package/es2021/plugins/backup/backup.css +1 -1
  124. package/es2021/plugins/backup/backup.js +1 -1
  125. package/es2021/plugins/backup/backup.min.js +1 -1
  126. package/es2021/plugins/button-generator/button-generator.css +1 -1
  127. package/es2021/plugins/button-generator/button-generator.js +1 -1
  128. package/es2021/plugins/button-generator/button-generator.min.js +1 -1
  129. package/es2021/plugins/change-case/change-case.js +1 -1
  130. package/es2021/plugins/change-case/change-case.min.js +1 -1
  131. package/es2021/plugins/color-picker/color-picker.css +1 -1
  132. package/es2021/plugins/color-picker/color-picker.js +1 -1
  133. package/es2021/plugins/color-picker/color-picker.min.js +1 -1
  134. package/es2021/plugins/emoji/emoji.css +1 -1
  135. package/es2021/plugins/emoji/emoji.js +1 -1
  136. package/es2021/plugins/emoji/emoji.min.js +1 -1
  137. package/es2021/plugins/export-docs/export-docs.js +1 -1
  138. package/es2021/plugins/export-docs/export-docs.min.js +1 -1
  139. package/es2021/plugins/finder/finder.css +1 -1
  140. package/es2021/plugins/finder/finder.js +1 -1
  141. package/es2021/plugins/finder/finder.min.js +1 -1
  142. package/es2021/plugins/google-maps/google-maps.css +1 -1
  143. package/es2021/plugins/google-maps/google-maps.js +1 -1
  144. package/es2021/plugins/google-maps/google-maps.min.js +1 -1
  145. package/es2021/plugins/google-search/google-search.js +1 -1
  146. package/es2021/plugins/google-search/google-search.min.js +1 -1
  147. package/es2021/plugins/highlight-signature/highlight-signature.js +1 -1
  148. package/es2021/plugins/highlight-signature/highlight-signature.min.js +1 -1
  149. package/es2021/plugins/iframe-editor/iframe-editor.css +1 -1
  150. package/es2021/plugins/iframe-editor/iframe-editor.js +1 -1
  151. package/es2021/plugins/iframe-editor/iframe-editor.min.js +1 -1
  152. package/es2021/plugins/keyboard/keyboard.css +1 -1
  153. package/es2021/plugins/keyboard/keyboard.js +1 -1
  154. package/es2021/plugins/keyboard/keyboard.min.js +1 -1
  155. package/es2021/plugins/mobile-view/mobile-view.js +1 -1
  156. package/es2021/plugins/mobile-view/mobile-view.min.js +1 -1
  157. package/es2021/plugins/page-break/page-break.js +1 -1
  158. package/es2021/plugins/page-break/page-break.min.js +1 -1
  159. package/es2021/plugins/paste-code/paste-code.css +1 -1
  160. package/es2021/plugins/paste-code/paste-code.js +1 -1
  161. package/es2021/plugins/paste-code/paste-code.min.js +1 -1
  162. package/es2021/plugins/paste-from-word/paste-from-word.js +1 -1
  163. package/es2021/plugins/paste-from-word/paste-from-word.min.js +1 -1
  164. package/es2021/plugins/show-blocks/show-blocks.js +1 -1
  165. package/es2021/plugins/show-blocks/show-blocks.min.js +1 -1
  166. package/es2021/plugins/todo-list/todo-list.css +1 -1
  167. package/es2021/plugins/todo-list/todo-list.js +1 -1
  168. package/es2021/plugins/todo-list/todo-list.min.js +1 -1
  169. package/es2021/plugins/translate/translate.css +1 -1
  170. package/es2021/plugins/translate/translate.js +1 -1
  171. package/es2021/plugins/translate/translate.min.js +1 -1
  172. package/es2021/plugins/tune-block/tune-block.css +1 -1
  173. package/es2021/plugins/tune-block/tune-block.js +1 -1
  174. package/es2021/plugins/tune-block/tune-block.min.js +1 -1
  175. package/es2021.en/jodit.css +1 -1
  176. package/es2021.en/jodit.fat.min.js +2 -2
  177. package/es2021.en/jodit.js +85 -57
  178. package/es2021.en/jodit.min.js +2 -2
  179. package/es2021.en/plugins/autocomplete/autocomplete.js +1 -1
  180. package/es2021.en/plugins/autocomplete/autocomplete.min.js +1 -1
  181. package/es2021.en/plugins/backup/backup.css +1 -1
  182. package/es2021.en/plugins/backup/backup.js +1 -1
  183. package/es2021.en/plugins/backup/backup.min.js +1 -1
  184. package/es2021.en/plugins/button-generator/button-generator.css +1 -1
  185. package/es2021.en/plugins/button-generator/button-generator.js +1 -1
  186. package/es2021.en/plugins/button-generator/button-generator.min.js +1 -1
  187. package/es2021.en/plugins/change-case/change-case.js +1 -1
  188. package/es2021.en/plugins/change-case/change-case.min.js +1 -1
  189. package/es2021.en/plugins/color-picker/color-picker.css +1 -1
  190. package/es2021.en/plugins/color-picker/color-picker.js +1 -1
  191. package/es2021.en/plugins/color-picker/color-picker.min.js +1 -1
  192. package/es2021.en/plugins/emoji/emoji.css +1 -1
  193. package/es2021.en/plugins/emoji/emoji.js +1 -1
  194. package/es2021.en/plugins/emoji/emoji.min.js +1 -1
  195. package/es2021.en/plugins/export-docs/export-docs.js +1 -1
  196. package/es2021.en/plugins/export-docs/export-docs.min.js +1 -1
  197. package/es2021.en/plugins/finder/finder.css +1 -1
  198. package/es2021.en/plugins/finder/finder.js +1 -1
  199. package/es2021.en/plugins/finder/finder.min.js +1 -1
  200. package/es2021.en/plugins/google-maps/google-maps.css +1 -1
  201. package/es2021.en/plugins/google-maps/google-maps.js +1 -1
  202. package/es2021.en/plugins/google-maps/google-maps.min.js +1 -1
  203. package/es2021.en/plugins/google-search/google-search.js +1 -1
  204. package/es2021.en/plugins/google-search/google-search.min.js +1 -1
  205. package/es2021.en/plugins/highlight-signature/highlight-signature.js +1 -1
  206. package/es2021.en/plugins/highlight-signature/highlight-signature.min.js +1 -1
  207. package/es2021.en/plugins/iframe-editor/iframe-editor.css +1 -1
  208. package/es2021.en/plugins/iframe-editor/iframe-editor.js +1 -1
  209. package/es2021.en/plugins/iframe-editor/iframe-editor.min.js +1 -1
  210. package/es2021.en/plugins/keyboard/keyboard.css +1 -1
  211. package/es2021.en/plugins/keyboard/keyboard.js +1 -1
  212. package/es2021.en/plugins/keyboard/keyboard.min.js +1 -1
  213. package/es2021.en/plugins/mobile-view/mobile-view.js +1 -1
  214. package/es2021.en/plugins/mobile-view/mobile-view.min.js +1 -1
  215. package/es2021.en/plugins/page-break/page-break.js +1 -1
  216. package/es2021.en/plugins/page-break/page-break.min.js +1 -1
  217. package/es2021.en/plugins/paste-code/paste-code.css +1 -1
  218. package/es2021.en/plugins/paste-code/paste-code.js +1 -1
  219. package/es2021.en/plugins/paste-code/paste-code.min.js +1 -1
  220. package/es2021.en/plugins/paste-from-word/paste-from-word.js +1 -1
  221. package/es2021.en/plugins/paste-from-word/paste-from-word.min.js +1 -1
  222. package/es2021.en/plugins/show-blocks/show-blocks.js +1 -1
  223. package/es2021.en/plugins/show-blocks/show-blocks.min.js +1 -1
  224. package/es2021.en/plugins/todo-list/todo-list.css +1 -1
  225. package/es2021.en/plugins/todo-list/todo-list.js +1 -1
  226. package/es2021.en/plugins/todo-list/todo-list.min.js +1 -1
  227. package/es2021.en/plugins/translate/translate.css +1 -1
  228. package/es2021.en/plugins/translate/translate.js +1 -1
  229. package/es2021.en/plugins/translate/translate.min.js +1 -1
  230. package/es2021.en/plugins/tune-block/tune-block.css +1 -1
  231. package/es2021.en/plugins/tune-block/tune-block.js +1 -1
  232. package/es2021.en/plugins/tune-block/tune-block.min.js +1 -1
  233. package/es5/jodit.css +2 -2
  234. package/es5/jodit.fat.min.js +2 -2
  235. package/es5/jodit.js +90 -59
  236. package/es5/jodit.min.css +2 -2
  237. package/es5/jodit.min.js +2 -2
  238. package/es5/plugins/autocomplete/autocomplete.js +1 -1
  239. package/es5/plugins/autocomplete/autocomplete.min.js +1 -1
  240. package/es5/plugins/backup/backup.css +1 -1
  241. package/es5/plugins/backup/backup.js +1 -1
  242. package/es5/plugins/backup/backup.min.js +1 -1
  243. package/es5/plugins/button-generator/button-generator.css +1 -1
  244. package/es5/plugins/button-generator/button-generator.js +1 -1
  245. package/es5/plugins/button-generator/button-generator.min.js +1 -1
  246. package/es5/plugins/change-case/change-case.js +1 -1
  247. package/es5/plugins/change-case/change-case.min.js +1 -1
  248. package/es5/plugins/color-picker/color-picker.css +1 -1
  249. package/es5/plugins/color-picker/color-picker.js +1 -1
  250. package/es5/plugins/color-picker/color-picker.min.js +1 -1
  251. package/es5/plugins/emoji/emoji.css +1 -1
  252. package/es5/plugins/emoji/emoji.js +1 -1
  253. package/es5/plugins/emoji/emoji.min.js +1 -1
  254. package/es5/plugins/export-docs/export-docs.js +1 -1
  255. package/es5/plugins/export-docs/export-docs.min.js +1 -1
  256. package/es5/plugins/finder/finder.css +1 -1
  257. package/es5/plugins/finder/finder.js +1 -1
  258. package/es5/plugins/finder/finder.min.js +1 -1
  259. package/es5/plugins/google-maps/google-maps.css +1 -1
  260. package/es5/plugins/google-maps/google-maps.js +1 -1
  261. package/es5/plugins/google-maps/google-maps.min.js +1 -1
  262. package/es5/plugins/google-search/google-search.js +1 -1
  263. package/es5/plugins/google-search/google-search.min.js +1 -1
  264. package/es5/plugins/highlight-signature/highlight-signature.js +1 -1
  265. package/es5/plugins/highlight-signature/highlight-signature.min.js +1 -1
  266. package/es5/plugins/iframe-editor/iframe-editor.css +1 -1
  267. package/es5/plugins/iframe-editor/iframe-editor.js +1 -1
  268. package/es5/plugins/iframe-editor/iframe-editor.min.js +1 -1
  269. package/es5/plugins/keyboard/keyboard.css +1 -1
  270. package/es5/plugins/keyboard/keyboard.js +1 -1
  271. package/es5/plugins/keyboard/keyboard.min.js +1 -1
  272. package/es5/plugins/mobile-view/mobile-view.js +1 -1
  273. package/es5/plugins/mobile-view/mobile-view.min.js +1 -1
  274. package/es5/plugins/page-break/page-break.js +1 -1
  275. package/es5/plugins/page-break/page-break.min.js +1 -1
  276. package/es5/plugins/paste-code/paste-code.css +1 -1
  277. package/es5/plugins/paste-code/paste-code.js +1 -1
  278. package/es5/plugins/paste-code/paste-code.min.js +1 -1
  279. package/es5/plugins/paste-from-word/paste-from-word.js +1 -1
  280. package/es5/plugins/paste-from-word/paste-from-word.min.js +1 -1
  281. package/es5/plugins/show-blocks/show-blocks.js +1 -1
  282. package/es5/plugins/show-blocks/show-blocks.min.js +1 -1
  283. package/es5/plugins/todo-list/todo-list.css +1 -1
  284. package/es5/plugins/todo-list/todo-list.js +1 -1
  285. package/es5/plugins/todo-list/todo-list.min.js +1 -1
  286. package/es5/plugins/translate/translate.css +1 -1
  287. package/es5/plugins/translate/translate.js +1 -1
  288. package/es5/plugins/translate/translate.min.js +1 -1
  289. package/es5/plugins/tune-block/tune-block.css +1 -1
  290. package/es5/plugins/tune-block/tune-block.js +1 -1
  291. package/es5/plugins/tune-block/tune-block.min.js +1 -1
  292. 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 Valeriy <chupurnov@gmail.com>
4
- * Version: v2.0.0-beta.18
4
+ * Version: v2.0.0-beta.21
5
5
  * Url: https://xdsoft.net/jodit/pro/
6
6
  * License(s): SEE LICENSE IN LICENSE.md
7
7
  */
@@ -2402,7 +2402,7 @@ __webpack_require__.r(__webpack_exports__);
2402
2402
  * Released under MIT see LICENSE.txt in the project root for license information.
2403
2403
  * Copyright (c) 2013-2023 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
2404
2404
  */
2405
- const APP_VERSION = "2.0.0-beta.18";
2405
+ const APP_VERSION = "2.0.0-beta.21";
2406
2406
  // eslint-disable-next-line prettier/prettier
2407
2407
  const ES = "es2021";
2408
2408
  const IS_ES_MODERN = true;
@@ -3981,8 +3981,15 @@ class Dom {
3981
3981
  static safeInsertNode(range, node) {
3982
3982
  range.collapsed || range.deleteContents();
3983
3983
  const child = Dom.isFragment(node) ? node.lastChild : node;
3984
- range.insertNode(node);
3985
- child && range.setStartBefore(child);
3984
+ if (range.startContainer === range.endContainer &&
3985
+ range.collapsed &&
3986
+ Dom.isTag(range.startContainer, jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.INSEPARABLE_TAGS)) {
3987
+ Dom.after(range.startContainer, node);
3988
+ }
3989
+ else {
3990
+ range.insertNode(node);
3991
+ child && range.setStartBefore(child);
3992
+ }
3986
3993
  range.collapse(true);
3987
3994
  // https://developer.mozilla.org/en-US/docs/Web/API/Range/insertNode
3988
3995
  // if the new node is to be added to a text Node, that Node is split at the
@@ -9258,25 +9265,29 @@ function reset(key) {
9258
9265
  /**
9259
9266
  * @module helpers/utils
9260
9267
  */
9261
- const inView = (elm, root, doc) => {
9268
+ /**
9269
+ * Check if element is in view
9270
+ */
9271
+ function inView(elm, root, doc) {
9262
9272
  let rect = elm.getBoundingClientRect(), el = elm;
9263
9273
  const top = rect.top, height = rect.height;
9264
- do {
9265
- if (el && el.parentNode) {
9266
- el = el.parentNode;
9267
- rect = el.getBoundingClientRect();
9268
- if (!(top <= rect.bottom)) {
9269
- return false;
9270
- }
9271
- // Check if the element is out of view due to a container scrolling
9272
- if (top + height <= rect.top) {
9273
- return false;
9274
- }
9274
+ while (el && el !== root && el.parentNode) {
9275
+ el = el.parentNode;
9276
+ rect = el.getBoundingClientRect();
9277
+ if (!(top <= rect.bottom)) {
9278
+ return false;
9275
9279
  }
9276
- } while (el && el !== root && el.parentNode);
9277
- // Check its within the document viewport
9280
+ // Check if the element is out of view due to a container scrolling
9281
+ if (top + height <= rect.top) {
9282
+ return false;
9283
+ }
9284
+ }
9285
+ // Check it's within the document viewport
9278
9286
  return (top <= ((doc.documentElement && doc.documentElement.clientHeight) || 0));
9279
- };
9287
+ }
9288
+ /**
9289
+ * Scroll element into view if it is not in view
9290
+ */
9280
9291
  function scrollIntoViewIfNeeded(elm, root, doc) {
9281
9292
  if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__/* .Dom.isHTMLElement */ .i.isHTMLElement(elm) && !inView(elm, root, doc)) {
9282
9293
  if (root.clientHeight !== root.scrollHeight) {
@@ -10802,14 +10813,14 @@ class Selection {
10802
10813
  const left = range.cloneRange();
10803
10814
  left.collapse(true);
10804
10815
  const fakeLeft = this.j.createInside.fake();
10805
- left.insertNode(fakeLeft);
10816
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__/* .Dom.safeInsertNode */ .i.safeInsertNode(left, fakeLeft);
10806
10817
  range.setStartBefore(fakeLeft);
10807
10818
  const result = [fakeLeft];
10808
10819
  if (!range.collapsed) {
10809
10820
  const right = range.cloneRange();
10810
10821
  right.collapse(false);
10811
10822
  const fakeRight = this.j.createInside.fake();
10812
- right.insertNode(fakeRight);
10823
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__/* .Dom.safeInsertNode */ .i.safeInsertNode(right, fakeRight);
10813
10824
  range.setEndAfter(fakeRight);
10814
10825
  result.push(fakeRight);
10815
10826
  }
@@ -11033,13 +11044,7 @@ class Selection {
11033
11044
  if (sel && sel.rangeCount) {
11034
11045
  const range = sel.getRangeAt(0);
11035
11046
  if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__/* .Dom.isOrContains */ .i.isOrContains(this.area, range.commonAncestorContainer)) {
11036
- if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__/* .Dom.isTag */ .i.isTag(range.startContainer, jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.INSEPARABLE_TAGS) &&
11037
- range.collapsed) {
11038
- range.startContainer.parentNode?.insertBefore(node, range.startContainer);
11039
- }
11040
- else {
11041
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__/* .Dom.safeInsertNode */ .i.safeInsertNode(range, node);
11042
- }
11047
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__/* .Dom.safeInsertNode */ .i.safeInsertNode(range, node);
11043
11048
  }
11044
11049
  else {
11045
11050
  this.area.appendChild(node);
@@ -11048,14 +11053,26 @@ class Selection {
11048
11053
  else {
11049
11054
  this.area.appendChild(node);
11050
11055
  }
11056
+ const setCursor = (node) => {
11057
+ if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__/* .Dom.isBlock */ .i.isBlock(node)) {
11058
+ const child = node.lastChild;
11059
+ if (child) {
11060
+ return setCursor(child);
11061
+ }
11062
+ }
11063
+ this.setCursorAfter(node);
11064
+ };
11051
11065
  if (insertCursorAfter) {
11052
11066
  if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__/* .Dom.isFragment */ .i.isFragment(node)) {
11053
- child && this.setCursorAfter(child);
11067
+ child && setCursor(child);
11054
11068
  }
11055
11069
  else {
11056
- this.setCursorAfter(node);
11070
+ setCursor(node);
11057
11071
  }
11058
11072
  }
11073
+ if (this.j.o.scrollToPastedContent) {
11074
+ (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_2__.scrollIntoViewIfNeeded)(child ?? node, this.j.editor, this.doc);
11075
+ }
11059
11076
  });
11060
11077
  if (fireChange && this.j.events) {
11061
11078
  this.j.__imdSynchronizeValues();
@@ -15775,6 +15792,13 @@ Icon.__cache = new Map();
15775
15792
 
15776
15793
 
15777
15794
 
15795
+ const EVENTS_FOR_AUTOCLOSE = [
15796
+ 'escape',
15797
+ 'cut',
15798
+ 'delete',
15799
+ 'backSpaceAfterDelete',
15800
+ 'beforeCommandDelete'
15801
+ ];
15778
15802
  class Popup extends jodit_core_ui_element__WEBPACK_IMPORTED_MODULE_3__/* .UIElement */ .u {
15779
15803
  /** @override */
15780
15804
  className() {
@@ -16013,7 +16037,7 @@ class Popup extends jodit_core_ui_element__WEBPACK_IMPORTED_MODULE_3__/* .UIElem
16013
16037
  jodit_core_global__WEBPACK_IMPORTED_MODULE_6__/* .eventEmitter.on */ .TB.on('closeAllPopups', this.close);
16014
16038
  if (this.smart) {
16015
16039
  this.j.e
16016
- .on('escape', this.close)
16040
+ .on(EVENTS_FOR_AUTOCLOSE, this.close)
16017
16041
  .on('mousedown touchstart', this.closeOnOutsideClick)
16018
16042
  .on(ow, 'mousedown touchstart', this.closeOnOutsideClick);
16019
16043
  }
@@ -16032,7 +16056,7 @@ class Popup extends jodit_core_ui_element__WEBPACK_IMPORTED_MODULE_3__/* .UIElem
16032
16056
  jodit_core_global__WEBPACK_IMPORTED_MODULE_6__/* .eventEmitter.off */ .TB.off('closeAllPopups', this.close);
16033
16057
  if (this.smart) {
16034
16058
  this.j.e
16035
- .off('escape', this.close)
16059
+ .off(EVENTS_FOR_AUTOCLOSE, this.close)
16036
16060
  .off('mousedown touchstart', this.closeOnOutsideClick)
16037
16061
  .off(ow, 'mousedown touchstart', this.closeOnOutsideClick);
16038
16062
  }
@@ -17222,7 +17246,10 @@ let Jodit = Jodit_1 = class Jodit extends jodit_modules__WEBPACK_IMPORTED_MODULE
17222
17246
  * })
17223
17247
  * ```
17224
17248
  */
17225
- result = this.e.fire('beforeCommand', command, showUI, value, ...args);
17249
+ result = this.e.fire(`beforeCommand${(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_3__.ucfirst)(command)}`, showUI, value, ...args);
17250
+ if (result !== false) {
17251
+ result = this.e.fire('beforeCommand', command, showUI, value, ...args);
17252
+ }
17226
17253
  if (result !== false) {
17227
17254
  result = this.__execCustomCommands(command, showUI, value, ...args);
17228
17255
  }
@@ -32557,7 +32584,7 @@ class inlinePopup extends jodit_core_plugin__WEBPACK_IMPORTED_MODULE_0__/* .Plug
32557
32584
  * Hide opened popup
32558
32585
  */
32559
32586
  hidePopup(type) {
32560
- if (!(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_3__.isString)(type) || type === this.type) {
32587
+ if (this.popup.isOpened && (!(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_3__.isString)(type) || type === this.type)) {
32561
32588
  this.popup.close();
32562
32589
  }
32563
32590
  }
@@ -32720,7 +32747,7 @@ inlinePopup.requires = ['select'];
32720
32747
  (0,jodit_core_decorators__WEBPACK_IMPORTED_MODULE_6__.wait)((ctx) => !ctx.j.isLocked)
32721
32748
  ], inlinePopup.prototype, "showPopup", null);
32722
32749
  (0,tslib__WEBPACK_IMPORTED_MODULE_9__/* .__decorate */ .gn)([
32723
- (0,jodit_core_decorators__WEBPACK_IMPORTED_MODULE_6__.watch)(':clickEditor'),
32750
+ (0,jodit_core_decorators__WEBPACK_IMPORTED_MODULE_6__.watch)([':clickEditor', ':beforeCommandDelete', ':backSpaceAfterDelete']),
32724
32751
  jodit_core_decorators__WEBPACK_IMPORTED_MODULE_6__.autobind
32725
32752
  ], inlinePopup.prototype, "hidePopup", null);
32726
32753
  (0,tslib__WEBPACK_IMPORTED_MODULE_9__/* .__decorate */ .gn)([
@@ -34769,6 +34796,7 @@ jodit_core_global__WEBPACK_IMPORTED_MODULE_5__/* .pluginSystem.add */ .pw.add('p
34769
34796
 
34770
34797
  jodit_config__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.askBeforePasteHTML = true;
34771
34798
  jodit_config__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.processPasteHTML = true;
34799
+ jodit_config__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.scrollToPastedContent = true;
34772
34800
  jodit_config__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.pasteHTMLActionList = [
34773
34801
  { value: jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.INSERT_AS_HTML, text: 'Keep' },
34774
34802
  { value: jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.INSERT_AS_TEXT, text: 'Insert as Text' },
@@ -35070,7 +35098,7 @@ class paste extends jodit_core_plugin_plugin__WEBPACK_IMPORTED_MODULE_0__/* .Plu
35070
35098
  text = result;
35071
35099
  }
35072
35100
  if ((0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_4__.isString)(text) || jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_2__/* .Dom.isNode */ .i.isNode(text)) {
35073
- this.insertByType(e, text, this.j.o.defaultActionOnPaste);
35101
+ this.__insertByType(e, text, this.j.o.defaultActionOnPaste);
35074
35102
  }
35075
35103
  e.preventDefault();
35076
35104
  e.stopPropagation();
@@ -35080,35 +35108,35 @@ class paste extends jodit_core_plugin_plugin__WEBPACK_IMPORTED_MODULE_0__/* .Plu
35080
35108
  * Process usual HTML text fragment
35081
35109
  */
35082
35110
  processHTML(e, html) {
35083
- if (this.j.o.askBeforePasteHTML) {
35084
- if (this.j.o.memorizeChoiceWhenPasteFragment) {
35085
- const cached = this.pasteStack.find(cachedItem => cachedItem.html === html);
35086
- if (cached) {
35087
- this.insertByType(e, html, cached.action || this.j.o.defaultActionOnPaste);
35088
- return true;
35089
- }
35090
- }
35091
- if (this._isDialogOpened) {
35111
+ if (!this.j.o.askBeforePasteHTML) {
35112
+ return false;
35113
+ }
35114
+ if (this.j.o.memorizeChoiceWhenPasteFragment) {
35115
+ const cached = this.pasteStack.find(cachedItem => cachedItem.html === html);
35116
+ if (cached) {
35117
+ this.__insertByType(e, html, cached.action || this.j.o.defaultActionOnPaste);
35092
35118
  return true;
35093
35119
  }
35094
- const dialog = (0,_helpers__WEBPACK_IMPORTED_MODULE_6__/* .askInsertTypeDialog */ .$t)(this.j, 'Your code is similar to HTML. Keep as HTML?', 'Paste as HTML', insertType => {
35095
- this._isDialogOpened = false;
35096
- this.insertByType(e, html, insertType);
35097
- }, this.j.o.pasteHTMLActionList);
35098
- if (dialog) {
35099
- this._isDialogOpened = true;
35100
- dialog.e.on('beforeClose', () => {
35101
- this._isDialogOpened = false;
35102
- });
35103
- }
35120
+ }
35121
+ if (this._isDialogOpened) {
35104
35122
  return true;
35105
35123
  }
35106
- return false;
35124
+ const dialog = (0,_helpers__WEBPACK_IMPORTED_MODULE_6__/* .askInsertTypeDialog */ .$t)(this.j, 'Your code is similar to HTML. Keep as HTML?', 'Paste as HTML', insertType => {
35125
+ this._isDialogOpened = false;
35126
+ this.__insertByType(e, html, insertType);
35127
+ }, this.j.o.pasteHTMLActionList);
35128
+ if (dialog) {
35129
+ this._isDialogOpened = true;
35130
+ dialog.e.on('beforeClose', () => {
35131
+ this._isDialogOpened = false;
35132
+ });
35133
+ }
35134
+ return true;
35107
35135
  }
35108
35136
  /**
35109
35137
  * Insert HTML by option type
35110
35138
  */
35111
- insertByType(e, html, action) {
35139
+ __insertByType(e, html, action) {
35112
35140
  this.pasteStack.push({ html, action });
35113
35141
  if ((0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_4__.isString)(html)) {
35114
35142
  this.j.buffer.set(jodit_core_constants__WEBPACK_IMPORTED_MODULE_1__.CLIPBOARD_ID, html);