jodit-pro 4.4.7 → 4.5.3

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 +81 -35
  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 +81 -35
  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 +81 -35
  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 +81 -35
  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 +88 -36
  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: v4.4.7
4
+ * Version: v4.5.3
5
5
  * Url: https://xdsoft.net/jodit/pro/
6
6
  * License(s): SEE LICENSE IN LICENSE.md
7
7
  */
@@ -1639,7 +1639,7 @@ __webpack_require__.r(__webpack_exports__);
1639
1639
  * Jodit Editor (https://xdsoft.net/jodit/)
1640
1640
  * Released under MIT see LICENSE.txt in the project root for license information.
1641
1641
  * Copyright (c) 2013-2025 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
1642
- */ const APP_VERSION = "4.4.7";
1642
+ */ const APP_VERSION = "4.5.1";
1643
1643
  // prettier-ignore
1644
1644
  const ES = "es2020";
1645
1645
  const IS_ES_MODERN = true;
@@ -2701,27 +2701,24 @@ function getPropertyDescriptor(obj, prop) {
2701
2701
  }
2702
2702
  }
2703
2703
  /**
2704
- * Wrap all inline siblings
2705
- */ static wrapInline(current, tag, editor) {
2706
- let tmp, first = current, last = current;
2704
+ * Wrap all inline next siblings
2705
+ */ static wrapNextInline(current, tag, editor) {
2706
+ let tmp;
2707
+ const first = current;
2708
+ let last = current;
2707
2709
  editor.s.save();
2708
2710
  let needFindNext = false;
2709
- do {
2710
- needFindNext = false;
2711
- tmp = first.previousSibling;
2712
- if (tmp && !Dom.isBlock(tmp)) {
2713
- needFindNext = true;
2714
- first = tmp;
2715
- }
2716
- }while (needFindNext)
2717
2711
  do {
2718
2712
  needFindNext = false;
2719
2713
  tmp = last.nextSibling;
2720
- if (tmp && !Dom.isBlock(tmp)) {
2714
+ if (tmp && !Dom.isBlock(tmp) && !Dom.isTag(tmp, 'br')) {
2721
2715
  needFindNext = true;
2722
2716
  last = tmp;
2723
2717
  }
2724
2718
  }while (needFindNext)
2719
+ return Dom.__wrapElements(tag, editor, first, last);
2720
+ }
2721
+ static __wrapElements(tag, editor, first, last) {
2725
2722
  const wrapper = (0,_helpers_checker_index_js__WEBPACK_IMPORTED_MODULE_2__/* .isString */ .Kg)(tag) ? editor.createInside.element(tag) : tag;
2726
2723
  if (first.parentNode) {
2727
2724
  first.parentNode.insertBefore(wrapper, first);
@@ -2738,6 +2735,32 @@ function getPropertyDescriptor(obj, prop) {
2738
2735
  editor.s.restore();
2739
2736
  return wrapper;
2740
2737
  }
2738
+ /**
2739
+ * Wrap all inline siblings
2740
+ */ static wrapInline(current, tag, editor) {
2741
+ let tmp;
2742
+ let first = current;
2743
+ let last = current;
2744
+ editor.s.save();
2745
+ let needFindNext = false;
2746
+ do {
2747
+ needFindNext = false;
2748
+ tmp = first.previousSibling;
2749
+ if (tmp && !Dom.isBlock(tmp)) {
2750
+ needFindNext = true;
2751
+ first = tmp;
2752
+ }
2753
+ }while (needFindNext)
2754
+ do {
2755
+ needFindNext = false;
2756
+ tmp = last.nextSibling;
2757
+ if (tmp && !Dom.isBlock(tmp)) {
2758
+ needFindNext = true;
2759
+ last = tmp;
2760
+ }
2761
+ }while (needFindNext)
2762
+ return Dom.__wrapElements(tag, editor, first, last);
2763
+ }
2741
2764
  /**
2742
2765
  * Wrap node inside another node
2743
2766
  */ static wrap(current, tag, create) {
@@ -30792,10 +30815,18 @@ __webpack_require__.r(__webpack_exports__);
30792
30815
  /**
30793
30816
  * @private
30794
30817
  */ function isRemovableNode(jodit, node, current, allow, deny) {
30795
- if (!_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__/* .Dom */ .J.isText(node) && (allow && !allow[node.nodeName] || deny && deny[node.nodeName])) {
30796
- return true;
30818
+ if (!_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__/* .Dom */ .J.isText(node)) {
30819
+ if (allow && !allow[node.nodeName]) {
30820
+ return true;
30821
+ }
30822
+ if (!allow && deny && deny[node.nodeName]) {
30823
+ return true;
30824
+ }
30797
30825
  }
30798
- return jodit.o.cleanHTML.removeEmptyElements && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__/* .Dom */ .J.isElement(node) && node.nodeName.match(_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_INLINE) != null && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__/* .Dom */ .J.isTemporary(node) && (0,_core_helpers_string_trim_js__WEBPACK_IMPORTED_MODULE_2__/* .trim */ .Bq)(node.innerHTML).length === 0 && (current == null || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__/* .Dom */ .J.isOrContains(node, current));
30826
+ if (!jodit.o.cleanHTML.removeEmptyElements) {
30827
+ return false;
30828
+ }
30829
+ return _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__/* .Dom */ .J.isElement(node) && node.nodeName.match(_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_INLINE) != null && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__/* .Dom */ .J.isTemporary(node) && (0,_core_helpers_string_trim_js__WEBPACK_IMPORTED_MODULE_2__/* .trim */ .Bq)(node.innerHTML).length === 0 && (current == null || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__/* .Dom */ .J.isOrContains(node, current));
30799
30830
  }
30800
30831
 
30801
30832
 
@@ -35816,7 +35847,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__/* .Config */ .T.prototype.indentMargin =
35816
35847
  /* harmony import */ var _core_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(59230);
35817
35848
  /* harmony import */ var _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(50036);
35818
35849
  /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29964);
35819
- /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(30057);
35850
+ /* harmony import */ var _core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(33179);
35820
35851
  /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(10589);
35821
35852
  /* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(73686);
35822
35853
  /*!
@@ -35829,6 +35860,22 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__/* .Config */ .T.prototype.indentMargin =
35829
35860
 
35830
35861
 
35831
35862
 
35863
+ const applyIndentToBox = (processedElements, currentBox, editor, command)=>{
35864
+ if (!currentBox) {
35865
+ return;
35866
+ }
35867
+ if (processedElements.has(currentBox)) {
35868
+ return;
35869
+ }
35870
+ const key = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_5__/* .getKey */ .i)(editor.o.direction, currentBox);
35871
+ processedElements.add(currentBox);
35872
+ let value = currentBox.style[key] ? parseInt(currentBox.style[key], 10) : 0;
35873
+ value += editor.o.indentMargin * (command === 'outdent' ? -1 : 1);
35874
+ currentBox.style[key] = value > 0 ? value + 'px' : '';
35875
+ if (!(0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_3__/* .attr */ .CF)(currentBox, 'style')) {
35876
+ (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_3__/* .attr */ .CF)(currentBox, 'style', null);
35877
+ }
35878
+ };
35832
35879
  /**
35833
35880
  * Indents the line containing the selection or insertion point.
35834
35881
  */ function indent(editor) {
@@ -35839,44 +35886,43 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__/* .Config */ .T.prototype.indentMargin =
35839
35886
  name: 'outdent',
35840
35887
  group: 'indent'
35841
35888
  });
35842
- const callback = (command)=>{
35843
- const processedElements = [];
35889
+ const indentCommand = (command)=>{
35890
+ const processedElements = new Set();
35891
+ const { enter, enterBlock } = editor.o;
35892
+ const isBrMode = enter.toLowerCase() === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.BR;
35893
+ const current = editor.s.current();
35894
+ if (isBrMode && editor.s.isCollapsed()) {
35895
+ if (current) {
35896
+ const box = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__/* .Dom */ .J.wrapNextInline(current, enterBlock, editor);
35897
+ applyIndentToBox(processedElements, box, editor, command);
35898
+ return false;
35899
+ }
35900
+ }
35844
35901
  editor.s.eachSelection((current)=>{
35845
35902
  editor.s.save();
35846
35903
  let currentBox = current ? _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__/* .Dom */ .J.up(current, _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__/* .Dom */ .J.isBlock, editor.editor) : false;
35847
- const { enter } = editor.o;
35848
35904
  if (!currentBox && current) {
35849
- currentBox = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__/* .Dom */ .J.wrapInline(current, enter !== _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.BR ? enter : _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.PARAGRAPH, editor);
35905
+ currentBox = (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_3__/* .call */ .T1)(!isBrMode ? _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__/* .Dom */ .J.wrapInline : _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__/* .Dom */ .J.wrapNextInline, current, !isBrMode ? enter.toLowerCase() : enterBlock, editor);
35850
35906
  }
35851
35907
  if (!currentBox) {
35852
35908
  editor.s.restore();
35853
35909
  return false;
35854
35910
  }
35855
- const alreadyIndented = processedElements.includes(currentBox);
35856
- if (currentBox && !alreadyIndented) {
35857
- const key = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_5__/* .getKey */ .i)(editor.o.direction, currentBox);
35858
- processedElements.push(currentBox);
35859
- let value = currentBox.style[key] ? parseInt(currentBox.style[key], 10) : 0;
35860
- value += editor.o.indentMargin * (command === 'outdent' ? -1 : 1);
35861
- currentBox.style[key] = value > 0 ? value + 'px' : '';
35862
- if (!(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(currentBox, 'style')) {
35863
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(currentBox, 'style', null);
35864
- }
35865
- }
35911
+ applyIndentToBox(processedElements, currentBox, editor, command);
35866
35912
  editor.s.restore();
35867
35913
  });
35868
35914
  editor.synchronizeValues();
35869
35915
  return false;
35870
35916
  };
35871
35917
  editor.registerCommand('indent', {
35872
- exec: callback,
35918
+ exec: indentCommand,
35873
35919
  hotkeys: [
35874
35920
  'ctrl+]',
35875
35921
  'cmd+]'
35876
35922
  ]
35877
35923
  });
35878
35924
  editor.registerCommand('outdent', {
35879
- exec: callback,
35925
+ exec: indentCommand,
35880
35926
  hotkeys: [
35881
35927
  'ctrl+[',
35882
35928
  'cmd+['