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/es2015/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
  */
@@ -2401,7 +2401,7 @@ __webpack_require__.r(__webpack_exports__);
2401
2401
  * Released under MIT see LICENSE.txt in the project root for license information.
2402
2402
  * Copyright (c) 2013-2023 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
2403
2403
  */
2404
- const APP_VERSION = "2.0.0-beta.18";
2404
+ const APP_VERSION = "2.0.0-beta.21";
2405
2405
  // eslint-disable-next-line prettier/prettier
2406
2406
  const ES = "es2015";
2407
2407
  const IS_ES_MODERN = true;
@@ -3988,8 +3988,15 @@ class Dom {
3988
3988
  static safeInsertNode(range, node) {
3989
3989
  range.collapsed || range.deleteContents();
3990
3990
  const child = Dom.isFragment(node) ? node.lastChild : node;
3991
- range.insertNode(node);
3992
- child && range.setStartBefore(child);
3991
+ if (range.startContainer === range.endContainer &&
3992
+ range.collapsed &&
3993
+ Dom.isTag(range.startContainer, jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.INSEPARABLE_TAGS)) {
3994
+ Dom.after(range.startContainer, node);
3995
+ }
3996
+ else {
3997
+ range.insertNode(node);
3998
+ child && range.setStartBefore(child);
3999
+ }
3993
4000
  range.collapse(true);
3994
4001
  // https://developer.mozilla.org/en-US/docs/Web/API/Range/insertNode
3995
4002
  // if the new node is to be added to a text Node, that Node is split at the
@@ -9279,25 +9286,29 @@ function reset(key) {
9279
9286
  /**
9280
9287
  * @module helpers/utils
9281
9288
  */
9282
- const inView = (elm, root, doc) => {
9289
+ /**
9290
+ * Check if element is in view
9291
+ */
9292
+ function inView(elm, root, doc) {
9283
9293
  let rect = elm.getBoundingClientRect(), el = elm;
9284
9294
  const top = rect.top, height = rect.height;
9285
- do {
9286
- if (el && el.parentNode) {
9287
- el = el.parentNode;
9288
- rect = el.getBoundingClientRect();
9289
- if (!(top <= rect.bottom)) {
9290
- return false;
9291
- }
9292
- // Check if the element is out of view due to a container scrolling
9293
- if (top + height <= rect.top) {
9294
- return false;
9295
- }
9295
+ while (el && el !== root && el.parentNode) {
9296
+ el = el.parentNode;
9297
+ rect = el.getBoundingClientRect();
9298
+ if (!(top <= rect.bottom)) {
9299
+ return false;
9296
9300
  }
9297
- } while (el && el !== root && el.parentNode);
9298
- // Check its within the document viewport
9301
+ // Check if the element is out of view due to a container scrolling
9302
+ if (top + height <= rect.top) {
9303
+ return false;
9304
+ }
9305
+ }
9306
+ // Check it's within the document viewport
9299
9307
  return (top <= ((doc.documentElement && doc.documentElement.clientHeight) || 0));
9300
- };
9308
+ }
9309
+ /**
9310
+ * Scroll element into view if it is not in view
9311
+ */
9301
9312
  function scrollIntoViewIfNeeded(elm, root, doc) {
9302
9313
  if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__/* .Dom.isHTMLElement */ .i.isHTMLElement(elm) && !inView(elm, root, doc)) {
9303
9314
  if (root.clientHeight !== root.scrollHeight) {
@@ -10840,14 +10851,14 @@ class Selection {
10840
10851
  const left = range.cloneRange();
10841
10852
  left.collapse(true);
10842
10853
  const fakeLeft = this.j.createInside.fake();
10843
- left.insertNode(fakeLeft);
10854
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__/* .Dom.safeInsertNode */ .i.safeInsertNode(left, fakeLeft);
10844
10855
  range.setStartBefore(fakeLeft);
10845
10856
  const result = [fakeLeft];
10846
10857
  if (!range.collapsed) {
10847
10858
  const right = range.cloneRange();
10848
10859
  right.collapse(false);
10849
10860
  const fakeRight = this.j.createInside.fake();
10850
- right.insertNode(fakeRight);
10861
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__/* .Dom.safeInsertNode */ .i.safeInsertNode(right, fakeRight);
10851
10862
  range.setEndAfter(fakeRight);
10852
10863
  result.push(fakeRight);
10853
10864
  }
@@ -11066,7 +11077,6 @@ class Selection {
11066
11077
  }
11067
11078
  const sel = this.sel;
11068
11079
  this.j.history.snapshot.transaction(() => {
11069
- var _a;
11070
11080
  if (!this.isCollapsed()) {
11071
11081
  this.j.execCommand('Delete');
11072
11082
  }
@@ -11074,13 +11084,7 @@ class Selection {
11074
11084
  if (sel && sel.rangeCount) {
11075
11085
  const range = sel.getRangeAt(0);
11076
11086
  if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__/* .Dom.isOrContains */ .i.isOrContains(this.area, range.commonAncestorContainer)) {
11077
- if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__/* .Dom.isTag */ .i.isTag(range.startContainer, jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.INSEPARABLE_TAGS) &&
11078
- range.collapsed) {
11079
- (_a = range.startContainer.parentNode) === null || _a === void 0 ? void 0 : _a.insertBefore(node, range.startContainer);
11080
- }
11081
- else {
11082
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__/* .Dom.safeInsertNode */ .i.safeInsertNode(range, node);
11083
- }
11087
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__/* .Dom.safeInsertNode */ .i.safeInsertNode(range, node);
11084
11088
  }
11085
11089
  else {
11086
11090
  this.area.appendChild(node);
@@ -11089,14 +11093,26 @@ class Selection {
11089
11093
  else {
11090
11094
  this.area.appendChild(node);
11091
11095
  }
11096
+ const setCursor = (node) => {
11097
+ if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__/* .Dom.isBlock */ .i.isBlock(node)) {
11098
+ const child = node.lastChild;
11099
+ if (child) {
11100
+ return setCursor(child);
11101
+ }
11102
+ }
11103
+ this.setCursorAfter(node);
11104
+ };
11092
11105
  if (insertCursorAfter) {
11093
11106
  if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__/* .Dom.isFragment */ .i.isFragment(node)) {
11094
- child && this.setCursorAfter(child);
11107
+ child && setCursor(child);
11095
11108
  }
11096
11109
  else {
11097
- this.setCursorAfter(node);
11110
+ setCursor(node);
11098
11111
  }
11099
11112
  }
11113
+ if (this.j.o.scrollToPastedContent) {
11114
+ (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_2__.scrollIntoViewIfNeeded)(child !== null && child !== void 0 ? child : node, this.j.editor, this.doc);
11115
+ }
11100
11116
  });
11101
11117
  if (fireChange && this.j.events) {
11102
11118
  this.j.__imdSynchronizeValues();
@@ -15772,6 +15788,13 @@ Icon.__cache = new Map();
15772
15788
 
15773
15789
 
15774
15790
 
15791
+ const EVENTS_FOR_AUTOCLOSE = [
15792
+ 'escape',
15793
+ 'cut',
15794
+ 'delete',
15795
+ 'backSpaceAfterDelete',
15796
+ 'beforeCommandDelete'
15797
+ ];
15775
15798
  class Popup extends jodit_core_ui_element__WEBPACK_IMPORTED_MODULE_3__/* .UIElement */ .u {
15776
15799
  /** @override */
15777
15800
  className() {
@@ -16006,7 +16029,7 @@ class Popup extends jodit_core_ui_element__WEBPACK_IMPORTED_MODULE_3__/* .UIElem
16006
16029
  jodit_core_global__WEBPACK_IMPORTED_MODULE_6__/* .eventEmitter.on */ .TB.on('closeAllPopups', this.close);
16007
16030
  if (this.smart) {
16008
16031
  this.j.e
16009
- .on('escape', this.close)
16032
+ .on(EVENTS_FOR_AUTOCLOSE, this.close)
16010
16033
  .on('mousedown touchstart', this.closeOnOutsideClick)
16011
16034
  .on(ow, 'mousedown touchstart', this.closeOnOutsideClick);
16012
16035
  }
@@ -16025,7 +16048,7 @@ class Popup extends jodit_core_ui_element__WEBPACK_IMPORTED_MODULE_3__/* .UIElem
16025
16048
  jodit_core_global__WEBPACK_IMPORTED_MODULE_6__/* .eventEmitter.off */ .TB.off('closeAllPopups', this.close);
16026
16049
  if (this.smart) {
16027
16050
  this.j.e
16028
- .off('escape', this.close)
16051
+ .off(EVENTS_FOR_AUTOCLOSE, this.close)
16029
16052
  .off('mousedown touchstart', this.closeOnOutsideClick)
16030
16053
  .off(ow, 'mousedown touchstart', this.closeOnOutsideClick);
16031
16054
  }
@@ -17216,7 +17239,10 @@ let Jodit = Jodit_1 = class Jodit extends jodit_modules__WEBPACK_IMPORTED_MODULE
17216
17239
  * })
17217
17240
  * ```
17218
17241
  */
17219
- result = this.e.fire('beforeCommand', command, showUI, value, ...args);
17242
+ result = this.e.fire(`beforeCommand${(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_3__.ucfirst)(command)}`, showUI, value, ...args);
17243
+ if (result !== false) {
17244
+ result = this.e.fire('beforeCommand', command, showUI, value, ...args);
17245
+ }
17220
17246
  if (result !== false) {
17221
17247
  result = this.__execCustomCommands(command, showUI, value, ...args);
17222
17248
  }
@@ -32563,7 +32589,7 @@ class inlinePopup extends jodit_core_plugin__WEBPACK_IMPORTED_MODULE_0__/* .Plug
32563
32589
  * Hide opened popup
32564
32590
  */
32565
32591
  hidePopup(type) {
32566
- if (!(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_3__.isString)(type) || type === this.type) {
32592
+ if (this.popup.isOpened && (!(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_3__.isString)(type) || type === this.type)) {
32567
32593
  this.popup.close();
32568
32594
  }
32569
32595
  }
@@ -32726,7 +32752,7 @@ inlinePopup.requires = ['select'];
32726
32752
  (0,jodit_core_decorators__WEBPACK_IMPORTED_MODULE_6__.wait)((ctx) => !ctx.j.isLocked)
32727
32753
  ], inlinePopup.prototype, "showPopup", null);
32728
32754
  (0,tslib__WEBPACK_IMPORTED_MODULE_9__/* .__decorate */ .gn)([
32729
- (0,jodit_core_decorators__WEBPACK_IMPORTED_MODULE_6__.watch)(':clickEditor'),
32755
+ (0,jodit_core_decorators__WEBPACK_IMPORTED_MODULE_6__.watch)([':clickEditor', ':beforeCommandDelete', ':backSpaceAfterDelete']),
32730
32756
  jodit_core_decorators__WEBPACK_IMPORTED_MODULE_6__.autobind
32731
32757
  ], inlinePopup.prototype, "hidePopup", null);
32732
32758
  (0,tslib__WEBPACK_IMPORTED_MODULE_9__/* .__decorate */ .gn)([
@@ -34780,6 +34806,7 @@ jodit_core_global__WEBPACK_IMPORTED_MODULE_5__/* .pluginSystem.add */ .pw.add('p
34780
34806
 
34781
34807
  jodit_config__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.askBeforePasteHTML = true;
34782
34808
  jodit_config__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.processPasteHTML = true;
34809
+ jodit_config__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.scrollToPastedContent = true;
34783
34810
  jodit_config__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.pasteHTMLActionList = [
34784
34811
  { value: jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.INSERT_AS_HTML, text: 'Keep' },
34785
34812
  { value: jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.INSERT_AS_TEXT, text: 'Insert as Text' },
@@ -35083,7 +35110,7 @@ class paste extends jodit_core_plugin_plugin__WEBPACK_IMPORTED_MODULE_0__/* .Plu
35083
35110
  text = result;
35084
35111
  }
35085
35112
  if ((0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_4__.isString)(text) || jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_2__/* .Dom.isNode */ .i.isNode(text)) {
35086
- this.insertByType(e, text, this.j.o.defaultActionOnPaste);
35113
+ this.__insertByType(e, text, this.j.o.defaultActionOnPaste);
35087
35114
  }
35088
35115
  e.preventDefault();
35089
35116
  e.stopPropagation();
@@ -35093,35 +35120,35 @@ class paste extends jodit_core_plugin_plugin__WEBPACK_IMPORTED_MODULE_0__/* .Plu
35093
35120
  * Process usual HTML text fragment
35094
35121
  */
35095
35122
  processHTML(e, html) {
35096
- if (this.j.o.askBeforePasteHTML) {
35097
- if (this.j.o.memorizeChoiceWhenPasteFragment) {
35098
- const cached = this.pasteStack.find(cachedItem => cachedItem.html === html);
35099
- if (cached) {
35100
- this.insertByType(e, html, cached.action || this.j.o.defaultActionOnPaste);
35101
- return true;
35102
- }
35103
- }
35104
- if (this._isDialogOpened) {
35123
+ if (!this.j.o.askBeforePasteHTML) {
35124
+ return false;
35125
+ }
35126
+ if (this.j.o.memorizeChoiceWhenPasteFragment) {
35127
+ const cached = this.pasteStack.find(cachedItem => cachedItem.html === html);
35128
+ if (cached) {
35129
+ this.__insertByType(e, html, cached.action || this.j.o.defaultActionOnPaste);
35105
35130
  return true;
35106
35131
  }
35107
- 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 => {
35108
- this._isDialogOpened = false;
35109
- this.insertByType(e, html, insertType);
35110
- }, this.j.o.pasteHTMLActionList);
35111
- if (dialog) {
35112
- this._isDialogOpened = true;
35113
- dialog.e.on('beforeClose', () => {
35114
- this._isDialogOpened = false;
35115
- });
35116
- }
35132
+ }
35133
+ if (this._isDialogOpened) {
35117
35134
  return true;
35118
35135
  }
35119
- return false;
35136
+ 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 => {
35137
+ this._isDialogOpened = false;
35138
+ this.__insertByType(e, html, insertType);
35139
+ }, this.j.o.pasteHTMLActionList);
35140
+ if (dialog) {
35141
+ this._isDialogOpened = true;
35142
+ dialog.e.on('beforeClose', () => {
35143
+ this._isDialogOpened = false;
35144
+ });
35145
+ }
35146
+ return true;
35120
35147
  }
35121
35148
  /**
35122
35149
  * Insert HTML by option type
35123
35150
  */
35124
- insertByType(e, html, action) {
35151
+ __insertByType(e, html, action) {
35125
35152
  this.pasteStack.push({ html, action });
35126
35153
  if ((0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_4__.isString)(html)) {
35127
35154
  this.j.buffer.set(jodit_core_constants__WEBPACK_IMPORTED_MODULE_1__.CLIPBOARD_ID, html);