jodit-pro 4.18.1 → 4.18.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 (316) hide show
  1. package/es2015/jodit.css +1 -1
  2. package/es2015/jodit.fat.min.js +16 -16
  3. package/es2015/jodit.js +482 -137
  4. package/es2015/jodit.min.js +11 -11
  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/color-picker/color-picker.css +1 -1
  20. package/es2015/plugins/color-picker/color-picker.js +1 -1
  21. package/es2015/plugins/color-picker/color-picker.min.js +1 -1
  22. package/es2015/plugins/emoji/emoji.css +1 -1
  23. package/es2015/plugins/emoji/emoji.js +1 -1
  24. package/es2015/plugins/emoji/emoji.min.js +1 -1
  25. package/es2015/plugins/export-docs/export-docs.js +1 -1
  26. package/es2015/plugins/export-docs/export-docs.min.js +1 -1
  27. package/es2015/plugins/finder/finder.css +1 -1
  28. package/es2015/plugins/finder/finder.js +1 -1
  29. package/es2015/plugins/finder/finder.min.js +1 -1
  30. package/es2015/plugins/google-maps/google-maps.css +1 -1
  31. package/es2015/plugins/google-maps/google-maps.js +1 -1
  32. package/es2015/plugins/google-maps/google-maps.min.js +1 -1
  33. package/es2015/plugins/google-search/google-search.js +1 -1
  34. package/es2015/plugins/google-search/google-search.min.js +1 -1
  35. package/es2015/plugins/highlight-signature/highlight-signature.js +1 -1
  36. package/es2015/plugins/highlight-signature/highlight-signature.min.js +1 -1
  37. package/es2015/plugins/iframe-editor/iframe-editor.css +1 -1
  38. package/es2015/plugins/iframe-editor/iframe-editor.js +1 -1
  39. package/es2015/plugins/iframe-editor/iframe-editor.min.js +1 -1
  40. package/es2015/plugins/image-editor-pro/image-editor-pro.css +1 -1
  41. package/es2015/plugins/image-editor-pro/image-editor-pro.js +1 -1
  42. package/es2015/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  43. package/es2015/plugins/keyboard/keyboard.css +1 -1
  44. package/es2015/plugins/keyboard/keyboard.js +1 -1
  45. package/es2015/plugins/keyboard/keyboard.min.js +1 -1
  46. package/es2015/plugins/mobile-view/mobile-view.js +1 -1
  47. package/es2015/plugins/mobile-view/mobile-view.min.js +1 -1
  48. package/es2015/plugins/page-break/page-break.js +1 -1
  49. package/es2015/plugins/page-break/page-break.min.js +1 -1
  50. package/es2015/plugins/paste-code/paste-code.css +1 -1
  51. package/es2015/plugins/paste-code/paste-code.js +1 -1
  52. package/es2015/plugins/paste-code/paste-code.min.js +1 -1
  53. package/es2015/plugins/paste-from-word/paste-from-word.js +1 -1
  54. package/es2015/plugins/paste-from-word/paste-from-word.min.js +1 -1
  55. package/es2015/plugins/show-blocks/show-blocks.js +1 -1
  56. package/es2015/plugins/show-blocks/show-blocks.min.js +1 -1
  57. package/es2015/plugins/style/style.css +1 -1
  58. package/es2015/plugins/style/style.js +1 -1
  59. package/es2015/plugins/style/style.min.js +1 -1
  60. package/es2015/plugins/templates/templates.css +1 -1
  61. package/es2015/plugins/templates/templates.js +1 -1
  62. package/es2015/plugins/templates/templates.min.js +1 -1
  63. package/es2015/plugins/todo-list/todo-list.css +1 -1
  64. package/es2015/plugins/todo-list/todo-list.js +1 -1
  65. package/es2015/plugins/todo-list/todo-list.min.js +1 -1
  66. package/es2015/plugins/translate/translate.css +1 -1
  67. package/es2015/plugins/translate/translate.js +1 -1
  68. package/es2015/plugins/translate/translate.min.js +1 -1
  69. package/es2015/plugins/tune-block/tune-block.css +1 -1
  70. package/es2015/plugins/tune-block/tune-block.js +1 -1
  71. package/es2015/plugins/tune-block/tune-block.min.js +1 -1
  72. package/es2018/jodit.fat.min.js +9 -9
  73. package/es2018/jodit.min.js +9 -9
  74. package/es2018/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  75. package/es2018/plugins/autocomplete/autocomplete.min.js +1 -1
  76. package/es2018/plugins/backup/backup.min.js +1 -1
  77. package/es2018/plugins/button-generator/button-generator.min.js +1 -1
  78. package/es2018/plugins/change-case/change-case.min.js +1 -1
  79. package/es2018/plugins/color-picker/color-picker.min.js +1 -1
  80. package/es2018/plugins/emoji/emoji.min.js +1 -1
  81. package/es2018/plugins/export-docs/export-docs.min.js +1 -1
  82. package/es2018/plugins/finder/finder.min.js +1 -1
  83. package/es2018/plugins/google-maps/google-maps.min.js +1 -1
  84. package/es2018/plugins/google-search/google-search.min.js +1 -1
  85. package/es2018/plugins/highlight-signature/highlight-signature.min.js +1 -1
  86. package/es2018/plugins/iframe-editor/iframe-editor.min.js +1 -1
  87. package/es2018/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  88. package/es2018/plugins/keyboard/keyboard.min.js +1 -1
  89. package/es2018/plugins/mobile-view/mobile-view.min.js +1 -1
  90. package/es2018/plugins/page-break/page-break.min.js +1 -1
  91. package/es2018/plugins/paste-code/paste-code.min.js +1 -1
  92. package/es2018/plugins/paste-from-word/paste-from-word.min.js +1 -1
  93. package/es2018/plugins/show-blocks/show-blocks.min.js +1 -1
  94. package/es2018/plugins/style/style.min.js +1 -1
  95. package/es2018/plugins/templates/templates.min.js +1 -1
  96. package/es2018/plugins/todo-list/todo-list.min.js +1 -1
  97. package/es2018/plugins/translate/translate.min.js +1 -1
  98. package/es2018/plugins/tune-block/tune-block.min.js +1 -1
  99. package/es2021/jodit.css +1 -1
  100. package/es2021/jodit.fat.min.js +16 -16
  101. package/es2021/jodit.js +434 -137
  102. package/es2021/jodit.min.js +16 -16
  103. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  104. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  105. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  106. package/es2021/plugins/autocomplete/autocomplete.css +1 -1
  107. package/es2021/plugins/autocomplete/autocomplete.js +1 -1
  108. package/es2021/plugins/autocomplete/autocomplete.min.js +1 -1
  109. package/es2021/plugins/backup/backup.css +1 -1
  110. package/es2021/plugins/backup/backup.js +1 -1
  111. package/es2021/plugins/backup/backup.min.js +1 -1
  112. package/es2021/plugins/button-generator/button-generator.css +1 -1
  113. package/es2021/plugins/button-generator/button-generator.js +1 -1
  114. package/es2021/plugins/button-generator/button-generator.min.js +1 -1
  115. package/es2021/plugins/change-case/change-case.js +1 -1
  116. package/es2021/plugins/change-case/change-case.min.js +1 -1
  117. package/es2021/plugins/color-picker/color-picker.css +1 -1
  118. package/es2021/plugins/color-picker/color-picker.js +1 -1
  119. package/es2021/plugins/color-picker/color-picker.min.js +1 -1
  120. package/es2021/plugins/emoji/emoji.css +1 -1
  121. package/es2021/plugins/emoji/emoji.js +1 -1
  122. package/es2021/plugins/emoji/emoji.min.js +1 -1
  123. package/es2021/plugins/export-docs/export-docs.js +1 -1
  124. package/es2021/plugins/export-docs/export-docs.min.js +1 -1
  125. package/es2021/plugins/finder/finder.css +1 -1
  126. package/es2021/plugins/finder/finder.js +1 -1
  127. package/es2021/plugins/finder/finder.min.js +1 -1
  128. package/es2021/plugins/google-maps/google-maps.css +1 -1
  129. package/es2021/plugins/google-maps/google-maps.js +1 -1
  130. package/es2021/plugins/google-maps/google-maps.min.js +1 -1
  131. package/es2021/plugins/google-search/google-search.js +1 -1
  132. package/es2021/plugins/google-search/google-search.min.js +1 -1
  133. package/es2021/plugins/highlight-signature/highlight-signature.js +1 -1
  134. package/es2021/plugins/highlight-signature/highlight-signature.min.js +1 -1
  135. package/es2021/plugins/iframe-editor/iframe-editor.css +1 -1
  136. package/es2021/plugins/iframe-editor/iframe-editor.js +1 -1
  137. package/es2021/plugins/iframe-editor/iframe-editor.min.js +1 -1
  138. package/es2021/plugins/image-editor-pro/image-editor-pro.css +1 -1
  139. package/es2021/plugins/image-editor-pro/image-editor-pro.js +1 -1
  140. package/es2021/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  141. package/es2021/plugins/keyboard/keyboard.css +1 -1
  142. package/es2021/plugins/keyboard/keyboard.js +1 -1
  143. package/es2021/plugins/keyboard/keyboard.min.js +1 -1
  144. package/es2021/plugins/mobile-view/mobile-view.js +1 -1
  145. package/es2021/plugins/mobile-view/mobile-view.min.js +1 -1
  146. package/es2021/plugins/page-break/page-break.js +1 -1
  147. package/es2021/plugins/page-break/page-break.min.js +1 -1
  148. package/es2021/plugins/paste-code/paste-code.css +1 -1
  149. package/es2021/plugins/paste-code/paste-code.js +1 -1
  150. package/es2021/plugins/paste-code/paste-code.min.js +1 -1
  151. package/es2021/plugins/paste-from-word/paste-from-word.js +1 -1
  152. package/es2021/plugins/paste-from-word/paste-from-word.min.js +1 -1
  153. package/es2021/plugins/show-blocks/show-blocks.js +1 -1
  154. package/es2021/plugins/show-blocks/show-blocks.min.js +1 -1
  155. package/es2021/plugins/style/style.css +1 -1
  156. package/es2021/plugins/style/style.js +1 -1
  157. package/es2021/plugins/style/style.min.js +1 -1
  158. package/es2021/plugins/templates/templates.css +1 -1
  159. package/es2021/plugins/templates/templates.js +1 -1
  160. package/es2021/plugins/templates/templates.min.js +1 -1
  161. package/es2021/plugins/todo-list/todo-list.css +1 -1
  162. package/es2021/plugins/todo-list/todo-list.js +1 -1
  163. package/es2021/plugins/todo-list/todo-list.min.js +1 -1
  164. package/es2021/plugins/translate/translate.css +1 -1
  165. package/es2021/plugins/translate/translate.js +1 -1
  166. package/es2021/plugins/translate/translate.min.js +1 -1
  167. package/es2021/plugins/tune-block/tune-block.css +1 -1
  168. package/es2021/plugins/tune-block/tune-block.js +1 -1
  169. package/es2021/plugins/tune-block/tune-block.min.js +1 -1
  170. package/es2021.en/jodit.css +1 -1
  171. package/es2021.en/jodit.fat.min.js +19 -19
  172. package/es2021.en/jodit.js +434 -137
  173. package/es2021.en/jodit.min.js +16 -16
  174. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  175. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  176. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  177. package/es2021.en/plugins/autocomplete/autocomplete.css +1 -1
  178. package/es2021.en/plugins/autocomplete/autocomplete.js +1 -1
  179. package/es2021.en/plugins/autocomplete/autocomplete.min.js +1 -1
  180. package/es2021.en/plugins/backup/backup.css +1 -1
  181. package/es2021.en/plugins/backup/backup.js +1 -1
  182. package/es2021.en/plugins/backup/backup.min.js +1 -1
  183. package/es2021.en/plugins/button-generator/button-generator.css +1 -1
  184. package/es2021.en/plugins/button-generator/button-generator.js +1 -1
  185. package/es2021.en/plugins/button-generator/button-generator.min.js +1 -1
  186. package/es2021.en/plugins/change-case/change-case.js +1 -1
  187. package/es2021.en/plugins/change-case/change-case.min.js +1 -1
  188. package/es2021.en/plugins/color-picker/color-picker.css +1 -1
  189. package/es2021.en/plugins/color-picker/color-picker.js +1 -1
  190. package/es2021.en/plugins/color-picker/color-picker.min.js +1 -1
  191. package/es2021.en/plugins/emoji/emoji.css +1 -1
  192. package/es2021.en/plugins/emoji/emoji.js +1 -1
  193. package/es2021.en/plugins/emoji/emoji.min.js +1 -1
  194. package/es2021.en/plugins/export-docs/export-docs.js +1 -1
  195. package/es2021.en/plugins/export-docs/export-docs.min.js +1 -1
  196. package/es2021.en/plugins/finder/finder.css +1 -1
  197. package/es2021.en/plugins/finder/finder.js +1 -1
  198. package/es2021.en/plugins/finder/finder.min.js +1 -1
  199. package/es2021.en/plugins/google-maps/google-maps.css +1 -1
  200. package/es2021.en/plugins/google-maps/google-maps.js +1 -1
  201. package/es2021.en/plugins/google-maps/google-maps.min.js +1 -1
  202. package/es2021.en/plugins/google-search/google-search.js +1 -1
  203. package/es2021.en/plugins/google-search/google-search.min.js +1 -1
  204. package/es2021.en/plugins/highlight-signature/highlight-signature.js +1 -1
  205. package/es2021.en/plugins/highlight-signature/highlight-signature.min.js +1 -1
  206. package/es2021.en/plugins/iframe-editor/iframe-editor.css +1 -1
  207. package/es2021.en/plugins/iframe-editor/iframe-editor.js +1 -1
  208. package/es2021.en/plugins/iframe-editor/iframe-editor.min.js +1 -1
  209. package/es2021.en/plugins/image-editor-pro/image-editor-pro.css +1 -1
  210. package/es2021.en/plugins/image-editor-pro/image-editor-pro.js +1 -1
  211. package/es2021.en/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  212. package/es2021.en/plugins/keyboard/keyboard.css +1 -1
  213. package/es2021.en/plugins/keyboard/keyboard.js +1 -1
  214. package/es2021.en/plugins/keyboard/keyboard.min.js +1 -1
  215. package/es2021.en/plugins/mobile-view/mobile-view.js +1 -1
  216. package/es2021.en/plugins/mobile-view/mobile-view.min.js +1 -1
  217. package/es2021.en/plugins/page-break/page-break.js +1 -1
  218. package/es2021.en/plugins/page-break/page-break.min.js +1 -1
  219. package/es2021.en/plugins/paste-code/paste-code.css +1 -1
  220. package/es2021.en/plugins/paste-code/paste-code.js +1 -1
  221. package/es2021.en/plugins/paste-code/paste-code.min.js +1 -1
  222. package/es2021.en/plugins/paste-from-word/paste-from-word.js +1 -1
  223. package/es2021.en/plugins/paste-from-word/paste-from-word.min.js +1 -1
  224. package/es2021.en/plugins/show-blocks/show-blocks.js +1 -1
  225. package/es2021.en/plugins/show-blocks/show-blocks.min.js +1 -1
  226. package/es2021.en/plugins/style/style.css +1 -1
  227. package/es2021.en/plugins/style/style.js +1 -1
  228. package/es2021.en/plugins/style/style.min.js +1 -1
  229. package/es2021.en/plugins/templates/templates.css +1 -1
  230. package/es2021.en/plugins/templates/templates.js +1 -1
  231. package/es2021.en/plugins/templates/templates.min.js +1 -1
  232. package/es2021.en/plugins/todo-list/todo-list.css +1 -1
  233. package/es2021.en/plugins/todo-list/todo-list.js +1 -1
  234. package/es2021.en/plugins/todo-list/todo-list.min.js +1 -1
  235. package/es2021.en/plugins/translate/translate.css +1 -1
  236. package/es2021.en/plugins/translate/translate.js +1 -1
  237. package/es2021.en/plugins/translate/translate.min.js +1 -1
  238. package/es2021.en/plugins/tune-block/tune-block.css +1 -1
  239. package/es2021.en/plugins/tune-block/tune-block.js +1 -1
  240. package/es2021.en/plugins/tune-block/tune-block.min.js +1 -1
  241. package/es5/jodit.css +2 -2
  242. package/es5/jodit.fat.min.js +2 -2
  243. package/es5/jodit.js +548 -141
  244. package/es5/jodit.min.css +2 -2
  245. package/es5/jodit.min.js +2 -2
  246. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  247. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  248. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  249. package/es5/plugins/autocomplete/autocomplete.css +1 -1
  250. package/es5/plugins/autocomplete/autocomplete.js +1 -1
  251. package/es5/plugins/autocomplete/autocomplete.min.js +1 -1
  252. package/es5/plugins/backup/backup.css +1 -1
  253. package/es5/plugins/backup/backup.js +1 -1
  254. package/es5/plugins/backup/backup.min.js +1 -1
  255. package/es5/plugins/button-generator/button-generator.css +1 -1
  256. package/es5/plugins/button-generator/button-generator.js +1 -1
  257. package/es5/plugins/button-generator/button-generator.min.js +1 -1
  258. package/es5/plugins/change-case/change-case.js +1 -1
  259. package/es5/plugins/change-case/change-case.min.js +1 -1
  260. package/es5/plugins/color-picker/color-picker.css +1 -1
  261. package/es5/plugins/color-picker/color-picker.js +1 -1
  262. package/es5/plugins/color-picker/color-picker.min.js +1 -1
  263. package/es5/plugins/emoji/emoji.css +1 -1
  264. package/es5/plugins/emoji/emoji.js +1 -1
  265. package/es5/plugins/emoji/emoji.min.js +1 -1
  266. package/es5/plugins/export-docs/export-docs.js +1 -1
  267. package/es5/plugins/export-docs/export-docs.min.js +1 -1
  268. package/es5/plugins/finder/finder.css +1 -1
  269. package/es5/plugins/finder/finder.js +1 -1
  270. package/es5/plugins/finder/finder.min.js +1 -1
  271. package/es5/plugins/google-maps/google-maps.css +1 -1
  272. package/es5/plugins/google-maps/google-maps.js +1 -1
  273. package/es5/plugins/google-maps/google-maps.min.js +1 -1
  274. package/es5/plugins/google-search/google-search.js +1 -1
  275. package/es5/plugins/google-search/google-search.min.js +1 -1
  276. package/es5/plugins/highlight-signature/highlight-signature.js +1 -1
  277. package/es5/plugins/highlight-signature/highlight-signature.min.js +1 -1
  278. package/es5/plugins/iframe-editor/iframe-editor.css +1 -1
  279. package/es5/plugins/iframe-editor/iframe-editor.js +1 -1
  280. package/es5/plugins/iframe-editor/iframe-editor.min.js +1 -1
  281. package/es5/plugins/image-editor-pro/image-editor-pro.css +1 -1
  282. package/es5/plugins/image-editor-pro/image-editor-pro.js +1 -1
  283. package/es5/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  284. package/es5/plugins/keyboard/keyboard.css +1 -1
  285. package/es5/plugins/keyboard/keyboard.js +1 -1
  286. package/es5/plugins/keyboard/keyboard.min.js +1 -1
  287. package/es5/plugins/mobile-view/mobile-view.js +1 -1
  288. package/es5/plugins/mobile-view/mobile-view.min.js +1 -1
  289. package/es5/plugins/page-break/page-break.js +1 -1
  290. package/es5/plugins/page-break/page-break.min.js +1 -1
  291. package/es5/plugins/paste-code/paste-code.css +1 -1
  292. package/es5/plugins/paste-code/paste-code.js +1 -1
  293. package/es5/plugins/paste-code/paste-code.min.js +1 -1
  294. package/es5/plugins/paste-from-word/paste-from-word.js +1 -1
  295. package/es5/plugins/paste-from-word/paste-from-word.min.js +1 -1
  296. package/es5/plugins/show-blocks/show-blocks.js +1 -1
  297. package/es5/plugins/show-blocks/show-blocks.min.js +1 -1
  298. package/es5/plugins/style/style.css +1 -1
  299. package/es5/plugins/style/style.js +1 -1
  300. package/es5/plugins/style/style.min.js +1 -1
  301. package/es5/plugins/templates/templates.css +1 -1
  302. package/es5/plugins/templates/templates.js +1 -1
  303. package/es5/plugins/templates/templates.min.js +1 -1
  304. package/es5/plugins/todo-list/todo-list.css +1 -1
  305. package/es5/plugins/todo-list/todo-list.js +1 -1
  306. package/es5/plugins/todo-list/todo-list.min.js +1 -1
  307. package/es5/plugins/translate/translate.css +1 -1
  308. package/es5/plugins/translate/translate.js +1 -1
  309. package/es5/plugins/translate/translate.min.js +1 -1
  310. package/es5/plugins/tune-block/tune-block.css +1 -1
  311. package/es5/plugins/tune-block/tune-block.js +1 -1
  312. package/es5/plugins/tune-block/tune-block.min.js +1 -1
  313. package/es5/polyfills.fat.min.js +1 -1
  314. package/es5/polyfills.js +1 -1
  315. package/es5/polyfills.min.js +1 -1
  316. 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.1
4
+ * Version: v4.18.3
5
5
  * Url: https://xdsoft.net/jodit/pro/
6
6
  * License(s): SEE LICENSE IN LICENSE.md
7
7
  */
@@ -2333,7 +2333,7 @@ function _unsupported_iterable_to_array(o, minLen) {
2333
2333
  if (n === "Map" || n === "Set") return Array.from(n);
2334
2334
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
2335
2335
  }
2336
- var APP_VERSION = "4.18.1";
2336
+ var APP_VERSION = "4.18.3";
2337
2337
  // prettier-ignore
2338
2338
  var ES = "es5";
2339
2339
  var IS_ES_MODERN = false;
@@ -8237,6 +8237,8 @@ __webpack_require__.r(__webpack_exports__);
8237
8237
  /* harmony export */ options: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.options; },
8238
8238
  /* harmony export */ parseQuery: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.parseQuery; },
8239
8239
  /* harmony export */ position: function() { return /* reexport safe */ _size_index_js__WEBPACK_IMPORTED_MODULE_6__.position; },
8240
+ /* harmony export */ prepareEmbedCode: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.prepareEmbedCode; },
8241
+ /* harmony export */ prepareMedia: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.prepareMedia; },
8240
8242
  /* harmony export */ previewBox: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.previewBox; },
8241
8243
  /* harmony export */ refs: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.refs; },
8242
8244
  /* harmony export */ reset: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.reset; },
@@ -10891,13 +10893,13 @@ var getClassName = function getClassName(obj) {
10891
10893
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
10892
10894
 
10893
10895
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
10894
- /* harmony export */ $$: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_25__.$$; },
10896
+ /* harmony export */ $$: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_26__.$$; },
10895
10897
  /* harmony export */ ConfigDeepFlatten: function() { return /* reexport safe */ _config_proto_js__WEBPACK_IMPORTED_MODULE_7__.ConfigDeepFlatten; },
10896
10898
  /* harmony export */ ConfigFlatten: function() { return /* reexport safe */ _config_proto_js__WEBPACK_IMPORTED_MODULE_7__.ConfigFlatten; },
10897
10899
  /* harmony export */ ConfigMerge: function() { return /* reexport safe */ _config_proto_js__WEBPACK_IMPORTED_MODULE_7__.ConfigMerge; },
10898
10900
  /* harmony export */ ConfigProto: function() { return /* reexport safe */ _config_proto_js__WEBPACK_IMPORTED_MODULE_7__.ConfigProto; },
10899
10901
  /* harmony export */ ConnectionError: function() { return /* reexport safe */ _error_index_js__WEBPACK_IMPORTED_MODULE_13__.ConnectionError; },
10900
- /* harmony export */ LimitedStack: function() { return /* reexport safe */ _stack_js__WEBPACK_IMPORTED_MODULE_27__.LimitedStack; },
10902
+ /* harmony export */ LimitedStack: function() { return /* reexport safe */ _stack_js__WEBPACK_IMPORTED_MODULE_28__.LimitedStack; },
10901
10903
  /* harmony export */ OptionsError: function() { return /* reexport safe */ _error_index_js__WEBPACK_IMPORTED_MODULE_13__.OptionsError; },
10902
10904
  /* harmony export */ UNSAFE_PROTO_KEYS: function() { return /* reexport safe */ _is_unsafe_proto_key_js__WEBPACK_IMPORTED_MODULE_18__.UNSAFE_PROTO_KEYS; },
10903
10905
  /* harmony export */ abort: function() { return /* reexport safe */ _error_index_js__WEBPACK_IMPORTED_MODULE_13__.abort; },
@@ -10910,9 +10912,9 @@ var getClassName = function getClassName(obj) {
10910
10912
  /* harmony export */ attrRaw: function() { return /* reexport safe */ _attr_js__WEBPACK_IMPORTED_MODULE_3__.attrRaw; },
10911
10913
  /* harmony export */ browser: function() { return /* reexport safe */ _browser_js__WEBPACK_IMPORTED_MODULE_4__.browser; },
10912
10914
  /* harmony export */ buildQuery: function() { return /* reexport safe */ _build_query_js__WEBPACK_IMPORTED_MODULE_5__.buildQuery; },
10913
- /* harmony export */ call: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_28__.call; },
10914
- /* harmony export */ callPromise: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_28__.callPromise; },
10915
- /* harmony export */ callThis: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_28__.callThis; },
10915
+ /* harmony export */ call: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_29__.call; },
10916
+ /* harmony export */ callPromise: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_29__.callPromise; },
10917
+ /* harmony export */ callThis: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_29__.callThis; },
10916
10918
  /* harmony export */ clearAlign: function() { return /* reexport safe */ _align_js__WEBPACK_IMPORTED_MODULE_0__.clearAlign; },
10917
10919
  /* harmony export */ clearCenterAlign: function() { return /* reexport safe */ _css_js__WEBPACK_IMPORTED_MODULE_9__.clearCenterAlign; },
10918
10920
  /* harmony export */ cns: function() { return /* reexport safe */ _mark_deprecated_js__WEBPACK_IMPORTED_MODULE_19__.cns; },
@@ -10922,7 +10924,7 @@ var getClassName = function getClassName(obj) {
10922
10924
  /* harmony export */ createMediaWrapper: function() { return /* reexport safe */ _media_wrapper_js__WEBPACK_IMPORTED_MODULE_20__.createMediaWrapper; },
10923
10925
  /* harmony export */ css: function() { return /* reexport safe */ _css_js__WEBPACK_IMPORTED_MODULE_9__.css; },
10924
10926
  /* harmony export */ cssInline: function() { return /* reexport safe */ _css_js__WEBPACK_IMPORTED_MODULE_9__.cssInline; },
10925
- /* harmony export */ cssPath: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_25__.cssPath; },
10927
+ /* harmony export */ cssPath: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_26__.cssPath; },
10926
10928
  /* harmony export */ ctrlKey: function() { return /* reexport safe */ _ctrl_key_js__WEBPACK_IMPORTED_MODULE_10__.ctrlKey; },
10927
10929
  /* harmony export */ dataBind: function() { return /* reexport safe */ _data_bind_js__WEBPACK_IMPORTED_MODULE_11__.dataBind; },
10928
10930
  /* harmony export */ defaultLanguage: function() { return /* reexport safe */ _default_language_js__WEBPACK_IMPORTED_MODULE_12__.defaultLanguage; },
@@ -10931,34 +10933,36 @@ var getClassName = function getClassName(obj) {
10931
10933
  /* harmony export */ get: function() { return /* reexport safe */ _get_js__WEBPACK_IMPORTED_MODULE_15__.get; },
10932
10934
  /* harmony export */ getAlignClasses: function() { return /* reexport safe */ _align_js__WEBPACK_IMPORTED_MODULE_0__.getAlignClasses; },
10933
10935
  /* harmony export */ getClassName: function() { return /* reexport safe */ _get_class_name_js__WEBPACK_IMPORTED_MODULE_16__.getClassName; },
10934
- /* harmony export */ getDataTransfer: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_28__.getDataTransfer; },
10936
+ /* harmony export */ getDataTransfer: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_29__.getDataTransfer; },
10935
10937
  /* harmony export */ getHAlign: function() { return /* reexport safe */ _align_js__WEBPACK_IMPORTED_MODULE_0__.getHAlign; },
10936
10938
  /* harmony export */ getMediaWrapper: function() { return /* reexport safe */ _media_wrapper_js__WEBPACK_IMPORTED_MODULE_20__.getMediaWrapper; },
10937
- /* harmony export */ getPropertyDescriptor: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_28__.getPropertyDescriptor; },
10939
+ /* harmony export */ getPropertyDescriptor: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_29__.getPropertyDescriptor; },
10938
10940
  /* harmony export */ getWrappedMedia: function() { return /* reexport safe */ _media_wrapper_js__WEBPACK_IMPORTED_MODULE_20__.getWrappedMedia; },
10939
- /* harmony export */ getXPathByElement: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_25__.getXPathByElement; },
10941
+ /* harmony export */ getXPathByElement: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_26__.getXPathByElement; },
10940
10942
  /* harmony export */ hAlignElement: function() { return /* reexport safe */ _align_js__WEBPACK_IMPORTED_MODULE_0__.hAlignElement; },
10941
10943
  /* harmony export */ humanSizeToBytes: function() { return /* reexport safe */ _human_size_to_bytes_js__WEBPACK_IMPORTED_MODULE_17__.humanSizeToBytes; },
10942
- /* harmony export */ inView: function() { return /* reexport safe */ _scroll_into_view_js__WEBPACK_IMPORTED_MODULE_24__.inView; },
10944
+ /* harmony export */ inView: function() { return /* reexport safe */ _scroll_into_view_js__WEBPACK_IMPORTED_MODULE_25__.inView; },
10943
10945
  /* harmony export */ isAtom: function() { return /* reexport safe */ _extend_js__WEBPACK_IMPORTED_MODULE_14__.isAtom; },
10944
10946
  /* harmony export */ isUnsafeProtoKey: function() { return /* reexport safe */ _is_unsafe_proto_key_js__WEBPACK_IMPORTED_MODULE_18__.isUnsafeProtoKey; },
10945
10947
  /* harmony export */ keepNames: function() { return /* reexport safe */ _get_class_name_js__WEBPACK_IMPORTED_MODULE_16__.keepNames; },
10946
- /* harmony export */ keys: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_28__.keys; },
10947
- /* harmony export */ loadImage: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_28__.loadImage; },
10948
+ /* harmony export */ keys: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_29__.keys; },
10949
+ /* harmony export */ loadImage: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_29__.loadImage; },
10948
10950
  /* harmony export */ loadNext: function() { return /* reexport safe */ _append_script_js__WEBPACK_IMPORTED_MODULE_1__.loadNext; },
10949
10951
  /* harmony export */ loadNextStyle: function() { return /* reexport safe */ _append_script_js__WEBPACK_IMPORTED_MODULE_1__.loadNextStyle; },
10950
10952
  /* harmony export */ markAsAtomic: function() { return /* reexport safe */ _extend_js__WEBPACK_IMPORTED_MODULE_14__.markAsAtomic; },
10951
10953
  /* harmony export */ markDeprecated: function() { return /* reexport safe */ _mark_deprecated_js__WEBPACK_IMPORTED_MODULE_19__.markDeprecated; },
10952
- /* harmony export */ markOwner: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_28__.markOwner; },
10953
- /* harmony export */ memorizeExec: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_28__.memorizeExec; },
10954
+ /* harmony export */ markOwner: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_29__.markOwner; },
10955
+ /* harmony export */ memorizeExec: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_29__.memorizeExec; },
10954
10956
  /* harmony export */ options: function() { return /* reexport safe */ _error_index_js__WEBPACK_IMPORTED_MODULE_13__.options; },
10955
10957
  /* harmony export */ parseQuery: function() { return /* reexport safe */ _parse_query_js__WEBPACK_IMPORTED_MODULE_21__.parseQuery; },
10956
- /* harmony export */ previewBox: function() { return /* reexport safe */ _print_js__WEBPACK_IMPORTED_MODULE_22__.previewBox; },
10957
- /* harmony export */ refs: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_25__.refs; },
10958
- /* harmony export */ reset: function() { return /* reexport safe */ _reset_js__WEBPACK_IMPORTED_MODULE_23__.reset; },
10959
- /* harmony export */ resolveElement: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_25__.resolveElement; },
10960
- /* harmony export */ scrollIntoViewIfNeeded: function() { return /* reexport safe */ _scroll_into_view_js__WEBPACK_IMPORTED_MODULE_24__.scrollIntoViewIfNeeded; },
10961
- /* harmony export */ set: function() { return /* reexport safe */ _set_js__WEBPACK_IMPORTED_MODULE_26__.set; },
10958
+ /* harmony export */ prepareEmbedCode: function() { return /* reexport safe */ _prepare_media_js__WEBPACK_IMPORTED_MODULE_22__.prepareEmbedCode; },
10959
+ /* harmony export */ prepareMedia: function() { return /* reexport safe */ _prepare_media_js__WEBPACK_IMPORTED_MODULE_22__.prepareMedia; },
10960
+ /* harmony export */ previewBox: function() { return /* reexport safe */ _print_js__WEBPACK_IMPORTED_MODULE_23__.previewBox; },
10961
+ /* harmony export */ refs: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_26__.refs; },
10962
+ /* harmony export */ reset: function() { return /* reexport safe */ _reset_js__WEBPACK_IMPORTED_MODULE_24__.reset; },
10963
+ /* harmony export */ resolveElement: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_26__.resolveElement; },
10964
+ /* harmony export */ scrollIntoViewIfNeeded: function() { return /* reexport safe */ _scroll_into_view_js__WEBPACK_IMPORTED_MODULE_25__.scrollIntoViewIfNeeded; },
10965
+ /* harmony export */ set: function() { return /* reexport safe */ _set_js__WEBPACK_IMPORTED_MODULE_27__.set; },
10962
10966
  /* harmony export */ wrapMedia: function() { return /* reexport safe */ _media_wrapper_js__WEBPACK_IMPORTED_MODULE_20__.wrapMedia; }
10963
10967
  /* harmony export */ });
10964
10968
  /* harmony import */ var _align_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(25726);
@@ -10983,13 +10987,14 @@ var getClassName = function getClassName(obj) {
10983
10987
  /* harmony import */ var _mark_deprecated_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(95942);
10984
10988
  /* harmony import */ var _media_wrapper_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(61477);
10985
10989
  /* harmony import */ var _parse_query_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(82501);
10986
- /* harmony import */ var _print_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(11628);
10987
- /* harmony import */ var _reset_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(58844);
10988
- /* harmony import */ var _scroll_into_view_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(26395);
10989
- /* harmony import */ var _selector_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(76078);
10990
- /* harmony import */ var _set_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(3703);
10991
- /* harmony import */ var _stack_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(50535);
10992
- /* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(37790);
10990
+ /* harmony import */ var _prepare_media_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(96437);
10991
+ /* harmony import */ var _print_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(11628);
10992
+ /* harmony import */ var _reset_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(58844);
10993
+ /* harmony import */ var _scroll_into_view_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(26395);
10994
+ /* harmony import */ var _selector_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(76078);
10995
+ /* harmony import */ var _set_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(3703);
10996
+ /* harmony import */ var _stack_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(50535);
10997
+ /* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(37790);
10993
10998
  /*!
10994
10999
  * Jodit Editor (https://xdsoft.net/jodit/)
10995
11000
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -11025,6 +11030,7 @@ var getClassName = function getClassName(obj) {
11025
11030
 
11026
11031
 
11027
11032
 
11033
+
11028
11034
 
11029
11035
 
11030
11036
  /***/ }),
@@ -11284,6 +11290,45 @@ var isWrapper = function isWrapper(node, wrapper) {
11284
11290
  };
11285
11291
 
11286
11292
 
11293
+ /***/ }),
11294
+
11295
+ /***/ 96437:
11296
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
11297
+
11298
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
11299
+ /* harmony export */ prepareEmbedCode: function() { return /* binding */ prepareEmbedCode; },
11300
+ /* harmony export */ prepareMedia: function() { return /* binding */ prepareMedia; }
11301
+ /* harmony export */ });
11302
+ /* harmony import */ var _align_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(25726);
11303
+ /* harmony import */ var _media_wrapper_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(61477);
11304
+ /*!
11305
+ * Jodit Editor (https://xdsoft.net/jodit/)
11306
+ * Released under MIT see LICENSE.txt in the project root for license information.
11307
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
11308
+ */
11309
+
11310
+ /**
11311
+ * Puts new media in its wrapper (see `mediaWrappers`) and aligns it with
11312
+ * `mediaDefaultAlign`. Returns the wrapper, or `element` when there is none
11313
+ */ function prepareMedia(jodit, element) {
11314
+ var media = (0,_media_wrapper_js__WEBPACK_IMPORTED_MODULE_1__.wrapMedia)(jodit, element);
11315
+ var mediaDefaultAlign = jodit.o.mediaDefaultAlign;
11316
+ if (mediaDefaultAlign && mediaDefaultAlign !== 'normal') {
11317
+ (0,_align_js__WEBPACK_IMPORTED_MODULE_0__.hAlignElement)(media, mediaDefaultAlign, (0,_align_js__WEBPACK_IMPORTED_MODULE_0__.getAlignClasses)(jodit, media));
11318
+ }
11319
+ return media;
11320
+ }
11321
+ /**
11322
+ * Embed code that is one element is prepared as media (see `prepareMedia`);
11323
+ * other code is returned as it is
11324
+ */ function prepareEmbedCode(jodit, code) {
11325
+ var box = jodit.createInside.div();
11326
+ box.innerHTML = code.trim();
11327
+ var element = box.firstElementChild;
11328
+ return element && box.childNodes.length === 1 ? prepareMedia(jodit, element) : code;
11329
+ }
11330
+
11331
+
11287
11332
  /***/ }),
11288
11333
 
11289
11334
  /***/ 11628:
@@ -17125,7 +17170,9 @@ function toggleAttribute(jodit, value, elm, key, dry, mode) {
17125
17170
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.append(wrapper, fragment);
17126
17171
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeInsertNode(range, wrapper);
17127
17172
  if (style.elementIsBlock) {
17128
- if (_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(wrapper) && !_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(wrapper.firstElementChild, 'br')) {
17173
+ // The wrapped content can bring its own `<br>` (an empty table
17174
+ // cell's), after or inside the temporary `<font>` around the selection
17175
+ if (_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(wrapper) && !wrapper.querySelector('br')) {
17129
17176
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.append(wrapper, ci.element('br'));
17130
17177
  }
17131
17178
  }
@@ -38152,11 +38199,10 @@ function _create_class(Constructor, protoProps, staticProps) {
38152
38199
  /* harmony export */ History: function() { return /* binding */ History; }
38153
38200
  /* harmony export */ });
38154
38201
  /* harmony import */ var _core_component_view_component_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(80480);
38155
- /* harmony import */ var _core_decorators_debounce_debounce_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(81577);
38156
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6441);
38157
- /* harmony import */ var _command_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(92643);
38158
- /* harmony import */ var _snapshot_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(52604);
38159
- /* harmony import */ var _stack_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(57034);
38202
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6441);
38203
+ /* harmony import */ var _command_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(92643);
38204
+ /* harmony import */ var _snapshot_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(52604);
38205
+ /* harmony import */ var _stack_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(57034);
38160
38206
  function _assert_this_initialized(self) {
38161
38207
  if (self === void 0) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
38162
38208
  return self;
@@ -38248,19 +38294,12 @@ function _type_of(obj) {
38248
38294
  * Jodit Editor (https://xdsoft.net/jodit/)
38249
38295
  * Released under MIT see LICENSE.txt in the project root for license information.
38250
38296
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
38251
- */ var __decorate = undefined && undefined.__decorate || function(decorators, target, key, desc) {
38252
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
38253
- if ((typeof Reflect === "undefined" ? "undefined" : _type_of(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
38254
- else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
38255
- return c > 3 && r && Object.defineProperty(target, key, r), r;
38256
- };
38257
-
38258
-
38297
+ */ ;
38259
38298
 
38260
38299
 
38261
38300
 
38262
38301
 
38263
- _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.history = {
38302
+ _config_js__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.history = {
38264
38303
  enable: true,
38265
38304
  maxHistoryLength: Infinity,
38266
38305
  timeout: 1000
@@ -38271,13 +38310,19 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.history = {
38271
38310
  "use strict";
38272
38311
  _inherits(History, ViewComponent);
38273
38312
  function History(editor) {
38274
- var stack = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : new _stack_js__WEBPACK_IMPORTED_MODULE_5__.Stack(editor.o.history.maxHistoryLength), snapshot = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : new _snapshot_js__WEBPACK_IMPORTED_MODULE_4__.Snapshot(editor);
38313
+ var stack = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : new _stack_js__WEBPACK_IMPORTED_MODULE_4__.Stack(editor.o.history.maxHistoryLength), snapshot = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : new _snapshot_js__WEBPACK_IMPORTED_MODULE_3__.Snapshot(editor);
38275
38314
  _class_call_check(this, History);
38276
38315
  var _this;
38277
38316
  _this = _call_super(this, History, [
38278
38317
  editor
38279
38318
  ]);
38280
38319
  _this.updateTick = 0;
38320
+ /**
38321
+ * A step is open: changes have come in that are not in the stack yet
38322
+ */ _this.__hasPendingChanges = false;
38323
+ /**
38324
+ * Records the open step `history.timeout` after its first change
38325
+ */ _this.__timer = 0;
38281
38326
  _this.__stack = stack;
38282
38327
  _this.snapshot = snapshot;
38283
38328
  if (editor.o.history.enable) {
@@ -38288,6 +38333,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.history = {
38288
38333
  _this.startValue = _this.snapshot.make();
38289
38334
  editor.events// save selection
38290
38335
  .on('internalChange internalUpdate', function() {
38336
+ _this.__processPendingChanges();
38291
38337
  _this.startValue = _this.snapshot.make();
38292
38338
  }).on(editor.editor, [
38293
38339
  'changeSelection',
@@ -38303,7 +38349,9 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.history = {
38303
38349
  if (_this.startValue.html === _this.j.getNativeEditorValue()) {
38304
38350
  _this.startValue = _this.snapshot.make();
38305
38351
  }
38306
- }).on(_this, 'change.history', _this.onChange);
38352
+ }).on(_this, 'change.history', function() {
38353
+ return _this.onChange();
38354
+ });
38307
38355
  });
38308
38356
  }
38309
38357
  return _this;
@@ -38320,6 +38368,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.history = {
38320
38368
  * Return state of the WYSIWYG editor to step back
38321
38369
  */ key: "redo",
38322
38370
  value: function redo() {
38371
+ this.__processPendingChanges();
38323
38372
  if (this.__stack.redo()) {
38324
38373
  this.startValue = this.snapshot.make();
38325
38374
  this.fireChangeStack();
@@ -38329,7 +38378,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.history = {
38329
38378
  {
38330
38379
  key: "canRedo",
38331
38380
  value: function canRedo() {
38332
- return this.__stack.canRedo();
38381
+ return !this.__hasPendingChanges && this.__stack.canRedo();
38333
38382
  }
38334
38383
  },
38335
38384
  {
@@ -38337,6 +38386,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.history = {
38337
38386
  * Return the state of the WYSIWYG editor to step forward
38338
38387
  */ key: "undo",
38339
38388
  value: function undo() {
38389
+ this.__processPendingChanges();
38340
38390
  if (this.__stack.undo()) {
38341
38391
  this.startValue = this.snapshot.make();
38342
38392
  this.fireChangeStack();
@@ -38346,13 +38396,15 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.history = {
38346
38396
  {
38347
38397
  key: "canUndo",
38348
38398
  value: function canUndo() {
38349
- return this.__stack.canUndo();
38399
+ return this.__hasPendingChanges || this.__stack.canUndo();
38350
38400
  }
38351
38401
  },
38352
38402
  {
38353
38403
  key: "clear",
38354
38404
  value: function clear() {
38355
38405
  this.startValue = this.snapshot.make();
38406
+ this.async.clearTimeout(this.__timer);
38407
+ this.__hasPendingChanges = false;
38356
38408
  this.__stack.clear();
38357
38409
  this.fireChangeStack();
38358
38410
  }
@@ -38383,10 +38435,36 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.history = {
38383
38435
  },
38384
38436
  {
38385
38437
  /**
38386
- * Push new command in stack on some changes
38438
+ * Push new command in stack on some changes. The first change opens a
38439
+ * step, and later ones join it until `history.timeout` has passed,
38440
+ * however close together they come.
38387
38441
  */ key: "onChange",
38388
38442
  value: function onChange() {
38389
- this.__processChanges();
38443
+ var _this = this;
38444
+ // A transaction is over by the time the step is recorded, so it is
38445
+ // checked now
38446
+ if (this.snapshot.isBlocked || this.__hasPendingChanges) {
38447
+ return;
38448
+ }
38449
+ this.__hasPendingChanges = true;
38450
+ this.__timer = this.async.setTimeout(function() {
38451
+ return _this.__processPendingChanges();
38452
+ }, this.j.o.history.timeout);
38453
+ // With a timeout of 0 the step is already recorded. Otherwise
38454
+ // canUndo and canRedo count it from now
38455
+ if (this.__hasPendingChanges) {
38456
+ this.fireChangeStack();
38457
+ }
38458
+ }
38459
+ },
38460
+ {
38461
+ /**
38462
+ * Push the open step's changes now
38463
+ */ key: "__processPendingChanges",
38464
+ value: function __processPendingChanges() {
38465
+ if (this.__hasPendingChanges) {
38466
+ this.__processChanges();
38467
+ }
38390
38468
  }
38391
38469
  },
38392
38470
  {
@@ -38397,6 +38475,8 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.history = {
38397
38475
  if (this.snapshot.isBlocked || !this.j.o.history.enable) {
38398
38476
  return;
38399
38477
  }
38478
+ this.async.clearTimeout(this.__timer);
38479
+ this.__hasPendingChanges = false;
38400
38480
  this.updateStack();
38401
38481
  }
38402
38482
  },
@@ -38407,7 +38487,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.history = {
38407
38487
  value: function updateStack() {
38408
38488
  var replace = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false;
38409
38489
  var newValue = this.snapshot.make();
38410
- if (_snapshot_js__WEBPACK_IMPORTED_MODULE_4__.Snapshot.equal(newValue, this.startValue)) {
38490
+ if (_snapshot_js__WEBPACK_IMPORTED_MODULE_3__.Snapshot.equal(newValue, this.startValue)) {
38411
38491
  return;
38412
38492
  }
38413
38493
  // Only the selection moved, for example when the selection markers
@@ -38417,7 +38497,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.history = {
38417
38497
  this.startValue = newValue;
38418
38498
  return;
38419
38499
  }
38420
- var newCommand = new _command_js__WEBPACK_IMPORTED_MODULE_3__.Command(this.startValue, newValue, this, this.updateTick);
38500
+ var newCommand = new _command_js__WEBPACK_IMPORTED_MODULE_2__.Command(this.startValue, newValue, this, this.updateTick);
38421
38501
  if (replace) {
38422
38502
  var command = this.__stack.current();
38423
38503
  if (command && this.updateTick === command.tick) {
@@ -38453,9 +38533,6 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.history = {
38453
38533
  ]);
38454
38534
  return History;
38455
38535
  }(_core_component_view_component_js__WEBPACK_IMPORTED_MODULE_0__.ViewComponent);
38456
- __decorate([
38457
- (0,_core_decorators_debounce_debounce_js__WEBPACK_IMPORTED_MODULE_1__.debounce)()
38458
- ], History.prototype, "onChange", null);
38459
38536
 
38460
38537
 
38461
38538
  /***/ }),
@@ -40818,6 +40895,7 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
40818
40895
  var cells = box[i];
40819
40896
  if (cells[columnIndex] !== cells[newColumnIndex] || columnIndex === newColumnIndex) {
40820
40897
  var cell = this.j.createInside.element('td');
40898
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.append(cell, this.j.createInside.element('br'));
40821
40899
  if (insertAfter) {
40822
40900
  _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.after(cells[columnIndex], cell);
40823
40901
  } else {
@@ -40985,7 +41063,9 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
40985
41063
  var columnsCount = Table.__getColumnsCount(table);
40986
41064
  row = create.element('tr');
40987
41065
  for(var j = 0; j < columnsCount; j += 1){
40988
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.append(row, create.element('td'));
41066
+ var cell = create.element('td');
41067
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.append(cell, create.element('br'));
41068
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.append(row, cell);
40989
41069
  }
40990
41070
  } else {
40991
41071
  row = line.cloneNode(true);
@@ -41002,6 +41082,7 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41002
41082
  _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.each(row, function(cell) {
41003
41083
  if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.isCell(cell)) {
41004
41084
  _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.detach(cell);
41085
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.append(cell, create.element('br'));
41005
41086
  }
41006
41087
  });
41007
41088
  }
@@ -41280,7 +41361,7 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41280
41361
  Table.__setColumnWidthByDelta(table, first_j, 0, true, __marked);
41281
41362
  }
41282
41363
  }
41283
- first.innerHTML = html.join('<br/>');
41364
+ first.innerHTML = html.join('<br/>') || '<br/>';
41284
41365
  instance(jodit).addSelection(first);
41285
41366
  alreadyMerged.delete(first);
41286
41367
  Table.__unmark(__marked);
@@ -44587,8 +44668,8 @@ _core_ui_index_js__WEBPACK_IMPORTED_MODULE_2__.Icon.set('palette', _palette_svg_
44587
44668
  var box = (0,_tabs_tabs_js__WEBPACK_IMPORTED_MODULE_3__.TabsWidget)(editor, tabs);
44588
44669
  // Marks this popup so its tabs auto-size to their labels (see
44589
44670
  // `.jodit-file-selector` in tabs.less) — long localized tab captions are no
44590
- // longer clipped — while leaving other tab popups (link, video …)
44591
- // untouched.
44671
+ // longer clipped — while leaving other tab popups (link …) untouched. The
44672
+ // video popup, which has an Upload tab too, uses it as well.
44592
44673
  box.classList.add('jodit-file-selector');
44593
44674
  return box;
44594
44675
  };
@@ -46539,6 +46620,10 @@ var backspace = /*#__PURE__*/ function(Plugin) {
46539
46620
  if (!sel.isFocused()) {
46540
46621
  sel.focus();
46541
46622
  }
46623
+ // Focused with no range, as WebKit leaves it after a click on an embed
46624
+ if (!sel.isInsideArea) {
46625
+ return;
46626
+ }
46542
46627
  if ((0,_cases_check_not_collapsed_js__WEBPACK_IMPORTED_MODULE_7__.checkNotCollapsed)(jodit)) {
46543
46628
  jodit.e.fire('backSpaceAfterDelete', backspace);
46544
46629
  return false;
@@ -47956,7 +48041,8 @@ _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_4__.Icon.set('class-span', _class_span
47956
48041
  /* harmony import */ var _core_helpers_html_safe_html_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(86518);
47957
48042
  /* harmony import */ var _core_plugin_plugin_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(20356);
47958
48043
  /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(46776);
47959
- /* harmony import */ var _helpers_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(59498);
48044
+ /* harmony import */ var _helpers_visitor_filters_replace_old_tags_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(80973);
48045
+ /* harmony import */ var _helpers_index_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(59498);
47960
48046
  function _array_like_to_array(arr, len) {
47961
48047
  if (len == null || len > arr.length) len = arr.length;
47962
48048
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
@@ -48145,16 +48231,19 @@ function _wrap_native_super(Class) {
48145
48231
 
48146
48232
 
48147
48233
 
48234
+
48148
48235
  /**
48149
48236
  * Clean HTML after removeFormat and insertHorizontalRule command
48150
48237
  */ var TRAILING_BR_BLOCKS = 'p, div, li, td, th, h1, h2, h3, h4, h5, h6, blockquote';
48151
48238
  var cleanHtml = /*#__PURE__*/ function(Plugin) {
48152
48239
  "use strict";
48153
48240
  _inherits(cleanHtml, Plugin);
48154
- function cleanHtml() {
48241
+ function cleanHtml(jodit) {
48155
48242
  _class_call_check(this, cleanHtml);
48156
48243
  var _this;
48157
- _this = _call_super(this, cleanHtml, arguments);
48244
+ _this = _call_super(this, cleanHtml, [
48245
+ jodit
48246
+ ]);
48158
48247
  /** @override */ _this.buttons = [
48159
48248
  {
48160
48249
  name: 'eraser',
@@ -48165,12 +48254,22 @@ var cleanHtml = /*#__PURE__*/ function(Plugin) {
48165
48254
  _this.walker = new _core_dom_lazy_walker_js__WEBPACK_IMPORTED_MODULE_2__.LazyWalker(_this.j.async, {
48166
48255
  timeout: _this.j.o.cleanHTML.timeout
48167
48256
  });
48257
+ // `@watch` binds once the plugin is ready, which is after the initial
48258
+ // value has already gone into the editor. The handlers that keep
48259
+ // markup out of the live tree have to be there from the start, or
48260
+ // event handlers in a textarea's content run before anything
48261
+ // sanitises them.
48262
+ jodit.e.on('safeHTML', _this.onSafeHTML).on('beforeSetNativeEditorValue', _this.onBeforeSetNativeEditorValue).on('afterSetNativeEditorValue', _this.onAfterSetNativeEditorValue);
48168
48263
  return _this;
48169
48264
  }
48170
48265
  _create_class(cleanHtml, [
48171
48266
  {
48172
48267
  /** @override */ key: "afterInit",
48173
- value: function afterInit(jodit) {}
48268
+ value: function afterInit() {
48269
+ // The walker's own `:afterInit` watcher is bound on that very event,
48270
+ // so without this the first pass waited for the first key or click
48271
+ this.onChangeCleanHTML();
48272
+ }
48174
48273
  },
48175
48274
  {
48176
48275
  key: "isEditMode",
@@ -48196,10 +48295,10 @@ var cleanHtml = /*#__PURE__*/ function(Plugin) {
48196
48295
  value: function startWalker() {
48197
48296
  var _this = this;
48198
48297
  var jodit = this.jodit;
48199
- var allow = (0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_7__.getHash)(this.j.o.cleanHTML.allowTags);
48200
- var deny = (0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_7__.getHash)(this.j.o.cleanHTML.denyTags);
48298
+ var allow = (0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_8__.getHash)(this.j.o.cleanHTML.allowTags);
48299
+ var deny = (0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_8__.getHash)(this.j.o.cleanHTML.denyTags);
48201
48300
  this.walker.on('visit', function(node) {
48202
- return (0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_7__.visitNodeWalker)(jodit, node, allow, deny, _this.currentSelectionNode);
48301
+ return (0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_8__.visitNodeWalker)(jodit, node, allow, deny, _this.currentSelectionNode);
48203
48302
  }).on('end', function(affected) {
48204
48303
  _this.j.e.fire(affected ? 'internalChange finishedCleanHTMLWorker' : 'finishedCleanHTMLWorker');
48205
48304
  });
@@ -48210,9 +48309,9 @@ var cleanHtml = /*#__PURE__*/ function(Plugin) {
48210
48309
  value: function beforeCommand(command) {
48211
48310
  if (command.toLowerCase() === 'removeformat') {
48212
48311
  if (this.j.s.isCollapsed()) {
48213
- (0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_7__.removeFormatForCollapsedSelection)(this.j);
48312
+ (0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_8__.removeFormatForCollapsedSelection)(this.j);
48214
48313
  } else {
48215
- (0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_7__.removeFormatForSelection)(this.j);
48314
+ (0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_8__.removeFormatForSelection)(this.j);
48216
48315
  }
48217
48316
  return false;
48218
48317
  }
@@ -48244,6 +48343,7 @@ var cleanHtml = /*#__PURE__*/ function(Plugin) {
48244
48343
  ], 2), sandBox = _ref[0], iframe = _ref[1];
48245
48344
  sandBox.innerHTML = data.value;
48246
48345
  this.j.e.fire('safeHTML', sandBox);
48346
+ this.__replaceOldTags(sandBox);
48247
48347
  data.value = sandBox.innerHTML;
48248
48348
  (0,_core_helpers_html_safe_html_js__WEBPACK_IMPORTED_MODULE_4__.safeHTML)(sandBox, {
48249
48349
  safeJavaScriptLink: true,
@@ -48255,6 +48355,24 @@ var cleanHtml = /*#__PURE__*/ function(Plugin) {
48255
48355
  },
48256
48356
  {
48257
48357
  /**
48358
+ * Replace old tags (`<b>` with `<strong>`, `<i>` with `<em>`) in an
48359
+ * assigned value straight away. The walker would get to them only after
48360
+ * every node before them, seconds later on a long document, and until
48361
+ * then Bold does not treat `<b>` as bold, and the swap can move the caret.
48362
+ */ key: "__replaceOldTags",
48363
+ value: function __replaceOldTags(box) {
48364
+ var _this = this;
48365
+ var _this_j_o_cleanHTML = this.j.o.cleanHTML, list = _this_j_o_cleanHTML.replaceOldTags, disableCleanFilter = _this_j_o_cleanHTML.disableCleanFilter;
48366
+ if (!list || (disableCleanFilter === null || disableCleanFilter === void 0 ? void 0 : disableCleanFilter.has('replaceOldTags'))) {
48367
+ return;
48368
+ }
48369
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.each(box, function(node) {
48370
+ ;(0,_helpers_visitor_filters_replace_old_tags_js__WEBPACK_IMPORTED_MODULE_7__.replaceOldTags)(_this.j, node, false);
48371
+ });
48372
+ }
48373
+ },
48374
+ {
48375
+ /**
48258
48376
  * Collapse a value that holds only a single empty block (e.g.
48259
48377
  * `<p><br></p>` left after deleting all content) to an empty string —
48260
48378
  * opt-in via `cleanHTML.collapseEmptyValueToEmptyString`. See #1149
@@ -48346,6 +48464,7 @@ var cleanHtml = /*#__PURE__*/ function(Plugin) {
48346
48464
  {
48347
48465
  /** @override */ key: "beforeDestruct",
48348
48466
  value: function beforeDestruct() {
48467
+ this.j.e.off('safeHTML', this.onSafeHTML).off('beforeSetNativeEditorValue', this.onBeforeSetNativeEditorValue).off('afterSetNativeEditorValue', this.onAfterSetNativeEditorValue);
48349
48468
  this.walker.destruct();
48350
48469
  }
48351
48470
  }
@@ -48368,16 +48487,16 @@ __decorate([
48368
48487
  (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)(':beforeCommand')
48369
48488
  ], cleanHtml.prototype, "beforeCommand", null);
48370
48489
  __decorate([
48371
- (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)(':afterSetNativeEditorValue')
48490
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.autobind
48372
48491
  ], cleanHtml.prototype, "onAfterSetNativeEditorValue", null);
48373
48492
  __decorate([
48374
- (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)(':beforeSetNativeEditorValue')
48493
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.autobind
48375
48494
  ], cleanHtml.prototype, "onBeforeSetNativeEditorValue", null);
48376
48495
  __decorate([
48377
48496
  (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)(':afterGetValueFromEditor')
48378
48497
  ], cleanHtml.prototype, "onAfterGetValueFromEditor", null);
48379
48498
  __decorate([
48380
- (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)(':safeHTML')
48499
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.autobind
48381
48500
  ], cleanHtml.prototype, "onSafeHTML", null);
48382
48501
  _core_global_js__WEBPACK_IMPORTED_MODULE_3__.pluginSystem.add('cleanHtml', cleanHtml);
48383
48502
 
@@ -48956,10 +49075,33 @@ __webpack_require__.r(__webpack_exports__);
48956
49075
  }
48957
49076
  var tagName = list[oldParent.nodeName.toLowerCase()] || list[oldParent.nodeName];
48958
49077
  if (tagName) {
48959
- return _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.replace(oldParent, tagName, jodit.createInside, true, false);
49078
+ var restoreSelection = keepSelection(jodit, oldParent);
49079
+ var newParent = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.replace(oldParent, tagName, jodit.createInside, true, false);
49080
+ restoreSelection === null || restoreSelection === void 0 ? void 0 : restoreSelection(newParent);
49081
+ return newParent;
48960
49082
  }
48961
49083
  return oldParent;
48962
49084
  }
49085
+ /**
49086
+ * Moving the children out of an element collapses a selection inside them to
49087
+ * where the element was, so the caret jumps to the start of the text being
49088
+ * typed. Returns a callback that puts the selection back on the same nodes.
49089
+ *
49090
+ * Like `removeEmptyTextNode`, it leaves the selection alone once focus has
49091
+ * left the editor, because selecting would take focus back.
49092
+ */ function keepSelection(jodit, elm) {
49093
+ var sel = jodit.s.sel;
49094
+ if (!(sel === null || sel === void 0 ? void 0 : sel.anchorNode) || !sel.focusNode || !jodit.s.isFocused()) {
49095
+ return null;
49096
+ }
49097
+ var anchorNode = sel.anchorNode, anchorOffset = sel.anchorOffset, focusNode = sel.focusNode, focusOffset = sel.focusOffset;
49098
+ if (!_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isOrContains(elm, anchorNode) && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isOrContains(elm, focusNode)) {
49099
+ return null;
49100
+ }
49101
+ return function(newElm) {
49102
+ sel.setBaseAndExtent(anchorNode === elm ? newElm : anchorNode, anchorOffset, focusNode === elm ? newElm : focusNode, focusOffset);
49103
+ };
49104
+ }
48963
49105
 
48964
49106
 
48965
49107
  /***/ }),
@@ -51522,9 +51664,32 @@ var brBoxes = new Set([
51522
51664
  * Released under MIT see LICENSE.txt in the project root for license information.
51523
51665
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
51524
51666
  */
51667
+ /**
51668
+ * Moves the cursor out of a block that can't hold the inserted block: before
51669
+ * or after it when the cursor is at its edge, or between its two halves when
51670
+ * the cursor is inside its content. An empty block is removed
51671
+ */ function moveCursorOutOf(jodit, parent) {
51672
+ var _a;
51673
+ var s = jodit.s;
51674
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(parent)) {
51675
+ s.setCursorAfter(parent);
51676
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(parent);
51677
+ return;
51678
+ }
51679
+ if (s.cursorOnTheRight(parent)) {
51680
+ s.setCursorAfter(parent);
51681
+ return;
51682
+ }
51683
+ if (s.cursorOnTheLeft(parent)) {
51684
+ s.setCursorBefore(parent);
51685
+ return;
51686
+ }
51687
+ s.setCursorAfter((_a = s.splitSelection(parent)) !== null && _a !== void 0 ? _a : parent);
51688
+ }
51525
51689
  /**
51526
51690
  * Checks whether the insertion of an element at the current location is allowed,
51527
- * if it is not allowed, it deletes an empty block element or moves the cursor after it
51691
+ * if it is not allowed, it deletes an empty block element, moves the cursor
51692
+ * before or after it, or splits it at the cursor
51528
51693
  * @internal
51529
51694
  */ function checkBlockNesting(jodit, node) {
51530
51695
  var _a, _b;
@@ -51553,10 +51718,7 @@ var brBoxes = new Set([
51553
51718
  parent = current;
51554
51719
  }
51555
51720
  if (parent) {
51556
- jodit.s.setCursorAfter(parent);
51557
- if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(parent)) {
51558
- _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(parent);
51559
- }
51721
+ moveCursorOutOf(jodit, parent);
51560
51722
  }
51561
51723
  }
51562
51724
  }
@@ -52336,7 +52498,14 @@ function brBefore(start) {
52336
52498
  _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.after(link, fake);
52337
52499
  } else if (s.cursorOnTheLeft(link, fake)) {
52338
52500
  _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.before(link, fake);
52501
+ } else {
52502
+ return;
52339
52503
  }
52504
+ // The block is split at the caret, so the caret leaves the link too:
52505
+ // beside the fake, since Safari mislays a caret inside a removed node
52506
+ var range = s.createRange();
52507
+ range.setStartBefore(fake);
52508
+ s.selectRange(range);
52340
52509
  }
52341
52510
  }
52342
52511
 
@@ -52572,9 +52741,10 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_1__.pluginSystem.add('file', file);
52572
52741
  /***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) {
52573
52742
 
52574
52743
  /* unused harmony export focus */
52575
- /* harmony import */ var _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(22732);
52576
- /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(580);
52577
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6441);
52744
+ /* harmony import */ var _core_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82758);
52745
+ /* harmony import */ var _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(22732);
52746
+ /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(580);
52747
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6441);
52578
52748
  /*!
52579
52749
  * Jodit Editor (https://xdsoft.net/jodit/)
52580
52750
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -52582,15 +52752,16 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_1__.pluginSystem.add('file', file);
52582
52752
  */
52583
52753
 
52584
52754
 
52755
+
52585
52756
  /**
52586
52757
  * After loading the page into the editor once the focus is set
52587
- */ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.autofocus = false;
52758
+ */ _config_js__WEBPACK_IMPORTED_MODULE_3__.Config.prototype.autofocus = false;
52588
52759
  /**
52589
52760
  * Cursor position after autofocus
52590
- */ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.cursorAfterAutofocus = 'end';
52761
+ */ _config_js__WEBPACK_IMPORTED_MODULE_3__.Config.prototype.cursorAfterAutofocus = 'end';
52591
52762
  /**
52592
52763
  * Save current selection on blur event
52593
- */ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.saveSelectionOnBlur = true;
52764
+ */ _config_js__WEBPACK_IMPORTED_MODULE_3__.Config.prototype.saveSelectionOnBlur = true;
52594
52765
  function focus(editor) {
52595
52766
  if (editor.o.saveSelectionOnBlur) {
52596
52767
  // A click that brings focus back places the caret itself, and Chrome
@@ -52622,13 +52793,13 @@ function focus(editor) {
52622
52793
  var textNode = null;
52623
52794
  switch(editor.o.cursorAfterAutofocus){
52624
52795
  case 'start':
52625
- textNode = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.first(editor.editor, function(node) {
52626
- return _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isText(node);
52796
+ textNode = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.first(editor.editor, function(node) {
52797
+ return _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isText(node);
52627
52798
  });
52628
52799
  break;
52629
52800
  case 'end':
52630
- textNode = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.last(editor.editor, function(node) {
52631
- return _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isText(node);
52801
+ textNode = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.last(editor.editor, function(node) {
52802
+ return _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isText(node);
52632
52803
  });
52633
52804
  break;
52634
52805
  }
@@ -52647,7 +52818,8 @@ function focus(editor) {
52647
52818
  });
52648
52819
  editor.e.on('afterInit afterAddPlace', function() {
52649
52820
  editor.e.off(editor.editor, 'mousedown.autofocus').on(editor.editor, 'mousedown.autofocus', function(e) {
52650
- if (editor.isEditorMode() && e.target && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(e.target) && !e.target.childNodes.length) {
52821
+ // An empty block takes the caret, but a video, say, can't hold one
52822
+ if (editor.isEditorMode() && e.target && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock(e.target) && !_core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(e.target, _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.INSEPARABLE_TAGS) && !e.target.childNodes.length) {
52651
52823
  if (editor.editor === e.target) {
52652
52824
  editor.s.focus();
52653
52825
  } else {
@@ -52657,7 +52829,7 @@ function focus(editor) {
52657
52829
  });
52658
52830
  });
52659
52831
  }
52660
- _core_global_js__WEBPACK_IMPORTED_MODULE_1__.pluginSystem.add('focus', focus);
52832
+ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('focus', focus);
52661
52833
 
52662
52834
 
52663
52835
  /***/ }),
@@ -54447,18 +54619,29 @@ function hr(editor) {
54447
54619
  group: 'insert'
54448
54620
  });
54449
54621
  editor.registerCommand('insertHorizontalRule', function() {
54622
+ var _a;
54450
54623
  var elm = editor.createInside.element('hr');
54451
54624
  editor.s.insertNode(elm, false, false);
54452
54625
  var block = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(elm.parentElement, _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock, editor.editor);
54453
- if (block && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(block) && block !== editor.editor) {
54626
+ // A block that holds other blocks, such as a list item or a table
54627
+ // cell, keeps the line
54628
+ if (block && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(block) && block !== editor.editor && !((_a = editor.o.dtd) === null || _a === void 0 ? void 0 : _a.blockLimits[block.nodeName.toLowerCase()])) {
54454
54629
  _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.after(block, elm);
54455
54630
  _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(block);
54456
54631
  }
54457
- var p = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.next(elm, _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock, editor.editor, false);
54458
- if (!p) {
54459
- p = editor.createInside.element(editor.o.enter);
54460
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.after(elm, p);
54632
+ var next = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.findNotEmptySibling(elm, false);
54633
+ if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(next)) {
54634
+ editor.s.setCursorIn(next, true);
54635
+ return false;
54636
+ }
54637
+ // In a list item or a table cell the text goes on after the line, as
54638
+ // it does with the browsers' own command
54639
+ if (next || elm.parentNode !== editor.editor && !_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.findNotEmptySibling(elm, true))) {
54640
+ editor.s.setCursorAfter(elm);
54641
+ return false;
54461
54642
  }
54643
+ var p = editor.createInside.element(editor.o.enter);
54644
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.after(elm, p);
54462
54645
  editor.s.setCursorIn(p);
54463
54646
  return false;
54464
54647
  });
@@ -54491,7 +54674,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeBaseUrl = '';
54491
54674
  _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeTitle = 'Jodit Editor';
54492
54675
  _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeDoctype = '<!DOCTYPE html>';
54493
54676
  _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeDefaultSrc = 'about:blank';
54494
- _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeStyle = 'html{' + 'margin:0;' + 'padding:0;' + 'min-height: 100%;' + '}' + 'body{' + 'box-sizing:border-box;' + 'font-size:13px;' + 'line-height:1.6;' + 'padding:10px;' + 'margin:0;' + 'background:transparent;' + 'color:#000;' + 'position:' + 'relative;' + 'z-index:2;' + 'user-select:auto;' + 'margin:0px;' + 'overflow:auto;' + 'outline:none;' + '}' + 'table{' + 'width:100%;' + 'border:none;' + 'border-collapse:collapse;' + 'empty-cells: show;' + 'max-width: 100%;' + '}' + 'th,td{' + 'padding: 2px 5px;' + 'border:1px solid #ccc;' + '-webkit-user-select:text;' + '-moz-user-select:text;' + '-ms-user-select:text;' + 'user-select:text' + '}' + 'p{' + 'margin-top:0;' + '}' + '.jodit_editor .jodit_iframe_wrapper{' + 'display: block;' + 'clear: both;' + 'user-select: none;' + 'position: relative;' + '}' + '.jodit_editor .jodit_iframe_wrapper:after {' + 'position:absolute;' + 'content:"";' + 'z-index:1;' + 'top:0;' + 'left:0;' + 'right: 0;' + 'bottom: 0;' + 'cursor: pointer;' + 'display: block;' + 'background: rgba(0, 0, 0, 0);' + '} ' + '.jodit-wysiwyg_image-selected::selection,' + '.jodit-wysiwyg_image-selected *:not(img)::selection{' + 'background:transparent' + '}' + '.jodit_disabled{' + 'user-select: none;' + '-o-user-select: none;' + '-moz-user-select: none;' + '-khtml-user-select: none;' + '-webkit-user-select: none;' + '-ms-user-select: none' + '}';
54677
+ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeStyle = 'html{' + 'margin:0;' + 'padding:0;' + 'min-height: 100%;' + '}' + 'body{' + 'box-sizing:border-box;' + 'font-size:13px;' + 'line-height:1.6;' + 'padding:10px;' + 'margin:0;' + 'background:transparent;' + 'color:#000;' + 'position:' + 'relative;' + 'z-index:2;' + 'user-select:auto;' + 'margin:0px;' + 'overflow:auto;' + 'outline:none;' + '}' + 'table{' + 'width:100%;' + 'border:none;' + 'border-collapse:collapse;' + 'empty-cells: show;' + 'max-width: 100%;' + '}' + 'th,td{' + 'padding: 2px 5px;' + 'border:1px solid #ccc;' + '-webkit-user-select:text;' + '-moz-user-select:text;' + '-ms-user-select:text;' + 'user-select:text' + '}' + 'p{' + 'margin-top:0;' + '}' + '[data-jodit_iframe_wrapper]{' + 'display: block;' + 'user-select: none;' + 'position: relative;' + '}' + '[data-jodit_iframe_wrapper] iframe{' + 'position: relative;' + '}' + '[data-jodit_iframe_wrapper]:after {' + 'position:absolute;' + 'content:"";' + 'z-index:1;' + 'top:0;' + 'left:0;' + 'right: 0;' + 'bottom: 0;' + 'cursor: pointer;' + 'display: block;' + 'background: rgba(0, 0, 0, 0);' + '} ' + '[data-jodit_iframe_wrapper][data-jodit-wrapper_active=true] iframe{' + 'z-index: 2;' + '}' + '.jodit-wysiwyg_image-selected::selection,' + '.jodit-wysiwyg_image-selected *:not(img)::selection{' + 'background:transparent' + '}' + '.jodit_disabled{' + 'user-select: none;' + '-o-user-select: none;' + '-moz-user-select: none;' + '-khtml-user-select: none;' + '-webkit-user-select: none;' + '-ms-user-select: none' + '}';
54495
54678
  _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeCSSLinks = [];
54496
54679
  _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeSandbox = null;
54497
54680
 
@@ -59157,6 +59340,17 @@ function _create_class(Constructor, protoProps, staticProps) {
59157
59340
  if (staticProps) _defineProperties(Constructor, staticProps);
59158
59341
  return Constructor;
59159
59342
  }
59343
+ function _define_property(obj, key, value) {
59344
+ if (key in obj) {
59345
+ Object.defineProperty(obj, key, {
59346
+ value: value,
59347
+ enumerable: true,
59348
+ configurable: true,
59349
+ writable: true
59350
+ });
59351
+ } else obj[key] = value;
59352
+ return obj;
59353
+ }
59160
59354
  function _get_prototype_of(o) {
59161
59355
  _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {
59162
59356
  return o.__proto__ || Object.getPrototypeOf(o);
@@ -59195,6 +59389,44 @@ function _iterable_to_array(iter) {
59195
59389
  function _non_iterable_spread() {
59196
59390
  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
59197
59391
  }
59392
+ function _object_spread(target) {
59393
+ for(var i = 1; i < arguments.length; i++){
59394
+ var source = arguments[i] != null ? arguments[i] : {};
59395
+ var ownKeys = Object.keys(source);
59396
+ if (typeof Object.getOwnPropertySymbols === "function") {
59397
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
59398
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
59399
+ }));
59400
+ }
59401
+ ownKeys.forEach(function(key) {
59402
+ _define_property(target, key, source[key]);
59403
+ });
59404
+ }
59405
+ return target;
59406
+ }
59407
+ function ownKeys(object, enumerableOnly) {
59408
+ var keys = Object.keys(object);
59409
+ if (Object.getOwnPropertySymbols) {
59410
+ var symbols = Object.getOwnPropertySymbols(object);
59411
+ if (enumerableOnly) {
59412
+ symbols = symbols.filter(function(sym) {
59413
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
59414
+ });
59415
+ }
59416
+ keys.push.apply(keys, symbols);
59417
+ }
59418
+ return keys;
59419
+ }
59420
+ function _object_spread_props(target, source) {
59421
+ source = source != null ? source : {};
59422
+ if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
59423
+ else {
59424
+ ownKeys(Object(source)).forEach(function(key) {
59425
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
59426
+ });
59427
+ }
59428
+ return target;
59429
+ }
59198
59430
  function _possible_constructor_return(self, call) {
59199
59431
  if (call && (_type_of(call) === "object" || typeof call === "function")) return call;
59200
59432
  return _assert_this_initialized(self);
@@ -59306,8 +59538,12 @@ function _wrap_native_super(Class) {
59306
59538
  // A media wrapper kept in the content gets the media popup
59307
59539
  var type = mediaWrapper ? 'jodit-media' : target === null || target === void 0 ? void 0 : target.nodeName.toLowerCase();
59308
59540
  if (target && type && this.canShowPopupForType(type)) {
59541
+ var isMedia = type === 'jodit-media';
59542
+ // Beside the media in a wrapper kept in the content, which can fill
59543
+ // the line
59544
+ var bound = mediaWrapper && (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.getWrappedMedia)(this.j, mediaWrapper) || target;
59309
59545
  this.showPopup(function() {
59310
- return (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.position)(target, _this.j);
59546
+ return _this.__bound(bound, isMedia);
59311
59547
  }, type, target);
59312
59548
  return false;
59313
59549
  }
@@ -59315,6 +59551,24 @@ function _wrap_native_super(Class) {
59315
59551
  },
59316
59552
  {
59317
59553
  /**
59554
+ * The box the popup opens beside: the target's, with room for the
59555
+ * resizer's handles when the target gets them, so it doesn't cover them
59556
+ */ key: "__bound",
59557
+ value: function __bound(target, isMedia) {
59558
+ var bound = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.position)(target, this.j);
59559
+ var resizable = this.j.o.allowResizeTags;
59560
+ if (!isMedia && !(resizable && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(target, resizable))) {
59561
+ return bound;
59562
+ }
59563
+ var room = parseInt(this.j.ow.getComputedStyle(this.j.container).getPropertyValue('--jd-resizer-handle-size'), 10) / 2 || 0;
59564
+ return _object_spread_props(_object_spread({}, bound), {
59565
+ top: bound.top - room,
59566
+ height: bound.height + room * 2
59567
+ });
59568
+ }
59569
+ },
59570
+ {
59571
+ /**
59318
59572
  * Show inline popup with some toolbar
59319
59573
  *
59320
59574
  * @param type - selection, img, a etc.
@@ -61252,7 +61506,8 @@ function _wrap_native_super(Class) {
61252
61506
  height: (_d = jodit.o.video) === null || _d === void 0 ? void 0 : _d.defaultHeight
61253
61507
  });
61254
61508
  if (embed !== html) {
61255
- return jodit.createInside.fromHTML(embed);
61509
+ var media = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.prepareEmbedCode)(jodit, embed);
61510
+ return (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.isString)(media) ? jodit.createInside.fromHTML(media) : media;
61256
61511
  }
61257
61512
  }
61258
61513
  if (jodit.s.isCollapsed()) {
@@ -61700,6 +61955,14 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.mediaWrappers = {};
61700
61955
  /* harmony import */ var _core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(43555);
61701
61956
  /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(41180);
61702
61957
  /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(757);
61958
+ function _array_like_to_array(arr, len) {
61959
+ if (len == null || len > arr.length) len = arr.length;
61960
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
61961
+ return arr2;
61962
+ }
61963
+ function _array_without_holes(arr) {
61964
+ if (Array.isArray(arr)) return _array_like_to_array(arr);
61965
+ }
61703
61966
  function _define_property(obj, key, value) {
61704
61967
  if (key in obj) {
61705
61968
  Object.defineProperty(obj, key, {
@@ -61711,6 +61974,25 @@ function _define_property(obj, key, value) {
61711
61974
  } else obj[key] = value;
61712
61975
  return obj;
61713
61976
  }
61977
+ function _iterable_to_array(iter) {
61978
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) {
61979
+ return Array.from(iter);
61980
+ }
61981
+ }
61982
+ function _non_iterable_spread() {
61983
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
61984
+ }
61985
+ function _to_consumable_array(arr) {
61986
+ return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
61987
+ }
61988
+ function _unsupported_iterable_to_array(o, minLen) {
61989
+ if (!o) return;
61990
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
61991
+ var n = Object.prototype.toString.call(o).slice(8, -1);
61992
+ if (n === "Object" && o.constructor) n = o.constructor.name;
61993
+ if (n === "Map" || n === "Set") return Array.from(n);
61994
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
61995
+ }
61714
61996
  /*!
61715
61997
  * Jodit Editor (https://xdsoft.net/jodit/)
61716
61998
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -61752,10 +62034,37 @@ function _define_property(obj, key, value) {
61752
62034
  } else {
61753
62035
  return;
61754
62036
  }
62037
+ // Selected, as an image is, so Delete and Backspace remove it
61755
62038
  editor.e.off(element, 'mousedown.select touchstart.select').on(element, 'mousedown.select touchstart.select', function() {
61756
- editor.s.setCursorAfter(element);
62039
+ editor.s.select(element);
61757
62040
  });
61758
62041
  };
62042
+ // Media in a wrapper kept in the content let clicks through to it, as
62043
+ // jodit-media covers its media, so a click selects the media rather than
62044
+ // playing it. An inline wrapper holds it as an inline-block, unless its
62045
+ // classes or style give it a display of their own
62046
+ var wrappers = Object.values(mediaWrappers);
62047
+ if (wrappers.length) {
62048
+ editor.e.on('afterInit', function() {
62049
+ var selectors = function selectors(list) {
62050
+ return _to_consumable_array(new Set(list)).join(',');
62051
+ };
62052
+ var scoped = function scoped(param) {
62053
+ var tag = param.tag, className = param.className;
62054
+ return ".jodit-wysiwyg ".concat(tag, ".").concat(className);
62055
+ };
62056
+ var inline = selectors(wrappers.filter(function(param) {
62057
+ var tag = param.tag;
62058
+ return _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_INLINE.test(tag);
62059
+ }).map(scoped));
62060
+ var _$media = selectors(wrappers.flatMap(function(wrapper) {
62061
+ return mediaBlocks.map(function(tag) {
62062
+ return "".concat(scoped(wrapper), ">").concat(tag);
62063
+ });
62064
+ }));
62065
+ (0,_core_global_js__WEBPACK_IMPORTED_MODULE_2__.getContainer)(editor, 'media-wrappers', 'style', true).innerHTML = (inline ? ":where(".concat(inline, "){display:inline-block}") : '') + "".concat(_$media, "{pointer-events:none}");
62066
+ });
62067
+ }
61759
62068
  if (mediaInFakeBlock || Object.keys(mediaWrappers).length) {
61760
62069
  editor.e.on('afterGetValueFromEditor', function(data) {
61761
62070
  var rxp = new RegExp("<".concat(mediaFakeTag, "[^>]+data-").concat(keyFake, "[^>]+>([^]+?)</").concat(mediaFakeTag, ">"), 'ig');
@@ -63315,12 +63624,14 @@ _config_js__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.controls.paste = {
63315
63624
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
63316
63625
  /* harmony export */ askInsertTypeDialog: function() { return /* binding */ askInsertTypeDialog; },
63317
63626
  /* harmony export */ getAllTypes: function() { return /* binding */ getAllTypes; },
63318
- /* harmony export */ pasteInsertHtml: function() { return /* binding */ pasteInsertHtml; }
63627
+ /* harmony export */ pasteInsertHtml: function() { return /* binding */ pasteInsertHtml; },
63628
+ /* harmony export */ removeGoogleDocsWrapper: function() { return /* binding */ removeGoogleDocsWrapper; }
63319
63629
  /* harmony export */ });
63320
63630
  /* harmony import */ var _core_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82758);
63321
63631
  /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2748);
63322
- /* harmony import */ var _core_helpers_checker_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(27613);
63323
- /* harmony import */ var _core_ui_button_button_button_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10830);
63632
+ /* harmony import */ var _core_helpers_array_to_array_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4510);
63633
+ /* harmony import */ var _core_helpers_checker_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(27613);
63634
+ /* harmony import */ var _core_ui_button_button_button_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(10830);
63324
63635
  function _array_like_to_array(arr, len) {
63325
63636
  if (len == null || len > arr.length) len = arr.length;
63326
63637
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
@@ -63356,6 +63667,7 @@ function _unsupported_iterable_to_array(o, minLen) {
63356
63667
 
63357
63668
 
63358
63669
 
63670
+
63359
63671
  /**
63360
63672
  * Remove special HTML comments
63361
63673
  * @private
@@ -63371,6 +63683,21 @@ function _unsupported_iterable_to_array(o, minLen) {
63371
63683
  }
63372
63684
  return html;
63373
63685
  }
63686
+ /**
63687
+ * Google Docs wraps the copied content in
63688
+ * `<b style="font-weight:normal;" id="docs-internal-guid-…">`. Kept, the
63689
+ * wrapper holds the pasted blocks, and without its style it makes the whole
63690
+ * paste bold
63691
+ * @private
63692
+ */ function removeGoogleDocsWrapper(html) {
63693
+ if (!/<b\s[^>]*docs-internal-guid-/i.test(html)) {
63694
+ return html;
63695
+ }
63696
+ // An inert document: images don't load and handlers don't run
63697
+ var body = new DOMParser().parseFromString(html, 'text/html').body;
63698
+ (0,_core_helpers_array_to_array_js__WEBPACK_IMPORTED_MODULE_2__.toArray)(body.querySelectorAll('b[id^="docs-internal-guid-"]')).forEach(_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.unwrap);
63699
+ return body.innerHTML;
63700
+ }
63374
63701
  /**
63375
63702
  * @private
63376
63703
  */ function isDragEvent(e) {
@@ -63387,11 +63714,11 @@ function _unsupported_iterable_to_array(o, minLen) {
63387
63714
  editor.s.insertCursorAtPoint(e.clientX, e.clientY);
63388
63715
  }
63389
63716
  var result = editor.e.fire('beforePasteInsert', html);
63390
- if (!(0,_core_helpers_checker_index_js__WEBPACK_IMPORTED_MODULE_2__.isVoid)(result) && ((0,_core_helpers_checker_index_js__WEBPACK_IMPORTED_MODULE_2__.isString)(result) || (0,_core_helpers_checker_index_js__WEBPACK_IMPORTED_MODULE_2__.isNumber)(result) || _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isNode(result))) {
63717
+ if (!(0,_core_helpers_checker_index_js__WEBPACK_IMPORTED_MODULE_3__.isVoid)(result) && ((0,_core_helpers_checker_index_js__WEBPACK_IMPORTED_MODULE_3__.isString)(result) || (0,_core_helpers_checker_index_js__WEBPACK_IMPORTED_MODULE_3__.isNumber)(result) || _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isNode(result))) {
63391
63718
  html = result;
63392
63719
  }
63393
- if ((0,_core_helpers_checker_index_js__WEBPACK_IMPORTED_MODULE_2__.isString)(html)) {
63394
- html = removeExtraFragments(html);
63720
+ if ((0,_core_helpers_checker_index_js__WEBPACK_IMPORTED_MODULE_3__.isString)(html)) {
63721
+ html = removeExtraFragments(removeGoogleDocsWrapper(html));
63395
63722
  }
63396
63723
  editor.s.insertHTML(html);
63397
63724
  }
@@ -63401,7 +63728,7 @@ function _unsupported_iterable_to_array(o, minLen) {
63401
63728
  */ function getAllTypes(dt) {
63402
63729
  var types = dt.types;
63403
63730
  var types_str = '';
63404
- if ((0,_core_helpers_checker_index_js__WEBPACK_IMPORTED_MODULE_2__.isArray)(types) || ({}).toString.call(types) === '[object DOMStringList]') {
63731
+ if ((0,_core_helpers_checker_index_js__WEBPACK_IMPORTED_MODULE_3__.isArray)(types) || ({}).toString.call(types) === '[object DOMStringList]') {
63405
63732
  for(var i = 0; i < types.length; i += 1){
63406
63733
  types_str += types[i] + ';';
63407
63734
  }
@@ -63420,7 +63747,7 @@ function _unsupported_iterable_to_array(o, minLen) {
63420
63747
  var dialog = jodit.confirm('<div style="word-break: normal; white-space: normal">'.concat(jodit.i18n(msg), "</div>"), jodit.i18n(title));
63421
63748
  var buttons = buttonList.map(function(param) {
63422
63749
  var text = param.text, value = param.value;
63423
- return (0,_core_ui_button_button_button_js__WEBPACK_IMPORTED_MODULE_3__.Button)(jodit, {
63750
+ return (0,_core_ui_button_button_button_js__WEBPACK_IMPORTED_MODULE_4__.Button)(jodit, {
63424
63751
  text: text,
63425
63752
  name: text.toLowerCase(),
63426
63753
  tabIndex: 0
@@ -63437,7 +63764,7 @@ function _unsupported_iterable_to_array(o, minLen) {
63437
63764
  }
63438
63765
  jodit.e.fire('afterClosePasteDialog', dialog);
63439
63766
  });
63440
- var cancel = (0,_core_ui_button_button_button_js__WEBPACK_IMPORTED_MODULE_3__.Button)(jodit, {
63767
+ var cancel = (0,_core_ui_button_button_button_js__WEBPACK_IMPORTED_MODULE_4__.Button)(jodit, {
63441
63768
  text: 'Cancel',
63442
63769
  tabIndex: 0
63443
63770
  }).onAction(function() {
@@ -63751,7 +64078,7 @@ function _wrap_native_super(Class) {
63751
64078
  this.j.buffer.set(_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.CLIPBOARD_ID, html);
63752
64079
  switch(action){
63753
64080
  case _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.INSERT_CLEAR_HTML:
63754
- html = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.cleanFromWord)(html);
64081
+ html = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.cleanFromWord)((0,_helpers_js__WEBPACK_IMPORTED_MODULE_7__.removeGoogleDocsWrapper)(html));
63755
64082
  break;
63756
64083
  case _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.INSERT_ONLY_TEXT:
63757
64084
  html = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.stripTags)(html, this.j.ed, new Set(this.j.o.pasteExcludeStripTags), this.j.o.nl2brInPlainText);
@@ -65780,7 +66107,7 @@ var keyBInd = '__jodit-resizer_binded';
65780
66107
  var _this = this;
65781
66108
  var editor = this.j;
65782
66109
  editor.e.off(editor.editor, '.resizer').off(editor.ow, '.resizer').on(editor.editor, 'keydown.resizer', function(e) {
65783
- if (_this.isShown && e.key === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.KEY_DELETE && _this.element && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(_this.element, 'table')) {
66110
+ if (_this.isShown && (e.key === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.KEY_DELETE || e.key === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.KEY_BACKSPACE) && _this.element && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(_this.element, 'table')) {
65784
66111
  _this.onDelete(e);
65785
66112
  }
65786
66113
  }).on(editor.ow, 'resize.resizer', this.updateSize).on('resize.resizer', this.updateSize).on([
@@ -66021,8 +66348,12 @@ var keyBInd = '__jodit-resizer_binded';
66021
66348
  this.j.e.off(element, 'mousedown.select touchstart.select').on(element, 'mousedown.select touchstart.select', function() {
66022
66349
  _this.j.s.select(element);
66023
66350
  }).off(element, 'changesize').on(element, 'changesize', function() {
66024
- ;(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(iframe, 'width', element.offsetWidth + 'px');
66025
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(iframe, 'height', element.offsetHeight + 'px');
66351
+ // Only a resize sets the embed's size, and as the plain numbers
66352
+ // the attributes take, so a click leaves `width="100%"` alone
66353
+ if (_this.isResizeMode) {
66354
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(iframe, 'width', element.offsetWidth);
66355
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(iframe, 'height', element.offsetHeight);
66356
+ }
66026
66357
  });
66027
66358
  }
66028
66359
  this.j.e.on(element, 'dragstart', this.hide);
@@ -68470,18 +68801,26 @@ var selectCells = /*#__PURE__*/ function(Plugin) {
68470
68801
  break;
68471
68802
  case 'empty':
68472
68803
  cells1.forEach(function(td) {
68473
- return _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.detach(td);
68804
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.detach(td);
68805
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(td, _this.j.createInside.element('br'));
68474
68806
  });
68475
68807
  break;
68476
68808
  case 'bin':
68477
- _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove(table);
68809
+ this.__removeTable(table);
68478
68810
  break;
68479
68811
  case 'binrow':
68480
- new Set(cells1.map(function(td) {
68481
- return td.parentNode;
68482
- })).forEach(function(row) {
68483
- _this.__tableModule.removeRow(table, row.rowIndex);
68484
- });
68812
+ {
68813
+ var rows = new Set(cells1.map(function(td) {
68814
+ return td.parentNode;
68815
+ }));
68816
+ var next = this.__nearestCell(table, cell, (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.toArray)(rows).map(function(row) {
68817
+ return row.rowIndex;
68818
+ }), true);
68819
+ rows.forEach(function(row) {
68820
+ _this.__tableModule.removeRow(table, row.rowIndex);
68821
+ });
68822
+ next && this.j.s.setCursorIn(next);
68823
+ }
68485
68824
  break;
68486
68825
  case 'bincolumn':
68487
68826
  {
@@ -68494,11 +68833,13 @@ var selectCells = /*#__PURE__*/ function(Plugin) {
68494
68833
  columnsSet.add(col);
68495
68834
  }
68496
68835
  });
68836
+ var next1 = this.__nearestCell(table, cell, columns, false);
68497
68837
  columns.sort(function(a, b) {
68498
68838
  return b - a;
68499
68839
  }).forEach(function(col) {
68500
68840
  _this.__tableModule.removeColumn(table, col);
68501
68841
  });
68842
+ next1 && this.j.s.setCursorIn(next1);
68502
68843
  }
68503
68844
  break;
68504
68845
  case 'addcolumnafter':
@@ -68510,6 +68851,9 @@ var selectCells = /*#__PURE__*/ function(Plugin) {
68510
68851
  this.__tableModule.appendRow(table, cell.parentNode, command === 'addrowafter');
68511
68852
  break;
68512
68853
  }
68854
+ if (/^bin(row|column)$/.test(command) && !this.__tableModule.getColumnsCount(table)) {
68855
+ this.__removeTable(table);
68856
+ }
68513
68857
  }
68514
68858
  return false;
68515
68859
  }
@@ -68517,6 +68861,34 @@ var selectCells = /*#__PURE__*/ function(Plugin) {
68517
68861
  },
68518
68862
  {
68519
68863
  /**
68864
+ * The cell that takes the caret when rows or columns are deleted: the next
68865
+ * one in the same column (or row) that is not deleted, else the previous one
68866
+ */ key: "__nearestCell",
68867
+ value: function __nearestCell(table, cell, deleted, isRow) {
68868
+ var box = this.__tableModule.formalMatrix(table);
68869
+ var _this___tableModule_formalCoordinate = _sliced_to_array(this.__tableModule.formalCoordinate(table, cell), 2), row = _this___tableModule_formalCoordinate[0], column = _this___tableModule_formalCoordinate[1];
68870
+ var start = isRow ? row : column;
68871
+ var count = isRow ? box.length : box[row].length;
68872
+ var find = function find(i) {
68873
+ return !deleted.includes(i) && (isRow ? box[i][column] : box[row][i]) || null;
68874
+ };
68875
+ for(var i = start + 1; i < count; i += 1){
68876
+ var next = find(i);
68877
+ if (next) {
68878
+ return next;
68879
+ }
68880
+ }
68881
+ for(var i1 = start - 1; i1 >= 0; i1 -= 1){
68882
+ var prev = find(i1);
68883
+ if (prev) {
68884
+ return prev;
68885
+ }
68886
+ }
68887
+ return null;
68888
+ }
68889
+ },
68890
+ {
68891
+ /**
68520
68892
  * Add some align after native command
68521
68893
  */ key: "onAfterCommand",
68522
68894
  value: function onAfterCommand(command) {
@@ -68527,6 +68899,17 @@ var selectCells = /*#__PURE__*/ function(Plugin) {
68527
68899
  }
68528
68900
  }
68529
68901
  },
68902
+ {
68903
+ /**
68904
+ * Remove the table and put the caret where it stood: at the start of what
68905
+ * follows it, else at the end of what precedes it
68906
+ */ key: "__removeTable",
68907
+ value: function __removeTable(table) {
68908
+ var parent = table.parentNode, next = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.findNotEmptySibling(table, false), prev = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.findNotEmptySibling(table, true);
68909
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove(table);
68910
+ this.j.s.setCursorIn(next || prev || parent, Boolean(next));
68911
+ }
68912
+ },
68530
68913
  {
68531
68914
  /** @override */ key: "beforeDestruct",
68532
68915
  value: function beforeDestruct(jodit) {
@@ -74888,7 +75271,7 @@ var WORK_KEYS = new Set([
74888
75271
  _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.append(next, first);
74889
75272
  editor.s.setCursorBefore(first);
74890
75273
  } else {
74891
- if (key === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.KEY_TAB) {
75274
+ if (key === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.KEY_TAB && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isEmpty(next)) {
74892
75275
  editor.s.select(next, true);
74893
75276
  } else {
74894
75277
  editor.s.setCursorIn(next, key === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.KEY_RIGHT || key === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.KEY_DOWN);
@@ -75000,6 +75383,37 @@ _config_js__WEBPACK_IMPORTED_MODULE_5__.Config.prototype.table = {
75000
75383
  useExtraClassesOptions: false
75001
75384
  };
75002
75385
  _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_4__.Icon.set('table', _table_svg_js__WEBPACK_IMPORTED_MODULE_6__["default"]);
75386
+ /**
75387
+ * Elements in `dtd.blockLimits` that hold only rows, cells or list items, so
75388
+ * a table can't go directly inside them
75389
+ */ var ROW_AND_ITEM_HOLDERS = new Set([
75390
+ 'table',
75391
+ 'thead',
75392
+ 'tbody',
75393
+ 'tfoot',
75394
+ 'tr',
75395
+ 'ul',
75396
+ 'ol',
75397
+ 'dl'
75398
+ ]);
75399
+ /**
75400
+ * The nearest block around the cursor that can hold the new table: an element
75401
+ * in `dtd.blockLimits`, such as a table cell, a list item or a `<div>`. The
75402
+ * cursor's own block of the `enter` tag is a line, not a container, as in the
75403
+ * dtd plugin's `checkBlockNesting`
75404
+ */ function findTableContainer(editor, current) {
75405
+ var line = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.closest(current, _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock, editor.editor);
75406
+ var container = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.closest(current, function(node) {
75407
+ var _a;
75408
+ if (!_core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isElement(node) || node === line && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(node, editor.o.enter)) {
75409
+ return false;
75410
+ }
75411
+ var tag = node.nodeName.toLowerCase();
75412
+ return Boolean((_a = editor.o.dtd) === null || _a === void 0 ? void 0 : _a.blockLimits[tag]) && !ROW_AND_ITEM_HOLDERS.has(tag);
75413
+ }, editor.editor);
75414
+ // With the cursor between two rows, `current` is the next row's text
75415
+ return container && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isOrContains(container, editor.s.range.startContainer) ? container : null;
75416
+ }
75003
75417
  _config_js__WEBPACK_IMPORTED_MODULE_5__.Config.prototype.controls.table = {
75004
75418
  data: {
75005
75419
  cols: 10,
@@ -75101,7 +75515,11 @@ _config_js__WEBPACK_IMPORTED_MODULE_5__.Config.prototype.controls.table = {
75101
75515
  editor.s.removeMarkers();
75102
75516
  editor.editor.normalize();
75103
75517
  editor.history.snapshot.restore(snapshot);
75104
- var block = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.furthest(editor.s.current(), _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock, editor.editor);
75518
+ var current = editor.s.current();
75519
+ // The table goes into the cell, list item or box holding the
75520
+ // cursor, and only a block inside it is split
75521
+ var container = findTableContainer(editor, current);
75522
+ var block = container === current ? null : _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.furthest(current, _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock, container !== null && container !== void 0 ? container : editor.editor);
75105
75523
  if (block && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isEmpty(block)) {
75106
75524
  _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.replace(block, table, undefined, false, true);
75107
75525
  } else {
@@ -75123,6 +75541,9 @@ _config_js__WEBPACK_IMPORTED_MODULE_5__.Config.prototype.controls.table = {
75123
75541
  _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.after(block, table);
75124
75542
  }
75125
75543
  }
75544
+ } else if (container && !_core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isEmpty(container) && !editor.o.table.splitBlockOnInsertTable) {
75545
+ // With no block to go after, the table goes after the text
75546
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.append(container, table);
75126
75547
  } else {
75127
75548
  editor.s.insertNode(table, false);
75128
75549
  }
@@ -75568,34 +75989,16 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_4__.pluginSystem.add('toolbarNavigation
75568
75989
 
75569
75990
 
75570
75991
 
75571
- // Media the popup inserts go in their wrapper (see `mediaWrappers`), aligned
75572
- // with `mediaDefaultAlign`
75573
- function prepareMedia(jodit, element) {
75574
- var media = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_0__.wrapMedia)(jodit, element);
75575
- var mediaDefaultAlign = jodit.o.mediaDefaultAlign;
75576
- if (mediaDefaultAlign && mediaDefaultAlign !== 'normal') {
75577
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_0__.hAlignElement)(media, mediaDefaultAlign, (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_0__.getAlignClasses)(jodit, media));
75578
- }
75579
- return media;
75580
- }
75581
75992
  function insertVideos(data) {
75582
75993
  var _this = this;
75583
75994
  var _a;
75584
75995
  (_a = data.files) === null || _a === void 0 ? void 0 : _a.forEach(function(file) {
75585
- _this.s.insertNode(prepareMedia(_this, _this.createInside.element('video', {
75996
+ _this.s.insertNode((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_0__.prepareMedia)(_this, _this.createInside.element('video', {
75586
75997
  controls: '',
75587
75998
  src: data.baseurl + file
75588
75999
  })));
75589
76000
  });
75590
76001
  }
75591
- // Embed code that is one element is prepared as media; other code goes in as
75592
- // it is
75593
- function prepareEmbedCode(jodit, code) {
75594
- var box = jodit.createInside.div();
75595
- box.innerHTML = code.trim();
75596
- var element = box.firstElementChild;
75597
- return element && box.childNodes.length === 1 ? prepareMedia(jodit, element) : code;
75598
- }
75599
76002
  _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.video = {
75600
76003
  parseUrlToVideoEmbed: _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_0__.convertMediaUrlToVideoEmbed,
75601
76004
  defaultWidth: 400,
@@ -75637,7 +76040,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.video = {
75637
76040
  ])
75638
76041
  ]), tabs = [], insertCode = function insertCode(code) {
75639
76042
  jodit.s.restore();
75640
- jodit.s.insertHTML(prepareEmbedCode(jodit, code));
76043
+ jodit.s.insertHTML((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_0__.prepareEmbedCode)(jodit, code));
75641
76044
  close();
75642
76045
  };
75643
76046
  jodit.s.save();
@@ -75672,7 +76075,11 @@ _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.video = {
75672
76075
  formCode.onSubmit(function(data) {
75673
76076
  insertCode(data.code);
75674
76077
  });
75675
- return (0,_modules_widget_index_js__WEBPACK_IMPORTED_MODULE_5__.TabsWidget)(jodit, tabs);
76078
+ var box = (0,_modules_widget_index_js__WEBPACK_IMPORTED_MODULE_5__.TabsWidget)(jodit, tabs);
76079
+ // Its tabs are sized to their labels, as the file selector's are, since
76080
+ // "Upload" doesn't fit a third of the popup
76081
+ box.classList.add('jodit-file-selector');
76082
+ return box;
75676
76083
  },
75677
76084
  tags: [
75678
76085
  'iframe'