jodit-pro 4.18.13 → 4.18.15

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 (342) hide show
  1. package/es2015/jodit.css +1 -1
  2. package/es2015/jodit.fat.min.js +5 -5
  3. package/es2015/jodit.js +331 -73
  4. package/es2015/jodit.min.js +9 -9
  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.css +1 -1
  9. package/es2015/plugins/autocomplete/autocomplete.js +1 -1
  10. package/es2015/plugins/autocomplete/autocomplete.min.js +1 -1
  11. package/es2015/plugins/backup/backup.css +1 -1
  12. package/es2015/plugins/backup/backup.js +1 -1
  13. package/es2015/plugins/backup/backup.min.js +1 -1
  14. package/es2015/plugins/button-generator/button-generator.css +1 -1
  15. package/es2015/plugins/button-generator/button-generator.js +1 -1
  16. package/es2015/plugins/button-generator/button-generator.min.js +1 -1
  17. package/es2015/plugins/change-case/change-case.js +1 -1
  18. package/es2015/plugins/change-case/change-case.min.js +1 -1
  19. package/es2015/plugins/chart/chart.css +1 -1
  20. package/es2015/plugins/chart/chart.js +1 -1
  21. package/es2015/plugins/chart/chart.min.js +1 -1
  22. package/es2015/plugins/color-picker/color-picker.css +1 -1
  23. package/es2015/plugins/color-picker/color-picker.js +1 -1
  24. package/es2015/plugins/color-picker/color-picker.min.js +1 -1
  25. package/es2015/plugins/emoji/emoji.css +1 -1
  26. package/es2015/plugins/emoji/emoji.js +1 -1
  27. package/es2015/plugins/emoji/emoji.min.js +1 -1
  28. package/es2015/plugins/export-docs/export-docs.js +1 -1
  29. package/es2015/plugins/export-docs/export-docs.min.js +1 -1
  30. package/es2015/plugins/finder/finder.css +1 -1
  31. package/es2015/plugins/finder/finder.js +1 -1
  32. package/es2015/plugins/finder/finder.min.js +1 -1
  33. package/es2015/plugins/google-maps/google-maps.css +1 -1
  34. package/es2015/plugins/google-maps/google-maps.js +1 -1
  35. package/es2015/plugins/google-maps/google-maps.min.js +1 -1
  36. package/es2015/plugins/google-search/google-search.js +1 -1
  37. package/es2015/plugins/google-search/google-search.min.js +1 -1
  38. package/es2015/plugins/highlight-signature/highlight-signature.js +1 -1
  39. package/es2015/plugins/highlight-signature/highlight-signature.min.js +1 -1
  40. package/es2015/plugins/iframe-editor/iframe-editor.css +1 -1
  41. package/es2015/plugins/iframe-editor/iframe-editor.js +1 -1
  42. package/es2015/plugins/iframe-editor/iframe-editor.min.js +1 -1
  43. package/es2015/plugins/image-editor-pro/image-editor-pro.css +1 -1
  44. package/es2015/plugins/image-editor-pro/image-editor-pro.js +1 -1
  45. package/es2015/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  46. package/es2015/plugins/keyboard/keyboard.css +1 -1
  47. package/es2015/plugins/keyboard/keyboard.js +1 -1
  48. package/es2015/plugins/keyboard/keyboard.min.js +1 -1
  49. package/es2015/plugins/math/math.css +1 -1
  50. package/es2015/plugins/math/math.js +1 -1
  51. package/es2015/plugins/math/math.min.js +1 -1
  52. package/es2015/plugins/mobile-view/mobile-view.js +1 -1
  53. package/es2015/plugins/mobile-view/mobile-view.min.js +1 -1
  54. package/es2015/plugins/page-break/page-break.js +1 -1
  55. package/es2015/plugins/page-break/page-break.min.js +1 -1
  56. package/es2015/plugins/paste-code/paste-code.css +1 -1
  57. package/es2015/plugins/paste-code/paste-code.js +1 -1
  58. package/es2015/plugins/paste-code/paste-code.min.js +1 -1
  59. package/es2015/plugins/paste-from-word/paste-from-word.js +1 -1
  60. package/es2015/plugins/paste-from-word/paste-from-word.min.js +1 -1
  61. package/es2015/plugins/show-blocks/show-blocks.js +1 -1
  62. package/es2015/plugins/show-blocks/show-blocks.min.js +1 -1
  63. package/es2015/plugins/style/style.css +1 -1
  64. package/es2015/plugins/style/style.js +1 -1
  65. package/es2015/plugins/style/style.min.js +1 -1
  66. package/es2015/plugins/templates/templates.css +1 -1
  67. package/es2015/plugins/templates/templates.js +1 -1
  68. package/es2015/plugins/templates/templates.min.js +1 -1
  69. package/es2015/plugins/todo-list/todo-list.css +1 -1
  70. package/es2015/plugins/todo-list/todo-list.js +1 -1
  71. package/es2015/plugins/todo-list/todo-list.min.js +1 -1
  72. package/es2015/plugins/translate/translate.css +1 -1
  73. package/es2015/plugins/translate/translate.js +1 -1
  74. package/es2015/plugins/translate/translate.min.js +1 -1
  75. package/es2015/plugins/tune-block/tune-block.css +1 -1
  76. package/es2015/plugins/tune-block/tune-block.js +1 -1
  77. package/es2015/plugins/tune-block/tune-block.min.js +1 -1
  78. package/es2018/jodit.fat.min.js +13 -13
  79. package/es2018/jodit.min.js +5 -5
  80. package/es2018/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  81. package/es2018/plugins/autocomplete/autocomplete.min.js +1 -1
  82. package/es2018/plugins/backup/backup.min.js +1 -1
  83. package/es2018/plugins/button-generator/button-generator.min.js +1 -1
  84. package/es2018/plugins/change-case/change-case.min.js +1 -1
  85. package/es2018/plugins/chart/chart.min.js +1 -1
  86. package/es2018/plugins/color-picker/color-picker.min.js +1 -1
  87. package/es2018/plugins/emoji/emoji.min.js +1 -1
  88. package/es2018/plugins/export-docs/export-docs.min.js +1 -1
  89. package/es2018/plugins/finder/finder.min.js +1 -1
  90. package/es2018/plugins/google-maps/google-maps.min.js +1 -1
  91. package/es2018/plugins/google-search/google-search.min.js +1 -1
  92. package/es2018/plugins/highlight-signature/highlight-signature.min.js +1 -1
  93. package/es2018/plugins/iframe-editor/iframe-editor.min.js +1 -1
  94. package/es2018/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  95. package/es2018/plugins/keyboard/keyboard.min.js +1 -1
  96. package/es2018/plugins/math/math.min.js +1 -1
  97. package/es2018/plugins/mobile-view/mobile-view.min.js +1 -1
  98. package/es2018/plugins/page-break/page-break.min.js +1 -1
  99. package/es2018/plugins/paste-code/paste-code.min.js +1 -1
  100. package/es2018/plugins/paste-from-word/paste-from-word.min.js +1 -1
  101. package/es2018/plugins/show-blocks/show-blocks.min.js +1 -1
  102. package/es2018/plugins/style/style.min.js +1 -1
  103. package/es2018/plugins/templates/templates.min.js +1 -1
  104. package/es2018/plugins/todo-list/todo-list.min.js +1 -1
  105. package/es2018/plugins/translate/translate.min.js +1 -1
  106. package/es2018/plugins/tune-block/tune-block.min.js +1 -1
  107. package/es2021/jodit.css +1 -1
  108. package/es2021/jodit.fat.min.js +14 -14
  109. package/es2021/jodit.js +331 -73
  110. package/es2021/jodit.min.js +6 -6
  111. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  112. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  113. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  114. package/es2021/plugins/autocomplete/autocomplete.css +1 -1
  115. package/es2021/plugins/autocomplete/autocomplete.js +1 -1
  116. package/es2021/plugins/autocomplete/autocomplete.min.js +1 -1
  117. package/es2021/plugins/backup/backup.css +1 -1
  118. package/es2021/plugins/backup/backup.js +1 -1
  119. package/es2021/plugins/backup/backup.min.js +1 -1
  120. package/es2021/plugins/button-generator/button-generator.css +1 -1
  121. package/es2021/plugins/button-generator/button-generator.js +1 -1
  122. package/es2021/plugins/button-generator/button-generator.min.js +1 -1
  123. package/es2021/plugins/change-case/change-case.js +1 -1
  124. package/es2021/plugins/change-case/change-case.min.js +1 -1
  125. package/es2021/plugins/chart/chart.css +1 -1
  126. package/es2021/plugins/chart/chart.js +1 -1
  127. package/es2021/plugins/chart/chart.min.js +1 -1
  128. package/es2021/plugins/color-picker/color-picker.css +1 -1
  129. package/es2021/plugins/color-picker/color-picker.js +1 -1
  130. package/es2021/plugins/color-picker/color-picker.min.js +1 -1
  131. package/es2021/plugins/emoji/emoji.css +1 -1
  132. package/es2021/plugins/emoji/emoji.js +1 -1
  133. package/es2021/plugins/emoji/emoji.min.js +1 -1
  134. package/es2021/plugins/export-docs/export-docs.js +1 -1
  135. package/es2021/plugins/export-docs/export-docs.min.js +1 -1
  136. package/es2021/plugins/finder/finder.css +1 -1
  137. package/es2021/plugins/finder/finder.js +1 -1
  138. package/es2021/plugins/finder/finder.min.js +1 -1
  139. package/es2021/plugins/google-maps/google-maps.css +1 -1
  140. package/es2021/plugins/google-maps/google-maps.js +1 -1
  141. package/es2021/plugins/google-maps/google-maps.min.js +1 -1
  142. package/es2021/plugins/google-search/google-search.js +1 -1
  143. package/es2021/plugins/google-search/google-search.min.js +1 -1
  144. package/es2021/plugins/highlight-signature/highlight-signature.js +1 -1
  145. package/es2021/plugins/highlight-signature/highlight-signature.min.js +1 -1
  146. package/es2021/plugins/iframe-editor/iframe-editor.css +1 -1
  147. package/es2021/plugins/iframe-editor/iframe-editor.js +1 -1
  148. package/es2021/plugins/iframe-editor/iframe-editor.min.js +1 -1
  149. package/es2021/plugins/image-editor-pro/image-editor-pro.css +1 -1
  150. package/es2021/plugins/image-editor-pro/image-editor-pro.js +1 -1
  151. package/es2021/plugins/image-editor-pro/image-editor-pro.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/math/math.css +1 -1
  156. package/es2021/plugins/math/math.js +1 -1
  157. package/es2021/plugins/math/math.min.js +1 -1
  158. package/es2021/plugins/mobile-view/mobile-view.js +1 -1
  159. package/es2021/plugins/mobile-view/mobile-view.min.js +1 -1
  160. package/es2021/plugins/page-break/page-break.js +1 -1
  161. package/es2021/plugins/page-break/page-break.min.js +1 -1
  162. package/es2021/plugins/paste-code/paste-code.css +1 -1
  163. package/es2021/plugins/paste-code/paste-code.js +1 -1
  164. package/es2021/plugins/paste-code/paste-code.min.js +1 -1
  165. package/es2021/plugins/paste-from-word/paste-from-word.js +1 -1
  166. package/es2021/plugins/paste-from-word/paste-from-word.min.js +1 -1
  167. package/es2021/plugins/show-blocks/show-blocks.js +1 -1
  168. package/es2021/plugins/show-blocks/show-blocks.min.js +1 -1
  169. package/es2021/plugins/style/style.css +1 -1
  170. package/es2021/plugins/style/style.js +1 -1
  171. package/es2021/plugins/style/style.min.js +1 -1
  172. package/es2021/plugins/templates/templates.css +1 -1
  173. package/es2021/plugins/templates/templates.js +1 -1
  174. package/es2021/plugins/templates/templates.min.js +1 -1
  175. package/es2021/plugins/todo-list/todo-list.css +1 -1
  176. package/es2021/plugins/todo-list/todo-list.js +1 -1
  177. package/es2021/plugins/todo-list/todo-list.min.js +1 -1
  178. package/es2021/plugins/translate/translate.css +1 -1
  179. package/es2021/plugins/translate/translate.js +1 -1
  180. package/es2021/plugins/translate/translate.min.js +1 -1
  181. package/es2021/plugins/tune-block/tune-block.css +1 -1
  182. package/es2021/plugins/tune-block/tune-block.js +1 -1
  183. package/es2021/plugins/tune-block/tune-block.min.js +1 -1
  184. package/es2021.en/jodit.css +1 -1
  185. package/es2021.en/jodit.fat.min.js +6 -6
  186. package/es2021.en/jodit.js +331 -73
  187. package/es2021.en/jodit.min.js +9 -9
  188. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  189. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  190. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  191. package/es2021.en/plugins/autocomplete/autocomplete.css +1 -1
  192. package/es2021.en/plugins/autocomplete/autocomplete.js +1 -1
  193. package/es2021.en/plugins/autocomplete/autocomplete.min.js +1 -1
  194. package/es2021.en/plugins/backup/backup.css +1 -1
  195. package/es2021.en/plugins/backup/backup.js +1 -1
  196. package/es2021.en/plugins/backup/backup.min.js +1 -1
  197. package/es2021.en/plugins/button-generator/button-generator.css +1 -1
  198. package/es2021.en/plugins/button-generator/button-generator.js +1 -1
  199. package/es2021.en/plugins/button-generator/button-generator.min.js +1 -1
  200. package/es2021.en/plugins/change-case/change-case.js +1 -1
  201. package/es2021.en/plugins/change-case/change-case.min.js +1 -1
  202. package/es2021.en/plugins/chart/chart.css +1 -1
  203. package/es2021.en/plugins/chart/chart.js +1 -1
  204. package/es2021.en/plugins/chart/chart.min.js +1 -1
  205. package/es2021.en/plugins/color-picker/color-picker.css +1 -1
  206. package/es2021.en/plugins/color-picker/color-picker.js +1 -1
  207. package/es2021.en/plugins/color-picker/color-picker.min.js +1 -1
  208. package/es2021.en/plugins/emoji/emoji.css +1 -1
  209. package/es2021.en/plugins/emoji/emoji.js +1 -1
  210. package/es2021.en/plugins/emoji/emoji.min.js +1 -1
  211. package/es2021.en/plugins/export-docs/export-docs.js +1 -1
  212. package/es2021.en/plugins/export-docs/export-docs.min.js +1 -1
  213. package/es2021.en/plugins/finder/finder.css +1 -1
  214. package/es2021.en/plugins/finder/finder.js +1 -1
  215. package/es2021.en/plugins/finder/finder.min.js +1 -1
  216. package/es2021.en/plugins/google-maps/google-maps.css +1 -1
  217. package/es2021.en/plugins/google-maps/google-maps.js +1 -1
  218. package/es2021.en/plugins/google-maps/google-maps.min.js +1 -1
  219. package/es2021.en/plugins/google-search/google-search.js +1 -1
  220. package/es2021.en/plugins/google-search/google-search.min.js +1 -1
  221. package/es2021.en/plugins/highlight-signature/highlight-signature.js +1 -1
  222. package/es2021.en/plugins/highlight-signature/highlight-signature.min.js +1 -1
  223. package/es2021.en/plugins/iframe-editor/iframe-editor.css +1 -1
  224. package/es2021.en/plugins/iframe-editor/iframe-editor.js +1 -1
  225. package/es2021.en/plugins/iframe-editor/iframe-editor.min.js +1 -1
  226. package/es2021.en/plugins/image-editor-pro/image-editor-pro.css +1 -1
  227. package/es2021.en/plugins/image-editor-pro/image-editor-pro.js +1 -1
  228. package/es2021.en/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  229. package/es2021.en/plugins/keyboard/keyboard.css +1 -1
  230. package/es2021.en/plugins/keyboard/keyboard.js +1 -1
  231. package/es2021.en/plugins/keyboard/keyboard.min.js +1 -1
  232. package/es2021.en/plugins/math/math.css +1 -1
  233. package/es2021.en/plugins/math/math.js +1 -1
  234. package/es2021.en/plugins/math/math.min.js +1 -1
  235. package/es2021.en/plugins/mobile-view/mobile-view.js +1 -1
  236. package/es2021.en/plugins/mobile-view/mobile-view.min.js +1 -1
  237. package/es2021.en/plugins/page-break/page-break.js +1 -1
  238. package/es2021.en/plugins/page-break/page-break.min.js +1 -1
  239. package/es2021.en/plugins/paste-code/paste-code.css +1 -1
  240. package/es2021.en/plugins/paste-code/paste-code.js +1 -1
  241. package/es2021.en/plugins/paste-code/paste-code.min.js +1 -1
  242. package/es2021.en/plugins/paste-from-word/paste-from-word.js +1 -1
  243. package/es2021.en/plugins/paste-from-word/paste-from-word.min.js +1 -1
  244. package/es2021.en/plugins/show-blocks/show-blocks.js +1 -1
  245. package/es2021.en/plugins/show-blocks/show-blocks.min.js +1 -1
  246. package/es2021.en/plugins/style/style.css +1 -1
  247. package/es2021.en/plugins/style/style.js +1 -1
  248. package/es2021.en/plugins/style/style.min.js +1 -1
  249. package/es2021.en/plugins/templates/templates.css +1 -1
  250. package/es2021.en/plugins/templates/templates.js +1 -1
  251. package/es2021.en/plugins/templates/templates.min.js +1 -1
  252. package/es2021.en/plugins/todo-list/todo-list.css +1 -1
  253. package/es2021.en/plugins/todo-list/todo-list.js +1 -1
  254. package/es2021.en/plugins/todo-list/todo-list.min.js +1 -1
  255. package/es2021.en/plugins/translate/translate.css +1 -1
  256. package/es2021.en/plugins/translate/translate.js +1 -1
  257. package/es2021.en/plugins/translate/translate.min.js +1 -1
  258. package/es2021.en/plugins/tune-block/tune-block.css +1 -1
  259. package/es2021.en/plugins/tune-block/tune-block.js +1 -1
  260. package/es2021.en/plugins/tune-block/tune-block.min.js +1 -1
  261. package/es5/jodit.css +2 -2
  262. package/es5/jodit.fat.min.js +2 -2
  263. package/es5/jodit.js +378 -74
  264. package/es5/jodit.min.css +2 -2
  265. package/es5/jodit.min.js +2 -2
  266. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  267. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  268. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  269. package/es5/plugins/autocomplete/autocomplete.css +1 -1
  270. package/es5/plugins/autocomplete/autocomplete.js +1 -1
  271. package/es5/plugins/autocomplete/autocomplete.min.js +1 -1
  272. package/es5/plugins/backup/backup.css +1 -1
  273. package/es5/plugins/backup/backup.js +1 -1
  274. package/es5/plugins/backup/backup.min.js +1 -1
  275. package/es5/plugins/button-generator/button-generator.css +1 -1
  276. package/es5/plugins/button-generator/button-generator.js +1 -1
  277. package/es5/plugins/button-generator/button-generator.min.js +1 -1
  278. package/es5/plugins/change-case/change-case.js +1 -1
  279. package/es5/plugins/change-case/change-case.min.js +1 -1
  280. package/es5/plugins/chart/chart.css +1 -1
  281. package/es5/plugins/chart/chart.js +1 -1
  282. package/es5/plugins/chart/chart.min.js +1 -1
  283. package/es5/plugins/color-picker/color-picker.css +1 -1
  284. package/es5/plugins/color-picker/color-picker.js +1 -1
  285. package/es5/plugins/color-picker/color-picker.min.js +1 -1
  286. package/es5/plugins/emoji/emoji.css +1 -1
  287. package/es5/plugins/emoji/emoji.js +1 -1
  288. package/es5/plugins/emoji/emoji.min.js +1 -1
  289. package/es5/plugins/export-docs/export-docs.js +1 -1
  290. package/es5/plugins/export-docs/export-docs.min.js +1 -1
  291. package/es5/plugins/finder/finder.css +1 -1
  292. package/es5/plugins/finder/finder.js +1 -1
  293. package/es5/plugins/finder/finder.min.js +1 -1
  294. package/es5/plugins/google-maps/google-maps.css +1 -1
  295. package/es5/plugins/google-maps/google-maps.js +1 -1
  296. package/es5/plugins/google-maps/google-maps.min.js +1 -1
  297. package/es5/plugins/google-search/google-search.js +1 -1
  298. package/es5/plugins/google-search/google-search.min.js +1 -1
  299. package/es5/plugins/highlight-signature/highlight-signature.js +1 -1
  300. package/es5/plugins/highlight-signature/highlight-signature.min.js +1 -1
  301. package/es5/plugins/iframe-editor/iframe-editor.css +1 -1
  302. package/es5/plugins/iframe-editor/iframe-editor.js +1 -1
  303. package/es5/plugins/iframe-editor/iframe-editor.min.js +1 -1
  304. package/es5/plugins/image-editor-pro/image-editor-pro.css +1 -1
  305. package/es5/plugins/image-editor-pro/image-editor-pro.js +1 -1
  306. package/es5/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  307. package/es5/plugins/keyboard/keyboard.css +1 -1
  308. package/es5/plugins/keyboard/keyboard.js +1 -1
  309. package/es5/plugins/keyboard/keyboard.min.js +1 -1
  310. package/es5/plugins/math/math.css +1 -1
  311. package/es5/plugins/math/math.js +1 -1
  312. package/es5/plugins/math/math.min.js +1 -1
  313. package/es5/plugins/mobile-view/mobile-view.js +1 -1
  314. package/es5/plugins/mobile-view/mobile-view.min.js +1 -1
  315. package/es5/plugins/page-break/page-break.js +1 -1
  316. package/es5/plugins/page-break/page-break.min.js +1 -1
  317. package/es5/plugins/paste-code/paste-code.css +1 -1
  318. package/es5/plugins/paste-code/paste-code.js +1 -1
  319. package/es5/plugins/paste-code/paste-code.min.js +1 -1
  320. package/es5/plugins/paste-from-word/paste-from-word.js +1 -1
  321. package/es5/plugins/paste-from-word/paste-from-word.min.js +1 -1
  322. package/es5/plugins/show-blocks/show-blocks.js +1 -1
  323. package/es5/plugins/show-blocks/show-blocks.min.js +1 -1
  324. package/es5/plugins/style/style.css +1 -1
  325. package/es5/plugins/style/style.js +1 -1
  326. package/es5/plugins/style/style.min.js +1 -1
  327. package/es5/plugins/templates/templates.css +1 -1
  328. package/es5/plugins/templates/templates.js +1 -1
  329. package/es5/plugins/templates/templates.min.js +1 -1
  330. package/es5/plugins/todo-list/todo-list.css +1 -1
  331. package/es5/plugins/todo-list/todo-list.js +1 -1
  332. package/es5/plugins/todo-list/todo-list.min.js +1 -1
  333. package/es5/plugins/translate/translate.css +1 -1
  334. package/es5/plugins/translate/translate.js +1 -1
  335. package/es5/plugins/translate/translate.min.js +1 -1
  336. package/es5/plugins/tune-block/tune-block.css +1 -1
  337. package/es5/plugins/tune-block/tune-block.js +1 -1
  338. package/es5/plugins/tune-block/tune-block.min.js +1 -1
  339. package/es5/polyfills.fat.min.js +1 -1
  340. package/es5/polyfills.js +1 -1
  341. package/es5/polyfills.min.js +1 -1
  342. package/package.json +1 -1
package/es5/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.18.13
4
+ * Version: v4.18.15
5
5
  * Url: https://xdsoft.net/jodit/pro/
6
6
  * License(s): SEE LICENSE IN LICENSE.md
7
7
  */
@@ -1666,8 +1666,9 @@ var Async = /*#__PURE__*/ function() {
1666
1666
  this.__controllers.forEach(function(controller) {
1667
1667
  return controller.abort();
1668
1668
  });
1669
- this.timers.forEach(function(key) {
1670
- return (0,_helpers_async_index_js__WEBPACK_IMPORTED_MODULE_1__.clearTimeout)(_this.timers.get(key));
1669
+ // A labelled timer is kept under its label, so clear by the value
1670
+ this.timers.forEach(function(timer) {
1671
+ return (0,_helpers_async_index_js__WEBPACK_IMPORTED_MODULE_1__.clearTimeout)(timer);
1671
1672
  });
1672
1673
  this.timers.clear();
1673
1674
  this.promisesRejections.forEach(function(reject) {
@@ -2331,7 +2332,7 @@ function _unsupported_iterable_to_array(o, minLen) {
2331
2332
  if (n === "Map" || n === "Set") return Array.from(n);
2332
2333
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
2333
2334
  }
2334
- var APP_VERSION = "4.18.13";
2335
+ var APP_VERSION = "4.18.15";
2335
2336
  // prettier-ignore
2336
2337
  var ES = "es5";
2337
2338
  var IS_ES_MODERN = false;
@@ -8922,8 +8923,10 @@ function normalizeCssValue(key, value) {
8922
8923
  * ancestor's top-left corner. The returned offset should be subtracted from
8923
8924
  * the desired viewport coordinates before applying them.
8924
8925
  *
8925
- * Returns `{ x: 0, y: 0 }` when no such ancestor exists (the common case), so
8926
- * call sites keep their previous behaviour unchanged.
8926
+ * Without such an ancestor the containing block is the layout viewport. Its
8927
+ * offset is `{ x: 0, y: 0 }` in most browsers, but WebKit measures client
8928
+ * rects from the visual viewport, so once the page is pinch-zoomed and panned
8929
+ * the layout viewport starts above and to the left of the client origin.
8927
8930
  */ function getFixedPositionOffset(elm) {
8928
8931
  var _a;
8929
8932
  var win = (_a = elm.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView;
@@ -8938,6 +8941,15 @@ function normalizeCssValue(key, value) {
8938
8941
  }
8939
8942
  node = node.parentElement;
8940
8943
  }
8944
+ var vv = win === null || win === void 0 ? void 0 : win.visualViewport;
8945
+ // WebKit's `scrollX`/`scrollY` follow the visual viewport too (truncated),
8946
+ // where Blink's and Gecko's follow the layout viewport
8947
+ if (win && vv && (vv.offsetLeft || vv.offsetTop) && Math.abs(vv.pageLeft - win.scrollX) < 1 && Math.abs(vv.pageTop - win.scrollY) < 1) {
8948
+ return {
8949
+ x: -Math.round(vv.offsetLeft),
8950
+ y: -Math.round(vv.offsetTop)
8951
+ };
8952
+ }
8941
8953
  return {
8942
8954
  x: 0,
8943
8955
  y: 0
@@ -45595,12 +45607,13 @@ _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_3__.Icon.set('about', _about_svg_js__W
45595
45607
  /***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) {
45596
45608
 
45597
45609
  /* unused harmony export addNewLine */
45598
- /* harmony import */ var _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(65478);
45599
- /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(580);
45600
- /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(21537);
45601
- /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(41180);
45602
- /* harmony import */ var _modules_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(41409);
45603
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(4604);
45610
+ /* harmony import */ var _core_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82758);
45611
+ /* harmony import */ var _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65478);
45612
+ /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(580);
45613
+ /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21537);
45614
+ /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(41180);
45615
+ /* harmony import */ var _modules_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(41409);
45616
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(4604);
45604
45617
  function _assert_this_initialized(self) {
45605
45618
  if (self === void 0) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
45606
45619
  return self;
@@ -45727,6 +45740,7 @@ function _wrap_native_super(Class) {
45727
45740
 
45728
45741
 
45729
45742
 
45743
+
45730
45744
  var ns = 'addnewline';
45731
45745
  /**
45732
45746
  * Create helper for adding new paragraph(Jodit.defaultOptions.enter tag) before iframe, table or image
@@ -45737,7 +45751,7 @@ var ns = 'addnewline';
45737
45751
  _class_call_check(this, addNewLine);
45738
45752
  var _this;
45739
45753
  _this = _call_super(this, addNewLine, arguments);
45740
- _this.__line = _this.j.c.fromHTML('<div role="button" tabindex="-1" title="'.concat(_this.j.i18n('Break'), '" class="jodit-add-new-line"><span>').concat(_modules_index_js__WEBPACK_IMPORTED_MODULE_4__.Icon.get('enter'), "</span></div>"));
45754
+ _this.__line = _this.j.c.fromHTML('<div role="button" tabindex="-1" title="'.concat(_this.j.i18n('Break'), '" class="jodit-add-new-line"><span>').concat(_modules_index_js__WEBPACK_IMPORTED_MODULE_5__.Icon.get('enter'), "</span></div>"));
45741
45755
  _this.__isMatchedTag = function(node) {
45742
45756
  return Boolean(node && _this.j.o.addNewLineTagsTriggers.includes(node.nodeName.toLowerCase()));
45743
45757
  };
@@ -45751,26 +45765,26 @@ var ns = 'addnewline';
45751
45765
  _this.__isShown = false;
45752
45766
  _this.j.async.clearTimeout(_this.__timeout);
45753
45767
  _this.__lineInFocus = false;
45754
- _modules_index_js__WEBPACK_IMPORTED_MODULE_4__.Dom.safeRemove(_this.__line);
45768
+ _modules_index_js__WEBPACK_IMPORTED_MODULE_5__.Dom.safeRemove(_this.__line);
45755
45769
  _this.__line.style.setProperty('--jd-anl-handle-offset', '0');
45756
45770
  };
45757
45771
  _this.__canGetFocus = function(elm) {
45758
- return elm != null && _modules_index_js__WEBPACK_IMPORTED_MODULE_4__.Dom.isBlock(elm) && !/^(img|table|iframe|hr)$/i.test(elm.nodeName);
45772
+ return elm != null && _modules_index_js__WEBPACK_IMPORTED_MODULE_5__.Dom.isBlock(elm) && !/^(img|table|iframe|hr)$/i.test(elm.nodeName);
45759
45773
  };
45760
45774
  _this.__onClickLine = function(e) {
45761
45775
  var editor = _this.j;
45762
45776
  var p = editor.createInside.element(editor.o.enter);
45763
45777
  if (_this.__isBeforeContent && _this.__current && _this.__current.parentNode) {
45764
45778
  if (_this.__current === editor.editor) {
45765
- _modules_index_js__WEBPACK_IMPORTED_MODULE_4__.Dom.prepend(editor.editor, p);
45779
+ _modules_index_js__WEBPACK_IMPORTED_MODULE_5__.Dom.prepend(editor.editor, p);
45766
45780
  } else {
45767
- _modules_index_js__WEBPACK_IMPORTED_MODULE_4__.Dom.before(_this.__current, p);
45781
+ _modules_index_js__WEBPACK_IMPORTED_MODULE_5__.Dom.before(_this.__current, p);
45768
45782
  }
45769
45783
  } else {
45770
- _modules_index_js__WEBPACK_IMPORTED_MODULE_4__.Dom.append(editor.editor, p);
45784
+ _modules_index_js__WEBPACK_IMPORTED_MODULE_5__.Dom.append(editor.editor, p);
45771
45785
  }
45772
45786
  editor.s.setCursorIn(p);
45773
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.scrollIntoViewIfNeeded)(p, editor.editor, editor.ed);
45787
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.scrollIntoViewIfNeeded)(p, editor.editor, editor.ed);
45774
45788
  editor.synchronizeValues();
45775
45789
  _this.__hideForce();
45776
45790
  e.preventDefault();
@@ -45789,8 +45803,8 @@ var ns = 'addnewline';
45789
45803
  return;
45790
45804
  }
45791
45805
  this.__isShown = true;
45792
- _modules_index_js__WEBPACK_IMPORTED_MODULE_4__.Dom.append(this.j.container, this.__line);
45793
- (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_3__.css)(this.__line, 'width', this.j.container.clientWidth);
45806
+ _modules_index_js__WEBPACK_IMPORTED_MODULE_5__.Dom.append(this.j.container, this.__line);
45807
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_4__.css)(this.__line, 'width', this.j.container.clientWidth);
45794
45808
  }
45795
45809
  },
45796
45810
  {
@@ -45842,18 +45856,48 @@ var ns = 'addnewline';
45842
45856
  ], 'scroll' + '.' + ns, this.__hideForce).on('finishedCleanHTMLWorker' + '.' + ns, this.__hideForce).on(editor.editor, 'click' + '.' + ns, this.__hide).on(editor.container, 'mouseleave' + '.' + ns, this.__hide).on(editor.editor, 'mousemove' + '.' + ns, this.__onMouseMove);
45843
45857
  }
45844
45858
  },
45859
+ {
45860
+ /**
45861
+ * A paragraph holding only an embed has no place for the caret, so the
45862
+ * arrow keys can't get past one that ends the content, or before one that
45863
+ * starts it. When an arrow key leaves the caret where it was and there is
45864
+ * content beyond it, a new line goes there, as when the line is clicked.
45865
+ */ key: "onArrowKey",
45866
+ value: function onArrowKey(e) {
45867
+ var editor = this.j;
45868
+ var forward = e.key === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.KEY_DOWN || e.key === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.KEY_RIGHT;
45869
+ if (!editor.o.addNewLine || editor.o.readonly || editor.isLocked || e.shiftKey || !(forward || e.key === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.KEY_UP || e.key === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.KEY_LEFT) || !editor.s.isCollapsed()) {
45870
+ return;
45871
+ }
45872
+ var _editor_s_range = editor.s.range, startContainer = _editor_s_range.startContainer, startOffset = _editor_s_range.startOffset;
45873
+ // Once the browser has moved the caret, if it could. With a 0 timeout
45874
+ // Jodit would run this at once, before the browser moves it
45875
+ editor.async.setTimeout(function() {
45876
+ var range = editor.s.range;
45877
+ var block = _modules_index_js__WEBPACK_IMPORTED_MODULE_5__.Dom.closest(startContainer, _modules_index_js__WEBPACK_IMPORTED_MODULE_5__.Dom.isBlock, editor.editor);
45878
+ if (e.defaultPrevented || !editor.s.isInsideArea || !range.collapsed || range.startContainer !== startContainer || range.startOffset !== startOffset || !block || !_modules_index_js__WEBPACK_IMPORTED_MODULE_5__.Dom.findNotEmptyNeighbor(block, !forward, editor.editor)) {
45879
+ return;
45880
+ }
45881
+ var p = editor.createInside.element(editor.o.enter);
45882
+ forward ? _modules_index_js__WEBPACK_IMPORTED_MODULE_5__.Dom.append(editor.editor, p) : _modules_index_js__WEBPACK_IMPORTED_MODULE_5__.Dom.prepend(editor.editor, p);
45883
+ editor.s.setCursorIn(p);
45884
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.scrollIntoViewIfNeeded)(p, editor.editor, editor.ed);
45885
+ editor.synchronizeValues();
45886
+ }, 1);
45887
+ }
45888
+ },
45845
45889
  {
45846
45890
  key: "onDblClickEditor",
45847
45891
  value: function onDblClickEditor(e) {
45848
45892
  var editor = this.j;
45849
45893
  if (!editor.o.readonly && editor.o.addNewLineOnDBLClick && e.target === editor.editor && editor.s.isCollapsed()) {
45850
- var editorBound = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.offset)(editor.editor, editor, editor.ed);
45894
+ var editorBound = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.offset)(editor.editor, editor, editor.ed);
45851
45895
  var top = e.pageY - editor.ew.scrollX;
45852
45896
  var p = editor.createInside.element(editor.o.enter);
45853
45897
  if (Math.abs(top - editorBound.top) < Math.abs(top - (editorBound.height + editorBound.top)) && editor.editor.firstChild) {
45854
- _modules_index_js__WEBPACK_IMPORTED_MODULE_4__.Dom.prepend(editor.editor, p);
45898
+ _modules_index_js__WEBPACK_IMPORTED_MODULE_5__.Dom.prepend(editor.editor, p);
45855
45899
  } else {
45856
- _modules_index_js__WEBPACK_IMPORTED_MODULE_4__.Dom.append(editor.editor, p);
45900
+ _modules_index_js__WEBPACK_IMPORTED_MODULE_5__.Dom.append(editor.editor, p);
45857
45901
  }
45858
45902
  editor.s.setCursorIn(p);
45859
45903
  editor.synchronizeValues();
@@ -45870,27 +45914,27 @@ var ns = 'addnewline';
45870
45914
  // Inside Shadow DOM `document.elementFromPoint` returns the shadow
45871
45915
  // host, so the lookup must start from the shadow root
45872
45916
  var currentElement = ((_a = editor.o.shadowRoot) !== null && _a !== void 0 ? _a : editor.ed).elementFromPoint(e.clientX, e.clientY);
45873
- if (!_modules_index_js__WEBPACK_IMPORTED_MODULE_4__.Dom.isHTMLElement(currentElement) || !_modules_index_js__WEBPACK_IMPORTED_MODULE_4__.Dom.isOrContains(editor.editor, currentElement)) {
45917
+ if (!_modules_index_js__WEBPACK_IMPORTED_MODULE_5__.Dom.isHTMLElement(currentElement) || !_modules_index_js__WEBPACK_IMPORTED_MODULE_5__.Dom.isOrContains(editor.editor, currentElement)) {
45874
45918
  return;
45875
45919
  }
45876
45920
  if (editor.editor !== currentElement && !this.__isMatchedTag(currentElement)) {
45877
- currentElement = _modules_index_js__WEBPACK_IMPORTED_MODULE_4__.Dom.closest(currentElement, this.__isMatchedTag, editor.editor);
45921
+ currentElement = _modules_index_js__WEBPACK_IMPORTED_MODULE_5__.Dom.closest(currentElement, this.__isMatchedTag, editor.editor);
45878
45922
  }
45879
45923
  if (!currentElement) {
45880
45924
  this.__hide();
45881
45925
  return;
45882
45926
  }
45883
45927
  if (this.__isMatchedTag(currentElement)) {
45884
- var parentBox = _modules_index_js__WEBPACK_IMPORTED_MODULE_4__.Dom.up(currentElement, _modules_index_js__WEBPACK_IMPORTED_MODULE_4__.Dom.isBlock, editor.editor);
45928
+ var parentBox = _modules_index_js__WEBPACK_IMPORTED_MODULE_5__.Dom.up(currentElement, _modules_index_js__WEBPACK_IMPORTED_MODULE_5__.Dom.isBlock, editor.editor);
45885
45929
  if (parentBox && parentBox !== editor.editor) {
45886
45930
  currentElement = parentBox;
45887
45931
  }
45888
45932
  }
45889
- var pos = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.position)(currentElement, this.j);
45933
+ var pos = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.position)(currentElement, this.j);
45890
45934
  var top = false;
45891
45935
  var clientY = e.clientY, clientX = e.clientX;
45892
45936
  if (this.j.iframe) {
45893
- var _position = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.position)(this.j.iframe, this.j, true), top1 = _position.top, left = _position.left;
45937
+ var _position = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.position)(this.j.iframe, this.j, true), top1 = _position.top, left = _position.left;
45894
45938
  clientY += top1;
45895
45939
  clientX += left;
45896
45940
  }
@@ -45903,8 +45947,8 @@ var ns = 'addnewline';
45903
45947
  this.__isBeforeContent = false;
45904
45948
  }
45905
45949
  var isEditor = editor.editor === currentElement;
45906
- if (top !== false && (isEditor && !this.__isBeforeContent || !isEditor && !(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.call)(this.__isBeforeContent ? _modules_index_js__WEBPACK_IMPORTED_MODULE_4__.Dom.prev : _modules_index_js__WEBPACK_IMPORTED_MODULE_4__.Dom.next, currentElement, this.__canGetFocus, editor.editor))) {
45907
- (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_3__.css)(this.__line, 'top', top);
45950
+ if (top !== false && (isEditor && !this.__isBeforeContent || !isEditor && !(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.call)(this.__isBeforeContent ? _modules_index_js__WEBPACK_IMPORTED_MODULE_5__.Dom.prev : _modules_index_js__WEBPACK_IMPORTED_MODULE_5__.Dom.next, currentElement, this.__canGetFocus, editor.editor))) {
45951
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_4__.css)(this.__line, 'top', top);
45908
45952
  this.__current = currentElement;
45909
45953
  this.__show();
45910
45954
  this.__line.style.setProperty('--jd-anl-handle-offset', clientX - pos.left - 10 + 'px');
@@ -45919,7 +45963,7 @@ var ns = 'addnewline';
45919
45963
  value: function beforeDestruct() {
45920
45964
  this.j.async.clearTimeout(this.__timeout);
45921
45965
  this.j.e.off(this.__line).off('changePlace', this.__addEventListeners);
45922
- _modules_index_js__WEBPACK_IMPORTED_MODULE_4__.Dom.safeRemove(this.__line);
45966
+ _modules_index_js__WEBPACK_IMPORTED_MODULE_5__.Dom.safeRemove(this.__line);
45923
45967
  this.j.e.off([
45924
45968
  this.j.ow,
45925
45969
  this.j.ew,
@@ -45929,22 +45973,25 @@ var ns = 'addnewline';
45929
45973
  }
45930
45974
  ]);
45931
45975
  return addNewLine;
45932
- }(_wrap_native_super(_modules_index_js__WEBPACK_IMPORTED_MODULE_4__.Plugin));
45976
+ }(_wrap_native_super(_modules_index_js__WEBPACK_IMPORTED_MODULE_5__.Plugin));
45933
45977
  __decorate([
45934
- (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)(':lock')
45978
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.watch)(':lock')
45935
45979
  ], addNewLine.prototype, "onLock", null);
45936
45980
  __decorate([
45937
- _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.autobind
45981
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.autobind
45938
45982
  ], addNewLine.prototype, "__hide", null);
45939
45983
  __decorate([
45940
- (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)(':dblclick')
45984
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.watch)(':keydown')
45985
+ ], addNewLine.prototype, "onArrowKey", null);
45986
+ __decorate([
45987
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.watch)(':dblclick')
45941
45988
  ], addNewLine.prototype, "onDblClickEditor", null);
45942
45989
  __decorate([
45943
- (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.throttle)(function(ctx) {
45990
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.throttle)(function(ctx) {
45944
45991
  return ctx.defaultTimeout;
45945
45992
  })
45946
45993
  ], addNewLine.prototype, "__onMouseMove", null);
45947
- _core_global_js__WEBPACK_IMPORTED_MODULE_1__.pluginSystem.add('addNewLine', addNewLine);
45994
+ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('addNewLine', addNewLine);
45948
45995
 
45949
45996
 
45950
45997
  /***/ }),
@@ -47066,6 +47113,7 @@ UiAiAssistant = __decorate([
47066
47113
  /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(32496);
47067
47114
  /* harmony import */ var _cases_check_not_collapsed_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(11338);
47068
47115
  /* harmony import */ var _cases_index_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(14630);
47116
+ /* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(63785);
47069
47117
  function _array_like_to_array(arr, len) {
47070
47118
  if (len == null || len > arr.length) len = arr.length;
47071
47119
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
@@ -47235,6 +47283,7 @@ function _wrap_native_super(Class) {
47235
47283
 
47236
47284
 
47237
47285
 
47286
+
47238
47287
  var backspace = /*#__PURE__*/ function(Plugin) {
47239
47288
  "use strict";
47240
47289
  _inherits(backspace, Plugin);
@@ -47342,6 +47391,7 @@ var backspace = /*#__PURE__*/ function(Plugin) {
47342
47391
  throw e;
47343
47392
  } finally{
47344
47393
  jodit.e.fire('backSpaceAfterDelete', backspace, fakeNode);
47394
+ this.moveCaretToTextBefore(fakeNode);
47345
47395
  this.safeRemoveEmptyNode(fakeNode);
47346
47396
  }
47347
47397
  return false;
@@ -47349,15 +47399,51 @@ var backspace = /*#__PURE__*/ function(Plugin) {
47349
47399
  },
47350
47400
  {
47351
47401
  /**
47402
+ * The browser types at the end of the text before the caret on its line,
47403
+ * in that text's formatting, but not inside a link. Moving the caret there
47404
+ * too makes a paste and the toolbar agree with what's typed:
47405
+ * `<p>one</p><p><b>|two</b></p>` joins to `<p>one|<b>two</b></p>`
47406
+ */ key: "moveCaretToTextBefore",
47407
+ value: function moveCaretToTextBefore(fakeNode) {
47408
+ var _a, _b;
47409
+ var jodit = this.jodit;
47410
+ var range = jodit.s.range;
47411
+ // A case may have merged the fake node away (#1722)
47412
+ if (!fakeNode.parentNode) {
47413
+ return;
47414
+ }
47415
+ var around = jodit.ed.createRange();
47416
+ around.selectNode(fakeNode);
47417
+ if (!range.collapsed || !around.isPointInRange(range.startContainer, range.startOffset)) {
47418
+ return;
47419
+ }
47420
+ var text = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_9__.findMostNestedNeighbor)(fakeNode, false, jodit.editor, true);
47421
+ var link = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.closest(text, 'a', jodit.editor);
47422
+ if (!_core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isText(text) || !_core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isContentEditable(text, jodit.editor) || link && !_core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isOrContains(link, fakeNode) || _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.closest(text, _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock, jodit.editor) !== _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.closest(fakeNode, _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock, jodit.editor)) {
47423
+ return;
47424
+ }
47425
+ range.setStart(text, (_b = (_a = text.nodeValue) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0);
47426
+ range.collapse(true);
47427
+ jodit.s.selectRange(range);
47428
+ }
47429
+ },
47430
+ {
47431
+ /**
47352
47432
  * Remove node and replace cursor position out of it
47353
47433
  */ key: "safeRemoveEmptyNode",
47354
47434
  value: function safeRemoveEmptyNode(fakeNode) {
47355
- var _a, _b;
47435
+ var _a, _b, _c;
47356
47436
  var range = this.j.s.range;
47437
+ // wrap-nodes normalizes the line it wraps, which can merge the text
47438
+ // after the fake node into it: remove only the fake node's own space
47439
+ if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isText(fakeNode) && fakeNode.nodeValue !== _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.INVISIBLE_SPACE && ((_a = fakeNode.nodeValue) === null || _a === void 0 ? void 0 : _a.startsWith(_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.INVISIBLE_SPACE))) {
47440
+ fakeNode.deleteData(0, _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.INVISIBLE_SPACE.length);
47441
+ return;
47442
+ }
47357
47443
  if (range.startContainer === fakeNode) {
47358
47444
  if (fakeNode.previousSibling) {
47359
47445
  if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isText(fakeNode.previousSibling)) {
47360
- range.setStart(fakeNode.previousSibling, (_b = (_a = fakeNode.previousSibling.nodeValue) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0);
47446
+ range.setStart(fakeNode.previousSibling, (_c = (_b = fakeNode.previousSibling.nodeValue) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0);
47361
47447
  } else {
47362
47448
  range.setStartAfter(fakeNode.previousSibling);
47363
47449
  }
@@ -47405,6 +47491,11 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('backspace', backs
47405
47491
  * Check if two separate elements can be connected
47406
47492
  * @private
47407
47493
  */ function checkJoinNeighbors(jodit, fakeNode, backspace) {
47494
+ return joinNeighbors(jodit, fakeNode, backspace, false);
47495
+ }
47496
+ /**
47497
+ * `moved` is set on the one re-entrant pass after `moveToNextLine`
47498
+ */ function joinNeighbors(jodit, fakeNode, backspace, moved) {
47408
47499
  if (checkJoinBareText(jodit, fakeNode, backspace)) {
47409
47500
  return true;
47410
47501
  }
@@ -47420,6 +47511,9 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('backspace', backs
47420
47511
  return false;
47421
47512
  }
47422
47513
  var sibling = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.findNotEmptySibling(mainClosestBox, backspace);
47514
+ if (moveInlinesInside(jodit, fakeNode, sibling)) {
47515
+ return joinNeighbors(jodit, fakeNode, backspace, moved);
47516
+ }
47423
47517
  // A line break before the cursor is a single unit: remove it instead of
47424
47518
  // merging the current element into the (void) `<br>`, which used to move
47425
47519
  // the whole element's content into the `<br>` and delete it (#1282).
@@ -47434,7 +47528,19 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('backspace', backs
47434
47528
  jodit.s.setCursorBefore(fakeNode);
47435
47529
  return true;
47436
47530
  }
47531
+ // A non-editable sibling is removed by remove-not-editable, never joined
47532
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isElement(sibling) && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isContentEditable(sibling, jodit.editor)) {
47533
+ return false;
47534
+ }
47437
47535
  var box = findCaretBox(fakeNode, mainClosestBox);
47536
+ // One pass only: the line now sits beside the next one, so the
47537
+ // cases below join them. The DOM has changed either way
47538
+ if (!moved && sibling && moveToNextLine(jodit, fakeNode, box, sibling, backspace)) {
47539
+ if (!joinNeighbors(jodit, fakeNode, backspace, true)) {
47540
+ jodit.s.setCursorBefore(fakeNode);
47541
+ }
47542
+ return true;
47543
+ }
47438
47544
  if (sibling && (checkPullNextLine(jodit, fakeNode, box, sibling, backspace) || checkMoveListContent(jodit, box, sibling, backspace) || checkJoinInlineSibling(jodit, box, sibling, backspace) || moveContentAndRemoveEmpty(jodit, box, findEdgeBlock(resolveTableSibling(sibling, backspace), backspace, jodit.editor), backspace))) {
47439
47545
  jodit.s.setCursorBefore(fakeNode);
47440
47546
  return true;
@@ -47454,6 +47560,83 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('backspace', backs
47454
47560
  }
47455
47561
  return _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isLeaf(block) && block.parentElement ? block.parentElement : block;
47456
47562
  }
47563
+ /**
47564
+ * With an inline element round the caret's line or the one it joins moved
47565
+ * inside its blocks, the cases join the lines as they join any two, and its
47566
+ * styles stay with its text. One round both lines is left as it is.
47567
+ */ function moveInlinesInside(jodit, fakeNode, sibling) {
47568
+ if (!sibling) {
47569
+ return false;
47570
+ }
47571
+ var around = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.furthest(fakeNode, function(node) {
47572
+ return _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isElement(node) && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock(node) && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isOrContains(node, sibling);
47573
+ }, jodit.editor);
47574
+ return moveInlineInside(around, jodit.editor) || moveInlineInside(sibling, jodit.editor);
47575
+ }
47576
+ /**
47577
+ * Old content can have an inline element round blocks. This moves it inside
47578
+ * them, and gives the text, images and line breaks beside them a copy of
47579
+ * their own: `<span style="…"><p>one</p><br><p>two</p></span>` becomes
47580
+ * `<p><span style="…">one</span></p><span style="…"><br></span><p><span style="…">two</span></p>`
47581
+ */ function moveInlineInside(node, root) {
47582
+ if (!_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isElement(node) || _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock(node)) {
47583
+ return false;
47584
+ }
47585
+ // Embedded content, such as the `<iframe>` in a video's wrapper, counts
47586
+ // as a block in `Dom.isBlock`, but stays with the text beside it
47587
+ var isBlock = function isBlock(child) {
47588
+ return _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock(child) && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(child, _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.NO_EMPTY_TAGS);
47589
+ };
47590
+ // The inner one first: `<span><strong><p>one</p></strong></span>`
47591
+ Array.from(node.childNodes).forEach(function(child) {
47592
+ return moveInlineInside(child, root);
47593
+ });
47594
+ var children = Array.from(node.childNodes);
47595
+ if (!children.some(isBlock)) {
47596
+ return false;
47597
+ }
47598
+ var run = null;
47599
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
47600
+ try {
47601
+ for(var _iterator = children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
47602
+ var child = _step.value;
47603
+ if (!isBlock(child)) {
47604
+ // Blank text between blocks stays where it is
47605
+ if (!run && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isEmptyTextNode(child)) {
47606
+ run = node.cloneNode(false);
47607
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.before(child, run);
47608
+ }
47609
+ run && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.append(run, child);
47610
+ continue;
47611
+ }
47612
+ run = null;
47613
+ // Nothing goes inside a rule or a non-editable block
47614
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(child, _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.INSEPARABLE_TAGS) || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isContentEditable(child, root)) {
47615
+ continue;
47616
+ }
47617
+ var inner = node.cloneNode(false);
47618
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.moveContent(child, inner);
47619
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.append(child, inner);
47620
+ // A list or a table: on down to its items or cells
47621
+ moveInlineInside(inner, root);
47622
+ }
47623
+ } catch (err) {
47624
+ _didIteratorError = true;
47625
+ _iteratorError = err;
47626
+ } finally{
47627
+ try {
47628
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
47629
+ _iterator.return();
47630
+ }
47631
+ } finally{
47632
+ if (_didIteratorError) {
47633
+ throw _iteratorError;
47634
+ }
47635
+ }
47636
+ }
47637
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.unwrap(node);
47638
+ return true;
47639
+ }
47457
47640
  /**
47458
47641
  * The innermost block on the sibling's edge facing the caret, so the
47459
47642
  * content is joined to text: `<div><p>one</p></div><p>|two</p>` gives
@@ -47486,6 +47669,68 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('backspace', backs
47486
47669
  });
47487
47670
  return cells.length ? cells[backspace ? cells.length - 1 : 0] : null;
47488
47671
  }
47672
+ /**
47673
+ * On Delete, Word joins two lines where the next one is, inside or outside
47674
+ * its box or quote, and the joined line keeps the caret line's kind, list item
47675
+ * or paragraph. Two paragraphs already join that way. When either line is a
47676
+ * list item, this moves the caret's line beside the next one, and the usual
47677
+ * cases then join them: `<p>one|</p><div><ul><li>two</li></ul></div>` becomes
47678
+ * `<div><p>one|</p><ul><li>two</li></ul></div>`
47679
+ * @private
47680
+ */ function moveToNextLine(jodit, fakeNode, box, sibling, backspace) {
47681
+ if (backspace || _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(sibling, 'table') || _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(sibling, _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.INSEPARABLE_TAGS) || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isContentEditable(sibling, jodit.editor)) {
47682
+ return false;
47683
+ }
47684
+ var line = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.up(fakeNode, _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock, box, true);
47685
+ var next = findEdgeBlock(sibling, false, jodit.editor);
47686
+ if (!line || !next || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isContentEditable(next, jodit.editor) || !(_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isLeaf(line) || _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isLeaf(next)) || // A paragraph inside a list item is left as it is
47687
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isLeaf(line.parentElement) || _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isLeaf(next.parentElement) || boxOf(line) === boxOf(next)) {
47688
+ return false;
47689
+ }
47690
+ var from = line.parentElement;
47691
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isLeaf(line) && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isLeaf(next)) {
47692
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.before(next, line);
47693
+ } else if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isLeaf(line)) {
47694
+ // A list item keeps its bullet, in a list of its own
47695
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.before(next, ownList(line));
47696
+ } else {
47697
+ // A paragraph can't go inside a list, so it goes in front of it
47698
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.before(next.parentElement, line);
47699
+ }
47700
+ var remove = from;
47701
+ while(remove && remove !== jodit.editor && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isEmpty(remove)){
47702
+ var parent = remove.parentElement;
47703
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(remove);
47704
+ remove = parent;
47705
+ }
47706
+ return true;
47707
+ }
47708
+ /**
47709
+ * The box or quote a line is in, past its lists
47710
+ */ function boxOf(line) {
47711
+ var box = line.parentElement;
47712
+ while(_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isList(box) || _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isLeaf(box)){
47713
+ box = box.parentElement;
47714
+ }
47715
+ return box;
47716
+ }
47717
+ /**
47718
+ * Moves a list item into a list of its own, which carries on its numbering
47719
+ */ function ownList(item) {
47720
+ var list = item.parentElement;
47721
+ var own = list.cloneNode(false);
47722
+ var index = Array.from(list.children).indexOf(item);
47723
+ if (index) {
47724
+ // Two lists cannot share one id
47725
+ own.removeAttribute('id');
47726
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(list, 'ol')) {
47727
+ var start = parseInt(list.getAttribute('start') || '1', 10) || 1;
47728
+ own.setAttribute('start', String(start + index));
47729
+ }
47730
+ }
47731
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.append(own, item);
47732
+ return own;
47733
+ }
47489
47734
  /**
47490
47735
  * Delete at the edge of a list pulls the next line up to the caret, as the
47491
47736
  * browsers do, instead of moving the caret's line into the next block:
@@ -47752,7 +47997,9 @@ function checkRemoveChar(jodit, fakeNode, backspace, mode) {
47752
47997
  while(_core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isInlineBlock(sibling)){
47753
47998
  sibling = backspace ? sibling === null || sibling === void 0 ? void 0 : sibling.lastChild : sibling === null || sibling === void 0 ? void 0 : sibling.firstChild;
47754
47999
  }
47755
- if (!sibling) {
48000
+ // A block inside an inline element, such as the `<p>` in
48001
+ // `<span><p>…</p></span>`, isn't a char: the join cases handle it
48002
+ if (!sibling || _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock(sibling)) {
47756
48003
  break;
47757
48004
  }
47758
48005
  if ((_a = sibling.nodeValue) === null || _a === void 0 ? void 0 : _a.length) {
@@ -47900,6 +48147,7 @@ function isSpace(char) {
47900
48147
  /* harmony import */ var _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(22732);
47901
48148
  /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(21537);
47902
48149
  /* harmony import */ var _core_selection_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(45124);
48150
+ /* harmony import */ var _check_join_neighbors_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(62845);
47903
48151
  /*!
47904
48152
  * Jodit Editor (https://xdsoft.net/jodit/)
47905
48153
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -47907,23 +48155,48 @@ function isSpace(char) {
47907
48155
  */
47908
48156
 
47909
48157
 
48158
+
47910
48159
  /**
47911
- * Checks if a non-editable element can be deleted
48160
+ * Checks if a non-editable element can be deleted. A non-editable block goes
48161
+ * whole, and the lines either side of it then join, as the spec's tests do:
48162
+ * `<ul><li>one|</li></ul><div contenteditable="false">x</div><p>two</p>`
48163
+ * gives `<ul><li>one|two</li></ul>`
47912
48164
  * @private
47913
48165
  */ function checkRemoveContentNotEditable(jodit, fakeNode, backspace) {
47914
- var neighbor = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.findSibling(fakeNode, backspace);
47915
- if (!neighbor && fakeNode.parentElement && fakeNode.parentElement !== jodit.editor) {
47916
- neighbor = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.findSibling(fakeNode.parentElement, backspace);
47917
- }
47918
- if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(neighbor) && !_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isContentEditable(neighbor, jodit.editor)) {
47919
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.call)(backspace ? _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.before : _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.after, neighbor, fakeNode);
47920
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(neighbor);
47921
- (0,_core_selection_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.moveNodeInsideStart)(jodit, fakeNode, backspace);
47922
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.call)(backspace ? jodit.s.setCursorBefore : jodit.s.setCursorAfter, fakeNode);
48166
+ var node = fakeNode;
48167
+ var neighbor = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.findSibling(node, backspace);
48168
+ // Past the edges of the blocks the caret is at, but not into a table cell
48169
+ while(!neighbor && node.parentElement && node.parentElement !== jodit.editor && !_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isCell(node.parentElement)){
48170
+ node = node.parentElement;
48171
+ neighbor = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.findSibling(node, backspace);
48172
+ // At the start of a list item, Backspace takes the bullet off first,
48173
+ // unless the item before it is a non-editable one to remove
48174
+ if (backspace && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isLeaf(node) && !(_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isLeaf(neighbor) && isNotEditable(jodit, neighbor))) {
48175
+ return false;
48176
+ }
48177
+ }
48178
+ if (isNotEditable(jodit, neighbor)) {
48179
+ if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(neighbor)) {
48180
+ // Backspace after a removed list item leaves the items apart: the
48181
+ // next press takes the bullet off, as for any later item
48182
+ var joinLines = !(backspace && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isLeaf(neighbor));
48183
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(neighbor);
48184
+ if (joinLines) {
48185
+ (0,_check_join_neighbors_js__WEBPACK_IMPORTED_MODULE_3__.checkJoinNeighbors)(jodit, fakeNode, backspace);
48186
+ }
48187
+ } else {
48188
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.call)(backspace ? _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.before : _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.after, neighbor, fakeNode);
48189
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(neighbor);
48190
+ (0,_core_selection_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.moveNodeInsideStart)(jodit, fakeNode, backspace);
48191
+ }
48192
+ ;(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.call)(backspace ? jodit.s.setCursorBefore : jodit.s.setCursorAfter, fakeNode);
47923
48193
  return true;
47924
48194
  }
47925
48195
  return false;
47926
48196
  }
48197
+ function isNotEditable(jodit, node) {
48198
+ return _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(node) && !_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isContentEditable(node, jodit.editor);
48199
+ }
47927
48200
 
47928
48201
 
47929
48202
  /***/ }),
@@ -78859,12 +79132,13 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.wrapNodes = {
78859
79132
  /***/ 72253:
78860
79133
  /***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) {
78861
79134
 
78862
- /* harmony import */ var _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(65478);
78863
- /* harmony import */ var _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(22732);
78864
- /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(580);
78865
- /* harmony import */ var _core_helpers_checker_is_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(70799);
78866
- /* harmony import */ var _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(50911);
78867
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(96967);
79135
+ /* harmony import */ var _core_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82758);
79136
+ /* harmony import */ var _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65478);
79137
+ /* harmony import */ var _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(22732);
79138
+ /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(580);
79139
+ /* harmony import */ var _core_helpers_checker_is_string_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(70799);
79140
+ /* harmony import */ var _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(50911);
79141
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(96967);
78868
79142
  function _assert_this_initialized(self) {
78869
79143
  if (self === void 0) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
78870
79144
  return self;
@@ -78991,6 +79265,7 @@ function _wrap_native_super(Class) {
78991
79265
 
78992
79266
 
78993
79267
 
79268
+
78994
79269
  /**
78995
79270
  * Wrap single text nodes in block wrapper
78996
79271
  */ var wrapNodes = /*#__PURE__*/ function(Plugin) {
@@ -79004,17 +79279,17 @@ function _wrap_native_super(Class) {
79004
79279
  * Found Node which should be wrapped
79005
79280
  */ _this.isSuitableStart = function(n) {
79006
79281
  var _a;
79007
- return _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isText(n) && (0,_core_helpers_checker_is_string_js__WEBPACK_IMPORTED_MODULE_3__.isString)(n.nodeValue) && (/[^\s]/.test(n.nodeValue) || ((_a = n.parentNode) === null || _a === void 0 ? void 0 : _a.firstChild) === n && _this.isSuitable(n.nextSibling)) || _this.isNotWrapped(n) && !_core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTemporary(n);
79282
+ return _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isText(n) && (0,_core_helpers_checker_is_string_js__WEBPACK_IMPORTED_MODULE_4__.isString)(n.nodeValue) && (/[^\s]/.test(n.nodeValue) || ((_a = n.parentNode) === null || _a === void 0 ? void 0 : _a.firstChild) === n && _this.isSuitable(n.nextSibling)) || _this.isNotWrapped(n) && !_core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTemporary(n);
79008
79283
  };
79009
79284
  /**
79010
79285
  * Node should add in a block element
79011
79286
  */ _this.isSuitable = function(n) {
79012
- return _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isText(n) || _this.isNotWrapped(n);
79287
+ return _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isText(n) || _this.isNotWrapped(n);
79013
79288
  };
79014
79289
  /**
79015
79290
  * Some element which needs to append in block
79016
79291
  */ _this.isNotWrapped = function(n) {
79017
- return _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isElement(n) && !(_core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock(n) || _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(n, _this.j.o.wrapNodes.exclude));
79292
+ return _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isElement(n) && !(_core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isBlock(n) || _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(n, _this.j.o.wrapNodes.exclude) || holdsBlock(n));
79018
79293
  };
79019
79294
  return _this;
79020
79295
  }
@@ -79055,10 +79330,11 @@ function _wrap_native_super(Class) {
79055
79330
  }
79056
79331
  isChanged = true;
79057
79332
  var box = jodit.createInside.element(jodit.o.enter);
79058
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.before(child, box);
79059
- while(child && this.isSuitable(child)){
79333
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.before(child, box);
79334
+ // `exclude` keeps a <br> from starting a box, but one between loose lines stays with them
79335
+ while(child && (this.isSuitable(child) || _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(child, 'br'))){
79060
79336
  var next = child.nextSibling;
79061
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.append(box, child);
79337
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(box, child);
79062
79338
  child = next;
79063
79339
  }
79064
79340
  box.normalize();
@@ -79085,8 +79361,8 @@ function _wrap_native_super(Class) {
79085
79361
  }
79086
79362
  var box = jodit.createInside.element(jodit.o.enter);
79087
79363
  var br = jodit.createInside.element('br');
79088
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.append(box, br);
79089
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.append(jodit.editor, box);
79364
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(box, br);
79365
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(jodit.editor, box);
79090
79366
  if (jodit.s.isFocused() || jodit.e.current === 'backSpaceAfterDelete') {
79091
79367
  jodit.s.setCursorBefore(br);
79092
79368
  }
@@ -79095,23 +79371,51 @@ function _wrap_native_super(Class) {
79095
79371
  }
79096
79372
  ]);
79097
79373
  return wrapNodes;
79098
- }(_wrap_native_super(_core_plugin_index_js__WEBPACK_IMPORTED_MODULE_4__.Plugin));
79374
+ }(_wrap_native_super(_core_plugin_index_js__WEBPACK_IMPORTED_MODULE_5__.Plugin));
79099
79375
  __decorate([
79100
- _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.autobind
79376
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.autobind
79101
79377
  ], wrapNodes.prototype, "postProcessSetEditorValue", null);
79102
79378
  __decorate([
79103
- _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.autobind
79379
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.autobind
79104
79380
  ], wrapNodes.prototype, "preprocessInput", null);
79381
+ /**
79382
+ * A block can't go in a paragraph, so neither can an element that holds one,
79383
+ * such as a `<span>` round a `<p>`. Embedded content such as an `<iframe>` can.
79384
+ */ function holdsBlock(elm) {
79385
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
79386
+ try {
79387
+ for(var _iterator = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.eachGen(elm)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
79388
+ var node = _step.value;
79389
+ if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isBlock(node) && !_core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(node, _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.NO_EMPTY_TAGS)) {
79390
+ return true;
79391
+ }
79392
+ }
79393
+ } catch (err) {
79394
+ _didIteratorError = true;
79395
+ _iteratorError = err;
79396
+ } finally{
79397
+ try {
79398
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
79399
+ _iterator.return();
79400
+ }
79401
+ } finally{
79402
+ if (_didIteratorError) {
79403
+ throw _iteratorError;
79404
+ }
79405
+ }
79406
+ }
79407
+ return false;
79408
+ }
79105
79409
  function checkAloneListLeaf(child, jodit) {
79106
79410
  var result = child;
79107
79411
  var next = child;
79108
79412
  do {
79109
- if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isElement(next) && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isLeaf(next) && !_core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isList(next.parentElement)) {
79110
- var nextChild = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.findNotEmptySibling(next, false);
79111
- if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(result, 'ul')) {
79112
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.append(result, next);
79413
+ if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isElement(next) && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isLeaf(next) && !_core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isList(next.parentElement)) {
79414
+ var nextChild = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.findNotEmptySibling(next, false);
79415
+ if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(result, 'ul')) {
79416
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(result, next);
79113
79417
  } else {
79114
- result = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.wrap(next, 'ul', jodit.createInside);
79418
+ result = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.wrap(next, 'ul', jodit.createInside);
79115
79419
  }
79116
79420
  next = nextChild;
79117
79421
  } else {
@@ -79120,7 +79424,7 @@ function checkAloneListLeaf(child, jodit) {
79120
79424
  }while (next);
79121
79425
  return result;
79122
79426
  }
79123
- _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('wrapNodes', wrapNodes);
79427
+ _core_global_js__WEBPACK_IMPORTED_MODULE_3__.pluginSystem.add('wrapNodes', wrapNodes);
79124
79428
 
79125
79429
 
79126
79430
  /***/ }),