jodit-pro 4.18.8 → 4.18.9

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 (351) hide show
  1. package/es2015/jodit.css +2 -2
  2. package/es2015/jodit.fat.min.css +1 -1
  3. package/es2015/jodit.fat.min.js +26 -26
  4. package/es2015/jodit.js +1117 -197
  5. package/es2015/jodit.min.css +1 -1
  6. package/es2015/jodit.min.js +11 -11
  7. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  8. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  9. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  10. package/es2015/plugins/autocomplete/autocomplete.css +1 -1
  11. package/es2015/plugins/autocomplete/autocomplete.js +1 -1
  12. package/es2015/plugins/autocomplete/autocomplete.min.js +1 -1
  13. package/es2015/plugins/backup/backup.css +1 -1
  14. package/es2015/plugins/backup/backup.js +1 -1
  15. package/es2015/plugins/backup/backup.min.js +1 -1
  16. package/es2015/plugins/button-generator/button-generator.css +1 -1
  17. package/es2015/plugins/button-generator/button-generator.js +1 -1
  18. package/es2015/plugins/button-generator/button-generator.min.js +1 -1
  19. package/es2015/plugins/change-case/change-case.js +1 -1
  20. package/es2015/plugins/change-case/change-case.min.js +1 -1
  21. package/es2015/plugins/chart/chart.css +1 -1
  22. package/es2015/plugins/chart/chart.js +1 -1
  23. package/es2015/plugins/chart/chart.min.js +1 -1
  24. package/es2015/plugins/color-picker/color-picker.css +1 -1
  25. package/es2015/plugins/color-picker/color-picker.js +1 -1
  26. package/es2015/plugins/color-picker/color-picker.min.js +1 -1
  27. package/es2015/plugins/emoji/emoji.css +1 -1
  28. package/es2015/plugins/emoji/emoji.js +1 -1
  29. package/es2015/plugins/emoji/emoji.min.js +1 -1
  30. package/es2015/plugins/export-docs/export-docs.js +1 -1
  31. package/es2015/plugins/export-docs/export-docs.min.js +1 -1
  32. package/es2015/plugins/finder/finder.css +1 -1
  33. package/es2015/plugins/finder/finder.js +1 -1
  34. package/es2015/plugins/finder/finder.min.js +1 -1
  35. package/es2015/plugins/google-maps/google-maps.css +1 -1
  36. package/es2015/plugins/google-maps/google-maps.js +1 -1
  37. package/es2015/plugins/google-maps/google-maps.min.js +1 -1
  38. package/es2015/plugins/google-search/google-search.js +1 -1
  39. package/es2015/plugins/google-search/google-search.min.js +1 -1
  40. package/es2015/plugins/highlight-signature/highlight-signature.js +1 -1
  41. package/es2015/plugins/highlight-signature/highlight-signature.min.js +1 -1
  42. package/es2015/plugins/iframe-editor/iframe-editor.css +1 -1
  43. package/es2015/plugins/iframe-editor/iframe-editor.js +1 -1
  44. package/es2015/plugins/iframe-editor/iframe-editor.min.js +1 -1
  45. package/es2015/plugins/image-editor-pro/image-editor-pro.css +1 -1
  46. package/es2015/plugins/image-editor-pro/image-editor-pro.js +1 -1
  47. package/es2015/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  48. package/es2015/plugins/keyboard/keyboard.css +1 -1
  49. package/es2015/plugins/keyboard/keyboard.js +1 -1
  50. package/es2015/plugins/keyboard/keyboard.min.js +1 -1
  51. package/es2015/plugins/math/math.css +1 -1
  52. package/es2015/plugins/math/math.js +1 -1
  53. package/es2015/plugins/math/math.min.js +1 -1
  54. package/es2015/plugins/mobile-view/mobile-view.js +1 -1
  55. package/es2015/plugins/mobile-view/mobile-view.min.js +1 -1
  56. package/es2015/plugins/page-break/page-break.js +1 -1
  57. package/es2015/plugins/page-break/page-break.min.js +1 -1
  58. package/es2015/plugins/paste-code/paste-code.css +1 -1
  59. package/es2015/plugins/paste-code/paste-code.js +1 -1
  60. package/es2015/plugins/paste-code/paste-code.min.js +1 -1
  61. package/es2015/plugins/paste-from-word/paste-from-word.js +1 -1
  62. package/es2015/plugins/paste-from-word/paste-from-word.min.js +1 -1
  63. package/es2015/plugins/show-blocks/show-blocks.js +1 -1
  64. package/es2015/plugins/show-blocks/show-blocks.min.js +1 -1
  65. package/es2015/plugins/style/style.css +1 -1
  66. package/es2015/plugins/style/style.js +1 -1
  67. package/es2015/plugins/style/style.min.js +1 -1
  68. package/es2015/plugins/templates/templates.css +1 -1
  69. package/es2015/plugins/templates/templates.js +1 -1
  70. package/es2015/plugins/templates/templates.min.js +1 -1
  71. package/es2015/plugins/todo-list/todo-list.css +1 -1
  72. package/es2015/plugins/todo-list/todo-list.js +1 -1
  73. package/es2015/plugins/todo-list/todo-list.min.js +1 -1
  74. package/es2015/plugins/translate/translate.css +1 -1
  75. package/es2015/plugins/translate/translate.js +1 -1
  76. package/es2015/plugins/translate/translate.min.js +1 -1
  77. package/es2015/plugins/tune-block/tune-block.css +1 -1
  78. package/es2015/plugins/tune-block/tune-block.js +1 -1
  79. package/es2015/plugins/tune-block/tune-block.min.js +1 -1
  80. package/es2018/jodit.fat.min.css +1 -1
  81. package/es2018/jodit.fat.min.js +10 -10
  82. package/es2018/jodit.min.css +1 -1
  83. package/es2018/jodit.min.js +21 -21
  84. package/es2018/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  85. package/es2018/plugins/autocomplete/autocomplete.min.js +1 -1
  86. package/es2018/plugins/backup/backup.min.js +1 -1
  87. package/es2018/plugins/button-generator/button-generator.min.js +1 -1
  88. package/es2018/plugins/change-case/change-case.min.js +1 -1
  89. package/es2018/plugins/chart/chart.min.js +1 -1
  90. package/es2018/plugins/color-picker/color-picker.min.js +1 -1
  91. package/es2018/plugins/emoji/emoji.min.js +1 -1
  92. package/es2018/plugins/export-docs/export-docs.min.js +1 -1
  93. package/es2018/plugins/finder/finder.min.js +1 -1
  94. package/es2018/plugins/google-maps/google-maps.min.js +1 -1
  95. package/es2018/plugins/google-search/google-search.min.js +1 -1
  96. package/es2018/plugins/highlight-signature/highlight-signature.min.js +1 -1
  97. package/es2018/plugins/iframe-editor/iframe-editor.min.js +1 -1
  98. package/es2018/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  99. package/es2018/plugins/keyboard/keyboard.min.js +1 -1
  100. package/es2018/plugins/math/math.min.js +1 -1
  101. package/es2018/plugins/mobile-view/mobile-view.min.js +1 -1
  102. package/es2018/plugins/page-break/page-break.min.js +1 -1
  103. package/es2018/plugins/paste-code/paste-code.min.js +1 -1
  104. package/es2018/plugins/paste-from-word/paste-from-word.min.js +1 -1
  105. package/es2018/plugins/show-blocks/show-blocks.min.js +1 -1
  106. package/es2018/plugins/style/style.min.js +1 -1
  107. package/es2018/plugins/templates/templates.min.js +1 -1
  108. package/es2018/plugins/todo-list/todo-list.min.js +1 -1
  109. package/es2018/plugins/translate/translate.min.js +1 -1
  110. package/es2018/plugins/tune-block/tune-block.min.js +1 -1
  111. package/es2021/jodit.css +2 -2
  112. package/es2021/jodit.fat.min.css +1 -1
  113. package/es2021/jodit.fat.min.js +14 -14
  114. package/es2021/jodit.js +1092 -197
  115. package/es2021/jodit.min.css +1 -1
  116. package/es2021/jodit.min.js +14 -14
  117. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  118. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  119. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  120. package/es2021/plugins/autocomplete/autocomplete.css +1 -1
  121. package/es2021/plugins/autocomplete/autocomplete.js +1 -1
  122. package/es2021/plugins/autocomplete/autocomplete.min.js +1 -1
  123. package/es2021/plugins/backup/backup.css +1 -1
  124. package/es2021/plugins/backup/backup.js +1 -1
  125. package/es2021/plugins/backup/backup.min.js +1 -1
  126. package/es2021/plugins/button-generator/button-generator.css +1 -1
  127. package/es2021/plugins/button-generator/button-generator.js +1 -1
  128. package/es2021/plugins/button-generator/button-generator.min.js +1 -1
  129. package/es2021/plugins/change-case/change-case.js +1 -1
  130. package/es2021/plugins/change-case/change-case.min.js +1 -1
  131. package/es2021/plugins/chart/chart.css +1 -1
  132. package/es2021/plugins/chart/chart.js +1 -1
  133. package/es2021/plugins/chart/chart.min.js +1 -1
  134. package/es2021/plugins/color-picker/color-picker.css +1 -1
  135. package/es2021/plugins/color-picker/color-picker.js +1 -1
  136. package/es2021/plugins/color-picker/color-picker.min.js +1 -1
  137. package/es2021/plugins/emoji/emoji.css +1 -1
  138. package/es2021/plugins/emoji/emoji.js +1 -1
  139. package/es2021/plugins/emoji/emoji.min.js +1 -1
  140. package/es2021/plugins/export-docs/export-docs.js +1 -1
  141. package/es2021/plugins/export-docs/export-docs.min.js +1 -1
  142. package/es2021/plugins/finder/finder.css +1 -1
  143. package/es2021/plugins/finder/finder.js +1 -1
  144. package/es2021/plugins/finder/finder.min.js +1 -1
  145. package/es2021/plugins/google-maps/google-maps.css +1 -1
  146. package/es2021/plugins/google-maps/google-maps.js +1 -1
  147. package/es2021/plugins/google-maps/google-maps.min.js +1 -1
  148. package/es2021/plugins/google-search/google-search.js +1 -1
  149. package/es2021/plugins/google-search/google-search.min.js +1 -1
  150. package/es2021/plugins/highlight-signature/highlight-signature.js +1 -1
  151. package/es2021/plugins/highlight-signature/highlight-signature.min.js +1 -1
  152. package/es2021/plugins/iframe-editor/iframe-editor.css +1 -1
  153. package/es2021/plugins/iframe-editor/iframe-editor.js +1 -1
  154. package/es2021/plugins/iframe-editor/iframe-editor.min.js +1 -1
  155. package/es2021/plugins/image-editor-pro/image-editor-pro.css +1 -1
  156. package/es2021/plugins/image-editor-pro/image-editor-pro.js +1 -1
  157. package/es2021/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  158. package/es2021/plugins/keyboard/keyboard.css +1 -1
  159. package/es2021/plugins/keyboard/keyboard.js +1 -1
  160. package/es2021/plugins/keyboard/keyboard.min.js +1 -1
  161. package/es2021/plugins/math/math.css +1 -1
  162. package/es2021/plugins/math/math.js +1 -1
  163. package/es2021/plugins/math/math.min.js +1 -1
  164. package/es2021/plugins/mobile-view/mobile-view.js +1 -1
  165. package/es2021/plugins/mobile-view/mobile-view.min.js +1 -1
  166. package/es2021/plugins/page-break/page-break.js +1 -1
  167. package/es2021/plugins/page-break/page-break.min.js +1 -1
  168. package/es2021/plugins/paste-code/paste-code.css +1 -1
  169. package/es2021/plugins/paste-code/paste-code.js +1 -1
  170. package/es2021/plugins/paste-code/paste-code.min.js +1 -1
  171. package/es2021/plugins/paste-from-word/paste-from-word.js +1 -1
  172. package/es2021/plugins/paste-from-word/paste-from-word.min.js +1 -1
  173. package/es2021/plugins/show-blocks/show-blocks.js +1 -1
  174. package/es2021/plugins/show-blocks/show-blocks.min.js +1 -1
  175. package/es2021/plugins/style/style.css +1 -1
  176. package/es2021/plugins/style/style.js +1 -1
  177. package/es2021/plugins/style/style.min.js +1 -1
  178. package/es2021/plugins/templates/templates.css +1 -1
  179. package/es2021/plugins/templates/templates.js +1 -1
  180. package/es2021/plugins/templates/templates.min.js +1 -1
  181. package/es2021/plugins/todo-list/todo-list.css +1 -1
  182. package/es2021/plugins/todo-list/todo-list.js +1 -1
  183. package/es2021/plugins/todo-list/todo-list.min.js +1 -1
  184. package/es2021/plugins/translate/translate.css +1 -1
  185. package/es2021/plugins/translate/translate.js +1 -1
  186. package/es2021/plugins/translate/translate.min.js +1 -1
  187. package/es2021/plugins/tune-block/tune-block.css +1 -1
  188. package/es2021/plugins/tune-block/tune-block.js +1 -1
  189. package/es2021/plugins/tune-block/tune-block.min.js +1 -1
  190. package/es2021.en/jodit.css +2 -2
  191. package/es2021.en/jodit.fat.min.css +1 -1
  192. package/es2021.en/jodit.fat.min.js +14 -14
  193. package/es2021.en/jodit.js +1092 -197
  194. package/es2021.en/jodit.min.css +1 -1
  195. package/es2021.en/jodit.min.js +30 -30
  196. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  197. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  198. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  199. package/es2021.en/plugins/autocomplete/autocomplete.css +1 -1
  200. package/es2021.en/plugins/autocomplete/autocomplete.js +1 -1
  201. package/es2021.en/plugins/autocomplete/autocomplete.min.js +1 -1
  202. package/es2021.en/plugins/backup/backup.css +1 -1
  203. package/es2021.en/plugins/backup/backup.js +1 -1
  204. package/es2021.en/plugins/backup/backup.min.js +1 -1
  205. package/es2021.en/plugins/button-generator/button-generator.css +1 -1
  206. package/es2021.en/plugins/button-generator/button-generator.js +1 -1
  207. package/es2021.en/plugins/button-generator/button-generator.min.js +1 -1
  208. package/es2021.en/plugins/change-case/change-case.js +1 -1
  209. package/es2021.en/plugins/change-case/change-case.min.js +1 -1
  210. package/es2021.en/plugins/chart/chart.css +1 -1
  211. package/es2021.en/plugins/chart/chart.js +1 -1
  212. package/es2021.en/plugins/chart/chart.min.js +1 -1
  213. package/es2021.en/plugins/color-picker/color-picker.css +1 -1
  214. package/es2021.en/plugins/color-picker/color-picker.js +1 -1
  215. package/es2021.en/plugins/color-picker/color-picker.min.js +1 -1
  216. package/es2021.en/plugins/emoji/emoji.css +1 -1
  217. package/es2021.en/plugins/emoji/emoji.js +1 -1
  218. package/es2021.en/plugins/emoji/emoji.min.js +1 -1
  219. package/es2021.en/plugins/export-docs/export-docs.js +1 -1
  220. package/es2021.en/plugins/export-docs/export-docs.min.js +1 -1
  221. package/es2021.en/plugins/finder/finder.css +1 -1
  222. package/es2021.en/plugins/finder/finder.js +1 -1
  223. package/es2021.en/plugins/finder/finder.min.js +1 -1
  224. package/es2021.en/plugins/google-maps/google-maps.css +1 -1
  225. package/es2021.en/plugins/google-maps/google-maps.js +1 -1
  226. package/es2021.en/plugins/google-maps/google-maps.min.js +1 -1
  227. package/es2021.en/plugins/google-search/google-search.js +1 -1
  228. package/es2021.en/plugins/google-search/google-search.min.js +1 -1
  229. package/es2021.en/plugins/highlight-signature/highlight-signature.js +1 -1
  230. package/es2021.en/plugins/highlight-signature/highlight-signature.min.js +1 -1
  231. package/es2021.en/plugins/iframe-editor/iframe-editor.css +1 -1
  232. package/es2021.en/plugins/iframe-editor/iframe-editor.js +1 -1
  233. package/es2021.en/plugins/iframe-editor/iframe-editor.min.js +1 -1
  234. package/es2021.en/plugins/image-editor-pro/image-editor-pro.css +1 -1
  235. package/es2021.en/plugins/image-editor-pro/image-editor-pro.js +1 -1
  236. package/es2021.en/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  237. package/es2021.en/plugins/keyboard/keyboard.css +1 -1
  238. package/es2021.en/plugins/keyboard/keyboard.js +1 -1
  239. package/es2021.en/plugins/keyboard/keyboard.min.js +1 -1
  240. package/es2021.en/plugins/math/math.css +1 -1
  241. package/es2021.en/plugins/math/math.js +1 -1
  242. package/es2021.en/plugins/math/math.min.js +1 -1
  243. package/es2021.en/plugins/mobile-view/mobile-view.js +1 -1
  244. package/es2021.en/plugins/mobile-view/mobile-view.min.js +1 -1
  245. package/es2021.en/plugins/page-break/page-break.js +1 -1
  246. package/es2021.en/plugins/page-break/page-break.min.js +1 -1
  247. package/es2021.en/plugins/paste-code/paste-code.css +1 -1
  248. package/es2021.en/plugins/paste-code/paste-code.js +1 -1
  249. package/es2021.en/plugins/paste-code/paste-code.min.js +1 -1
  250. package/es2021.en/plugins/paste-from-word/paste-from-word.js +1 -1
  251. package/es2021.en/plugins/paste-from-word/paste-from-word.min.js +1 -1
  252. package/es2021.en/plugins/show-blocks/show-blocks.js +1 -1
  253. package/es2021.en/plugins/show-blocks/show-blocks.min.js +1 -1
  254. package/es2021.en/plugins/style/style.css +1 -1
  255. package/es2021.en/plugins/style/style.js +1 -1
  256. package/es2021.en/plugins/style/style.min.js +1 -1
  257. package/es2021.en/plugins/templates/templates.css +1 -1
  258. package/es2021.en/plugins/templates/templates.js +1 -1
  259. package/es2021.en/plugins/templates/templates.min.js +1 -1
  260. package/es2021.en/plugins/todo-list/todo-list.css +1 -1
  261. package/es2021.en/plugins/todo-list/todo-list.js +1 -1
  262. package/es2021.en/plugins/todo-list/todo-list.min.js +1 -1
  263. package/es2021.en/plugins/translate/translate.css +1 -1
  264. package/es2021.en/plugins/translate/translate.js +1 -1
  265. package/es2021.en/plugins/translate/translate.min.js +1 -1
  266. package/es2021.en/plugins/tune-block/tune-block.css +1 -1
  267. package/es2021.en/plugins/tune-block/tune-block.js +1 -1
  268. package/es2021.en/plugins/tune-block/tune-block.min.js +1 -1
  269. package/es5/jodit.css +3 -3
  270. package/es5/jodit.fat.min.css +1 -1
  271. package/es5/jodit.fat.min.js +2 -2
  272. package/es5/jodit.js +1254 -207
  273. package/es5/jodit.min.css +3 -3
  274. package/es5/jodit.min.js +2 -2
  275. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  276. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  277. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  278. package/es5/plugins/autocomplete/autocomplete.css +1 -1
  279. package/es5/plugins/autocomplete/autocomplete.js +1 -1
  280. package/es5/plugins/autocomplete/autocomplete.min.js +1 -1
  281. package/es5/plugins/backup/backup.css +1 -1
  282. package/es5/plugins/backup/backup.js +1 -1
  283. package/es5/plugins/backup/backup.min.js +1 -1
  284. package/es5/plugins/button-generator/button-generator.css +1 -1
  285. package/es5/plugins/button-generator/button-generator.js +1 -1
  286. package/es5/plugins/button-generator/button-generator.min.js +1 -1
  287. package/es5/plugins/change-case/change-case.js +1 -1
  288. package/es5/plugins/change-case/change-case.min.js +1 -1
  289. package/es5/plugins/chart/chart.css +1 -1
  290. package/es5/plugins/chart/chart.js +1 -1
  291. package/es5/plugins/chart/chart.min.js +1 -1
  292. package/es5/plugins/color-picker/color-picker.css +1 -1
  293. package/es5/plugins/color-picker/color-picker.js +1 -1
  294. package/es5/plugins/color-picker/color-picker.min.js +1 -1
  295. package/es5/plugins/emoji/emoji.css +1 -1
  296. package/es5/plugins/emoji/emoji.js +1 -1
  297. package/es5/plugins/emoji/emoji.min.js +1 -1
  298. package/es5/plugins/export-docs/export-docs.js +1 -1
  299. package/es5/plugins/export-docs/export-docs.min.js +1 -1
  300. package/es5/plugins/finder/finder.css +1 -1
  301. package/es5/plugins/finder/finder.js +1 -1
  302. package/es5/plugins/finder/finder.min.js +1 -1
  303. package/es5/plugins/google-maps/google-maps.css +1 -1
  304. package/es5/plugins/google-maps/google-maps.js +1 -1
  305. package/es5/plugins/google-maps/google-maps.min.js +1 -1
  306. package/es5/plugins/google-search/google-search.js +1 -1
  307. package/es5/plugins/google-search/google-search.min.js +1 -1
  308. package/es5/plugins/highlight-signature/highlight-signature.js +1 -1
  309. package/es5/plugins/highlight-signature/highlight-signature.min.js +1 -1
  310. package/es5/plugins/iframe-editor/iframe-editor.css +1 -1
  311. package/es5/plugins/iframe-editor/iframe-editor.js +1 -1
  312. package/es5/plugins/iframe-editor/iframe-editor.min.js +1 -1
  313. package/es5/plugins/image-editor-pro/image-editor-pro.css +1 -1
  314. package/es5/plugins/image-editor-pro/image-editor-pro.js +1 -1
  315. package/es5/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  316. package/es5/plugins/keyboard/keyboard.css +1 -1
  317. package/es5/plugins/keyboard/keyboard.js +1 -1
  318. package/es5/plugins/keyboard/keyboard.min.js +1 -1
  319. package/es5/plugins/math/math.css +1 -1
  320. package/es5/plugins/math/math.js +1 -1
  321. package/es5/plugins/math/math.min.js +1 -1
  322. package/es5/plugins/mobile-view/mobile-view.js +1 -1
  323. package/es5/plugins/mobile-view/mobile-view.min.js +1 -1
  324. package/es5/plugins/page-break/page-break.js +1 -1
  325. package/es5/plugins/page-break/page-break.min.js +1 -1
  326. package/es5/plugins/paste-code/paste-code.css +1 -1
  327. package/es5/plugins/paste-code/paste-code.js +1 -1
  328. package/es5/plugins/paste-code/paste-code.min.js +1 -1
  329. package/es5/plugins/paste-from-word/paste-from-word.js +1 -1
  330. package/es5/plugins/paste-from-word/paste-from-word.min.js +1 -1
  331. package/es5/plugins/show-blocks/show-blocks.js +1 -1
  332. package/es5/plugins/show-blocks/show-blocks.min.js +1 -1
  333. package/es5/plugins/style/style.css +1 -1
  334. package/es5/plugins/style/style.js +1 -1
  335. package/es5/plugins/style/style.min.js +1 -1
  336. package/es5/plugins/templates/templates.css +1 -1
  337. package/es5/plugins/templates/templates.js +1 -1
  338. package/es5/plugins/templates/templates.min.js +1 -1
  339. package/es5/plugins/todo-list/todo-list.css +1 -1
  340. package/es5/plugins/todo-list/todo-list.js +1 -1
  341. package/es5/plugins/todo-list/todo-list.min.js +1 -1
  342. package/es5/plugins/translate/translate.css +1 -1
  343. package/es5/plugins/translate/translate.js +1 -1
  344. package/es5/plugins/translate/translate.min.js +1 -1
  345. package/es5/plugins/tune-block/tune-block.css +1 -1
  346. package/es5/plugins/tune-block/tune-block.js +1 -1
  347. package/es5/plugins/tune-block/tune-block.min.js +1 -1
  348. package/es5/polyfills.fat.min.js +1 -1
  349. package/es5/polyfills.js +1 -1
  350. package/es5/polyfills.min.js +1 -1
  351. package/package.json +1 -1
package/es2021/jodit.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * jodit-pro - PRO Version of Jodit Editor
3
3
  * Author: Chupurnov Valerii <chupurnov@gmail.com>
4
- * Version: v4.18.8
4
+ * Version: v4.18.9
5
5
  * Url: https://xdsoft.net/jodit/pro/
6
6
  * License(s): SEE LICENSE IN LICENSE.md
7
7
  */
@@ -1766,7 +1766,7 @@ __webpack_require__.r(__webpack_exports__);
1766
1766
  * ```
1767
1767
  * @packageDocumentation
1768
1768
  * @module constants
1769
- */ const APP_VERSION = "4.18.8";
1769
+ */ const APP_VERSION = "4.18.9";
1770
1770
  // prettier-ignore
1771
1771
  const ES = "es2021";
1772
1772
  const IS_ES_MODERN = true;
@@ -5686,10 +5686,11 @@ const isLicense = (license)=>(0,_is_string_js__WEBPACK_IMPORTED_MODULE_0__.isStr
5686
5686
  /* harmony export */ });
5687
5687
  /* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82758);
5688
5688
  /* harmony import */ var _dom_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2748);
5689
- /* harmony import */ var _string_trim_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(49055);
5690
- /* harmony import */ var _utils_attr_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(29960);
5691
- /* harmony import */ var _utils_css_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(41180);
5692
- /* harmony import */ var _utils_selector_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(76078);
5689
+ /* harmony import */ var _word_lists_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(90723);
5690
+ /* harmony import */ var _string_trim_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(49055);
5691
+ /* harmony import */ var _utils_attr_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(29960);
5692
+ /* harmony import */ var _utils_css_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(41180);
5693
+ /* harmony import */ var _utils_selector_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(76078);
5693
5694
  /*!
5694
5695
  * Jodit Editor (https://xdsoft.net/jodit/)
5695
5696
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -5702,6 +5703,7 @@ const isLicense = (license)=>(0,_is_string_js__WEBPACK_IMPORTED_MODULE_0__.isStr
5702
5703
 
5703
5704
 
5704
5705
 
5706
+
5705
5707
  function normalizeCSS(s) {
5706
5708
  return s.replace(/mso-[a-z-]+:[\s]*[^;]+;/gi, '').replace(/mso-[a-z-]+:[\s]*[^";']+$/gi, '').replace(/border[a-z-]*:[\s]*[^;]+;/gi, '').replace(/([0-9.]+)(pt|cm)/gi, (match, units, metrics)=>{
5707
5709
  switch(metrics.toLowerCase()){
@@ -5735,7 +5737,7 @@ function normalizeCSS(s) {
5735
5737
  html = html.substring(0, closeIndex + '</html>'.length);
5736
5738
  }
5737
5739
  const iframe = _constants_js__WEBPACK_IMPORTED_MODULE_0__.globalDocument.createElement('iframe');
5738
- (0,_utils_css_js__WEBPACK_IMPORTED_MODULE_4__.css)(iframe, 'display', 'none');
5740
+ (0,_utils_css_js__WEBPACK_IMPORTED_MODULE_5__.css)(iframe, 'display', 'none');
5739
5741
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.append(_constants_js__WEBPACK_IMPORTED_MODULE_0__.globalDocument.body, iframe);
5740
5742
  let convertedString = '', collection;
5741
5743
  try {
@@ -5744,13 +5746,14 @@ function normalizeCSS(s) {
5744
5746
  iframeDoc.open();
5745
5747
  iframeDoc.write(html);
5746
5748
  iframeDoc.close();
5749
+ const listItems = (0,_word_lists_js__WEBPACK_IMPORTED_MODULE_2__.readWordListItems)(iframeDoc.body);
5747
5750
  // Word marks its auto-generated list markers (the literal
5748
5751
  // bullet/number, e.g. `1.` or `·`) with `mso-list:Ignore`.
5749
5752
  // They are display-only and must not be imported, otherwise
5750
5753
  // the marker text leaks into the content. Drop them before any
5751
5754
  // style normalization strips the `mso-list` hint. See #948
5752
5755
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.each(iframeDoc.body, (node)=>{
5753
- if (_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isElement(node) && /mso-list:\s*ignore/i.test((0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_3__.attr)(node, 'style') || '')) {
5756
+ if (_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isElement(node) && /mso-list:\s*ignore/i.test((0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_4__.attr)(node, 'style') || '')) {
5754
5757
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(node);
5755
5758
  }
5756
5759
  });
@@ -5761,7 +5764,7 @@ function normalizeCSS(s) {
5761
5764
  if (rules[idx].selectorText === '') {
5762
5765
  continue;
5763
5766
  }
5764
- collection = (0,_utils_selector_js__WEBPACK_IMPORTED_MODULE_5__.$$)(rules[idx].selectorText, iframeDoc.body);
5767
+ collection = (0,_utils_selector_js__WEBPACK_IMPORTED_MODULE_6__.$$)(rules[idx].selectorText, iframeDoc.body);
5765
5768
  // `style.cssText` on purpose: the CSSOM parses the text,
5766
5769
  // drops invalid declarations and re-serializes it. The raw
5767
5770
  // `style` attribute would keep Word-only junk verbatim
@@ -5775,18 +5778,19 @@ function normalizeCSS(s) {
5775
5778
  throw e;
5776
5779
  }
5777
5780
  }
5781
+ ;(0,_word_lists_js__WEBPACK_IMPORTED_MODULE_2__.wrapWordListItems)(listItems);
5778
5782
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.each(iframeDoc.body, (node)=>{
5779
5783
  if (_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isElement(node)) {
5780
- const cssText = (0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_3__.attr)(node, 'style');
5784
+ const cssText = (0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_4__.attr)(node, 'style');
5781
5785
  if (cssText) {
5782
5786
  node.style.cssText = normalizeCSS(cssText);
5783
5787
  }
5784
- if (!(0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_3__.attr)(node, 'style')) {
5785
- (0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_3__.attr)(node, 'style', null);
5788
+ if (!(0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_4__.attr)(node, 'style')) {
5789
+ (0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_4__.attr)(node, 'style', null);
5786
5790
  }
5787
5791
  }
5788
5792
  });
5789
- convertedString = iframeDoc.firstChild ? (0,_string_trim_js__WEBPACK_IMPORTED_MODULE_2__.trim)(iframeDoc.body.innerHTML) : '';
5793
+ convertedString = iframeDoc.firstChild ? (0,_string_trim_js__WEBPACK_IMPORTED_MODULE_3__.trim)(iframeDoc.body.innerHTML) : '';
5790
5794
  }
5791
5795
  } catch (_a) {} finally{
5792
5796
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(iframe);
@@ -5794,7 +5798,7 @@ function normalizeCSS(s) {
5794
5798
  if (convertedString) {
5795
5799
  html = convertedString;
5796
5800
  }
5797
- return (0,_string_trim_js__WEBPACK_IMPORTED_MODULE_2__.trim)(html.replace(/<(\/)?(html|colgroup|col|o:p)[^>]*>/g, '').replace(/<!--[^>]*>/g, ''));
5801
+ return (0,_string_trim_js__WEBPACK_IMPORTED_MODULE_3__.trim)(html.replace(/<(\/)?(html|colgroup|col|o:p)[^>]*>/g, '').replace(/<!--[^>]*>/g, ''));
5798
5802
  }
5799
5803
 
5800
5804
 
@@ -5809,8 +5813,9 @@ function normalizeCSS(s) {
5809
5813
  /* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82758);
5810
5814
  /* harmony import */ var _dom_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2748);
5811
5815
  /* harmony import */ var _array_to_array_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4510);
5812
- /* harmony import */ var _string_trim_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(49055);
5813
- /* harmony import */ var _utils_attr_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(29960);
5816
+ /* harmony import */ var _word_lists_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(90723);
5817
+ /* harmony import */ var _string_trim_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(49055);
5818
+ /* harmony import */ var _utils_attr_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(29960);
5814
5819
  /*!
5815
5820
  * Jodit Editor (https://xdsoft.net/jodit/)
5816
5821
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -5822,6 +5827,7 @@ function normalizeCSS(s) {
5822
5827
 
5823
5828
 
5824
5829
 
5830
+
5825
5831
  /**
5826
5832
  * The method automatically cleans up content from Microsoft Word and other HTML sources to ensure clean, compliant
5827
5833
  * content that matches the look and feel of the site.
@@ -5835,6 +5841,7 @@ function normalizeCSS(s) {
5835
5841
  const div = _constants_js__WEBPACK_IMPORTED_MODULE_0__.globalDocument.createElement('div');
5836
5842
  div.innerHTML = html;
5837
5843
  const marks = [];
5844
+ const listItems = (0,_word_lists_js__WEBPACK_IMPORTED_MODULE_3__.readWordListItems)(div);
5838
5845
  if (div.firstChild) {
5839
5846
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.each(div, (node)=>{
5840
5847
  if (!node) {
@@ -5859,7 +5866,7 @@ function normalizeCSS(s) {
5859
5866
  // with `mso-list:Ignore`. They are display-only
5860
5867
  // and must not be imported, otherwise the marker
5861
5868
  // text leaks into the content. See #948
5862
- if (/mso-list:\s*ignore/i.test((0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_4__.attr)(node, 'style') || '')) {
5869
+ if (/mso-list:\s*ignore/i.test((0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_5__.attr)(node, 'style') || '')) {
5863
5870
  marks.push(node);
5864
5871
  break;
5865
5872
  }
@@ -5873,7 +5880,7 @@ function normalizeCSS(s) {
5873
5880
  // `attrRaw`: SVG keeps camelCase names
5874
5881
  // (`viewBox`), `attr()` would kebab-case
5875
5882
  // them and silently skip the removal
5876
- (0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_4__.attrRaw)(node, attribute.name, null);
5883
+ (0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_5__.attrRaw)(node, attribute.name, null);
5877
5884
  }
5878
5885
  });
5879
5886
  }
@@ -5886,12 +5893,13 @@ function normalizeCSS(s) {
5886
5893
  });
5887
5894
  }
5888
5895
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove.apply(null, marks);
5896
+ (0,_word_lists_js__WEBPACK_IMPORTED_MODULE_3__.wrapWordListItems)(listItems);
5889
5897
  convertedString = div.innerHTML;
5890
5898
  } catch (e) {}
5891
5899
  if (convertedString) {
5892
5900
  html = convertedString;
5893
5901
  }
5894
- html = html.split(/(\n)/).filter(_string_trim_js__WEBPACK_IMPORTED_MODULE_3__.trim).join('\n');
5902
+ html = html.split(/(\n)/).filter(_string_trim_js__WEBPACK_IMPORTED_MODULE_4__.trim).join('\n');
5895
5903
  return html.replace(/<(\/)?(html|colgroup|col|o:p)[^>]*>/g, '').replace(/<!--[^>]*>/g, '');
5896
5904
  }
5897
5905
 
@@ -6226,7 +6234,14 @@ const NEW_LINE_TAGS = new Set([
6226
6234
  'h4',
6227
6235
  'h5',
6228
6236
  'h6',
6229
- 'hr'
6237
+ 'hr',
6238
+ 'ul',
6239
+ 'ol',
6240
+ 'li'
6241
+ ]);
6242
+ const LIST_TAGS = new Set([
6243
+ 'ul',
6244
+ 'ol'
6230
6245
  ]);
6231
6246
  const INVISIBLE_TAGS = new Set([
6232
6247
  'script',
@@ -6252,6 +6267,16 @@ const ALONE_TAGS = new Set([
6252
6267
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.each(tmp, (node)=>{
6253
6268
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(node) && all.push(node);
6254
6269
  });
6270
+ // By default blocks are joined with a single space (single-line
6271
+ // plain text). When `blockBr` is set, separate them with a line
6272
+ // break instead, so paragraph structure survives — e.g. the
6273
+ // "Insert only Text" paste option. See #1232
6274
+ const separators = new Set();
6275
+ const separator = ()=>{
6276
+ const text = doc.createTextNode(blockBr ? '%%%jodit-single-br%%%' : ' ');
6277
+ separators.add(text);
6278
+ return text;
6279
+ };
6255
6280
  all.forEach((p)=>{
6256
6281
  const pr = p.parentNode;
6257
6282
  if (!pr) {
@@ -6271,16 +6296,17 @@ const ALONE_TAGS = new Set([
6271
6296
  if (!_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(p, NEW_LINE_TAGS)) {
6272
6297
  return;
6273
6298
  }
6299
+ const pv = p.previousSibling;
6300
+ // A nested list starts on a new line after its item's own text
6301
+ if (_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(p, LIST_TAGS) && pv && !separators.has(pv) && !(_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isText(pv) && /\s$/.test(pv.nodeValue || ''))) {
6302
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.before(p, separator());
6303
+ }
6274
6304
  const nx = p.nextSibling;
6275
6305
  if (_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isText(nx) && /^\s/.test(nx.nodeValue || '')) {
6276
6306
  return;
6277
6307
  }
6278
6308
  if (nx) {
6279
- // By default blocks are joined with a single space (single-line
6280
- // plain text). When `blockBr` is set, separate them with a line
6281
- // break instead, so paragraph structure survives — e.g. the
6282
- // "Insert only Text" paste option. See #1232
6283
- _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.before(nx, doc.createTextNode(blockBr ? '%%%jodit-single-br%%%' : ' '));
6309
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.before(nx, separator());
6284
6310
  }
6285
6311
  });
6286
6312
  return restoreTags((0,_string_trim_js__WEBPACK_IMPORTED_MODULE_2__.trim)(tmp.innerText));
@@ -6290,6 +6316,180 @@ function restoreTags(content) {
6290
6316
  }
6291
6317
 
6292
6318
 
6319
+ /***/ }),
6320
+
6321
+ /***/ 90723:
6322
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
6323
+
6324
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
6325
+ /* harmony export */ readWordListItems: function() { return /* binding */ readWordListItems; },
6326
+ /* harmony export */ wrapWordListItems: function() { return /* binding */ wrapWordListItems; }
6327
+ /* harmony export */ });
6328
+ /* harmony import */ var _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
6329
+ /* harmony import */ var _array_to_array_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4510);
6330
+ /* harmony import */ var _utils_attr_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29960);
6331
+ /*!
6332
+ * Jodit Editor (https://xdsoft.net/jodit/)
6333
+ * Released under MIT see LICENSE.txt in the project root for license information.
6334
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
6335
+ */ /**
6336
+ * @module helpers/html
6337
+ */
6338
+
6339
+
6340
+ const ROMAN = {
6341
+ i: 1,
6342
+ v: 5,
6343
+ x: 10,
6344
+ l: 50,
6345
+ c: 100,
6346
+ d: 500,
6347
+ m: 1000
6348
+ };
6349
+ function romanValue(roman) {
6350
+ let value = 0;
6351
+ for(let i = 0; i < roman.length; i += 1){
6352
+ const current = ROMAN[roman[i]], next = ROMAN[roman[i + 1]] || 0;
6353
+ value += current < next ? -current : current;
6354
+ }
6355
+ return value;
6356
+ }
6357
+ /**
6358
+ * Word's marker text (`1.`, `b)`, `iv.`, `·`, `o`, `§`) decides the list type
6359
+ */ function parseMarker(marker) {
6360
+ const text = marker.replace(/\s+/g, '');
6361
+ const decimal = /^\(?(?:\d+\.)*(\d+)[.)]?$/.exec(text);
6362
+ if (decimal) {
6363
+ return {
6364
+ tag: 'ol',
6365
+ listStyleType: null,
6366
+ start: Number(decimal[1])
6367
+ };
6368
+ }
6369
+ const letters = /^\(?([a-z]+|[A-Z]+)[.)]$/.exec(text);
6370
+ if (letters) {
6371
+ const value = letters[1], lower = value.toLowerCase(), upper = value !== lower;
6372
+ if (/^[ivxlcdm]+$/.test(lower) && (lower.length > 1 || lower === 'i')) {
6373
+ return {
6374
+ tag: 'ol',
6375
+ listStyleType: upper ? 'upper-roman' : 'lower-roman',
6376
+ start: romanValue(lower)
6377
+ };
6378
+ }
6379
+ // Word continues a lettered list with aa, bb, ...
6380
+ if (/^([a-z])\1*$/.test(lower)) {
6381
+ return {
6382
+ tag: 'ol',
6383
+ listStyleType: upper ? 'upper-alpha' : 'lower-alpha',
6384
+ start: (lower.length - 1) * 26 + lower.charCodeAt(0) - 96
6385
+ };
6386
+ }
6387
+ }
6388
+ return {
6389
+ tag: 'ul',
6390
+ listStyleType: null,
6391
+ start: 1
6392
+ };
6393
+ }
6394
+ /**
6395
+ * Removes the marker and the wrappers it leaves empty
6396
+ */ function removeMarker(marker, paragraph) {
6397
+ let parent = marker.parentNode;
6398
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(marker);
6399
+ while(parent && parent !== paragraph && _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(parent) && _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(parent)){
6400
+ const next = parent.parentNode;
6401
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(parent);
6402
+ parent = next;
6403
+ }
6404
+ }
6405
+ /**
6406
+ * Finds Word's list paragraphs (`<p style="mso-list:l0 level1 lfo1">`), reads
6407
+ * their list, level and type from the `mso-list:Ignore` marker, and removes the
6408
+ * marker. Call it before anything strips the `mso-list` styles, then pass the
6409
+ * result to {@link wrapWordListItems}
6410
+ */ function readWordListItems(root) {
6411
+ const items = [];
6412
+ (0,_array_to_array_js__WEBPACK_IMPORTED_MODULE_1__.toArray)(root.querySelectorAll('p')).forEach((paragraph)=>{
6413
+ const match = /mso-list:\s*l(\d+)\s+level(\d+)(?:\s+lfo(\d+))?/i.exec((0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_2__.attr)(paragraph, 'style') || '');
6414
+ if (!match) {
6415
+ return;
6416
+ }
6417
+ const marker = (0,_array_to_array_js__WEBPACK_IMPORTED_MODULE_1__.toArray)(paragraph.querySelectorAll('[style]')).find((elm)=>/mso-list:\s*ignore/i.test((0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_2__.attr)(elm, 'style') || ''));
6418
+ items.push({
6419
+ paragraph,
6420
+ list: `${match[1]}:${match[3] || ''}`,
6421
+ level: Number(match[2]),
6422
+ ...parseMarker((marker === null || marker === void 0 ? void 0 : marker.textContent) || '')
6423
+ });
6424
+ if (marker) {
6425
+ removeMarker(marker, paragraph);
6426
+ }
6427
+ });
6428
+ return items;
6429
+ }
6430
+ function isAdjacent(prev, item) {
6431
+ return _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.findSibling(item.paragraph, true, (n)=>!_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmptyTextNode(n) && !_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isComment(n)) === prev.paragraph;
6432
+ }
6433
+ /**
6434
+ * Turns the paragraphs found by {@link readWordListItems} into `<ul>`/`<ol>`
6435
+ * lists, nesting them by level. Each paragraph becomes an `<li>` without Word's
6436
+ * hanging indent
6437
+ */ function wrapWordListItems(items) {
6438
+ let stack = [];
6439
+ const continues = items.map((item, index)=>index > 0 && isAdjacent(items[index - 1], item));
6440
+ items.forEach((item, index)=>{
6441
+ const { paragraph } = item;
6442
+ if (!continues[index]) {
6443
+ stack = [];
6444
+ }
6445
+ while(stack.length && stack[stack.length - 1].level > item.level){
6446
+ stack.pop();
6447
+ }
6448
+ let top = stack[stack.length - 1];
6449
+ if (top && top.level === item.level && top.list !== item.list) {
6450
+ stack.pop();
6451
+ top = stack[stack.length - 1];
6452
+ }
6453
+ const doc = paragraph.ownerDocument;
6454
+ if (!top || top.level < item.level) {
6455
+ const element = doc.createElement(item.tag);
6456
+ if (item.listStyleType) {
6457
+ element.style.listStyleType = item.listStyleType;
6458
+ }
6459
+ if (item.tag === 'ol' && item.start !== 1) {
6460
+ (0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_2__.attr)(element, 'start', item.start);
6461
+ }
6462
+ if (top && top.li) {
6463
+ top.li.appendChild(element);
6464
+ } else {
6465
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.before(paragraph, element);
6466
+ }
6467
+ top = {
6468
+ level: item.level,
6469
+ list: item.list,
6470
+ element
6471
+ };
6472
+ stack.push(top);
6473
+ }
6474
+ const li = doc.createElement('li');
6475
+ (0,_array_to_array_js__WEBPACK_IMPORTED_MODULE_1__.toArray)(paragraph.attributes).forEach((attribute)=>{
6476
+ if (attribute.name !== 'class') {
6477
+ li.setAttribute(attribute.name, attribute.value);
6478
+ }
6479
+ });
6480
+ li.style.removeProperty('margin-left');
6481
+ li.style.removeProperty('text-indent');
6482
+ if (!(0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_2__.attr)(li, 'style')) {
6483
+ (0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_2__.attr)(li, 'style', null);
6484
+ }
6485
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.moveContent(paragraph, li);
6486
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(paragraph);
6487
+ top.element.appendChild(li);
6488
+ top.li = li;
6489
+ });
6490
+ }
6491
+
6492
+
6293
6493
  /***/ }),
6294
6494
 
6295
6495
  /***/ 21537:
@@ -10557,13 +10757,15 @@ function usable(ranges, shadowRoot) {
10557
10757
  /* harmony export */ composedRanges: function() { return /* reexport safe */ _composed_ranges_js__WEBPACK_IMPORTED_MODULE_2__.composedRanges; },
10558
10758
  /* harmony export */ cursorInTheEdgeOfString: function() { return /* binding */ cursorInTheEdgeOfString; },
10559
10759
  /* harmony export */ findCorrectCurrentNode: function() { return /* binding */ findCorrectCurrentNode; },
10560
- /* harmony export */ moveNodeInsideStart: function() { return /* reexport safe */ _move_node_inside_start_js__WEBPACK_IMPORTED_MODULE_3__.moveNodeInsideStart; }
10760
+ /* harmony export */ isMoved: function() { return /* reexport safe */ _is_moved_js__WEBPACK_IMPORTED_MODULE_3__.isMoved; },
10761
+ /* harmony export */ moveNodeInsideStart: function() { return /* reexport safe */ _move_node_inside_start_js__WEBPACK_IMPORTED_MODULE_4__.moveNodeInsideStart; }
10561
10762
  /* harmony export */ });
10562
10763
  /* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82758);
10563
10764
  /* harmony import */ var _dom_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2748);
10564
10765
  /* harmony import */ var _composed_ranges_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(79505);
10565
- /* harmony import */ var _move_node_inside_start_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(26716);
10566
- /* harmony import */ var _move_the_node_along_the_edge_outward_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(43463);
10766
+ /* harmony import */ var _is_moved_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12604);
10767
+ /* harmony import */ var _move_node_inside_start_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(26716);
10768
+ /* harmony import */ var _move_the_node_along_the_edge_outward_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(43463);
10567
10769
  /*!
10568
10770
  * Jodit Editor (https://xdsoft.net/jodit/)
10569
10771
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -10575,6 +10777,7 @@ function usable(ranges, shadowRoot) {
10575
10777
 
10576
10778
 
10577
10779
 
10780
+
10578
10781
  /**
10579
10782
  * Despite the name, returns `true` when the cursor is NOT at the checked edge
10580
10783
  * of the text node: there is significant (non invisible-space) text between
@@ -10630,6 +10833,33 @@ function findCorrectCurrentNode(node, range, rightMode, isCollapsed, checkChild,
10630
10833
  }
10631
10834
 
10632
10835
 
10836
+ /***/ }),
10837
+
10838
+ /***/ 12604:
10839
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
10840
+
10841
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
10842
+ /* harmony export */ isMoved: function() { return /* binding */ isMoved; }
10843
+ /* harmony export */ });
10844
+ /*!
10845
+ * Jodit Editor (https://xdsoft.net/jodit/)
10846
+ * Released under MIT see LICENSE.txt in the project root for license information.
10847
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
10848
+ */ /**
10849
+ * Whether the selection, `before` as it was when a key went down, has since
10850
+ * moved to somewhere else in the editor
10851
+ * @private
10852
+ */ function isMoved(jodit, before) {
10853
+ const { s } = jodit;
10854
+ // Selecting table cells, for one, removes the selection altogether
10855
+ if (!before || !s.isInsideArea) {
10856
+ return false;
10857
+ }
10858
+ const { range } = s;
10859
+ return range.startContainer !== before.startContainer || range.startOffset !== before.startOffset || range.endContainer !== before.endContainer || range.endOffset !== before.endOffset;
10860
+ }
10861
+
10862
+
10633
10863
  /***/ }),
10634
10864
 
10635
10865
  /***/ 26716:
@@ -12673,11 +12903,13 @@ function elementsEqualAttributes(elm1, elm2) {
12673
12903
  /* harmony export */ toggleOrderedList: function() { return /* binding */ toggleOrderedList; }
12674
12904
  /* harmony export */ });
12675
12905
  /* harmony import */ var _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
12676
- /* harmony import */ var _helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(38837);
12677
- /* harmony import */ var _extract_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(32526);
12678
- /* harmony import */ var _toggle_attributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(44253);
12679
- /* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(77361);
12680
- /* harmony import */ var _wrap_list_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(82515);
12906
+ /* harmony import */ var _helpers_size_object_size_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(21496);
12907
+ /* harmony import */ var _helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(38837);
12908
+ /* harmony import */ var _extract_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(32526);
12909
+ /* harmony import */ var _is_same_attributes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(94466);
12910
+ /* harmony import */ var _toggle_attributes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(44253);
12911
+ /* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(77361);
12912
+ /* harmony import */ var _wrap_list_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(82515);
12681
12913
  /*!
12682
12914
  * Jodit Editor (https://xdsoft.net/jodit/)
12683
12915
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -12688,6 +12920,8 @@ function elementsEqualAttributes(elm1, elm2) {
12688
12920
 
12689
12921
 
12690
12922
 
12923
+
12924
+
12691
12925
  /**
12692
12926
  * Replaces `ul->ol` or `ol->ul`, apply styles to the list, or remove a list item from it
12693
12927
  * @private
@@ -12699,39 +12933,69 @@ function elementsEqualAttributes(elm1, elm2) {
12699
12933
  if (!list) {
12700
12934
  return mode;
12701
12935
  }
12702
- const result = jodit.e.fire(`${_constants_js__WEBPACK_IMPORTED_MODULE_4__._PREFIX}BeforeToggleList`, mode, commitStyle, list);
12936
+ const result = jodit.e.fire(`${_constants_js__WEBPACK_IMPORTED_MODULE_6__._PREFIX}BeforeToggleList`, mode, commitStyle, list);
12703
12937
  if (result !== undefined) {
12704
12938
  return result;
12705
12939
  }
12706
- const hook = jodit.e.fire.bind(jodit.e, `${_constants_js__WEBPACK_IMPORTED_MODULE_4__._PREFIX}AfterToggleList`);
12940
+ const hook = jodit.e.fire.bind(jodit.e, `${_constants_js__WEBPACK_IMPORTED_MODULE_6__._PREFIX}AfterToggleList`);
12707
12941
  if (mode !== (/* inlined export .UNWRAP */"unwrap")) {
12708
- const isChangeMode = (0,_toggle_attributes_js__WEBPACK_IMPORTED_MODULE_3__.toggleAttributes)(commitStyle, li.parentElement, jodit, _constants_js__WEBPACK_IMPORTED_MODULE_4__.INITIAL, true) === (/* inlined export .CHANGE */"change");
12942
+ const isChangeMode = (0,_toggle_attributes_js__WEBPACK_IMPORTED_MODULE_5__.toggleAttributes)(commitStyle, li.parentElement, jodit, _constants_js__WEBPACK_IMPORTED_MODULE_6__.INITIAL, true) === (/* inlined export .CHANGE */"change");
12943
+ const isSameList = _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(list, commitStyle.element);
12944
+ // ol => ol[style="list-style-type: lower-roman"]: a list's style
12945
+ // belongs to the whole list, so it is changed without splitting it
12946
+ if (isSameList && isChangeMode && mode !== _constants_js__WEBPACK_IMPORTED_MODULE_6__.REPLACE && changesStyleOnly(commitStyle)) {
12947
+ (0,_toggle_attributes_js__WEBPACK_IMPORTED_MODULE_5__.toggleAttributes)(commitStyle, list, jodit, (/* inlined export .CHANGE */"change"));
12948
+ hook((/* inlined export .CHANGE */"change"), joinPrevious(commitStyle, list, mode), commitStyle);
12949
+ return (/* inlined export .CHANGE */"change");
12950
+ }
12951
+ // Restyled already, for an earlier part of the selection
12952
+ if (isSameList && mode === (/* inlined export .CHANGE */"change")) {
12953
+ return (/* inlined export .CHANGE */"change");
12954
+ }
12709
12955
  // ul => ol, ol => ul or ul => ul.class1
12710
- if (mode === _constants_js__WEBPACK_IMPORTED_MODULE_4__.REPLACE || isChangeMode || list.tagName.toLowerCase() !== commitStyle.element) {
12711
- const wrapper = unwrapList(_constants_js__WEBPACK_IMPORTED_MODULE_4__.REPLACE, list, li, jodit, commitStyle);
12712
- const newList = (0,_wrap_list_js__WEBPACK_IMPORTED_MODULE_5__.wrapList)(commitStyle, wrapper, jodit);
12713
- hook(_constants_js__WEBPACK_IMPORTED_MODULE_4__.REPLACE, newList, commitStyle);
12714
- return _constants_js__WEBPACK_IMPORTED_MODULE_4__.REPLACE;
12956
+ if (mode === _constants_js__WEBPACK_IMPORTED_MODULE_6__.REPLACE || isChangeMode || !isSameList) {
12957
+ const wrapper = unwrapList(_constants_js__WEBPACK_IMPORTED_MODULE_6__.REPLACE, list, li, jodit, commitStyle);
12958
+ const newList = (0,_wrap_list_js__WEBPACK_IMPORTED_MODULE_7__.wrapList)(commitStyle, wrapper, jodit);
12959
+ hook(_constants_js__WEBPACK_IMPORTED_MODULE_6__.REPLACE, newList, commitStyle);
12960
+ return _constants_js__WEBPACK_IMPORTED_MODULE_6__.REPLACE;
12715
12961
  }
12716
12962
  }
12717
12963
  const wrapper = unwrapList((/* inlined export .UNWRAP */"unwrap"), list, li, jodit, commitStyle);
12718
12964
  hook((/* inlined export .UNWRAP */"unwrap"), wrapper, commitStyle);
12719
12965
  return (/* inlined export .UNWRAP */"unwrap");
12720
12966
  }
12967
+ /**
12968
+ * Other attributes, such as a class, still move the items into a new list,
12969
+ * where the `beforeWrapList` hook can add markup to each of them
12970
+ */ function changesStyleOnly({ options: { attributes } }) {
12971
+ return Boolean(attributes === null || attributes === void 0 ? void 0 : attributes.style) && (0,_helpers_size_object_size_js__WEBPACK_IMPORTED_MODULE_1__.size)(attributes) === 1;
12972
+ }
12973
+ /**
12974
+ * Joins a restyled list to the list before it, when the selection runs on
12975
+ * from that list and the two now match
12976
+ */ function joinPrevious(commitStyle, list, mode) {
12977
+ const prev = _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.findSibling(list, true);
12978
+ if (mode !== (/* inlined export .CHANGE */"change") || !_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(prev, commitStyle.element) || !(0,_is_same_attributes_js__WEBPACK_IMPORTED_MODULE_4__.elementsEqualAttributes)(prev, list)) {
12979
+ return list;
12980
+ }
12981
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.append(prev, Array.from(list.childNodes));
12982
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(list);
12983
+ return prev;
12984
+ }
12721
12985
  function unwrapList(mode, list, li, jodit, cs) {
12722
- const result = jodit.e.fire(`${_constants_js__WEBPACK_IMPORTED_MODULE_4__._PREFIX}BeforeUnwrapList`, mode, list, cs);
12986
+ const result = jodit.e.fire(`${_constants_js__WEBPACK_IMPORTED_MODULE_6__._PREFIX}BeforeUnwrapList`, mode, list, cs);
12723
12987
  if (result) {
12724
- (0,_helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_1__.assert)(_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isHTMLElement(result), `${_constants_js__WEBPACK_IMPORTED_MODULE_4__._PREFIX}BeforeUnwrapList hook must return HTMLElement`);
12988
+ (0,_helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_2__.assert)(_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isHTMLElement(result), `${_constants_js__WEBPACK_IMPORTED_MODULE_6__._PREFIX}BeforeUnwrapList hook must return HTMLElement`);
12725
12989
  return result;
12726
12990
  }
12727
- ;(0,_extract_js__WEBPACK_IMPORTED_MODULE_2__.extractSelectedPart)(list, li, jodit);
12728
- (0,_helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_1__.assert)(_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isHTMLElement(li.parentElement), 'Element should be inside the list');
12991
+ ;(0,_extract_js__WEBPACK_IMPORTED_MODULE_3__.extractSelectedPart)(list, li, jodit);
12992
+ (0,_helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_2__.assert)(_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isHTMLElement(li.parentElement), 'Element should be inside the list');
12729
12993
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.unwrap(li.parentElement);
12730
12994
  // In the REPLACE mode the content will be immediately wrapped in a `li`
12731
12995
  // of the new list inside `wrapList`, so it should stay in the document.
12732
12996
  // Replacing it with a fragment here would dissolve the content
12733
12997
  // (with `enter: 'br'`) and the new list would never be inserted.
12734
- if (mode === _constants_js__WEBPACK_IMPORTED_MODULE_4__.REPLACE) {
12998
+ if (mode === _constants_js__WEBPACK_IMPORTED_MODULE_6__.REPLACE) {
12735
12999
  return li;
12736
13000
  }
12737
13001
  return _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.replace(li, jodit.o.enter.toLowerCase() !== 'br' ? jodit.o.enter : jodit.createInside.fragment(), jodit.createInside);
@@ -13429,7 +13693,7 @@ const transactions = {
13429
13693
  [states.LIST]: {
13430
13694
  exec (value) {
13431
13695
  const { element, jodit, mode } = value;
13432
- if (mode !== _constants_js__WEBPACK_IMPORTED_MODULE_4__.INITIAL && mode !== (/* inlined export .UNWRAP */"unwrap") && mode !== _constants_js__WEBPACK_IMPORTED_MODULE_4__.REPLACE) {
13696
+ if (mode !== _constants_js__WEBPACK_IMPORTED_MODULE_4__.INITIAL && mode !== (/* inlined export .UNWRAP */"unwrap") && mode !== _constants_js__WEBPACK_IMPORTED_MODULE_4__.REPLACE && mode !== (/* inlined export .CHANGE */"change")) {
13433
13697
  return {
13434
13698
  ...value,
13435
13699
  next: states.END
@@ -19212,7 +19476,10 @@ function addClassNames(className, elm) {
19212
19476
  Autoplay: 'تشغيل تلقائي',
19213
19477
  Loop: 'تكرار',
19214
19478
  Muted: 'مكتوم الصوت',
19215
- Controls: 'عناصر التحكم'
19479
+ Controls: 'عناصر التحكم',
19480
+ 'Start at...': 'البدء من...',
19481
+ 'Start numbering at': 'بدء الترقيم من',
19482
+ 'Number for the first item': 'رقم العنصر الأول'
19216
19483
  });
19217
19484
 
19218
19485
 
@@ -19453,7 +19720,10 @@ function addClassNames(className, elm) {
19453
19720
  Autoplay: 'Avtomatik oynatma',
19454
19721
  Loop: 'Təkrarla',
19455
19722
  Muted: 'Səssiz',
19456
- Controls: 'İdarəetmə elementləri'
19723
+ Controls: 'İdarəetmə elementləri',
19724
+ 'Start at...': 'Başlanğıc nömrəsi...',
19725
+ 'Start numbering at': 'Nömrələmənin başlanğıcı',
19726
+ 'Number for the first item': 'Birinci bəndin nömrəsi'
19457
19727
  });
19458
19728
 
19459
19729
 
@@ -19686,7 +19956,10 @@ function addClassNames(className, elm) {
19686
19956
  Autoplay: 'Automatické přehrávání',
19687
19957
  Loop: 'Opakovat',
19688
19958
  Muted: 'Ztlumeno',
19689
- Controls: 'Ovládací prvky'
19959
+ Controls: 'Ovládací prvky',
19960
+ 'Start at...': 'Začít od...',
19961
+ 'Start numbering at': 'Začít číslování od',
19962
+ 'Number for the first item': 'Číslo první položky'
19690
19963
  });
19691
19964
 
19692
19965
 
@@ -19923,7 +20196,10 @@ function addClassNames(className, elm) {
19923
20196
  Autoplay: 'Automatische Wiedergabe',
19924
20197
  Loop: 'Wiederholen',
19925
20198
  Muted: 'Stumm',
19926
- Controls: 'Steuerelemente'
20199
+ Controls: 'Steuerelemente',
20200
+ 'Start at...': 'Beginnen bei...',
20201
+ 'Start numbering at': 'Nummerierung beginnen bei',
20202
+ 'Number for the first item': 'Nummer des ersten Eintrags'
19927
20203
  });
19928
20204
 
19929
20205
 
@@ -20177,7 +20453,10 @@ function addClassNames(className, elm) {
20177
20453
  Autoplay: 'Reproducción automática',
20178
20454
  Loop: 'Repetir',
20179
20455
  Muted: 'Silenciado',
20180
- Controls: 'Controles'
20456
+ Controls: 'Controles',
20457
+ 'Start at...': 'Empezar en...',
20458
+ 'Start numbering at': 'Empezar la numeración en',
20459
+ 'Number for the first item': 'Número del primer elemento'
20181
20460
  });
20182
20461
 
20183
20462
 
@@ -20409,7 +20688,10 @@ function addClassNames(className, elm) {
20409
20688
  Autoplay: 'پخش خودکار',
20410
20689
  Loop: 'تکرار',
20411
20690
  Muted: 'بی‌صدا',
20412
- Controls: 'کنترل‌ها'
20691
+ Controls: 'کنترل‌ها',
20692
+ 'Start at...': 'شروع از...',
20693
+ 'Start numbering at': 'شروع شماره‌گذاری از',
20694
+ 'Number for the first item': 'شماره‌ی نخستین مورد'
20413
20695
  });
20414
20696
 
20415
20697
 
@@ -20647,7 +20929,10 @@ function addClassNames(className, elm) {
20647
20929
  Autoplay: 'Automaattinen toisto',
20648
20930
  Loop: 'Toista uudelleen',
20649
20931
  Muted: 'Mykistetty',
20650
- Controls: 'Säätimet'
20932
+ Controls: 'Säätimet',
20933
+ 'Start at...': 'Aloita numerosta...',
20934
+ 'Start numbering at': 'Aloita numerointi numerosta',
20935
+ 'Number for the first item': 'Ensimmäisen kohdan numero'
20651
20936
  });
20652
20937
 
20653
20938
 
@@ -20879,7 +21164,10 @@ function addClassNames(className, elm) {
20879
21164
  Autoplay: 'Lecture automatique',
20880
21165
  Loop: 'Lecture en boucle',
20881
21166
  Muted: 'Muet',
20882
- Controls: 'Commandes'
21167
+ Controls: 'Commandes',
21168
+ 'Start at...': 'Commencer à...',
21169
+ 'Start numbering at': 'Commencer la numérotation à',
21170
+ 'Number for the first item': 'Numéro du premier élément'
20883
21171
  });
20884
21172
 
20885
21173
 
@@ -21111,7 +21399,10 @@ function addClassNames(className, elm) {
21111
21399
  Autoplay: 'ניגון אוטומטי',
21112
21400
  Loop: 'הפעלה חוזרת',
21113
21401
  Muted: 'מושתק',
21114
- Controls: 'פקדים'
21402
+ Controls: 'פקדים',
21403
+ 'Start at...': 'התחל מ...',
21404
+ 'Start numbering at': 'התחל מספור מ',
21405
+ 'Number for the first item': 'מספר הפריט הראשון'
21115
21406
  });
21116
21407
 
21117
21408
 
@@ -21345,7 +21636,10 @@ function addClassNames(className, elm) {
21345
21636
  Autoplay: 'Automatikus lejátszás',
21346
21637
  Loop: 'Ismétlés',
21347
21638
  Muted: 'Némítva',
21348
- Controls: 'Vezérlők'
21639
+ Controls: 'Vezérlők',
21640
+ 'Start at...': 'Kezdőszám...',
21641
+ 'Start numbering at': 'Számozás kezdőértéke',
21642
+ 'Number for the first item': 'Az első elem száma'
21349
21643
  });
21350
21644
 
21351
21645
 
@@ -21578,7 +21872,10 @@ function addClassNames(className, elm) {
21578
21872
  Autoplay: 'Putar otomatis',
21579
21873
  Loop: 'Ulangi',
21580
21874
  Muted: 'Dibisukan',
21581
- Controls: 'Kontrol'
21875
+ Controls: 'Kontrol',
21876
+ 'Start at...': 'Mulai dari...',
21877
+ 'Start numbering at': 'Mulai penomoran dari',
21878
+ 'Number for the first item': 'Nomor untuk item pertama'
21582
21879
  });
21583
21880
 
21584
21881
 
@@ -21815,7 +22112,10 @@ function addClassNames(className, elm) {
21815
22112
  Autoplay: 'Riproduzione automatica',
21816
22113
  Loop: 'Ripeti',
21817
22114
  Muted: 'Muto',
21818
- Controls: 'Controlli'
22115
+ Controls: 'Controlli',
22116
+ 'Start at...': 'Inizia da...',
22117
+ 'Start numbering at': 'Inizia la numerazione da',
22118
+ 'Number for the first item': 'Numero del primo elemento'
21819
22119
  });
21820
22120
 
21821
22121
 
@@ -22052,7 +22352,10 @@ function addClassNames(className, elm) {
22052
22352
  Autoplay: '自動再生',
22053
22353
  Loop: 'ループ再生',
22054
22354
  Muted: 'ミュート',
22055
- Controls: 'コントロール'
22355
+ Controls: 'コントロール',
22356
+ 'Start at...': '開始番号...',
22357
+ 'Start numbering at': '番号の開始値',
22358
+ 'Number for the first item': '最初の項目の番号'
22056
22359
  });
22057
22360
 
22058
22361
 
@@ -22295,7 +22598,10 @@ function addClassNames(className, elm) {
22295
22598
  Autoplay: '자동 재생',
22296
22599
  Loop: '반복 재생',
22297
22600
  Muted: '음소거',
22298
- Controls: '컨트롤'
22601
+ Controls: '컨트롤',
22602
+ 'Start at...': '시작 번호...',
22603
+ 'Start numbering at': '번호 매기기 시작 값',
22604
+ 'Number for the first item': '첫 번째 항목의 번호'
22299
22605
  });
22300
22606
 
22301
22607
 
@@ -22527,7 +22833,10 @@ function addClassNames(className, elm) {
22527
22833
  Autoplay: 'Автоматаар тоглуулах',
22528
22834
  Loop: 'Давтах',
22529
22835
  Muted: 'Дуугүй',
22530
- Controls: 'Удирдлага'
22836
+ Controls: 'Удирдлага',
22837
+ 'Start at...': 'Эхлэх дугаар...',
22838
+ 'Start numbering at': 'Дугаарлалт эхлэх',
22839
+ 'Number for the first item': 'Эхний зүйлийн дугаар'
22531
22840
  });
22532
22841
 
22533
22842
 
@@ -22760,7 +23069,10 @@ function addClassNames(className, elm) {
22760
23069
  Autoplay: 'Automatisch afspelen',
22761
23070
  Loop: 'Herhalen',
22762
23071
  Muted: 'Gedempt',
22763
- Controls: 'Bedieningselementen'
23072
+ Controls: 'Bedieningselementen',
23073
+ 'Start at...': 'Beginnen bij...',
23074
+ 'Start numbering at': 'Nummering beginnen bij',
23075
+ 'Number for the first item': 'Nummer van het eerste item'
22764
23076
  });
22765
23077
 
22766
23078
 
@@ -23001,7 +23313,10 @@ function addClassNames(className, elm) {
23001
23313
  Autoplay: 'Automatisk avspilling',
23002
23314
  Loop: 'Gjenta',
23003
23315
  Muted: 'Dempet',
23004
- Controls: 'Kontroller'
23316
+ Controls: 'Kontroller',
23317
+ 'Start at...': 'Start på...',
23318
+ 'Start numbering at': 'Start nummereringen på',
23319
+ 'Number for the first item': 'Nummer for første punkt'
23005
23320
  });
23006
23321
 
23007
23322
 
@@ -23233,7 +23548,10 @@ function addClassNames(className, elm) {
23233
23548
  Autoplay: 'Autoodtwarzanie',
23234
23549
  Loop: 'Zapętlenie',
23235
23550
  Muted: 'Wyciszony',
23236
- Controls: 'Elementy sterujące'
23551
+ Controls: 'Elementy sterujące',
23552
+ 'Start at...': 'Zacznij od...',
23553
+ 'Start numbering at': 'Rozpocznij numerowanie od',
23554
+ 'Number for the first item': 'Numer pierwszego elementu'
23237
23555
  });
23238
23556
 
23239
23557
 
@@ -23470,7 +23788,10 @@ function addClassNames(className, elm) {
23470
23788
  Autoplay: 'Reprodução automática',
23471
23789
  Loop: 'Repetir',
23472
23790
  Muted: 'Sem som',
23473
- Controls: 'Controles'
23791
+ Controls: 'Controles',
23792
+ 'Start at...': 'Começar em...',
23793
+ 'Start numbering at': 'Começar a numeração em',
23794
+ 'Number for the first item': 'Número do primeiro item'
23474
23795
  });
23475
23796
 
23476
23797
 
@@ -23701,7 +24022,10 @@ function addClassNames(className, elm) {
23701
24022
  Autoplay: 'Автовоспроизведение',
23702
24023
  Loop: 'Повтор',
23703
24024
  Muted: 'Без звука',
23704
- Controls: 'Элементы управления'
24025
+ Controls: 'Элементы управления',
24026
+ 'Start at...': 'Начать с...',
24027
+ 'Start numbering at': 'Начать нумерацию с',
24028
+ 'Number for the first item': 'Номер первого пункта'
23705
24029
  });
23706
24030
 
23707
24031
 
@@ -23940,7 +24264,10 @@ function addClassNames(className, elm) {
23940
24264
  Autoplay: 'Automatické prehrávanie',
23941
24265
  Loop: 'Opakovať',
23942
24266
  Muted: 'Stlmené',
23943
- Controls: 'Ovládacie prvky'
24267
+ Controls: 'Ovládacie prvky',
24268
+ 'Start at...': 'Začať od...',
24269
+ 'Start numbering at': 'Začať číslovanie od',
24270
+ 'Number for the first item': 'Číslo prvej položky'
23944
24271
  });
23945
24272
 
23946
24273
 
@@ -24180,7 +24507,10 @@ function addClassNames(className, elm) {
24180
24507
  Autoplay: 'Automatisk uppspelning',
24181
24508
  Loop: 'Upprepa',
24182
24509
  Muted: 'Ljudlös',
24183
- Controls: 'Kontroller'
24510
+ Controls: 'Kontroller',
24511
+ 'Start at...': 'Börja på...',
24512
+ 'Start numbering at': 'Börja numreringen på',
24513
+ 'Number for the first item': 'Nummer för första punkten'
24184
24514
  });
24185
24515
 
24186
24516
 
@@ -24412,7 +24742,10 @@ function addClassNames(className, elm) {
24412
24742
  Autoplay: 'Otomatik oynat',
24413
24743
  Loop: 'Döngü',
24414
24744
  Muted: 'Sessiz',
24415
- Controls: 'Kontroller'
24745
+ Controls: 'Kontroller',
24746
+ 'Start at...': 'Başlangıç numarası...',
24747
+ 'Start numbering at': 'Numaralandırma başlangıcı',
24748
+ 'Number for the first item': 'İlk öğenin numarası'
24416
24749
  });
24417
24750
 
24418
24751
 
@@ -24643,7 +24976,10 @@ function addClassNames(className, elm) {
24643
24976
  Autoplay: 'Автовідтворення',
24644
24977
  Loop: 'Повтор',
24645
24978
  Muted: 'Без звуку',
24646
- Controls: 'Елементи керування'
24979
+ Controls: 'Елементи керування',
24980
+ 'Start at...': 'Почати з...',
24981
+ 'Start numbering at': 'Почати нумерацію з',
24982
+ 'Number for the first item': 'Номер першого пункту'
24647
24983
  });
24648
24984
 
24649
24985
 
@@ -24876,7 +25212,10 @@ function addClassNames(className, elm) {
24876
25212
  Autoplay: '自动播放',
24877
25213
  Loop: '循环播放',
24878
25214
  Muted: '静音',
24879
- Controls: '播放控件'
25215
+ Controls: '播放控件',
25216
+ 'Start at...': '起始于...',
25217
+ 'Start numbering at': '编号起始值',
25218
+ 'Number for the first item': '第一项的编号'
24880
25219
  });
24881
25220
 
24882
25221
 
@@ -25108,7 +25447,10 @@ function addClassNames(className, elm) {
25108
25447
  Autoplay: '自動播放',
25109
25448
  Loop: '循環播放',
25110
25449
  Muted: '靜音',
25111
- Controls: '播放控制項'
25450
+ Controls: '播放控制項',
25451
+ 'Start at...': '起始於...',
25452
+ 'Start numbering at': '編號起始值',
25453
+ 'Number for the first item': '第一項的編號'
25112
25454
  });
25113
25455
 
25114
25456
 
@@ -25619,7 +25961,12 @@ _config_js__WEBPACK_IMPORTED_MODULE_13__.Config.prototype.controls.dialog = {
25619
25961
  }
25620
25962
  }
25621
25963
  __onResizerMouseDown(e) {
25622
- var _a, _b, _c;
25964
+ var _a, _b;
25965
+ // As for the header: otherwise Safari selects the dialog's text as
25966
+ // the pointer moves
25967
+ if (e.cancelable) {
25968
+ e.preventDefault();
25969
+ }
25623
25970
  this.resizable = true;
25624
25971
  this.startX = e.clientX;
25625
25972
  this.startY = e.clientY;
@@ -25631,8 +25978,8 @@ _config_js__WEBPACK_IMPORTED_MODULE_13__.Config.prototype.controls.dialog = {
25631
25978
  // the content area does not shrink below its CSS `min-height`,
25632
25979
  // so it is part of the smallest height the panel can take
25633
25980
  const contentMinHeight = content ? parseFloat(this.ow.getComputedStyle(content).minHeight) || 0 : 0;
25634
- this.minSize.w = (0,_core_helpers_checker_index_js__WEBPACK_IMPORTED_MODULE_6__.isNumber)(this.o.minWidth) ? this.o.minWidth : Math.max(100, (_a = footer === null || footer === void 0 ? void 0 : footer.scrollWidth) !== null && _a !== void 0 ? _a : 0);
25635
- this.minSize.h = (0,_core_helpers_checker_index_js__WEBPACK_IMPORTED_MODULE_6__.isNumber)(this.o.minHeight) ? this.o.minHeight : ((_b = header === null || header === void 0 ? void 0 : header.offsetHeight) !== null && _b !== void 0 ? _b : 0) + ((_c = footer === null || footer === void 0 ? void 0 : footer.offsetHeight) !== null && _c !== void 0 ? _c : 0) + contentMinHeight + this.resizer.offsetHeight;
25981
+ this.minSize.w = (0,_core_helpers_checker_index_js__WEBPACK_IMPORTED_MODULE_6__.isNumber)(this.o.minWidth) ? this.o.minWidth : Math.max(100, header ? this.__contentWidth(header) : 0, footer ? this.__contentWidth(footer) : 0);
25982
+ this.minSize.h = (0,_core_helpers_checker_index_js__WEBPACK_IMPORTED_MODULE_6__.isNumber)(this.o.minHeight) ? this.o.minHeight : ((_a = header === null || header === void 0 ? void 0 : header.offsetHeight) !== null && _a !== void 0 ? _a : 0) + ((_b = footer === null || footer === void 0 ? void 0 : footer.offsetHeight) !== null && _b !== void 0 ? _b : 0) + contentMinHeight + this.resizer.offsetHeight;
25636
25983
  this.lockSelect();
25637
25984
  this.__addGlobalResizeListeners();
25638
25985
  if (this.e) {
@@ -25641,13 +25988,25 @@ _config_js__WEBPACK_IMPORTED_MODULE_13__.Config.prototype.controls.dialog = {
25641
25988
  */ this.e.fire(this, 'startResize');
25642
25989
  }
25643
25990
  }
25991
+ /**
25992
+ * The width `box` takes with its content on one line. The header and
25993
+ * footer are flex rows as wide as the dialog, so the footer's
25994
+ * `scrollWidth` was the dialog's width and kept it from getting any
25995
+ * narrower
25996
+ */ __contentWidth(box) {
25997
+ const { width } = box.style;
25998
+ box.style.width = 'max-content';
25999
+ const contentWidth = box.offsetWidth;
26000
+ box.style.width = width;
26001
+ return contentWidth;
26002
+ }
25644
26003
  __addGlobalResizeListeners() {
25645
26004
  const self1 = this;
25646
26005
  self1.e.on(self1.ow, 'pointermove touchmove', self1.__onMouseMove).on(self1.ow, 'pointerup touchend', self1.__onMouseUp);
25647
26006
  }
25648
26007
  __removeGlobalResizeListeners() {
25649
26008
  const self1 = this;
25650
- self1.e.off(self1.ow, 'mousemove pointermove', self1.__onMouseMove).off(self1.ow, 'mouseup pointerup', self1.__onMouseUp);
26009
+ self1.e.off(self1.ow, 'pointermove touchmove', self1.__onMouseMove).off(self1.ow, 'pointerup touchend', self1.__onMouseUp);
25651
26010
  }
25652
26011
  /**
25653
26012
  * Specifies the size of the window
@@ -29948,23 +30307,15 @@ StatusBar = __decorate([
29948
30307
  /* harmony export */ });
29949
30308
  /* harmony import */ var _core_component_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(91907);
29950
30309
  /* harmony import */ var _core_constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(82758);
29951
- /* harmony import */ var _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(65478);
29952
- /* harmony import */ var _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(22732);
29953
- /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(580);
29954
- /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(21537);
29955
- /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(41180);
30310
+ /* harmony import */ var _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(22732);
30311
+ /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(580);
30312
+ /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(21537);
30313
+ /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(41180);
29956
30314
  /*!
29957
30315
  * Jodit Editor (https://xdsoft.net/jodit/)
29958
30316
  * Released under MIT see LICENSE.txt in the project root for license information.
29959
30317
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
29960
- */ var __decorate = undefined && undefined.__decorate || function(decorators, target, key, desc) {
29961
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
29962
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
29963
- 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;
29964
- return c > 3 && r && Object.defineProperty(target, key, r), r;
29965
- };
29966
-
29967
-
30318
+ */
29968
30319
 
29969
30320
 
29970
30321
 
@@ -29975,19 +30326,10 @@ class Table extends _core_component_index_js__WEBPACK_IMPORTED_MODULE_0__.ViewCo
29975
30326
  /** @override */ className() {
29976
30327
  return 'Table';
29977
30328
  }
29978
- __recalculateStyles() {
29979
- const style = (0,_core_global_js__WEBPACK_IMPORTED_MODULE_4__.getContainer)(this.j, Table, 'style', true);
29980
- const selectors = [];
29981
- this.selected.forEach((td)=>{
29982
- const selector = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.cssPath)(td);
29983
- selector && selectors.push(selector);
29984
- });
29985
- style.innerHTML = selectors.length ? selectors.join(',') + `{${this.jodit.options.table.selectionCellStyle}}` : '';
29986
- }
29987
30329
  addSelection(td) {
29988
30330
  this.selected.add(td);
29989
30331
  this.__recalculateStyles();
29990
- const table = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.closest(td, 'table', this.j.editor);
30332
+ const table = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.closest(td, 'table', this.j.editor);
29991
30333
  if (table) {
29992
30334
  const cells = Table.__selectedByTable.get(table) || new Set();
29993
30335
  cells.add(td);
@@ -29997,7 +30339,7 @@ class Table extends _core_component_index_js__WEBPACK_IMPORTED_MODULE_0__.ViewCo
29997
30339
  removeSelection(td) {
29998
30340
  this.selected.delete(td);
29999
30341
  this.__recalculateStyles();
30000
- const table = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.closest(td, 'table', this.j.editor);
30342
+ const table = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.closest(td, 'table', this.j.editor);
30001
30343
  if (table) {
30002
30344
  const cells = Table.__selectedByTable.get(table);
30003
30345
  if (cells) {
@@ -30011,11 +30353,11 @@ class Table extends _core_component_index_js__WEBPACK_IMPORTED_MODULE_0__.ViewCo
30011
30353
  /**
30012
30354
  * Returns array of selected cells
30013
30355
  */ getAllSelectedCells() {
30014
- return (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.toArray)(this.selected);
30356
+ return (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.toArray)(this.selected);
30015
30357
  }
30016
30358
  static __getSelectedCellsByTable(table) {
30017
30359
  const cells = Table.__selectedByTable.get(table);
30018
- return cells ? (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.toArray)(cells) : [];
30360
+ return cells ? (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.toArray)(cells) : [];
30019
30361
  }
30020
30362
  /** @override **/ destruct() {
30021
30363
  this.selected.clear();
@@ -30042,7 +30384,7 @@ class Table extends _core_component_index_js__WEBPACK_IMPORTED_MODULE_0__.ViewCo
30042
30384
  const matrix = [
30043
30385
  []
30044
30386
  ];
30045
- const rows = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.toArray)(table.rows);
30387
+ const rows = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.toArray)(table.rows);
30046
30388
  const setCell = (cell, i)=>{
30047
30389
  if (matrix[i] === undefined) {
30048
30390
  matrix[i] = [];
@@ -30065,7 +30407,7 @@ class Table extends _core_component_index_js__WEBPACK_IMPORTED_MODULE_0__.ViewCo
30065
30407
  }
30066
30408
  };
30067
30409
  for(let i = 0; i < rows.length; i += 1){
30068
- const cells = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.toArray)(rows[i].cells);
30410
+ const cells = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.toArray)(rows[i].cells);
30069
30411
  for(let j = 0; j < cells.length; j += 1){
30070
30412
  if (setCell(cells[j], i) === false) {
30071
30413
  return matrix;
@@ -30115,34 +30457,34 @@ class Table extends _core_component_index_js__WEBPACK_IMPORTED_MODULE_0__.ViewCo
30115
30457
  row = create.element('tr');
30116
30458
  for(let j = 0; j < columnsCount; j += 1){
30117
30459
  const cell = create.element('td');
30118
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.append(cell, create.element('br'));
30119
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.append(row, cell);
30460
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(cell, create.element('br'));
30461
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(row, cell);
30120
30462
  }
30121
30463
  } else {
30122
30464
  row = line.cloneNode(true);
30123
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.each(line, (cell)=>{
30124
- if (!_core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.isCell(cell)) {
30465
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.each(line, (cell)=>{
30466
+ if (!_core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isCell(cell)) {
30125
30467
  return;
30126
30468
  }
30127
- const rowspan = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.attr)(cell, 'rowspan');
30469
+ const rowspan = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(cell, 'rowspan');
30128
30470
  if (rowspan && parseInt(rowspan, 10) > 1) {
30129
30471
  const newRowSpan = parseInt(rowspan, 10) - 1;
30130
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.attr)(cell, 'rowspan', newRowSpan > 1 ? newRowSpan : null);
30472
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(cell, 'rowspan', newRowSpan > 1 ? newRowSpan : null);
30131
30473
  }
30132
30474
  });
30133
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.each(row, (cell)=>{
30134
- if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.isCell(cell)) {
30135
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.detach(cell);
30136
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.append(cell, create.element('br'));
30475
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.each(row, (cell)=>{
30476
+ if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isCell(cell)) {
30477
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.detach(cell);
30478
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(cell, create.element('br'));
30137
30479
  }
30138
30480
  });
30139
30481
  }
30140
30482
  if (after && line && line.nextSibling) {
30141
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.after(line, row);
30483
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.after(line, row);
30142
30484
  } else if (!after && line) {
30143
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.before(line, row);
30485
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.before(line, row);
30144
30486
  } else {
30145
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.append(_core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.first(table, (node)=>_core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.isTag(node, 'tbody')) || table, row);
30487
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(_core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.first(table, (node)=>_core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(node, 'tbody')) || table, row);
30146
30488
  }
30147
30489
  }
30148
30490
  /**
@@ -30170,7 +30512,7 @@ class Table extends _core_component_index_js__WEBPACK_IMPORTED_MODULE_0__.ViewCo
30170
30512
  while(box[rowIndex + 1][nextCell] === cell){
30171
30513
  nextCell += 1;
30172
30514
  }
30173
- const nextRow = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.next(cell.parentNode, (elm)=>_core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.isTag(elm, 'tr'), table);
30515
+ const nextRow = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.next(cell.parentNode, (elm)=>_core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(elm, 'tr'), table);
30174
30516
  if (nextRow) {
30175
30517
  // `box[rowIndex + 1][nextCell]` is the cell that
30176
30518
  // logically follows the moved cell in the next row, but
@@ -30187,21 +30529,21 @@ class Table extends _core_component_index_js__WEBPACK_IMPORTED_MODULE_0__.ViewCo
30187
30529
  }
30188
30530
  }
30189
30531
  if (referenceCell) {
30190
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.before(referenceCell, cell);
30532
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.before(referenceCell, cell);
30191
30533
  } else {
30192
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.append(nextRow, cell);
30534
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(nextRow, cell);
30193
30535
  }
30194
30536
  }
30195
30537
  }
30196
30538
  } else {
30197
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.safeRemove(cell);
30539
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove(cell);
30198
30540
  }
30199
30541
  if (dec && (cell.parentNode === row || cell !== box[rowIndex][j - 1])) {
30200
30542
  const rowSpan = cell.rowSpan;
30201
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.attr)(cell, 'rowspan', rowSpan - 1 > 1 ? rowSpan - 1 : null);
30543
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(cell, 'rowspan', rowSpan - 1 > 1 ? rowSpan - 1 : null);
30202
30544
  }
30203
30545
  });
30204
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.safeRemove(row);
30546
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove(row);
30205
30547
  }
30206
30548
  /**
30207
30549
  * Remove row
@@ -30212,7 +30554,7 @@ class Table extends _core_component_index_js__WEBPACK_IMPORTED_MODULE_0__.ViewCo
30212
30554
  * Insert column before / after all the columns containing the selected cells
30213
30555
  */ appendColumn(table, selectedCell, insertAfter = true) {
30214
30556
  const box = Table.__formalMatrix(table);
30215
- if (!insertAfter && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.isCell(selectedCell.previousElementSibling)) {
30557
+ if (!insertAfter && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isCell(selectedCell.previousElementSibling)) {
30216
30558
  return this.appendColumn(table, selectedCell.previousElementSibling, true);
30217
30559
  }
30218
30560
  const [, formalCol] = Table.__formalCoordinate(table, selectedCell, insertAfter);
@@ -30222,11 +30564,11 @@ class Table extends _core_component_index_js__WEBPACK_IMPORTED_MODULE_0__.ViewCo
30222
30564
  const cells = box[i];
30223
30565
  if (cells[columnIndex] !== cells[newColumnIndex] || columnIndex === newColumnIndex) {
30224
30566
  const cell = this.j.createInside.element('td');
30225
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.append(cell, this.j.createInside.element('br'));
30567
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(cell, this.j.createInside.element('br'));
30226
30568
  if (insertAfter) {
30227
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.after(cells[columnIndex], cell);
30569
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.after(cells[columnIndex], cell);
30228
30570
  } else {
30229
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.before(cells[columnIndex], cell);
30571
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.before(cells[columnIndex], cell);
30230
30572
  }
30231
30573
  if (cells[columnIndex].rowSpan > 1) {
30232
30574
  cell.rowSpan = cells[columnIndex].rowSpan;
@@ -30248,11 +30590,11 @@ class Table extends _core_component_index_js__WEBPACK_IMPORTED_MODULE_0__.ViewCo
30248
30590
  } else if (j + 1 < cells.length && box[i][j + 1] === td) {
30249
30591
  dec = true;
30250
30592
  } else {
30251
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.safeRemove(td);
30593
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove(td);
30252
30594
  }
30253
30595
  if (dec && (i - 1 < 0 || td !== box[i - 1][j])) {
30254
30596
  const colSpan = td.colSpan;
30255
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.attr)(td, 'colspan', colSpan - 1 > 1 ? (colSpan - 1).toString() : null);
30597
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(td, 'colspan', colSpan - 1 > 1 ? (colSpan - 1).toString() : null);
30256
30598
  }
30257
30599
  });
30258
30600
  }
@@ -30329,13 +30671,13 @@ class Table extends _core_component_index_js__WEBPACK_IMPORTED_MODULE_0__.ViewCo
30329
30671
  continue; // broken table
30330
30672
  }
30331
30673
  if (box[i][j].hasAttribute('rowspan') && box[i][j].rowSpan === 1) {
30332
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.attr)(box[i][j], 'rowspan', null);
30674
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(box[i][j], 'rowspan', null);
30333
30675
  }
30334
30676
  if (box[i][j].hasAttribute('colspan') && box[i][j].colSpan === 1) {
30335
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.attr)(box[i][j], 'colspan', null);
30677
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(box[i][j], 'colspan', null);
30336
30678
  }
30337
- if (box[i][j].hasAttribute('class') && !(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.attr)(box[i][j], 'class')) {
30338
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.attr)(box[i][j], 'class', null);
30679
+ if (box[i][j].hasAttribute('class') && !(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(box[i][j], 'class')) {
30680
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(box[i][j], 'class', null);
30339
30681
  }
30340
30682
  }
30341
30683
  }
@@ -30409,10 +30751,10 @@ class Table extends _core_component_index_js__WEBPACK_IMPORTED_MODULE_0__.ViewCo
30409
30751
  return;
30410
30752
  }
30411
30753
  alreadyMerged.add(td);
30412
- if (i === bound[0][0] && (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.cssInline)(td, 'width')) {
30754
+ if (i === bound[0][0] && (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_5__.cssInline)(td, 'width')) {
30413
30755
  w += td.offsetWidth;
30414
30756
  }
30415
- if ((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.trim)(cell.innerHTML.replace(/<br(\/)?>/g, '')) !== '') {
30757
+ if ((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.trim)(cell.innerHTML.replace(/<br(\/)?>/g, '')) !== '') {
30416
30758
  html.push(cell.innerHTML);
30417
30759
  }
30418
30760
  if (cs > 1) {
@@ -30451,9 +30793,9 @@ class Table extends _core_component_index_js__WEBPACK_IMPORTED_MODULE_0__.ViewCo
30451
30793
  alreadyMerged.delete(first);
30452
30794
  Table.__unmark(__marked);
30453
30795
  Table.__normalizeTable(table);
30454
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.toArray)(table.rows).forEach((tr)=>{
30796
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.toArray)(table.rows).forEach((tr)=>{
30455
30797
  if (!tr.cells.length) {
30456
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.safeRemove(tr);
30798
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove(tr);
30457
30799
  }
30458
30800
  });
30459
30801
  }
@@ -30469,7 +30811,7 @@ class Table extends _core_component_index_js__WEBPACK_IMPORTED_MODULE_0__.ViewCo
30469
30811
  const __marked = [];
30470
30812
  Table.__getSelectedCellsByTable(table).forEach((cell)=>{
30471
30813
  td = jodit.createInside.element('td');
30472
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.append(td, jodit.createInside.element('br'));
30814
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(td, jodit.createInside.element('br'));
30473
30815
  tr = jodit.createInside.element('tr');
30474
30816
  coord = Table.__formalCoordinate(table, cell);
30475
30817
  if (cell.rowSpan < 2) {
@@ -30478,8 +30820,8 @@ class Table extends _core_component_index_js__WEBPACK_IMPORTED_MODULE_0__.ViewCo
30478
30820
  Table.__mark(tdElm, 'rowspan', tdElm.rowSpan + 1, __marked);
30479
30821
  }
30480
30822
  });
30481
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.after(_core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.closest(cell, 'tr', table), tr);
30482
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.append(tr, td);
30823
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.after(_core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.closest(cell, 'tr', table), tr);
30824
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(tr, td);
30483
30825
  } else {
30484
30826
  Table.__mark(cell, 'rowspan', cell.rowSpan - 1, __marked);
30485
30827
  Table.__formalMatrix(table, (tdElm, i, j)=>{
@@ -30491,9 +30833,9 @@ class Table extends _core_component_index_js__WEBPACK_IMPORTED_MODULE_0__.ViewCo
30491
30833
  }
30492
30834
  });
30493
30835
  if (after) {
30494
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.after(after, td);
30836
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.after(after, td);
30495
30837
  } else {
30496
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.prepend(parent, td);
30838
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.prepend(parent, td);
30497
30839
  }
30498
30840
  }
30499
30841
  if (cell.colSpan > 1) {
@@ -30524,12 +30866,12 @@ class Table extends _core_component_index_js__WEBPACK_IMPORTED_MODULE_0__.ViewCo
30524
30866
  Table.__mark(cell, 'colspan', cell.colSpan - 1, __marked);
30525
30867
  }
30526
30868
  td = jodit.createInside.element('td');
30527
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.append(td, jodit.createInside.element('br'));
30869
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(td, jodit.createInside.element('br'));
30528
30870
  if (cell.rowSpan > 1) {
30529
30871
  Table.__mark(td, 'rowspan', cell.rowSpan, __marked);
30530
30872
  }
30531
30873
  const oldWidth = cell.offsetWidth; // get old width
30532
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.after(cell, td);
30874
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.after(cell, td);
30533
30875
  percentage = oldWidth / table.offsetWidth / 2;
30534
30876
  Table.__mark(cell, 'width', (percentage * 100).toFixed(_core_constants_js__WEBPACK_IMPORTED_MODULE_1__.ACCURACY) + '%', __marked);
30535
30877
  Table.__mark(td, 'width', (percentage * 100).toFixed(_core_constants_js__WEBPACK_IMPORTED_MODULE_1__.ACCURACY) + '%', __marked);
@@ -30585,22 +30927,22 @@ class Table extends _core_component_index_js__WEBPACK_IMPORTED_MODULE_0__.ViewCo
30585
30927
  const value = dict[key];
30586
30928
  switch(key){
30587
30929
  case 'remove':
30588
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.safeRemove(cell);
30930
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove(cell);
30589
30931
  break;
30590
30932
  case 'rowspan':
30591
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.attr)(cell, 'rowspan', (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.isNumber)(value) && value > 1 ? value : null);
30933
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(cell, 'rowspan', (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.isNumber)(value) && value > 1 ? value : null);
30592
30934
  break;
30593
30935
  case 'colspan':
30594
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.attr)(cell, 'colspan', (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.isNumber)(value) && value > 1 ? value : null);
30936
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(cell, 'colspan', (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.isNumber)(value) && value > 1 ? value : null);
30595
30937
  break;
30596
30938
  case 'width':
30597
30939
  if (value == null) {
30598
30940
  cell.style.removeProperty('width');
30599
- if (!(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.attr)(cell, 'style')) {
30600
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.attr)(cell, 'style', null);
30941
+ if (!(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(cell, 'style')) {
30942
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(cell, 'style', null);
30601
30943
  }
30602
30944
  } else {
30603
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.css)(cell, 'width', value.toString());
30945
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.css)(cell, 'width', value.toString());
30604
30946
  }
30605
30947
  break;
30606
30948
  }
@@ -30613,12 +30955,23 @@ class Table extends _core_component_index_js__WEBPACK_IMPORTED_MODULE_0__.ViewCo
30613
30955
  constructor(){
30614
30956
  super(...arguments);
30615
30957
  this.selected = new Set();
30958
+ /**
30959
+ * Rewrite the `<style>` that marks the selected cells once for all the
30960
+ * cells (un)selected in one go: a drag over a block of cells unmarks and
30961
+ * marks every one of them on each move. `@debounce()` was never applied,
30962
+ * as a Table never reaches `ready`
30963
+ */ this.__recalculateStyles = this.async.microDebounce(()=>{
30964
+ const style = (0,_core_global_js__WEBPACK_IMPORTED_MODULE_3__.getContainer)(this.j, Table, 'style', true);
30965
+ const selectors = [];
30966
+ this.selected.forEach((td)=>{
30967
+ const selector = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.cssPath)(td);
30968
+ selector && selectors.push(selector);
30969
+ });
30970
+ style.innerHTML = selectors.length ? selectors.join(',') + `{${this.jodit.options.table.selectionCellStyle}}` : '';
30971
+ });
30616
30972
  }
30617
30973
  }
30618
30974
  Table.__selectedByTable = new WeakMap();
30619
- __decorate([
30620
- (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_2__.debounce)()
30621
- ], Table.prototype, "__recalculateStyles", null);
30622
30975
  const instance = (j)=>j.getInstance('Table', j.o);
30623
30976
 
30624
30977
 
@@ -34012,6 +34365,10 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('backspace', backs
34012
34365
  mainClosestBox = nextBox;
34013
34366
  }
34014
34367
  if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isElement(mainClosestBox) && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isContentEditable(mainClosestBox, jodit.editor)) {
34368
+ // A table cell is never joined with its neighbour
34369
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.up(fakeNode, _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isCell, mainClosestBox, true)) {
34370
+ return false;
34371
+ }
34015
34372
  const sibling = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.findNotEmptySibling(mainClosestBox, backspace);
34016
34373
  // A line break before the cursor is a single unit: remove it instead of
34017
34374
  // merging the current element into the (void) `<br>`, which used to move
@@ -34021,13 +34378,48 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('backspace', backs
34021
34378
  jodit.s.setCursorBefore(fakeNode);
34022
34379
  return true;
34023
34380
  }
34024
- if (sibling && (checkMoveListContent(jodit, mainClosestBox, sibling, backspace) || moveContentAndRemoveEmpty(jodit, mainClosestBox, resolveTableSibling(sibling, backspace), backspace))) {
34381
+ // Backspace leaves a block after a table alone, as Word does, rather
34382
+ // than moving its text into the last cell
34383
+ if (backspace && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(sibling, 'table')) {
34384
+ jodit.s.setCursorBefore(fakeNode);
34385
+ return true;
34386
+ }
34387
+ const box = findCaretBox(fakeNode, mainClosestBox);
34388
+ if (sibling && (checkPullNextLine(jodit, fakeNode, box, sibling, backspace) || checkMoveListContent(jodit, box, sibling, backspace) || moveContentAndRemoveEmpty(jodit, box, findEdgeBlock(resolveTableSibling(sibling, backspace), backspace, jodit.editor), backspace))) {
34025
34389
  jodit.s.setCursorBefore(fakeNode);
34026
34390
  return true;
34027
34391
  }
34028
34392
  }
34029
34393
  return false;
34030
34394
  }
34395
+ /**
34396
+ * The block holding the caret inside the box that has the sibling, so
34397
+ * `<p>one</p><div><p>|two</p></div>` joins the two paragraphs instead of
34398
+ * moving the whole `<div>` into the first one. For a list item that is its
34399
+ * list, which the list cases handle.
34400
+ */ function findCaretBox(fakeNode, mainClosestBox) {
34401
+ const block = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.up(fakeNode, _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock, mainClosestBox);
34402
+ if (!block) {
34403
+ return mainClosestBox;
34404
+ }
34405
+ return _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isLeaf(block) && block.parentElement ? block.parentElement : block;
34406
+ }
34407
+ /**
34408
+ * The innermost block on the sibling's edge facing the caret, so the
34409
+ * content is joined to text: `<div><p>one</p></div><p>|two</p>` gives
34410
+ * `<div><p>one|two</p></div>`
34411
+ */ function findEdgeBlock(sibling, backspace, root) {
34412
+ let block = sibling;
34413
+ while(block){
34414
+ const edge = backspace ? block.lastChild : block.firstChild;
34415
+ const child = edge && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isEmptyTextNode(edge) ? _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.findNotEmptySibling(edge, backspace) : edge;
34416
+ if (!_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock(child) || _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(child, _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.INSEPARABLE_TAGS) || _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(child, 'table') || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isContentEditable(child, root)) {
34417
+ return block;
34418
+ }
34419
+ block = child;
34420
+ }
34421
+ return block;
34422
+ }
34031
34423
  /**
34032
34424
  * Content cannot be merged into the `<table>` element itself — it would land
34033
34425
  * between the table sections (after `</tbody>`), which is invalid HTML and
@@ -34044,6 +34436,40 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('backspace', backs
34044
34436
  });
34045
34437
  return cells.length ? cells[backspace ? cells.length - 1 : 0] : null;
34046
34438
  }
34439
+ /**
34440
+ * Delete at the edge of a list pulls the next line up to the caret, as the
34441
+ * browsers do, instead of moving the caret's line into the next block:
34442
+ * `<ul><li>one|</li></ul><p>two</p>` gives `<ul><li>one|two</li></ul>`, and
34443
+ * `<p>one|</p><ul><li>two</li></ul>` gives `<p>one|two</p>`
34444
+ * @private
34445
+ */ function checkPullNextLine(jodit, fakeNode, box, sibling, backspace) {
34446
+ if (backspace || !(_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isList(box) || _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isList(sibling))) {
34447
+ return false;
34448
+ }
34449
+ const target = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.up(fakeNode, _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock, box, true);
34450
+ const source = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isList(sibling) ? sibling.firstElementChild : sibling;
34451
+ if (!target || !source || _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(source, _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.INSEPARABLE_TAGS) || _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(source, 'table')) {
34452
+ return false;
34453
+ }
34454
+ if (!_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isEmpty(source)) {
34455
+ const line = [];
34456
+ for(let node = source.firstChild; node && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock(node); node = node.nextSibling){
34457
+ line.push(node);
34458
+ }
34459
+ if (!line.length) {
34460
+ return false;
34461
+ }
34462
+ const filter = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_2__.getMoveFilter)(jodit);
34463
+ line.forEach((node)=>filter(node) ? _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.append(target, node) : _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(node));
34464
+ }
34465
+ let remove = source;
34466
+ while(remove && remove !== jodit.editor && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isEmpty(remove)){
34467
+ const parent = remove.parentElement;
34468
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(remove);
34469
+ remove = parent;
34470
+ }
34471
+ return true;
34472
+ }
34047
34473
  function checkMoveListContent(jodit, mainClosestBox, sibling, backspace) {
34048
34474
  // Process UL/LI/OL cases
34049
34475
  const siblingIsList = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(sibling, _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.LIST_TAGS);
@@ -35149,6 +35575,19 @@ class cleanHtml extends _core_plugin_plugin_js__WEBPACK_IMPORTED_MODULE_5__.Plug
35149
35575
  this.walker.setWork(editor.editor);
35150
35576
  this.currentSelectionNode = editor.s.current();
35151
35577
  }
35578
+ /**
35579
+ * Typing into an empty block (`<p><br></p>`) replaces its `<br>`, but the
35580
+ * browser keeps the `<br>` when the caret is in an invisible-space text
35581
+ * node in front of it, as Jodit leaves the caret in many of the empty
35582
+ * blocks it makes (a cleared editor, a heading in an empty table cell).
35583
+ * See #1632
35584
+ */ onInputRemovePlaceholderBr(event) {
35585
+ var _a;
35586
+ if (!this.isEditMode || event.type === 'input' && (event.isComposing || !((_a = event.inputType) === null || _a === void 0 ? void 0 : _a.startsWith('insert')))) {
35587
+ return;
35588
+ }
35589
+ ;(0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_8__.removePlaceholderBr)(this.j);
35590
+ }
35152
35591
  startWalker() {
35153
35592
  const { jodit } = this;
35154
35593
  const allow = (0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_8__.getHash)(this.j.o.cleanHTML.allowTags);
@@ -35321,6 +35760,12 @@ __decorate([
35321
35760
  ':keydown'
35322
35761
  ])
35323
35762
  ], cleanHtml.prototype, "onChangeCleanHTML", null);
35763
+ __decorate([
35764
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)([
35765
+ ':input',
35766
+ 'jodit.editor:compositionend'
35767
+ ])
35768
+ ], cleanHtml.prototype, "onInputRemovePlaceholderBr", null);
35324
35769
  __decorate([
35325
35770
  (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.hook)('ready')
35326
35771
  ], cleanHtml.prototype, "startWalker", null);
@@ -35452,12 +35897,14 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.controls.eraser = {
35452
35897
  /* harmony export */ getHash: function() { return /* reexport safe */ _get_hash_js__WEBPACK_IMPORTED_MODULE_0__.getHash; },
35453
35898
  /* harmony export */ removeFormatForCollapsedSelection: function() { return /* reexport safe */ _remove_format_remove_format_for_collapsed_selection_js__WEBPACK_IMPORTED_MODULE_1__.removeFormatForCollapsedSelection; },
35454
35899
  /* harmony export */ removeFormatForSelection: function() { return /* reexport safe */ _remove_format_remove_format_for_selection_js__WEBPACK_IMPORTED_MODULE_2__.removeFormatForSelection; },
35455
- /* harmony export */ visitNodeWalker: function() { return /* reexport safe */ _visitor_visit_node_walker_js__WEBPACK_IMPORTED_MODULE_3__.visitNodeWalker; }
35900
+ /* harmony export */ removePlaceholderBr: function() { return /* reexport safe */ _remove_placeholder_br_js__WEBPACK_IMPORTED_MODULE_3__.removePlaceholderBr; },
35901
+ /* harmony export */ visitNodeWalker: function() { return /* reexport safe */ _visitor_visit_node_walker_js__WEBPACK_IMPORTED_MODULE_4__.visitNodeWalker; }
35456
35902
  /* harmony export */ });
35457
35903
  /* harmony import */ var _get_hash_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(83447);
35458
35904
  /* harmony import */ var _remove_format_remove_format_for_collapsed_selection_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(84272);
35459
35905
  /* harmony import */ var _remove_format_remove_format_for_selection_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42312);
35460
- /* harmony import */ var _visitor_visit_node_walker_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(39516);
35906
+ /* harmony import */ var _remove_placeholder_br_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(56385);
35907
+ /* harmony import */ var _visitor_visit_node_walker_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(39516);
35461
35908
  /*!
35462
35909
  * Jodit Editor (https://xdsoft.net/jodit/)
35463
35910
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -35471,6 +35918,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.controls.eraser = {
35471
35918
 
35472
35919
 
35473
35920
 
35921
+
35474
35922
  /***/ }),
35475
35923
 
35476
35924
  /***/ 15908:
@@ -35623,6 +36071,62 @@ const VIMEO_EMBED = /^(https?:)?\/\/player\.vimeo\.com\/video\//i;
35623
36071
  }
35624
36072
 
35625
36073
 
36074
+ /***/ }),
36075
+
36076
+ /***/ 56385:
36077
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
36078
+
36079
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
36080
+ /* harmony export */ removePlaceholderBr: function() { return /* binding */ removePlaceholderBr; }
36081
+ /* harmony export */ });
36082
+ /* harmony import */ var _core_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82758);
36083
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2748);
36084
+ /* harmony import */ var _core_helpers_string_trim_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(49055);
36085
+ /*!
36086
+ * Jodit Editor (https://xdsoft.net/jodit/)
36087
+ * Released under MIT see LICENSE.txt in the project root for license information.
36088
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
36089
+ */
36090
+
36091
+
36092
+ function lastNode(node) {
36093
+ let last = node.lastChild;
36094
+ while(_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isText(last) && !last.nodeValue){
36095
+ last = last.previousSibling;
36096
+ }
36097
+ return last;
36098
+ }
36099
+ /**
36100
+ * Remove the `<br>` that kept the block with the caret open while it was
36101
+ * empty, once text has gone into the block: when the block is one line of
36102
+ * text that ends in that `<br>`, the `<br>` adds nothing to it
36103
+ * @private
36104
+ */ function removePlaceholderBr(jodit) {
36105
+ var _a;
36106
+ const block = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.closest(jodit.s.current(), _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock, jodit.editor);
36107
+ if (!block || !(0,_core_helpers_string_trim_js__WEBPACK_IMPORTED_MODULE_2__.trim)((_a = block.textContent) !== null && _a !== void 0 ? _a : '')) {
36108
+ return;
36109
+ }
36110
+ let br = lastNode(block);
36111
+ while(_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isElement(br) && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(br, _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.INSEPARABLE_TAGS) && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock(br)){
36112
+ br = lastNode(br);
36113
+ }
36114
+ if (!_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(br, 'br')) {
36115
+ return;
36116
+ }
36117
+ // Another line break, a block, an image or an embed means the `<br>` may
36118
+ // end an empty line, or give the caret a place after the embed
36119
+ const isOneLineOfText = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.each(block, (node)=>{
36120
+ if (node !== br && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isElement(node) && (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(node, _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.INSEPARABLE_TAGS) || _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock(node) || _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isHTMLElement(node) && !node.isContentEditable)) {
36121
+ return false;
36122
+ }
36123
+ });
36124
+ if (isOneLineOfText) {
36125
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(br);
36126
+ }
36127
+ }
36128
+
36129
+
35626
36130
  /***/ }),
35627
36131
 
35628
36132
  /***/ 82558:
@@ -37264,6 +37768,11 @@ class deleteCommand extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_4__.P
37264
37768
  }
37265
37769
  jodit.s.expandSelection();
37266
37770
  const range = jodit.s.range;
37771
+ const caret = this.__clearSelectedCells(range);
37772
+ if (caret && range.collapsed) {
37773
+ jodit.s.selectRange(caret);
37774
+ return false;
37775
+ }
37267
37776
  range.deleteContents();
37268
37777
  const fake = jodit.createInside.fake();
37269
37778
  range.insertNode(fake);
@@ -37273,21 +37782,98 @@ class deleteCommand extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_4__.P
37273
37782
  range.setStartBefore(fake);
37274
37783
  range.collapse(true);
37275
37784
  this.__moveCursorInEditableSibling(jodit, leftSibling, fake, range);
37276
- this.__addBrInEmptyBlock(fake, rightSibling, range);
37785
+ this.__addBrInEmptyBlock(fake, range);
37277
37786
  _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(fake);
37278
- jodit.s.selectRange(range);
37787
+ jodit.s.selectRange(caret !== null && caret !== void 0 ? caret : range);
37279
37788
  return false;
37280
37789
  }
37790
+ /**
37791
+ * A selection that starts or ends in a table cell clears the selected part
37792
+ * of each cell it covers and keeps the cells, as the browsers do.
37793
+ * `deleteContents` would remove the cells it fully covers, and the cells
37794
+ * it cuts would then be merged as blocks. The range is moved out of those
37795
+ * tables, so only the content between them is left to delete.
37796
+ *
37797
+ * Returns where the caret goes, or null when no table is involved
37798
+ */ __clearSelectedCells(range) {
37799
+ const { editor, createInside } = this.j;
37800
+ const startCell = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(range.startContainer, _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isCell, editor);
37801
+ const endCell = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(range.endContainer, _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isCell, editor);
37802
+ if (startCell === endCell) {
37803
+ return null;
37804
+ }
37805
+ const startTable = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(startCell, 'table', editor);
37806
+ const endTable = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(endCell, 'table', editor);
37807
+ const caret = range.cloneRange();
37808
+ caret.collapse(true);
37809
+ const parts = [];
37810
+ const addParts = (table)=>{
37811
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.toArray)(table.rows).flatMap((row)=>(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.toArray)(row.cells)).filter((cell)=>range.intersectsNode(cell)).forEach((cell)=>{
37812
+ const part = range.cloneRange();
37813
+ if (!_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isOrContains(cell, range.startContainer)) {
37814
+ part.setStart(cell, 0);
37815
+ }
37816
+ if (!_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isOrContains(cell, range.endContainer)) {
37817
+ part.setEnd(cell, cell.childNodes.length);
37818
+ }
37819
+ parts.push([
37820
+ cell,
37821
+ part
37822
+ ]);
37823
+ });
37824
+ };
37825
+ if (startTable) {
37826
+ addParts(startTable);
37827
+ if (startTable === endTable) {
37828
+ range.collapse(true);
37829
+ } else {
37830
+ range.setStartAfter(startTable);
37831
+ }
37832
+ }
37833
+ if (endTable && endTable !== startTable) {
37834
+ addParts(endTable);
37835
+ range.setEndBefore(endTable);
37836
+ }
37837
+ parts.forEach(([cell, part])=>{
37838
+ part.deleteContents();
37839
+ if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(cell)) {
37840
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.detach(cell);
37841
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.append(cell, createInside.element('br'));
37842
+ }
37843
+ });
37844
+ return startTable ? caret : null;
37845
+ }
37281
37846
  __moveContentInLeftSibling(fake, leftSibling, rightSibling) {
37282
37847
  leftSibling = this.__defineRightLeftBox(leftSibling);
37848
+ // Nothing is moved into a table, and a block left empty after it goes
37849
+ if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(leftSibling, 'table')) {
37850
+ if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(rightSibling) && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(rightSibling)) {
37851
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(rightSibling);
37852
+ }
37853
+ return;
37854
+ }
37283
37855
  if (!_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isList(rightSibling) && !_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(rightSibling, 'table') && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(rightSibling) && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(leftSibling)) {
37284
37856
  _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.append(leftSibling, fake);
37285
37857
  _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.moveContent(rightSibling, leftSibling);
37286
37858
  _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(rightSibling);
37287
37859
  }
37288
- // Remove empty right LI
37289
- if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isList(rightSibling) && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isLeaf(rightSibling.firstElementChild) && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(rightSibling.firstElementChild)) {
37290
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(rightSibling.firstElementChild);
37860
+ if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isList(rightSibling) && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isLeaf(rightSibling.firstElementChild)) {
37861
+ const item = rightSibling.firstElementChild;
37862
+ // What's left of the right list's first item joins the left block,
37863
+ // up to a list nested in the item
37864
+ if (!_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(item) && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(leftSibling)) {
37865
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.append(leftSibling, fake);
37866
+ while(item.firstChild && !_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(item.firstChild)){
37867
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.append(leftSibling, item.firstChild);
37868
+ }
37869
+ }
37870
+ // Remove empty right LI
37871
+ if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(item)) {
37872
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(item);
37873
+ }
37874
+ if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(rightSibling)) {
37875
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(rightSibling);
37876
+ }
37291
37877
  }
37292
37878
  }
37293
37879
  /**
@@ -37304,8 +37890,8 @@ class deleteCommand extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_4__.P
37304
37890
  return lastLeaf;
37305
37891
  }
37306
37892
  /**
37307
- * Add BR in empty blocks left and right(for table cell)
37308
- */ __addBrInEmptyBlock(fake, rightSibling, range) {
37893
+ * Add BR in the empty block left at the caret
37894
+ */ __addBrInEmptyBlock(fake, range) {
37309
37895
  const jodit = this.j;
37310
37896
  if (fake.isConnected && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(fake.parentNode) && !fake.nextSibling && !fake.previousSibling) {
37311
37897
  const br = jodit.createInside.element('br');
@@ -37313,13 +37899,6 @@ class deleteCommand extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_4__.P
37313
37899
  range.setStartBefore(br);
37314
37900
  range.collapse(true);
37315
37901
  }
37316
- // Add BR in the right empty table cell
37317
- if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(rightSibling, 'table')) {
37318
- const firstCell = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.$$)('td,th', rightSibling).shift();
37319
- if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isCell(firstCell) && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(firstCell)) {
37320
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.append(firstCell, jodit.createInside.element('br'));
37321
- }
37322
- }
37323
37902
  }
37324
37903
  __moveCursorInEditableSibling(jodit, leftSibling, fake, range) {
37325
37904
  var _a;
@@ -38767,7 +39346,18 @@ function focus(editor) {
38767
39346
  editor.e.on('afterInit', ()=>{
38768
39347
  if (editor.o.autofocus) {
38769
39348
  if (editor.defaultTimeout) {
38770
- editor.async.setTimeout(focus, 300);
39349
+ // A click or key in the editor during the delay has put the
39350
+ // caret where the user wants it, so autofocus leaves it there
39351
+ const userInput = 'mousedown touchstart keydown';
39352
+ const cancel = ()=>{
39353
+ editor.async.clearTimeout(timeout);
39354
+ editor.e.off(userInput, cancel);
39355
+ };
39356
+ const timeout = editor.async.setTimeout(()=>{
39357
+ editor.e.off(userInput, cancel);
39358
+ focus();
39359
+ }, 300);
39360
+ editor.e.on(userInput, cancel);
38771
39361
  } else {
38772
39362
  focus();
38773
39363
  }
@@ -40014,7 +40604,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeBaseUrl = '';
40014
40604
  _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeTitle = 'Jodit Editor';
40015
40605
  _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeDoctype = '<!DOCTYPE html>';
40016
40606
  _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeDefaultSrc = 'about:blank';
40017
- _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' + '}';
40607
+ _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_disabled{' + 'user-select: none;' + '-o-user-select: none;' + '-moz-user-select: none;' + '-khtml-user-select: none;' + '-webkit-user-select: none;' + '-ms-user-select: none' + '}';
40018
40608
  _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeCSSLinks = [];
40019
40609
  _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeSandbox = null;
40020
40610
 
@@ -40060,6 +40650,8 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeSandbox = null;
40060
40650
  (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(link, 'rel', 'stylesheet');
40061
40651
  (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(link, 'href', href);
40062
40652
  doc.head && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.append(doc.head, link);
40653
+ // What plugins measured in the editing document changes once it's styled
40654
+ jodit.e.on(link, 'load', ()=>jodit.e.fire('resize'));
40063
40655
  });
40064
40656
  }
40065
40657
  if (opt.iframeStyle) {
@@ -40097,6 +40689,8 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeSandbox = null;
40097
40689
  (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(doc.body, 'contenteditable', editor.getMode() !== _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.MODE_SOURCE && !editor.getReadOnly() || null);
40098
40690
  };
40099
40691
  const clearMarkers = (html)=>{
40692
+ // The plugins' own styles, from `getContainer`, aren't part of the value
40693
+ html = html.replace(/<style[^>]+jodit-box[^>]*>[\s\S]*?<\/style>/gi, '');
40100
40694
  const bodyReg = /<body.*<\/body>/im, bodyMarker = '{%%BODY%%}', body = bodyReg.exec(html);
40101
40695
  if (body) {
40102
40696
  // remove markers
@@ -40121,7 +40715,10 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeSandbox = null;
40121
40715
  */ const replaceDocument = (html)=>{
40122
40716
  const inert = new DOMParser().parseFromString(html, 'text/html');
40123
40717
  editor.e.fire('safeHTML', inert.documentElement);
40718
+ // The plugins' own styles stay, as the value leaves them out
40719
+ const styles = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.$$)('style.jodit-box', doc.head);
40124
40720
  doc.replaceChild(doc.adoptNode(inert.documentElement), doc.documentElement);
40721
+ styles.forEach((style)=>_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.append(doc.head, style));
40125
40722
  };
40126
40723
  if (docMode) {
40127
40724
  const tag = editor.element.tagName;
@@ -40263,6 +40860,9 @@ const SELECTED_TAGS = new Set([
40263
40860
  */ class imageProcessor extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_5__.Plugin {
40264
40861
  afterInit(jodit) {
40265
40862
  jodit.e.on(jodit.ed, 'selectionchange', this.onSelectionChange);
40863
+ // Over the highlight in `styles/reset.less`; the image keeps its own. It goes
40864
+ // in the editing document, so iframe mode has it whatever `iframeStyle` holds
40865
+ (0,_core_global_js__WEBPACK_IMPORTED_MODULE_3__.getContainer)(jodit, 'image-processor', 'style', true).textContent = `.jodit-wysiwyg.${IMAGE_SELECTED}::selection,` + `.jodit-wysiwyg.${IMAGE_SELECTED} *:not(img)::selection{background:transparent}`;
40266
40866
  }
40267
40867
  beforeDestruct(jodit) {
40268
40868
  jodit.e.off(jodit.ed, 'selectionchange', this.onSelectionChange);
@@ -42759,10 +43359,11 @@ const align = {
42759
43359
  /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(580);
42760
43360
  /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21537);
42761
43361
  /* harmony import */ var _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(50911);
42762
- /* harmony import */ var _core_ui_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(67510);
42763
- /* harmony import */ var _core_ui_popup_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(61259);
42764
- /* harmony import */ var _modules_toolbar_factory_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(21491);
42765
- /* harmony import */ var _config_config_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(24526);
43362
+ /* harmony import */ var _core_selection_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(45124);
43363
+ /* harmony import */ var _core_ui_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(67510);
43364
+ /* harmony import */ var _core_ui_popup_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(61259);
43365
+ /* harmony import */ var _modules_toolbar_factory_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(21491);
43366
+ /* harmony import */ var _config_config_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(24526);
42766
43367
  /*!
42767
43368
  * Jodit Editor (https://xdsoft.net/jodit/)
42768
43369
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -42782,14 +43383,15 @@ const align = {
42782
43383
 
42783
43384
 
42784
43385
 
43386
+
42785
43387
  /**
42786
43388
  * Plugin for show inline popup dialog
42787
43389
  */ class inlinePopup extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_4__.Plugin {
42788
43390
  get popup() {
42789
- return new _core_ui_popup_index_js__WEBPACK_IMPORTED_MODULE_6__.Popup(this.jodit, false);
43391
+ return new _core_ui_popup_index_js__WEBPACK_IMPORTED_MODULE_7__.Popup(this.jodit, false);
42790
43392
  }
42791
43393
  get toolbar() {
42792
- return (0,_modules_toolbar_factory_js__WEBPACK_IMPORTED_MODULE_7__.makeCollection)(this.jodit, this.popup);
43394
+ return (0,_modules_toolbar_factory_js__WEBPACK_IMPORTED_MODULE_8__.makeCollection)(this.jodit, this.popup);
42793
43395
  }
42794
43396
  onClick(node) {
42795
43397
  const elements = this.elmsList, mediaWrapper = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.getMediaWrapper)(this.j, node), target = mediaWrapper !== null && mediaWrapper !== void 0 ? mediaWrapper : _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(node, 'img') ? node : _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.closest(node, elements, this.j.editor);
@@ -42863,6 +43465,33 @@ const align = {
42863
43465
  onOutsideClick() {
42864
43466
  this.popup.close();
42865
43467
  }
43468
+ /**
43469
+ * A key that moves the caret off an element closes its popup, and one
43470
+ * that moves the caret into an element with a popup (a link) opens it,
43471
+ * as clicks do
43472
+ */ onKeyUp() {
43473
+ this.__followCaret();
43474
+ }
43475
+ __followCaret() {
43476
+ if (!(0,_core_selection_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.isMoved)(this.j, this.snapRange)) {
43477
+ return;
43478
+ }
43479
+ const { range } = this.j.s;
43480
+ const target = this.previousTarget;
43481
+ if (this.popup.isOpened && this.type !== 'selection' && target && !range.intersectsNode(target)) {
43482
+ this.popup.close();
43483
+ }
43484
+ const node = range.startContainer;
43485
+ const element = this.__elementAt(node);
43486
+ if (range.collapsed && element && element !== this.__keyDownElement) {
43487
+ this.onClick(node);
43488
+ }
43489
+ }
43490
+ /**
43491
+ * The element with a popup that holds `node`
43492
+ */ __elementAt(node) {
43493
+ return _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.closest(node, this.elmsList, this.j.editor);
43494
+ }
42866
43495
  /**
42867
43496
  * Can show popup for this type
42868
43497
  */ canShowPopupForType(type) {
@@ -42902,12 +43531,28 @@ const align = {
42902
43531
  ], 'mousedown touchstart', this.__onDocumentMouseDown).on('closeAllPopups', this.__onCloseAllPopups);
42903
43532
  this.addListenersForElements();
42904
43533
  }
43534
+ onRecalcPositionPopup() {
43535
+ if (this.popup.isOpened && this.type !== 'selection' && this.previousTarget) {
43536
+ this.__reopenFor = this.previousTarget;
43537
+ }
43538
+ }
42905
43539
  __onDocumentMouseDown(e) {
42906
- if (this.popup.isOpened && this.type === 'selection' && e.target && _core_ui_index_js__WEBPACK_IMPORTED_MODULE_5__.UIElement.closestElement(e.target, _core_ui_popup_index_js__WEBPACK_IMPORTED_MODULE_6__.Popup)) {
43540
+ this.__reopenFor = null;
43541
+ if (this.popup.isOpened && this.type === 'selection' && e.target && _core_ui_index_js__WEBPACK_IMPORTED_MODULE_6__.UIElement.closestElement(e.target, _core_ui_popup_index_js__WEBPACK_IMPORTED_MODULE_7__.Popup)) {
42907
43542
  this.__reopenSelectionPopup = true;
42908
43543
  }
42909
43544
  }
42910
43545
  __onCloseAllPopups() {
43546
+ const target = this.__reopenFor;
43547
+ if (target) {
43548
+ this.__reopenFor = null;
43549
+ // After the popup's own `closeAllPopups` handler, as below
43550
+ this.j.async.setTimeout(()=>{
43551
+ if (this.j.editor.contains(target)) {
43552
+ this.onClick(target);
43553
+ }
43554
+ }, 1);
43555
+ }
42911
43556
  if (!this.__reopenSelectionPopup) {
42912
43557
  return;
42913
43558
  }
@@ -42944,11 +43589,16 @@ const align = {
42944
43589
  height: rect.height
42945
43590
  };
42946
43591
  }
42947
- onSelectionStart() {
43592
+ onSelectionStart(event) {
43593
+ // A key held down moves the caret on every repeat, with one keyup
43594
+ if (event === null || event === void 0 ? void 0 : event.repeat) {
43595
+ this.__followCaret();
43596
+ }
42948
43597
  this.snapRange = this.j.s.range.cloneRange();
43598
+ this.__keyDownElement = this.__elementAt(this.snapRange.startContainer);
42949
43599
  }
42950
43600
  onSelectionEnd(e) {
42951
- if (e && e.target && _core_ui_index_js__WEBPACK_IMPORTED_MODULE_5__.UIElement.closestElement(e.target, _core_ui_popup_index_js__WEBPACK_IMPORTED_MODULE_6__.Popup)) {
43601
+ if (e && e.target && _core_ui_index_js__WEBPACK_IMPORTED_MODULE_6__.UIElement.closestElement(e.target, _core_ui_popup_index_js__WEBPACK_IMPORTED_MODULE_7__.Popup)) {
42952
43602
  return;
42953
43603
  }
42954
43604
  const { snapRange } = this, { range } = this.j.s;
@@ -43032,7 +43682,13 @@ const align = {
43032
43682
  * command fires `closeAllPopups`, the toolbar should be shown again
43033
43683
  * while the selection is still there. See #1238
43034
43684
  */ this.__reopenSelectionPopup = false;
43685
+ /**
43686
+ * The alignment controls fire `recalcPositionPopup` once they have moved
43687
+ * the element, and their button then fires `closeAllPopups`. The popup
43688
+ * opens again beside the element, as the selection toolbar does
43689
+ */ this.__reopenFor = null;
43035
43690
  this.snapRange = null;
43691
+ this.__keyDownElement = null;
43036
43692
  this.elmsList = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.keys)(this.j.o.popup, false).filter((s)=>!this.isExcludedTarget(s));
43037
43693
  }
43038
43694
  }
@@ -43062,6 +43718,12 @@ __decorate([
43062
43718
  __decorate([
43063
43719
  (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)(':outsideClick')
43064
43720
  ], inlinePopup.prototype, "onOutsideClick", null);
43721
+ __decorate([
43722
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)(':keyup')
43723
+ ], inlinePopup.prototype, "onKeyUp", null);
43724
+ __decorate([
43725
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)(':recalcPositionPopup')
43726
+ ], inlinePopup.prototype, "onRecalcPositionPopup", null);
43065
43727
  __decorate([
43066
43728
  _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.autobind
43067
43729
  ], inlinePopup.prototype, "__onDocumentMouseDown", null);
@@ -45009,6 +45671,7 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_1__.pluginSystem.add('mobile', mobile);
45009
45671
  /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6441);
45010
45672
  /* harmony import */ var _icons_ol_svg_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(13465);
45011
45673
  /* harmony import */ var _icons_ul_svg_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(50267);
45674
+ /* harmony import */ var _start_dialog_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(83086);
45012
45675
  /*!
45013
45676
  * Jodit Editor (https://xdsoft.net/jodit/)
45014
45677
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -45018,11 +45681,19 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_1__.pluginSystem.add('mobile', mobile);
45018
45681
 
45019
45682
 
45020
45683
 
45684
+
45685
+ /**
45686
+ * The `ol` dropdown item that asks for the list's start number
45687
+ */ const START = 'start';
45021
45688
  const memoExec = (jodit, _, { control })=>{
45022
45689
  var _a;
45023
45690
  const key = `button${control.command}`;
45024
45691
  const value = (_a = control.args && control.args[0]) !== null && _a !== void 0 ? _a : (0,_core_helpers_utils_data_bind_js__WEBPACK_IMPORTED_MODULE_0__.dataBind)(jodit, key);
45025
- (0,_core_helpers_utils_data_bind_js__WEBPACK_IMPORTED_MODULE_0__.dataBind)(jodit, key, value);
45692
+ if (value === START) {
45693
+ (0,_start_dialog_js__WEBPACK_IMPORTED_MODULE_5__.openStartDialog)(jodit);
45694
+ return;
45695
+ }
45696
+ ;(0,_core_helpers_utils_data_bind_js__WEBPACK_IMPORTED_MODULE_0__.dataBind)(jodit, key, value);
45026
45697
  jodit.execCommand(control.command, false, value === 'default' ? null : value);
45027
45698
  };
45028
45699
  _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_1__.Icon.set('ol', _icons_ol_svg_js__WEBPACK_IMPORTED_MODULE_3__["default"]).set('ul', _icons_ul_svg_js__WEBPACK_IMPORTED_MODULE_4__["default"]);
@@ -45052,9 +45723,14 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.controls.ol = {
45052
45723
  'lower-greek': 'Lower Greek',
45053
45724
  'lower-roman': 'Lower Roman',
45054
45725
  'upper-alpha': 'Upper Alpha',
45055
- 'upper-roman': 'Upper Roman'
45726
+ 'upper-roman': 'Upper Roman',
45727
+ [START]: 'Start at...'
45056
45728
  },
45057
- exec: memoExec
45729
+ exec: memoExec,
45730
+ isChildDisabled: (jodit, button)=>{
45731
+ var _a;
45732
+ return ((_a = button.control.args) === null || _a === void 0 ? void 0 : _a[0]) === START && !(0,_start_dialog_js__WEBPACK_IMPORTED_MODULE_5__.closestOrderedList)(jodit);
45733
+ }
45058
45734
  };
45059
45735
 
45060
45736
 
@@ -45137,6 +45813,83 @@ __decorate([
45137
45813
  _core_global_js__WEBPACK_IMPORTED_MODULE_1__.pluginSystem.add('orderedList', orderedList);
45138
45814
 
45139
45815
 
45816
+ /***/ }),
45817
+
45818
+ /***/ 83086:
45819
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
45820
+
45821
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
45822
+ /* harmony export */ closestOrderedList: function() { return /* binding */ closestOrderedList; },
45823
+ /* harmony export */ openStartDialog: function() { return /* binding */ openStartDialog; }
45824
+ /* harmony export */ });
45825
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
45826
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29960);
45827
+ /* harmony import */ var _core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(62843);
45828
+ /* harmony import */ var _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2525);
45829
+ /*!
45830
+ * Jodit Editor (https://xdsoft.net/jodit/)
45831
+ * Released under MIT see LICENSE.txt in the project root for license information.
45832
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
45833
+ */
45834
+
45835
+
45836
+
45837
+ /**
45838
+ * The numbered list the selection is in
45839
+ */ function closestOrderedList(jodit) {
45840
+ const current = jodit.s.current();
45841
+ return current ? _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(current, 'ol', jodit.editor) : null;
45842
+ }
45843
+ /**
45844
+ * Asks for the number of the first item of the list the selection is in,
45845
+ * and sets the list's `start`. The selection is put back when the dialog
45846
+ * closes, however it closes.
45847
+ */ function openStartDialog(jodit) {
45848
+ const list = closestOrderedList(jodit);
45849
+ if (!list) {
45850
+ return;
45851
+ }
45852
+ const dialog = jodit.dlg({
45853
+ resizable: false,
45854
+ closeOnClickOverlay: true
45855
+ });
45856
+ const input = new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_3__.UIInput(jodit, {
45857
+ name: 'start',
45858
+ type: 'number',
45859
+ label: 'Number for the first item',
45860
+ value: list.start
45861
+ });
45862
+ const form = new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_3__.UIForm(jodit, [
45863
+ new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_3__.UIBlock(jodit, [
45864
+ input
45865
+ ])
45866
+ ]);
45867
+ form.container.classList.add('jodit-dialog_alert');
45868
+ form.onSubmit(({ start })=>{
45869
+ const value = start === '' ? 1 : parseInt(start, 10);
45870
+ if (isNaN(value)) {
45871
+ input.focus();
45872
+ return false;
45873
+ }
45874
+ dialog.close();
45875
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(list, 'start', value === 1 ? null : value);
45876
+ jodit.synchronizeValues();
45877
+ });
45878
+ jodit.s.save();
45879
+ dialog.e.on(dialog, 'afterClose', ()=>{
45880
+ jodit.s.focus();
45881
+ jodit.s.restore();
45882
+ });
45883
+ dialog.setFooter([
45884
+ (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_2__.Button)(jodit, 'cancel', 'Cancel').onAction(()=>dialog.close()),
45885
+ (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_2__.Button)(jodit, 'ok', 'Apply', 'primary').onAction(()=>form.submit())
45886
+ ]);
45887
+ dialog.open(form, jodit.i18n('Start numbering at'), true, true);
45888
+ input.focus();
45889
+ input.nativeInput.select();
45890
+ }
45891
+
45892
+
45140
45893
  /***/ }),
45141
45894
 
45142
45895
  /***/ 71842:
@@ -45929,6 +46682,10 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.useInputsPlaceholder =
45929
46682
  return true;
45930
46683
  }
45931
46684
  const first = root.firstChild;
46685
+ // Firefox pads an empty editable body with a bare <br>
46686
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(first, 'br') && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.next(first, Boolean, root)) {
46687
+ return true;
46688
+ }
45932
46689
  if (_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.INSEPARABLE_TAGS.has((_a = first.nodeName) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || /^(TABLE)$/i.test(first.nodeName)) {
45933
46690
  return false;
45934
46691
  }
@@ -45977,11 +46734,13 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.useInputsPlaceholder =
45977
46734
  marginTop = parseInt(style2.getPropertyValue('margin-top'), 10);
45978
46735
  marginLeft = parseInt(style2.getPropertyValue('margin-left'), 10);
45979
46736
  (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(this.placeholderElm, {
46737
+ fontFamily: style2.getPropertyValue('font-family'),
45980
46738
  fontSize: parseInt(style2.getPropertyValue('font-size'), 10),
45981
46739
  lineHeight: style2.getPropertyValue('line-height')
45982
46740
  });
45983
46741
  } else {
45984
46742
  (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(this.placeholderElm, {
46743
+ fontFamily: style.getPropertyValue('font-family'),
45985
46744
  fontSize: parseInt(style.getPropertyValue('font-size'), 10),
45986
46745
  lineHeight: style.getPropertyValue('line-height')
45987
46746
  });
@@ -46029,7 +46788,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.useInputsPlaceholder =
46029
46788
  this.placeholderElm.innerHTML = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_5__.attr)(editor.element, 'placeholder') || '';
46030
46789
  }
46031
46790
  editor.e.fire('placeholder', this.placeholderElm.innerHTML);
46032
- editor.e.off('.placeholder').on('changePlace.placeholder', this.addNativeListeners).on('change.placeholder focus.placeholder keyup.placeholder mouseup.placeholder keydown.placeholder ' + 'mousedown.placeholder afterSetMode.placeholder changePlace.placeholder ' + 'internalChange.placeholder afterCommand.placeholder', this.toggle).on(window, 'load', this.toggle);
46791
+ editor.e.off('.placeholder').on('changePlace.placeholder', this.addNativeListeners).on('change.placeholder focus.placeholder keyup.placeholder mouseup.placeholder keydown.placeholder ' + 'mousedown.placeholder afterSetMode.placeholder changePlace.placeholder ' + 'internalChange.placeholder afterCommand.placeholder resize.placeholder', this.toggle).on(window, 'load', this.toggle);
46033
46792
  this.addNativeListeners();
46034
46793
  this.toggle();
46035
46794
  };
@@ -46883,7 +47642,10 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.resizer = {
46883
47642
  /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(21537);
46884
47643
  /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(41180);
46885
47644
  /* harmony import */ var _core_plugin_plugin_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(20356);
46886
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(71675);
47645
+ /* harmony import */ var _core_selection_helpers_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(45124);
47646
+ /* harmony import */ var _core_ui_index_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(67510);
47647
+ /* harmony import */ var _core_ui_popup_index_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(61259);
47648
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(71675);
46887
47649
  /*!
46888
47650
  * Jodit Editor (https://xdsoft.net/jodit/)
46889
47651
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -46903,6 +47665,9 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.resizer = {
46903
47665
 
46904
47666
 
46905
47667
 
47668
+
47669
+
47670
+
46906
47671
  const keyBInd = '__jodit-resizer_binded';
46907
47672
  /**
46908
47673
  * Reads a plain pixel value out of a `width`/`height` attribute.
@@ -46922,11 +47687,19 @@ const keyBInd = '__jodit-resizer_binded';
46922
47687
  */ function heightFollowsWidth(element) {
46923
47688
  return _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(element, 'video') && !(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(element, 'height') && !(0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_5__.cssInline)(element, 'height');
46924
47689
  }
47690
+ const IFRAME_WRAPPER = '[data-jodit_iframe_wrapper]';
47691
+ /**
47692
+ * A click on an embed lands on its wrapper, so it selects the embed, until the
47693
+ * wrapper is active. While the editor is locked, as during resizing, the
47694
+ * wrapper takes the mouse again.
47695
+ */ const EMBED_WRAPPER_STYLE = `${IFRAME_WRAPPER}{position:relative;display:block;user-select:none}` + `${IFRAME_WRAPPER} iframe{position:relative}` + `${IFRAME_WRAPPER}::after{position:absolute;z-index:1;display:block;background:transparent;content:'';cursor:pointer;inset:0}` + `${IFRAME_WRAPPER}[data-jodit-wrapper_active=true] iframe{z-index:2}` + `.jodit_lock ${IFRAME_WRAPPER}[data-jodit-wrapper_active=true] iframe{z-index:1}`;
46925
47696
  /**
46926
47697
  * The module creates a supporting frame for resizing of the elements img and table
46927
47698
  */ class resizer extends _core_plugin_plugin_js__WEBPACK_IMPORTED_MODULE_6__.Plugin {
46928
47699
  /** @override */ afterInit(editor) {
46929
- ;(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.$$)('div', this.rect).forEach((resizeHandle)=>{
47700
+ // It goes in the editing document, so iframe mode has it whatever `iframeStyle` holds
47701
+ (0,_core_global_js__WEBPACK_IMPORTED_MODULE_3__.getContainer)(editor, 'resizer', 'style', true).textContent = EMBED_WRAPPER_STYLE;
47702
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.$$)('div', this.rect).forEach((resizeHandle)=>{
46930
47703
  editor.e.on(resizeHandle, 'mousedown.resizer touchstart.resizer', this.onStartResizing.bind(this, resizeHandle));
46931
47704
  });
46932
47705
  _core_global_js__WEBPACK_IMPORTED_MODULE_3__.eventEmitter.on('hideHelpers', this.hide);
@@ -46934,7 +47707,11 @@ const keyBInd = '__jodit-resizer_binded';
46934
47707
  if (isReadOnly) {
46935
47708
  this.hide();
46936
47709
  }
46937
- }).on('afterInit changePlace', this.addEventListeners.bind(this)).on('afterGetValueFromEditor.resizer', (data)=>{
47710
+ }).on('afterInit changePlace', this.addEventListeners.bind(this))// Handlers without a namespace run first, ahead of those that
47711
+ // move the caret, as table-keyboard-navigation's do
47712
+ .on('keydown', this.onEditorKeyDown, {
47713
+ top: true
47714
+ }).on('afterGetValueFromEditor.resizer', (data)=>{
46938
47715
  const rgx = /<jodit[^>]+data-jodit_iframe_wrapper[^>]+>(.*?<iframe[^>]*>.*?<\/iframe>.*?)<\/jodit>/gi;
46939
47716
  if (rgx.test(data.value)) {
46940
47717
  data.value = data.value.replace(rgx, '$1');
@@ -47079,6 +47856,38 @@ const keyBInd = '__jodit-resizer_binded';
47079
47856
  e.stopImmediatePropagation();
47080
47857
  }
47081
47858
  }
47859
+ onEditorKeyDown(event) {
47860
+ // A key held down moves the caret on every repeat, with one keyup
47861
+ if (event === null || event === void 0 ? void 0 : event.repeat) {
47862
+ this.__followCaret();
47863
+ }
47864
+ this.__keyDownRange = this.j.s.range.cloneRange();
47865
+ this.__keyDownTable = this.__caretTable();
47866
+ }
47867
+ __caretTable() {
47868
+ return _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.closest(this.j.s.range.startContainer, 'table', this.j.editor);
47869
+ }
47870
+ /**
47871
+ * Hide the frame once a key has moved the caret off its element, and
47872
+ * frame a table the caret has moved into, as clicks do
47873
+ */ onEditorKeyUp() {
47874
+ this.__followCaret();
47875
+ }
47876
+ __followCaret() {
47877
+ const before = this.__keyDownRange;
47878
+ this.__keyDownRange = null;
47879
+ if (!(0,_core_selection_helpers_index_js__WEBPACK_IMPORTED_MODULE_7__.isMoved)(this.j, before)) {
47880
+ return;
47881
+ }
47882
+ if (this.isShown && this.element && !this.j.s.range.intersectsNode(this.element)) {
47883
+ this.hide();
47884
+ }
47885
+ const table = this.__caretTable();
47886
+ if (table && table !== this.__keyDownTable && this.j.o.allowResizeTags.has('table')) {
47887
+ this.__bind(table);
47888
+ this.onClickElement(table);
47889
+ }
47890
+ }
47082
47891
  onKeyDown(e) {
47083
47892
  this.isAltMode = e.key === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.KEY_ALT;
47084
47893
  if (!this.isAltMode && this.isResizeMode) {
@@ -47100,6 +47909,11 @@ const keyBInd = '__jodit-resizer_binded';
47100
47909
  return;
47101
47910
  }
47102
47911
  if (!this.isResizeMode) {
47912
+ // A click in the element's popup, or in a list it opens, works on
47913
+ // the element, so it keeps its frame
47914
+ if ((e === null || e === void 0 ? void 0 : e.target) && _core_ui_index_js__WEBPACK_IMPORTED_MODULE_8__.UIElement.closestElement(e.target, _core_ui_popup_index_js__WEBPACK_IMPORTED_MODULE_9__.Popup)) {
47915
+ return;
47916
+ }
47103
47917
  return this.hide();
47104
47918
  }
47105
47919
  e.stopImmediatePropagation();
@@ -47266,7 +48080,7 @@ const keyBInd = '__jodit-resizer_binded';
47266
48080
  this.hide();
47267
48081
  _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove(this.layer);
47268
48082
  _core_global_js__WEBPACK_IMPORTED_MODULE_3__.eventEmitter.off('hideHelpers', this.hide);
47269
- jodit.e.off(this.j.ow, '.resizer').off('.resizer');
48083
+ jodit.e.off(this.j.ow, '.resizer').off('.resizer').off('keydown', this.onEditorKeyDown);
47270
48084
  }
47271
48085
  constructor(){
47272
48086
  super(...arguments);
@@ -47291,6 +48105,8 @@ const keyBInd = '__jodit-resizer_binded';
47291
48105
  this.sizeViewer = this.rect.getElementsByTagName('span')[0];
47292
48106
  this.pointerX = 0;
47293
48107
  this.pointerY = 0;
48108
+ this.__keyDownRange = null;
48109
+ this.__keyDownTable = null;
47294
48110
  this.isAltMode = false;
47295
48111
  this.onClickElement = (element)=>{
47296
48112
  if (this.isResizeMode) {
@@ -47352,6 +48168,12 @@ __decorate([
47352
48168
  __decorate([
47353
48169
  _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.autobind
47354
48170
  ], resizer.prototype, "onResize", null);
48171
+ __decorate([
48172
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.autobind
48173
+ ], resizer.prototype, "onEditorKeyDown", null);
48174
+ __decorate([
48175
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.watch)(':keyup')
48176
+ ], resizer.prototype, "onEditorKeyUp", null);
47355
48177
  __decorate([
47356
48178
  _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.autobind
47357
48179
  ], resizer.prototype, "onKeyDown", null);
@@ -48302,8 +49124,9 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.tableAllowCellSelection
48302
49124
  /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(580);
48303
49125
  /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(21537);
48304
49126
  /* harmony import */ var _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(50911);
48305
- /* harmony import */ var _modules_table_table_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(76014);
48306
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(55311);
49127
+ /* harmony import */ var _core_selection_helpers_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(45124);
49128
+ /* harmony import */ var _modules_table_table_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(76014);
49129
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(55311);
48307
49130
  /*!
48308
49131
  * Jodit Editor (https://xdsoft.net/jodit/)
48309
49132
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -48322,19 +49145,24 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.tableAllowCellSelection
48322
49145
 
48323
49146
 
48324
49147
 
49148
+
48325
49149
  const key = 'table_processor_observer';
48326
49150
  const MOUSE_MOVE_LABEL = 'onMoveTableSelectCell';
48327
49151
  class selectCells extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_5__.Plugin {
48328
49152
  /**
48329
49153
  * Shortcut for Jodit.modules.Table
48330
49154
  */ get __tableModule() {
48331
- return this.j.getInstance(_modules_table_table_js__WEBPACK_IMPORTED_MODULE_6__.Table, this.j.o);
49155
+ return this.j.getInstance(_modules_table_table_js__WEBPACK_IMPORTED_MODULE_7__.Table, this.j.o);
48332
49156
  }
48333
49157
  afterInit(jodit) {
48334
49158
  if (!jodit.o.tableAllowCellSelection) {
48335
49159
  return;
48336
49160
  }
48337
- jodit.e.on('keydown.select-cells', (event)=>{
49161
+ jodit.e// Handlers without a namespace run first, ahead of those that
49162
+ // move the caret, as table-keyboard-navigation's do
49163
+ .on('keydown', this.__onKeyDown, {
49164
+ top: true
49165
+ }).on('keydown.select-cells', (event)=>{
48338
49166
  if (event.key === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.KEY_TAB) {
48339
49167
  this.unselectCells();
48340
49168
  }
@@ -48358,6 +49186,59 @@ class selectCells extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_5__.Plu
48358
49186
  }
48359
49187
  });
48360
49188
  }
49189
+ __onKeyDown(event) {
49190
+ // A key held down moves the caret on every repeat, with one keyup
49191
+ if (event === null || event === void 0 ? void 0 : event.repeat) {
49192
+ this.__followCaret();
49193
+ }
49194
+ this.__keyDownCell = this.__caretCell();
49195
+ this.__keyDownRange = this.j.s.range.cloneRange();
49196
+ this.__keyDownInLink = this.__isInLink();
49197
+ }
49198
+ __isInLink() {
49199
+ return Boolean(_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.closest(this.j.s.range.startContainer, 'a', this.j.editor));
49200
+ }
49201
+ /**
49202
+ * Where the selection starts rather than `s.current()`, which finds the
49203
+ * first cell when the caret is just before the table
49204
+ */ __caretCell() {
49205
+ return _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.closest(this.j.s.range.startContainer, _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isCell, this.j.editor);
49206
+ }
49207
+ /**
49208
+ * A key that moves the caret into a cell, from another cell or from
49209
+ * outside the table, marks that cell and opens its popup, as a click on
49210
+ * it does. One that moves the caret out of the table unmarks the cells
49211
+ */ onKeyUp() {
49212
+ this.__followCaret();
49213
+ }
49214
+ __followCaret() {
49215
+ const before = this.__keyDownRange;
49216
+ this.__keyDownRange = null;
49217
+ if (this.j.o.readonly || !(0,_core_selection_helpers_index_js__WEBPACK_IMPORTED_MODULE_6__.isMoved)(this.j, before)) {
49218
+ return;
49219
+ }
49220
+ const cell = this.__caretCell();
49221
+ const hasLeftLink = this.__keyDownInLink && !this.__isInLink();
49222
+ if (cell === this.__keyDownCell && !(cell && hasLeftLink)) {
49223
+ return;
49224
+ }
49225
+ const hadMarked = this.__tableModule.getAllSelectedCells().length > 0;
49226
+ this.unselectCells();
49227
+ if (!cell) {
49228
+ if (hadMarked) {
49229
+ this.j.e.fire('hidePopup', 'cells');
49230
+ }
49231
+ return;
49232
+ }
49233
+ const table = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.closest(cell, 'table', this.j.editor);
49234
+ if (!table) {
49235
+ return;
49236
+ }
49237
+ // As after a click, the first change to the cell keeps the mark
49238
+ this.__selectedCell = cell;
49239
+ this.__tableModule.addSelection(cell);
49240
+ this.j.e.fire('showPopup', table, ()=>(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.position)(cell, this.j), 'cells');
49241
+ }
48361
49242
  /**
48362
49243
  * Mouse click inside the table
48363
49244
  */ onStartSelection(cell, event) {
@@ -48679,10 +49560,17 @@ class selectCells extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_5__.Plu
48679
49560
  }
48680
49561
  /** @override */ beforeDestruct(jodit) {
48681
49562
  this.__onRemoveSelection();
48682
- jodit.e.off('.select-cells');
49563
+ jodit.e.off('.select-cells').off('keydown', this.__onKeyDown);
48683
49564
  }
48684
49565
  constructor(){
48685
49566
  super(...arguments);
49567
+ /**
49568
+ * The cell with the caret, and the selection, when a key went down
49569
+ */ this.__keyDownCell = null;
49570
+ this.__keyDownRange = null;
49571
+ /**
49572
+ * A link's popup replaces the cell's while the caret is in the link
49573
+ */ this.__keyDownInLink = false;
48686
49574
  /**
48687
49575
  * First selected cell
48688
49576
  */ this.__selectedCell = null;
@@ -48694,6 +49582,12 @@ class selectCells extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_5__.Plu
48694
49582
  selectCells.requires = [
48695
49583
  'select'
48696
49584
  ];
49585
+ __decorate([
49586
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.autobind
49587
+ ], selectCells.prototype, "__onKeyDown", null);
49588
+ __decorate([
49589
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.watch)(':keyup')
49590
+ ], selectCells.prototype, "onKeyUp", null);
48697
49591
  __decorate([
48698
49592
  _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.autobind
48699
49593
  ], selectCells.prototype, "onStartSelection", null);
@@ -53132,7 +54026,9 @@ const WORK_KEYS = new Set([
53132
54026
  case _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.KEY_LEFT:
53133
54027
  {
53134
54028
  next = getNextCell();
53135
- if (!next) {
54029
+ // Left in the first cell leaves the table, as Up in the
54030
+ // top row does
54031
+ if (!next && key === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.KEY_TAB) {
53136
54032
  tableModule.appendRow(table, !isPrev ? false : _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.first(table, (node)=>_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(node, 'tr')), !isPrev);
53137
54033
  next = getNextCell();
53138
54034
  }
@@ -53158,7 +54054,6 @@ const WORK_KEYS = new Set([
53158
54054
  if (!next) {
53159
54055
  return;
53160
54056
  }
53161
- editor.e.fire('hidePopup hideResizer');
53162
54057
  if (!next.firstChild) {
53163
54058
  const first = editor.createInside.element('br');
53164
54059
  _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.append(next, first);