jodit-pro 4.18.8 → 4.18.11

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 (357) 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 +30 -30
  4. package/es2015/jodit.js +1242 -229
  5. package/es2015/jodit.min.css +1 -1
  6. package/es2015/jodit.min.js +13 -13
  7. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  8. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.js +19 -1
  9. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.min.js +3 -3
  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 +14 -7
  15. package/es2015/plugins/backup/backup.min.js +2 -2
  16. package/es2015/plugins/button-generator/button-generator.css +1 -1
  17. package/es2015/plugins/button-generator/button-generator.js +26 -19
  18. package/es2015/plugins/button-generator/button-generator.min.js +3 -3
  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 +19 -19
  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 +3 -3
  85. package/es2018/plugins/autocomplete/autocomplete.min.js +1 -1
  86. package/es2018/plugins/backup/backup.min.js +2 -2
  87. package/es2018/plugins/button-generator/button-generator.min.js +3 -3
  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 +24 -24
  114. package/es2021/jodit.js +1217 -229
  115. package/es2021/jodit.min.css +1 -1
  116. package/es2021/jodit.min.js +16 -16
  117. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  118. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.js +19 -1
  119. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.min.js +3 -3
  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 +14 -7
  125. package/es2021/plugins/backup/backup.min.js +2 -2
  126. package/es2021/plugins/button-generator/button-generator.css +1 -1
  127. package/es2021/plugins/button-generator/button-generator.js +26 -19
  128. package/es2021/plugins/button-generator/button-generator.min.js +3 -3
  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 +24 -24
  193. package/es2021.en/jodit.js +1217 -229
  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 +19 -1
  198. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.min.js +26 -26
  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 +14 -7
  204. package/es2021.en/plugins/backup/backup.min.js +2 -2
  205. package/es2021.en/plugins/button-generator/button-generator.css +1 -1
  206. package/es2021.en/plugins/button-generator/button-generator.js +26 -19
  207. package/es2021.en/plugins/button-generator/button-generator.min.js +3 -3
  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 +1383 -235
  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 +19 -1
  277. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.min.js +2 -2
  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 +14 -7
  283. package/es5/plugins/backup/backup.min.js +2 -2
  284. package/es5/plugins/button-generator/button-generator.css +1 -1
  285. package/es5/plugins/button-generator/button-generator.js +26 -19
  286. package/es5/plugins/button-generator/button-generator.min.js +2 -2
  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/esm/plugins/ai-assistant-pro/ai-assistant-pro.js +2 -2
  352. package/esm/plugins/ai-assistant-pro/core/panel-resize.d.ts +4 -0
  353. package/esm/plugins/ai-assistant-pro/core/panel-resize.js +1 -1
  354. package/esm/plugins/backup/ui/item.js +1 -1
  355. package/esm/plugins/button-generator/ui/form/form.js +2 -2
  356. package/package.json +1 -1
  357. package/types/plugins/ai-assistant-pro/core/panel-resize.d.ts +4 -0
package/es5/jodit.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * jodit-pro - PRO Version of Jodit Editor
3
3
  * Author: Chupurnov Valerii <chupurnov@gmail.com>
4
- * Version: v4.18.8
4
+ * Version: v4.18.11
5
5
  * Url: https://xdsoft.net/jodit/pro/
6
6
  * License(s): SEE LICENSE IN LICENSE.md
7
7
  */
@@ -2331,7 +2331,7 @@ function _unsupported_iterable_to_array(o, minLen) {
2331
2331
  if (n === "Map" || n === "Set") return Array.from(n);
2332
2332
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
2333
2333
  }
2334
- var APP_VERSION = "4.18.8";
2334
+ var APP_VERSION = "4.18.11";
2335
2335
  // prettier-ignore
2336
2336
  var ES = "es5";
2337
2337
  var IS_ES_MODERN = false;
@@ -3139,6 +3139,8 @@ function _unsupported_iterable_to_array(o, minLen) {
3139
3139
  */ ;
3140
3140
 
3141
3141
  var componentRegistry = new Map();
3142
+ var decoratedClasses = new WeakSet();
3143
+ var warnedClasses = new WeakSet();
3142
3144
  /**
3143
3145
  * Decorate components and set status isReady after constructor
3144
3146
  * @param constructorFunction - Component constructor class
@@ -3162,11 +3164,18 @@ var componentRegistry = new Map();
3162
3164
  Object.setPrototypeOf(_this, newConstructorFunction.prototype);
3163
3165
  }
3164
3166
  _this.setStatus('ready');
3167
+ } else if (!_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_PROD && !decoratedClasses.has(_this.constructor) && !warnedClasses.has(_this.constructor)) {
3168
+ // Only the outermost class's decorator sets `ready`, so a subclass
3169
+ // without its own decorator stays in `beforeInit`. See #1685
3170
+ warnedClasses.add(_this.constructor);
3171
+ console.warn('Component "'.concat(_this.constructor.name || (0,_helpers_utils_get_class_name_js__WEBPACK_IMPORTED_MODULE_1__.getClassName)(_this), '" extends a @component class without being decorated itself, so it never becomes ready and its @watch, @debounce, @throttle and @hook handlers never run'));
3165
3172
  }
3166
3173
  return _this;
3167
3174
  }
3168
3175
  return newConstructorFunction;
3169
3176
  }(constructorFunction);
3177
+ decoratedClasses.add(constructorFunction);
3178
+ decoratedClasses.add(newConstructorFunction);
3170
3179
  var name = (0,_helpers_utils_get_class_name_js__WEBPACK_IMPORTED_MODULE_1__.getClassName)(constructorFunction.prototype);
3171
3180
  if (componentRegistry.has(name) && !_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_PROD) {
3172
3181
  throw new Error('Component with name "'.concat(name, '" is already registered'));
@@ -7429,10 +7438,11 @@ function _instanceof(left, right) {
7429
7438
  /* harmony export */ });
7430
7439
  /* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82758);
7431
7440
  /* harmony import */ var _dom_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2748);
7432
- /* harmony import */ var _string_trim_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(49055);
7433
- /* harmony import */ var _utils_attr_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(29960);
7434
- /* harmony import */ var _utils_css_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(41180);
7435
- /* harmony import */ var _utils_selector_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(76078);
7441
+ /* harmony import */ var _word_lists_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(90723);
7442
+ /* harmony import */ var _string_trim_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(49055);
7443
+ /* harmony import */ var _utils_attr_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(29960);
7444
+ /* harmony import */ var _utils_css_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(41180);
7445
+ /* harmony import */ var _utils_selector_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(76078);
7436
7446
  /*!
7437
7447
  * Jodit Editor (https://xdsoft.net/jodit/)
7438
7448
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -7445,6 +7455,7 @@ function _instanceof(left, right) {
7445
7455
 
7446
7456
 
7447
7457
 
7458
+
7448
7459
  function normalizeCSS(s) {
7449
7460
  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, function(match, units, metrics) {
7450
7461
  switch(metrics.toLowerCase()){
@@ -7478,7 +7489,7 @@ function normalizeCSS(s) {
7478
7489
  html = html.substring(0, closeIndex + '</html>'.length);
7479
7490
  }
7480
7491
  var iframe = _constants_js__WEBPACK_IMPORTED_MODULE_0__.globalDocument.createElement('iframe');
7481
- (0,_utils_css_js__WEBPACK_IMPORTED_MODULE_4__.css)(iframe, 'display', 'none');
7492
+ (0,_utils_css_js__WEBPACK_IMPORTED_MODULE_5__.css)(iframe, 'display', 'none');
7482
7493
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.append(_constants_js__WEBPACK_IMPORTED_MODULE_0__.globalDocument.body, iframe);
7483
7494
  var convertedString = '', collection;
7484
7495
  try {
@@ -7487,13 +7498,14 @@ function normalizeCSS(s) {
7487
7498
  iframeDoc.open();
7488
7499
  iframeDoc.write(html);
7489
7500
  iframeDoc.close();
7501
+ var listItems = (0,_word_lists_js__WEBPACK_IMPORTED_MODULE_2__.readWordListItems)(iframeDoc.body);
7490
7502
  // Word marks its auto-generated list markers (the literal
7491
7503
  // bullet/number, e.g. `1.` or `·`) with `mso-list:Ignore`.
7492
7504
  // They are display-only and must not be imported, otherwise
7493
7505
  // the marker text leaks into the content. Drop them before any
7494
7506
  // style normalization strips the `mso-list` hint. See #948
7495
7507
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.each(iframeDoc.body, function(node) {
7496
- 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') || '')) {
7508
+ 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') || '')) {
7497
7509
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(node);
7498
7510
  }
7499
7511
  });
@@ -7503,7 +7515,7 @@ function normalizeCSS(s) {
7503
7515
  if (rules[idx].selectorText === '') {
7504
7516
  return "continue";
7505
7517
  }
7506
- collection = (0,_utils_selector_js__WEBPACK_IMPORTED_MODULE_5__.$$)(rules[idx].selectorText, iframeDoc.body);
7518
+ collection = (0,_utils_selector_js__WEBPACK_IMPORTED_MODULE_6__.$$)(rules[idx].selectorText, iframeDoc.body);
7507
7519
  // `style.cssText` on purpose: the CSSOM parses the text,
7508
7520
  // drops invalid declarations and re-serializes it. The raw
7509
7521
  // `style` attribute would keep Word-only junk verbatim
@@ -7520,18 +7532,19 @@ function normalizeCSS(s) {
7520
7532
  throw e;
7521
7533
  }
7522
7534
  }
7535
+ ;(0,_word_lists_js__WEBPACK_IMPORTED_MODULE_2__.wrapWordListItems)(listItems);
7523
7536
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.each(iframeDoc.body, function(node) {
7524
7537
  if (_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isElement(node)) {
7525
- var cssText = (0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_3__.attr)(node, 'style');
7538
+ var cssText = (0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_4__.attr)(node, 'style');
7526
7539
  if (cssText) {
7527
7540
  node.style.cssText = normalizeCSS(cssText);
7528
7541
  }
7529
- if (!(0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_3__.attr)(node, 'style')) {
7530
- (0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_3__.attr)(node, 'style', null);
7542
+ if (!(0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_4__.attr)(node, 'style')) {
7543
+ (0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_4__.attr)(node, 'style', null);
7531
7544
  }
7532
7545
  }
7533
7546
  });
7534
- convertedString = iframeDoc.firstChild ? (0,_string_trim_js__WEBPACK_IMPORTED_MODULE_2__.trim)(iframeDoc.body.innerHTML) : '';
7547
+ convertedString = iframeDoc.firstChild ? (0,_string_trim_js__WEBPACK_IMPORTED_MODULE_3__.trim)(iframeDoc.body.innerHTML) : '';
7535
7548
  }
7536
7549
  } catch (_a) {} finally{
7537
7550
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(iframe);
@@ -7539,7 +7552,7 @@ function normalizeCSS(s) {
7539
7552
  if (convertedString) {
7540
7553
  html = convertedString;
7541
7554
  }
7542
- return (0,_string_trim_js__WEBPACK_IMPORTED_MODULE_2__.trim)(html.replace(/<(\/)?(html|colgroup|col|o:p)[^>]*>/g, '').replace(/<!--[^>]*>/g, ''));
7555
+ return (0,_string_trim_js__WEBPACK_IMPORTED_MODULE_3__.trim)(html.replace(/<(\/)?(html|colgroup|col|o:p)[^>]*>/g, '').replace(/<!--[^>]*>/g, ''));
7543
7556
  }
7544
7557
 
7545
7558
 
@@ -7554,8 +7567,9 @@ function normalizeCSS(s) {
7554
7567
  /* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82758);
7555
7568
  /* harmony import */ var _dom_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2748);
7556
7569
  /* harmony import */ var _array_to_array_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4510);
7557
- /* harmony import */ var _string_trim_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(49055);
7558
- /* harmony import */ var _utils_attr_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(29960);
7570
+ /* harmony import */ var _word_lists_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(90723);
7571
+ /* harmony import */ var _string_trim_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(49055);
7572
+ /* harmony import */ var _utils_attr_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(29960);
7559
7573
  /*!
7560
7574
  * Jodit Editor (https://xdsoft.net/jodit/)
7561
7575
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -7567,6 +7581,7 @@ function normalizeCSS(s) {
7567
7581
 
7568
7582
 
7569
7583
 
7584
+
7570
7585
  /**
7571
7586
  * The method automatically cleans up content from Microsoft Word and other HTML sources to ensure clean, compliant
7572
7587
  * content that matches the look and feel of the site.
@@ -7580,6 +7595,7 @@ function normalizeCSS(s) {
7580
7595
  var div = _constants_js__WEBPACK_IMPORTED_MODULE_0__.globalDocument.createElement('div');
7581
7596
  div.innerHTML = html;
7582
7597
  var marks = [];
7598
+ var listItems = (0,_word_lists_js__WEBPACK_IMPORTED_MODULE_3__.readWordListItems)(div);
7583
7599
  if (div.firstChild) {
7584
7600
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.each(div, function(node) {
7585
7601
  if (!node) {
@@ -7604,7 +7620,7 @@ function normalizeCSS(s) {
7604
7620
  // with `mso-list:Ignore`. They are display-only
7605
7621
  // and must not be imported, otherwise the marker
7606
7622
  // text leaks into the content. See #948
7607
- if (/mso-list:\s*ignore/i.test((0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_4__.attr)(node, 'style') || '')) {
7623
+ if (/mso-list:\s*ignore/i.test((0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_5__.attr)(node, 'style') || '')) {
7608
7624
  marks.push(node);
7609
7625
  break;
7610
7626
  }
@@ -7618,7 +7634,7 @@ function normalizeCSS(s) {
7618
7634
  // `attrRaw`: SVG keeps camelCase names
7619
7635
  // (`viewBox`), `attr()` would kebab-case
7620
7636
  // them and silently skip the removal
7621
- (0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_4__.attrRaw)(node, attribute.name, null);
7637
+ (0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_5__.attrRaw)(node, attribute.name, null);
7622
7638
  }
7623
7639
  });
7624
7640
  }
@@ -7631,12 +7647,13 @@ function normalizeCSS(s) {
7631
7647
  });
7632
7648
  }
7633
7649
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove.apply(null, marks);
7650
+ (0,_word_lists_js__WEBPACK_IMPORTED_MODULE_3__.wrapWordListItems)(listItems);
7634
7651
  convertedString = div.innerHTML;
7635
7652
  } catch (e) {}
7636
7653
  if (convertedString) {
7637
7654
  html = convertedString;
7638
7655
  }
7639
- html = html.split(/(\n)/).filter(_string_trim_js__WEBPACK_IMPORTED_MODULE_3__.trim).join('\n');
7656
+ html = html.split(/(\n)/).filter(_string_trim_js__WEBPACK_IMPORTED_MODULE_4__.trim).join('\n');
7640
7657
  return html.replace(/<(\/)?(html|colgroup|col|o:p)[^>]*>/g, '').replace(/<!--[^>]*>/g, '');
7641
7658
  }
7642
7659
 
@@ -8042,7 +8059,14 @@ var NEW_LINE_TAGS = new Set([
8042
8059
  'h4',
8043
8060
  'h5',
8044
8061
  'h6',
8045
- 'hr'
8062
+ 'hr',
8063
+ 'ul',
8064
+ 'ol',
8065
+ 'li'
8066
+ ]);
8067
+ var LIST_TAGS = new Set([
8068
+ 'ul',
8069
+ 'ol'
8046
8070
  ]);
8047
8071
  var INVISIBLE_TAGS = new Set([
8048
8072
  'script',
@@ -8069,6 +8093,16 @@ var ALONE_TAGS = new Set([
8069
8093
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.each(tmp, function(node) {
8070
8094
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(node) && all.push(node);
8071
8095
  });
8096
+ // By default blocks are joined with a single space (single-line
8097
+ // plain text). When `blockBr` is set, separate them with a line
8098
+ // break instead, so paragraph structure survives — e.g. the
8099
+ // "Insert only Text" paste option. See #1232
8100
+ var separators = new Set();
8101
+ var separator = function separator() {
8102
+ var text = doc.createTextNode(blockBr ? '%%%jodit-single-br%%%' : ' ');
8103
+ separators.add(text);
8104
+ return text;
8105
+ };
8072
8106
  all.forEach(function(p) {
8073
8107
  var pr = p.parentNode;
8074
8108
  if (!pr) {
@@ -8088,16 +8122,17 @@ var ALONE_TAGS = new Set([
8088
8122
  if (!_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(p, NEW_LINE_TAGS)) {
8089
8123
  return;
8090
8124
  }
8125
+ var pv = p.previousSibling;
8126
+ // A nested list starts on a new line after its item's own text
8127
+ 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 || ''))) {
8128
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.before(p, separator());
8129
+ }
8091
8130
  var nx = p.nextSibling;
8092
8131
  if (_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isText(nx) && /^\s/.test(nx.nodeValue || '')) {
8093
8132
  return;
8094
8133
  }
8095
8134
  if (nx) {
8096
- // By default blocks are joined with a single space (single-line
8097
- // plain text). When `blockBr` is set, separate them with a line
8098
- // break instead, so paragraph structure survives — e.g. the
8099
- // "Insert only Text" paste option. See #1232
8100
- _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.before(nx, doc.createTextNode(blockBr ? '%%%jodit-single-br%%%' : ' '));
8135
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.before(nx, separator());
8101
8136
  }
8102
8137
  });
8103
8138
  return restoreTags((0,_string_trim_js__WEBPACK_IMPORTED_MODULE_2__.trim)(tmp.innerText));
@@ -8109,6 +8144,211 @@ function restoreTags(content) {
8109
8144
  }
8110
8145
 
8111
8146
 
8147
+ /***/ }),
8148
+
8149
+ /***/ 90723:
8150
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
8151
+
8152
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
8153
+ /* harmony export */ readWordListItems: function() { return /* binding */ readWordListItems; },
8154
+ /* harmony export */ wrapWordListItems: function() { return /* binding */ wrapWordListItems; }
8155
+ /* harmony export */ });
8156
+ /* harmony import */ var _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
8157
+ /* harmony import */ var _array_to_array_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4510);
8158
+ /* harmony import */ var _utils_attr_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29960);
8159
+ function _define_property(obj, key, value) {
8160
+ if (key in obj) {
8161
+ Object.defineProperty(obj, key, {
8162
+ value: value,
8163
+ enumerable: true,
8164
+ configurable: true,
8165
+ writable: true
8166
+ });
8167
+ } else obj[key] = value;
8168
+ return obj;
8169
+ }
8170
+ function _object_spread(target) {
8171
+ for(var i = 1; i < arguments.length; i++){
8172
+ var source = arguments[i] != null ? arguments[i] : {};
8173
+ var ownKeys = Object.keys(source);
8174
+ if (typeof Object.getOwnPropertySymbols === "function") {
8175
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
8176
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
8177
+ }));
8178
+ }
8179
+ ownKeys.forEach(function(key) {
8180
+ _define_property(target, key, source[key]);
8181
+ });
8182
+ }
8183
+ return target;
8184
+ }
8185
+ /*!
8186
+ * Jodit Editor (https://xdsoft.net/jodit/)
8187
+ * Released under MIT see LICENSE.txt in the project root for license information.
8188
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
8189
+ */ /**
8190
+ * @module helpers/html
8191
+ */ ;
8192
+
8193
+
8194
+ var ROMAN = {
8195
+ i: 1,
8196
+ v: 5,
8197
+ x: 10,
8198
+ l: 50,
8199
+ c: 100,
8200
+ d: 500,
8201
+ m: 1000
8202
+ };
8203
+ function romanValue(roman) {
8204
+ var value = 0;
8205
+ for(var i = 0; i < roman.length; i += 1){
8206
+ var current = ROMAN[roman[i]], next = ROMAN[roman[i + 1]] || 0;
8207
+ value += current < next ? -current : current;
8208
+ }
8209
+ return value;
8210
+ }
8211
+ /**
8212
+ * Word's marker text (`1.`, `b)`, `iv.`, `·`, `o`, `§`) decides the list type
8213
+ */ function parseMarker(marker) {
8214
+ var text = marker.replace(/\s+/g, '');
8215
+ var decimal = /^\(?(?:\d+\.)*(\d+)[.)]?$/.exec(text);
8216
+ if (decimal) {
8217
+ return {
8218
+ tag: 'ol',
8219
+ listStyleType: null,
8220
+ start: Number(decimal[1])
8221
+ };
8222
+ }
8223
+ var letters = /^\(?([a-z]+|[A-Z]+)[.)]$/.exec(text);
8224
+ if (letters) {
8225
+ var value = letters[1], lower = value.toLowerCase(), upper = value !== lower;
8226
+ if (/^[ivxlcdm]+$/.test(lower) && (lower.length > 1 || lower === 'i')) {
8227
+ return {
8228
+ tag: 'ol',
8229
+ listStyleType: upper ? 'upper-roman' : 'lower-roman',
8230
+ start: romanValue(lower)
8231
+ };
8232
+ }
8233
+ // Word continues a lettered list with aa, bb, ...
8234
+ if (/^([a-z])\1*$/.test(lower)) {
8235
+ return {
8236
+ tag: 'ol',
8237
+ listStyleType: upper ? 'upper-alpha' : 'lower-alpha',
8238
+ start: (lower.length - 1) * 26 + lower.charCodeAt(0) - 96
8239
+ };
8240
+ }
8241
+ }
8242
+ return {
8243
+ tag: 'ul',
8244
+ listStyleType: null,
8245
+ start: 1
8246
+ };
8247
+ }
8248
+ /**
8249
+ * Removes the marker and the wrappers it leaves empty
8250
+ */ function removeMarker(marker, paragraph) {
8251
+ var parent = marker.parentNode;
8252
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(marker);
8253
+ while(parent && parent !== paragraph && _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(parent) && _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(parent)){
8254
+ var next = parent.parentNode;
8255
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(parent);
8256
+ parent = next;
8257
+ }
8258
+ }
8259
+ /**
8260
+ * Finds Word's list paragraphs (`<p style="mso-list:l0 level1 lfo1">`), reads
8261
+ * their list, level and type from the `mso-list:Ignore` marker, and removes the
8262
+ * marker. Call it before anything strips the `mso-list` styles, then pass the
8263
+ * result to {@link wrapWordListItems}
8264
+ */ function readWordListItems(root) {
8265
+ var items = [];
8266
+ (0,_array_to_array_js__WEBPACK_IMPORTED_MODULE_1__.toArray)(root.querySelectorAll('p')).forEach(function(paragraph) {
8267
+ var 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') || '');
8268
+ if (!match) {
8269
+ return;
8270
+ }
8271
+ var marker = (0,_array_to_array_js__WEBPACK_IMPORTED_MODULE_1__.toArray)(paragraph.querySelectorAll('[style]')).find(function(elm) {
8272
+ return /mso-list:\s*ignore/i.test((0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_2__.attr)(elm, 'style') || '');
8273
+ });
8274
+ items.push(_object_spread({
8275
+ paragraph: paragraph,
8276
+ list: "".concat(match[1], ":").concat(match[3] || ''),
8277
+ level: Number(match[2])
8278
+ }, parseMarker((marker === null || marker === void 0 ? void 0 : marker.textContent) || '')));
8279
+ if (marker) {
8280
+ removeMarker(marker, paragraph);
8281
+ }
8282
+ });
8283
+ return items;
8284
+ }
8285
+ function isAdjacent(prev, item) {
8286
+ return _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.findSibling(item.paragraph, true, function(n) {
8287
+ return !_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmptyTextNode(n) && !_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isComment(n);
8288
+ }) === prev.paragraph;
8289
+ }
8290
+ /**
8291
+ * Turns the paragraphs found by {@link readWordListItems} into `<ul>`/`<ol>`
8292
+ * lists, nesting them by level. Each paragraph becomes an `<li>` without Word's
8293
+ * hanging indent
8294
+ */ function wrapWordListItems(items) {
8295
+ var stack = [];
8296
+ var continues = items.map(function(item, index) {
8297
+ return index > 0 && isAdjacent(items[index - 1], item);
8298
+ });
8299
+ items.forEach(function(item, index) {
8300
+ var paragraph = item.paragraph;
8301
+ if (!continues[index]) {
8302
+ stack = [];
8303
+ }
8304
+ while(stack.length && stack[stack.length - 1].level > item.level){
8305
+ stack.pop();
8306
+ }
8307
+ var top = stack[stack.length - 1];
8308
+ if (top && top.level === item.level && top.list !== item.list) {
8309
+ stack.pop();
8310
+ top = stack[stack.length - 1];
8311
+ }
8312
+ var doc = paragraph.ownerDocument;
8313
+ if (!top || top.level < item.level) {
8314
+ var element = doc.createElement(item.tag);
8315
+ if (item.listStyleType) {
8316
+ element.style.listStyleType = item.listStyleType;
8317
+ }
8318
+ if (item.tag === 'ol' && item.start !== 1) {
8319
+ (0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_2__.attr)(element, 'start', item.start);
8320
+ }
8321
+ if (top && top.li) {
8322
+ top.li.appendChild(element);
8323
+ } else {
8324
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.before(paragraph, element);
8325
+ }
8326
+ top = {
8327
+ level: item.level,
8328
+ list: item.list,
8329
+ element: element
8330
+ };
8331
+ stack.push(top);
8332
+ }
8333
+ var li = doc.createElement('li');
8334
+ (0,_array_to_array_js__WEBPACK_IMPORTED_MODULE_1__.toArray)(paragraph.attributes).forEach(function(attribute) {
8335
+ if (attribute.name !== 'class') {
8336
+ li.setAttribute(attribute.name, attribute.value);
8337
+ }
8338
+ });
8339
+ li.style.removeProperty('margin-left');
8340
+ li.style.removeProperty('text-indent');
8341
+ if (!(0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_2__.attr)(li, 'style')) {
8342
+ (0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_2__.attr)(li, 'style', null);
8343
+ }
8344
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.moveContent(paragraph, li);
8345
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(paragraph);
8346
+ top.element.appendChild(li);
8347
+ top.li = li;
8348
+ });
8349
+ }
8350
+
8351
+
8112
8352
  /***/ }),
8113
8353
 
8114
8354
  /***/ 21537:
@@ -13898,13 +14138,15 @@ function usable(ranges, shadowRoot) {
13898
14138
  /* harmony export */ composedRanges: function() { return /* reexport safe */ _composed_ranges_js__WEBPACK_IMPORTED_MODULE_2__.composedRanges; },
13899
14139
  /* harmony export */ cursorInTheEdgeOfString: function() { return /* binding */ cursorInTheEdgeOfString; },
13900
14140
  /* harmony export */ findCorrectCurrentNode: function() { return /* binding */ findCorrectCurrentNode; },
13901
- /* harmony export */ moveNodeInsideStart: function() { return /* reexport safe */ _move_node_inside_start_js__WEBPACK_IMPORTED_MODULE_3__.moveNodeInsideStart; }
14141
+ /* harmony export */ isMoved: function() { return /* reexport safe */ _is_moved_js__WEBPACK_IMPORTED_MODULE_3__.isMoved; },
14142
+ /* harmony export */ moveNodeInsideStart: function() { return /* reexport safe */ _move_node_inside_start_js__WEBPACK_IMPORTED_MODULE_4__.moveNodeInsideStart; }
13902
14143
  /* harmony export */ });
13903
14144
  /* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82758);
13904
14145
  /* harmony import */ var _dom_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2748);
13905
14146
  /* harmony import */ var _composed_ranges_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(79505);
13906
- /* harmony import */ var _move_node_inside_start_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(26716);
13907
- /* harmony import */ var _move_the_node_along_the_edge_outward_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(43463);
14147
+ /* harmony import */ var _is_moved_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12604);
14148
+ /* harmony import */ var _move_node_inside_start_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(26716);
14149
+ /* harmony import */ var _move_the_node_along_the_edge_outward_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(43463);
13908
14150
  /*!
13909
14151
  * Jodit Editor (https://xdsoft.net/jodit/)
13910
14152
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -13916,6 +14158,7 @@ function usable(ranges, shadowRoot) {
13916
14158
 
13917
14159
 
13918
14160
 
14161
+
13919
14162
  /**
13920
14163
  * Despite the name, returns `true` when the cursor is NOT at the checked edge
13921
14164
  * of the text node: there is significant (non invisible-space) text between
@@ -13973,6 +14216,33 @@ function findCorrectCurrentNode(node, range, rightMode, isCollapsed, checkChild,
13973
14216
  }
13974
14217
 
13975
14218
 
14219
+ /***/ }),
14220
+
14221
+ /***/ 12604:
14222
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
14223
+
14224
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
14225
+ /* harmony export */ isMoved: function() { return /* binding */ isMoved; }
14226
+ /* harmony export */ });
14227
+ /*!
14228
+ * Jodit Editor (https://xdsoft.net/jodit/)
14229
+ * Released under MIT see LICENSE.txt in the project root for license information.
14230
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
14231
+ */ /**
14232
+ * Whether the selection, `before` as it was when a key went down, has since
14233
+ * moved to somewhere else in the editor
14234
+ * @private
14235
+ */ function isMoved(jodit, before) {
14236
+ var s = jodit.s;
14237
+ // Selecting table cells, for one, removes the selection altogether
14238
+ if (!before || !s.isInsideArea) {
14239
+ return false;
14240
+ }
14241
+ var range = s.range;
14242
+ return range.startContainer !== before.startContainer || range.startOffset !== before.startOffset || range.endContainer !== before.endContainer || range.endOffset !== before.endOffset;
14243
+ }
14244
+
14245
+
13976
14246
  /***/ }),
13977
14247
 
13978
14248
  /***/ 26716:
@@ -16678,11 +16948,13 @@ function elementsEqualAttributes(elm1, elm2) {
16678
16948
  /* harmony export */ toggleOrderedList: function() { return /* binding */ toggleOrderedList; }
16679
16949
  /* harmony export */ });
16680
16950
  /* harmony import */ var _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
16681
- /* harmony import */ var _helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(38837);
16682
- /* harmony import */ var _extract_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(32526);
16683
- /* harmony import */ var _toggle_attributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(44253);
16684
- /* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(77361);
16685
- /* harmony import */ var _wrap_list_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(82515);
16951
+ /* harmony import */ var _helpers_size_object_size_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(21496);
16952
+ /* harmony import */ var _helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(38837);
16953
+ /* harmony import */ var _extract_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(32526);
16954
+ /* harmony import */ var _is_same_attributes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(94466);
16955
+ /* harmony import */ var _toggle_attributes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(44253);
16956
+ /* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(77361);
16957
+ /* harmony import */ var _wrap_list_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(82515);
16686
16958
  /*!
16687
16959
  * Jodit Editor (https://xdsoft.net/jodit/)
16688
16960
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -16693,6 +16965,8 @@ function elementsEqualAttributes(elm1, elm2) {
16693
16965
 
16694
16966
 
16695
16967
 
16968
+
16969
+
16696
16970
  /**
16697
16971
  * Replaces `ul->ol` or `ol->ul`, apply styles to the list, or remove a list item from it
16698
16972
  * @private
@@ -16704,39 +16978,70 @@ function elementsEqualAttributes(elm1, elm2) {
16704
16978
  if (!list) {
16705
16979
  return mode;
16706
16980
  }
16707
- var result = jodit.e.fire("".concat(_constants_js__WEBPACK_IMPORTED_MODULE_4__._PREFIX, "BeforeToggleList"), mode, commitStyle, list);
16981
+ var result = jodit.e.fire("".concat(_constants_js__WEBPACK_IMPORTED_MODULE_6__._PREFIX, "BeforeToggleList"), mode, commitStyle, list);
16708
16982
  if (result !== undefined) {
16709
16983
  return result;
16710
16984
  }
16711
- var hook = jodit.e.fire.bind(jodit.e, "".concat(_constants_js__WEBPACK_IMPORTED_MODULE_4__._PREFIX, "AfterToggleList"));
16712
- if (mode !== _constants_js__WEBPACK_IMPORTED_MODULE_4__.UNWRAP) {
16713
- var isChangeMode = (0,_toggle_attributes_js__WEBPACK_IMPORTED_MODULE_3__.toggleAttributes)(commitStyle, li.parentElement, jodit, _constants_js__WEBPACK_IMPORTED_MODULE_4__.INITIAL, true) === _constants_js__WEBPACK_IMPORTED_MODULE_4__.CHANGE;
16985
+ var hook = jodit.e.fire.bind(jodit.e, "".concat(_constants_js__WEBPACK_IMPORTED_MODULE_6__._PREFIX, "AfterToggleList"));
16986
+ if (mode !== _constants_js__WEBPACK_IMPORTED_MODULE_6__.UNWRAP) {
16987
+ var isChangeMode = (0,_toggle_attributes_js__WEBPACK_IMPORTED_MODULE_5__.toggleAttributes)(commitStyle, li.parentElement, jodit, _constants_js__WEBPACK_IMPORTED_MODULE_6__.INITIAL, true) === _constants_js__WEBPACK_IMPORTED_MODULE_6__.CHANGE;
16988
+ var isSameList = _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(list, commitStyle.element);
16989
+ // ol => ol[style="list-style-type: lower-roman"]: a list's style
16990
+ // belongs to the whole list, so it is changed without splitting it
16991
+ if (isSameList && isChangeMode && mode !== _constants_js__WEBPACK_IMPORTED_MODULE_6__.REPLACE && changesStyleOnly(commitStyle)) {
16992
+ (0,_toggle_attributes_js__WEBPACK_IMPORTED_MODULE_5__.toggleAttributes)(commitStyle, list, jodit, _constants_js__WEBPACK_IMPORTED_MODULE_6__.CHANGE);
16993
+ hook(_constants_js__WEBPACK_IMPORTED_MODULE_6__.CHANGE, joinPrevious(commitStyle, list, mode), commitStyle);
16994
+ return _constants_js__WEBPACK_IMPORTED_MODULE_6__.CHANGE;
16995
+ }
16996
+ // Restyled already, for an earlier part of the selection
16997
+ if (isSameList && mode === _constants_js__WEBPACK_IMPORTED_MODULE_6__.CHANGE) {
16998
+ return _constants_js__WEBPACK_IMPORTED_MODULE_6__.CHANGE;
16999
+ }
16714
17000
  // ul => ol, ol => ul or ul => ul.class1
16715
- if (mode === _constants_js__WEBPACK_IMPORTED_MODULE_4__.REPLACE || isChangeMode || list.tagName.toLowerCase() !== commitStyle.element) {
16716
- var wrapper = unwrapList(_constants_js__WEBPACK_IMPORTED_MODULE_4__.REPLACE, list, li, jodit, commitStyle);
16717
- var newList = (0,_wrap_list_js__WEBPACK_IMPORTED_MODULE_5__.wrapList)(commitStyle, wrapper, jodit);
16718
- hook(_constants_js__WEBPACK_IMPORTED_MODULE_4__.REPLACE, newList, commitStyle);
16719
- return _constants_js__WEBPACK_IMPORTED_MODULE_4__.REPLACE;
17001
+ if (mode === _constants_js__WEBPACK_IMPORTED_MODULE_6__.REPLACE || isChangeMode || !isSameList) {
17002
+ var wrapper = unwrapList(_constants_js__WEBPACK_IMPORTED_MODULE_6__.REPLACE, list, li, jodit, commitStyle);
17003
+ var newList = (0,_wrap_list_js__WEBPACK_IMPORTED_MODULE_7__.wrapList)(commitStyle, wrapper, jodit);
17004
+ hook(_constants_js__WEBPACK_IMPORTED_MODULE_6__.REPLACE, newList, commitStyle);
17005
+ return _constants_js__WEBPACK_IMPORTED_MODULE_6__.REPLACE;
16720
17006
  }
16721
17007
  }
16722
- var wrapper1 = unwrapList(_constants_js__WEBPACK_IMPORTED_MODULE_4__.UNWRAP, list, li, jodit, commitStyle);
16723
- hook(_constants_js__WEBPACK_IMPORTED_MODULE_4__.UNWRAP, wrapper1, commitStyle);
16724
- return _constants_js__WEBPACK_IMPORTED_MODULE_4__.UNWRAP;
17008
+ var wrapper1 = unwrapList(_constants_js__WEBPACK_IMPORTED_MODULE_6__.UNWRAP, list, li, jodit, commitStyle);
17009
+ hook(_constants_js__WEBPACK_IMPORTED_MODULE_6__.UNWRAP, wrapper1, commitStyle);
17010
+ return _constants_js__WEBPACK_IMPORTED_MODULE_6__.UNWRAP;
17011
+ }
17012
+ /**
17013
+ * Other attributes, such as a class, still move the items into a new list,
17014
+ * where the `beforeWrapList` hook can add markup to each of them
17015
+ */ function changesStyleOnly(param) {
17016
+ var attributes = param.options.attributes;
17017
+ return Boolean(attributes === null || attributes === void 0 ? void 0 : attributes.style) && (0,_helpers_size_object_size_js__WEBPACK_IMPORTED_MODULE_1__.size)(attributes) === 1;
17018
+ }
17019
+ /**
17020
+ * Joins a restyled list to the list before it, when the selection runs on
17021
+ * from that list and the two now match
17022
+ */ function joinPrevious(commitStyle, list, mode) {
17023
+ var prev = _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.findSibling(list, true);
17024
+ if (mode !== _constants_js__WEBPACK_IMPORTED_MODULE_6__.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)) {
17025
+ return list;
17026
+ }
17027
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.append(prev, Array.from(list.childNodes));
17028
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(list);
17029
+ return prev;
16725
17030
  }
16726
17031
  function unwrapList(mode, list, li, jodit, cs) {
16727
- var result = jodit.e.fire("".concat(_constants_js__WEBPACK_IMPORTED_MODULE_4__._PREFIX, "BeforeUnwrapList"), mode, list, cs);
17032
+ var result = jodit.e.fire("".concat(_constants_js__WEBPACK_IMPORTED_MODULE_6__._PREFIX, "BeforeUnwrapList"), mode, list, cs);
16728
17033
  if (result) {
16729
- (0,_helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_1__.assert)(_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isHTMLElement(result), "".concat(_constants_js__WEBPACK_IMPORTED_MODULE_4__._PREFIX, "BeforeUnwrapList hook must return HTMLElement"));
17034
+ (0,_helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_2__.assert)(_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isHTMLElement(result), "".concat(_constants_js__WEBPACK_IMPORTED_MODULE_6__._PREFIX, "BeforeUnwrapList hook must return HTMLElement"));
16730
17035
  return result;
16731
17036
  }
16732
- ;(0,_extract_js__WEBPACK_IMPORTED_MODULE_2__.extractSelectedPart)(list, li, jodit);
16733
- (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');
17037
+ ;(0,_extract_js__WEBPACK_IMPORTED_MODULE_3__.extractSelectedPart)(list, li, jodit);
17038
+ (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');
16734
17039
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.unwrap(li.parentElement);
16735
17040
  // In the REPLACE mode the content will be immediately wrapped in a `li`
16736
17041
  // of the new list inside `wrapList`, so it should stay in the document.
16737
17042
  // Replacing it with a fragment here would dissolve the content
16738
17043
  // (with `enter: 'br'`) and the new list would never be inserted.
16739
- if (mode === _constants_js__WEBPACK_IMPORTED_MODULE_4__.REPLACE) {
17044
+ if (mode === _constants_js__WEBPACK_IMPORTED_MODULE_6__.REPLACE) {
16740
17045
  return li;
16741
17046
  }
16742
17047
  return _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.replace(li, jodit.o.enter.toLowerCase() !== 'br' ? jodit.o.enter : jodit.createInside.fragment(), jodit.createInside);
@@ -17610,7 +17915,7 @@ var transactions = (_obj = {}, _define_property(_obj, states.START, {
17610
17915
  }), _define_property(_obj, states.LIST, {
17611
17916
  exec: function exec(value) {
17612
17917
  var element = value.element, jodit = value.jodit, mode = value.mode;
17613
- if (mode !== _constants_js__WEBPACK_IMPORTED_MODULE_4__.INITIAL && mode !== _constants_js__WEBPACK_IMPORTED_MODULE_4__.UNWRAP && mode !== _constants_js__WEBPACK_IMPORTED_MODULE_4__.REPLACE) {
17918
+ if (mode !== _constants_js__WEBPACK_IMPORTED_MODULE_4__.INITIAL && mode !== _constants_js__WEBPACK_IMPORTED_MODULE_4__.UNWRAP && mode !== _constants_js__WEBPACK_IMPORTED_MODULE_4__.REPLACE && mode !== _constants_js__WEBPACK_IMPORTED_MODULE_4__.CHANGE) {
17614
17919
  return _object_spread_props(_object_spread({}, value), {
17615
17920
  next: states.END
17616
17921
  });
@@ -24258,6 +24563,7 @@ function _unsupported_iterable_to_array(o, minLen) {
24258
24563
  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;
24259
24564
  return c > 3 && r && Object.defineProperty(target, key, r), r;
24260
24565
  };
24566
+ var Popup_1;
24261
24567
 
24262
24568
 
24263
24569
 
@@ -24274,7 +24580,7 @@ var EVENTS_FOR_AUTOCLOSE = [
24274
24580
  'backSpaceAfterDelete',
24275
24581
  'beforeCommandDelete'
24276
24582
  ];
24277
- var Popup = /*#__PURE__*/ function(UIGroup) {
24583
+ var Popup = Popup_1 = /*#__PURE__*/ function(UIGroup) {
24278
24584
  "use strict";
24279
24585
  _inherits(Popup, UIGroup);
24280
24586
  function Popup(jodit) {
@@ -24318,7 +24624,7 @@ var Popup = /*#__PURE__*/ function(UIGroup) {
24318
24624
  key: "updateParentElement",
24319
24625
  value: function updateParentElement(target) {
24320
24626
  var _this = this;
24321
- if (target !== this && _component_component_js__WEBPACK_IMPORTED_MODULE_0__.Component.isInstanceOf(target, Popup)) {
24627
+ if (target !== this && _component_component_js__WEBPACK_IMPORTED_MODULE_0__.Component.isInstanceOf(target, Popup_1)) {
24322
24628
  this.__childrenPopups.forEach(function(popup) {
24323
24629
  if (!target.closest(popup) && popup.isOpened) {
24324
24630
  popup.close();
@@ -24367,7 +24673,7 @@ var Popup = /*#__PURE__*/ function(UIGroup) {
24367
24673
  if (parentContainer) {
24368
24674
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(parentContainer, this.container);
24369
24675
  } else {
24370
- var popupContainer = (0,_global_js__WEBPACK_IMPORTED_MODULE_3__.getContainer)(this.jodit, Popup);
24676
+ var popupContainer = (0,_global_js__WEBPACK_IMPORTED_MODULE_3__.getContainer)(this.jodit, Popup_1);
24371
24677
  if (parentContainer !== this.container.parentElement) {
24372
24678
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(popupContainer, this.container);
24373
24679
  }
@@ -24503,11 +24809,11 @@ var Popup = /*#__PURE__*/ function(UIGroup) {
24503
24809
  };
24504
24810
  var getMatchStrategy = function getMatchStrategy(inBox) {
24505
24811
  var strategy;
24506
- if (Popup.boxInView(getPointByStrategy(defaultStrategy), inBox)) {
24812
+ if (Popup_1.boxInView(getPointByStrategy(defaultStrategy), inBox)) {
24507
24813
  strategy = defaultStrategy;
24508
24814
  } else {
24509
24815
  strategy = list.find(function(key) {
24510
- if (Popup.boxInView(getPointByStrategy(key), inBox)) {
24816
+ if (Popup_1.boxInView(getPointByStrategy(key), inBox)) {
24511
24817
  return key;
24512
24818
  }
24513
24819
  return;
@@ -24518,7 +24824,7 @@ var Popup = /*#__PURE__*/ function(UIGroup) {
24518
24824
  // Try to find match position inside Jodit.container
24519
24825
  var strategy = getMatchStrategy((0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.position)(this.j.container, this.j));
24520
24826
  // If not found or is not inside window view
24521
- if (!strategy || !Popup.boxInView(getPointByStrategy(strategy), view)) {
24827
+ if (!strategy || !Popup_1.boxInView(getPointByStrategy(strategy), view)) {
24522
24828
  // Find match strategy inside window view
24523
24829
  strategy = getMatchStrategy(view) || strategy || defaultStrategy;
24524
24830
  }
@@ -24573,7 +24879,7 @@ var Popup = /*#__PURE__*/ function(UIGroup) {
24573
24879
  if (!e.target) {
24574
24880
  return false;
24575
24881
  }
24576
- var box = _element_js__WEBPACK_IMPORTED_MODULE_7__.UIElement.closestElement(e.target, Popup);
24882
+ var box = _element_js__WEBPACK_IMPORTED_MODULE_7__.UIElement.closestElement(e.target, Popup_1);
24577
24883
  return Boolean(box && (this === box || box.closest(this)));
24578
24884
  }
24579
24885
  },
@@ -24656,6 +24962,10 @@ __decorate([
24656
24962
  __decorate([
24657
24963
  _decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.autobind
24658
24964
  ], Popup.prototype, "__closeOnOutsideClick", null);
24965
+ Popup = Popup_1 = __decorate([
24966
+ _decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.component
24967
+ ], Popup);
24968
+
24659
24969
 
24660
24970
 
24661
24971
  /***/ }),
@@ -26587,7 +26897,7 @@ var Jodit = Jodit_1 = /*#__PURE__*/ function(ViewWithToolbar) {
26587
26897
  commands.push(command);
26588
26898
  if (!(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.isFunction)(command)) {
26589
26899
  var hotkeys = this.o.commandToHotkeys[commandName] || this.o.commandToHotkeys[commandNameOriginal] || command.hotkeys;
26590
- if (hotkeys) {
26900
+ if (hotkeys && hotkeys.length) {
26591
26901
  this.registerHotkeyToCommand(hotkeys, commandName, options === null || options === void 0 ? void 0 : options.stopPropagation);
26592
26902
  }
26593
26903
  }
@@ -26601,6 +26911,10 @@ var Jodit = Jodit_1 = /*#__PURE__*/ function(ViewWithToolbar) {
26601
26911
  value: function registerHotkeyToCommand(hotkeys, commandName) {
26602
26912
  var _this = this;
26603
26913
  var shouldStop = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true;
26914
+ // An empty list (e.g. `commandToHotkeys: { cmd: [] }`) turns the key off
26915
+ if (!hotkeys || !hotkeys.length) {
26916
+ return;
26917
+ }
26604
26918
  var shortcuts = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.asArray)(hotkeys).map(_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.normalizeKeyAliases).map(function(hotkey) {
26605
26919
  return hotkey + '.hotkey';
26606
26920
  }).join(' ');
@@ -27764,7 +28078,10 @@ function addClassNames(className, elm) {
27764
28078
  Autoplay: 'تشغيل تلقائي',
27765
28079
  Loop: 'تكرار',
27766
28080
  Muted: 'مكتوم الصوت',
27767
- Controls: 'عناصر التحكم'
28081
+ Controls: 'عناصر التحكم',
28082
+ 'Start at...': 'البدء من...',
28083
+ 'Start numbering at': 'بدء الترقيم من',
28084
+ 'Number for the first item': 'رقم العنصر الأول'
27768
28085
  });
27769
28086
 
27770
28087
 
@@ -28005,7 +28322,10 @@ function addClassNames(className, elm) {
28005
28322
  Autoplay: 'Avtomatik oynatma',
28006
28323
  Loop: 'Təkrarla',
28007
28324
  Muted: 'Səssiz',
28008
- Controls: 'İdarəetmə elementləri'
28325
+ Controls: 'İdarəetmə elementləri',
28326
+ 'Start at...': 'Başlanğıc nömrəsi...',
28327
+ 'Start numbering at': 'Nömrələmənin başlanğıcı',
28328
+ 'Number for the first item': 'Birinci bəndin nömrəsi'
28009
28329
  });
28010
28330
 
28011
28331
 
@@ -28238,7 +28558,10 @@ function addClassNames(className, elm) {
28238
28558
  Autoplay: 'Automatické přehrávání',
28239
28559
  Loop: 'Opakovat',
28240
28560
  Muted: 'Ztlumeno',
28241
- Controls: 'Ovládací prvky'
28561
+ Controls: 'Ovládací prvky',
28562
+ 'Start at...': 'Začít od...',
28563
+ 'Start numbering at': 'Začít číslování od',
28564
+ 'Number for the first item': 'Číslo první položky'
28242
28565
  });
28243
28566
 
28244
28567
 
@@ -28475,7 +28798,10 @@ function addClassNames(className, elm) {
28475
28798
  Autoplay: 'Automatische Wiedergabe',
28476
28799
  Loop: 'Wiederholen',
28477
28800
  Muted: 'Stumm',
28478
- Controls: 'Steuerelemente'
28801
+ Controls: 'Steuerelemente',
28802
+ 'Start at...': 'Beginnen bei...',
28803
+ 'Start numbering at': 'Nummerierung beginnen bei',
28804
+ 'Number for the first item': 'Nummer des ersten Eintrags'
28479
28805
  });
28480
28806
 
28481
28807
 
@@ -28729,7 +29055,10 @@ function addClassNames(className, elm) {
28729
29055
  Autoplay: 'Reproducción automática',
28730
29056
  Loop: 'Repetir',
28731
29057
  Muted: 'Silenciado',
28732
- Controls: 'Controles'
29058
+ Controls: 'Controles',
29059
+ 'Start at...': 'Empezar en...',
29060
+ 'Start numbering at': 'Empezar la numeración en',
29061
+ 'Number for the first item': 'Número del primer elemento'
28733
29062
  });
28734
29063
 
28735
29064
 
@@ -28961,7 +29290,10 @@ function addClassNames(className, elm) {
28961
29290
  Autoplay: 'پخش خودکار',
28962
29291
  Loop: 'تکرار',
28963
29292
  Muted: 'بی‌صدا',
28964
- Controls: 'کنترل‌ها'
29293
+ Controls: 'کنترل‌ها',
29294
+ 'Start at...': 'شروع از...',
29295
+ 'Start numbering at': 'شروع شماره‌گذاری از',
29296
+ 'Number for the first item': 'شماره‌ی نخستین مورد'
28965
29297
  });
28966
29298
 
28967
29299
 
@@ -29199,7 +29531,10 @@ function addClassNames(className, elm) {
29199
29531
  Autoplay: 'Automaattinen toisto',
29200
29532
  Loop: 'Toista uudelleen',
29201
29533
  Muted: 'Mykistetty',
29202
- Controls: 'Säätimet'
29534
+ Controls: 'Säätimet',
29535
+ 'Start at...': 'Aloita numerosta...',
29536
+ 'Start numbering at': 'Aloita numerointi numerosta',
29537
+ 'Number for the first item': 'Ensimmäisen kohdan numero'
29203
29538
  });
29204
29539
 
29205
29540
 
@@ -29431,7 +29766,10 @@ function addClassNames(className, elm) {
29431
29766
  Autoplay: 'Lecture automatique',
29432
29767
  Loop: 'Lecture en boucle',
29433
29768
  Muted: 'Muet',
29434
- Controls: 'Commandes'
29769
+ Controls: 'Commandes',
29770
+ 'Start at...': 'Commencer à...',
29771
+ 'Start numbering at': 'Commencer la numérotation à',
29772
+ 'Number for the first item': 'Numéro du premier élément'
29435
29773
  });
29436
29774
 
29437
29775
 
@@ -29663,7 +30001,10 @@ function addClassNames(className, elm) {
29663
30001
  Autoplay: 'ניגון אוטומטי',
29664
30002
  Loop: 'הפעלה חוזרת',
29665
30003
  Muted: 'מושתק',
29666
- Controls: 'פקדים'
30004
+ Controls: 'פקדים',
30005
+ 'Start at...': 'התחל מ...',
30006
+ 'Start numbering at': 'התחל מספור מ',
30007
+ 'Number for the first item': 'מספר הפריט הראשון'
29667
30008
  });
29668
30009
 
29669
30010
 
@@ -29897,7 +30238,10 @@ function addClassNames(className, elm) {
29897
30238
  Autoplay: 'Automatikus lejátszás',
29898
30239
  Loop: 'Ismétlés',
29899
30240
  Muted: 'Némítva',
29900
- Controls: 'Vezérlők'
30241
+ Controls: 'Vezérlők',
30242
+ 'Start at...': 'Kezdőszám...',
30243
+ 'Start numbering at': 'Számozás kezdőértéke',
30244
+ 'Number for the first item': 'Az első elem száma'
29901
30245
  });
29902
30246
 
29903
30247
 
@@ -30130,7 +30474,10 @@ function addClassNames(className, elm) {
30130
30474
  Autoplay: 'Putar otomatis',
30131
30475
  Loop: 'Ulangi',
30132
30476
  Muted: 'Dibisukan',
30133
- Controls: 'Kontrol'
30477
+ Controls: 'Kontrol',
30478
+ 'Start at...': 'Mulai dari...',
30479
+ 'Start numbering at': 'Mulai penomoran dari',
30480
+ 'Number for the first item': 'Nomor untuk item pertama'
30134
30481
  });
30135
30482
 
30136
30483
 
@@ -30367,7 +30714,10 @@ function addClassNames(className, elm) {
30367
30714
  Autoplay: 'Riproduzione automatica',
30368
30715
  Loop: 'Ripeti',
30369
30716
  Muted: 'Muto',
30370
- Controls: 'Controlli'
30717
+ Controls: 'Controlli',
30718
+ 'Start at...': 'Inizia da...',
30719
+ 'Start numbering at': 'Inizia la numerazione da',
30720
+ 'Number for the first item': 'Numero del primo elemento'
30371
30721
  });
30372
30722
 
30373
30723
 
@@ -30604,7 +30954,10 @@ function addClassNames(className, elm) {
30604
30954
  Autoplay: '自動再生',
30605
30955
  Loop: 'ループ再生',
30606
30956
  Muted: 'ミュート',
30607
- Controls: 'コントロール'
30957
+ Controls: 'コントロール',
30958
+ 'Start at...': '開始番号...',
30959
+ 'Start numbering at': '番号の開始値',
30960
+ 'Number for the first item': '最初の項目の番号'
30608
30961
  });
30609
30962
 
30610
30963
 
@@ -30847,7 +31200,10 @@ function addClassNames(className, elm) {
30847
31200
  Autoplay: '자동 재생',
30848
31201
  Loop: '반복 재생',
30849
31202
  Muted: '음소거',
30850
- Controls: '컨트롤'
31203
+ Controls: '컨트롤',
31204
+ 'Start at...': '시작 번호...',
31205
+ 'Start numbering at': '번호 매기기 시작 값',
31206
+ 'Number for the first item': '첫 번째 항목의 번호'
30851
31207
  });
30852
31208
 
30853
31209
 
@@ -31079,7 +31435,10 @@ function addClassNames(className, elm) {
31079
31435
  Autoplay: 'Автоматаар тоглуулах',
31080
31436
  Loop: 'Давтах',
31081
31437
  Muted: 'Дуугүй',
31082
- Controls: 'Удирдлага'
31438
+ Controls: 'Удирдлага',
31439
+ 'Start at...': 'Эхлэх дугаар...',
31440
+ 'Start numbering at': 'Дугаарлалт эхлэх',
31441
+ 'Number for the first item': 'Эхний зүйлийн дугаар'
31083
31442
  });
31084
31443
 
31085
31444
 
@@ -31312,7 +31671,10 @@ function addClassNames(className, elm) {
31312
31671
  Autoplay: 'Automatisch afspelen',
31313
31672
  Loop: 'Herhalen',
31314
31673
  Muted: 'Gedempt',
31315
- Controls: 'Bedieningselementen'
31674
+ Controls: 'Bedieningselementen',
31675
+ 'Start at...': 'Beginnen bij...',
31676
+ 'Start numbering at': 'Nummering beginnen bij',
31677
+ 'Number for the first item': 'Nummer van het eerste item'
31316
31678
  });
31317
31679
 
31318
31680
 
@@ -31553,7 +31915,10 @@ function addClassNames(className, elm) {
31553
31915
  Autoplay: 'Automatisk avspilling',
31554
31916
  Loop: 'Gjenta',
31555
31917
  Muted: 'Dempet',
31556
- Controls: 'Kontroller'
31918
+ Controls: 'Kontroller',
31919
+ 'Start at...': 'Start på...',
31920
+ 'Start numbering at': 'Start nummereringen på',
31921
+ 'Number for the first item': 'Nummer for første punkt'
31557
31922
  });
31558
31923
 
31559
31924
 
@@ -31785,7 +32150,10 @@ function addClassNames(className, elm) {
31785
32150
  Autoplay: 'Autoodtwarzanie',
31786
32151
  Loop: 'Zapętlenie',
31787
32152
  Muted: 'Wyciszony',
31788
- Controls: 'Elementy sterujące'
32153
+ Controls: 'Elementy sterujące',
32154
+ 'Start at...': 'Zacznij od...',
32155
+ 'Start numbering at': 'Rozpocznij numerowanie od',
32156
+ 'Number for the first item': 'Numer pierwszego elementu'
31789
32157
  });
31790
32158
 
31791
32159
 
@@ -32022,7 +32390,10 @@ function addClassNames(className, elm) {
32022
32390
  Autoplay: 'Reprodução automática',
32023
32391
  Loop: 'Repetir',
32024
32392
  Muted: 'Sem som',
32025
- Controls: 'Controles'
32393
+ Controls: 'Controles',
32394
+ 'Start at...': 'Começar em...',
32395
+ 'Start numbering at': 'Começar a numeração em',
32396
+ 'Number for the first item': 'Número do primeiro item'
32026
32397
  });
32027
32398
 
32028
32399
 
@@ -32253,7 +32624,10 @@ function addClassNames(className, elm) {
32253
32624
  Autoplay: 'Автовоспроизведение',
32254
32625
  Loop: 'Повтор',
32255
32626
  Muted: 'Без звука',
32256
- Controls: 'Элементы управления'
32627
+ Controls: 'Элементы управления',
32628
+ 'Start at...': 'Начать с...',
32629
+ 'Start numbering at': 'Начать нумерацию с',
32630
+ 'Number for the first item': 'Номер первого пункта'
32257
32631
  });
32258
32632
 
32259
32633
 
@@ -32492,7 +32866,10 @@ function addClassNames(className, elm) {
32492
32866
  Autoplay: 'Automatické prehrávanie',
32493
32867
  Loop: 'Opakovať',
32494
32868
  Muted: 'Stlmené',
32495
- Controls: 'Ovládacie prvky'
32869
+ Controls: 'Ovládacie prvky',
32870
+ 'Start at...': 'Začať od...',
32871
+ 'Start numbering at': 'Začať číslovanie od',
32872
+ 'Number for the first item': 'Číslo prvej položky'
32496
32873
  });
32497
32874
 
32498
32875
 
@@ -32732,7 +33109,10 @@ function addClassNames(className, elm) {
32732
33109
  Autoplay: 'Automatisk uppspelning',
32733
33110
  Loop: 'Upprepa',
32734
33111
  Muted: 'Ljudlös',
32735
- Controls: 'Kontroller'
33112
+ Controls: 'Kontroller',
33113
+ 'Start at...': 'Börja på...',
33114
+ 'Start numbering at': 'Börja numreringen på',
33115
+ 'Number for the first item': 'Nummer för första punkten'
32736
33116
  });
32737
33117
 
32738
33118
 
@@ -32964,7 +33344,10 @@ function addClassNames(className, elm) {
32964
33344
  Autoplay: 'Otomatik oynat',
32965
33345
  Loop: 'Döngü',
32966
33346
  Muted: 'Sessiz',
32967
- Controls: 'Kontroller'
33347
+ Controls: 'Kontroller',
33348
+ 'Start at...': 'Başlangıç numarası...',
33349
+ 'Start numbering at': 'Numaralandırma başlangıcı',
33350
+ 'Number for the first item': 'İlk öğenin numarası'
32968
33351
  });
32969
33352
 
32970
33353
 
@@ -33195,7 +33578,10 @@ function addClassNames(className, elm) {
33195
33578
  Autoplay: 'Автовідтворення',
33196
33579
  Loop: 'Повтор',
33197
33580
  Muted: 'Без звуку',
33198
- Controls: 'Елементи керування'
33581
+ Controls: 'Елементи керування',
33582
+ 'Start at...': 'Почати з...',
33583
+ 'Start numbering at': 'Почати нумерацію з',
33584
+ 'Number for the first item': 'Номер першого пункту'
33199
33585
  });
33200
33586
 
33201
33587
 
@@ -33428,7 +33814,10 @@ function addClassNames(className, elm) {
33428
33814
  Autoplay: '自动播放',
33429
33815
  Loop: '循环播放',
33430
33816
  Muted: '静音',
33431
- Controls: '播放控件'
33817
+ Controls: '播放控件',
33818
+ 'Start at...': '起始于...',
33819
+ 'Start numbering at': '编号起始值',
33820
+ 'Number for the first item': '第一项的编号'
33432
33821
  });
33433
33822
 
33434
33823
 
@@ -33660,7 +34049,10 @@ function addClassNames(className, elm) {
33660
34049
  Autoplay: '自動播放',
33661
34050
  Loop: '循環播放',
33662
34051
  Muted: '靜音',
33663
- Controls: '播放控制項'
34052
+ Controls: '播放控制項',
34053
+ 'Start at...': '起始於...',
34054
+ 'Start numbering at': '編號起始值',
34055
+ 'Number for the first item': '第一項的編號'
33664
34056
  });
33665
34057
 
33666
34058
 
@@ -34536,7 +34928,12 @@ _config_js__WEBPACK_IMPORTED_MODULE_13__.Config.prototype.controls.dialog = {
34536
34928
  {
34537
34929
  key: "__onResizerMouseDown",
34538
34930
  value: function __onResizerMouseDown(e) {
34539
- var _a, _b, _c;
34931
+ var _a, _b;
34932
+ // As for the header: otherwise Safari selects the dialog's text as
34933
+ // the pointer moves
34934
+ if (e.cancelable) {
34935
+ e.preventDefault();
34936
+ }
34540
34937
  this.resizable = true;
34541
34938
  this.startX = e.clientX;
34542
34939
  this.startY = e.clientY;
@@ -34548,8 +34945,8 @@ _config_js__WEBPACK_IMPORTED_MODULE_13__.Config.prototype.controls.dialog = {
34548
34945
  // the content area does not shrink below its CSS `min-height`,
34549
34946
  // so it is part of the smallest height the panel can take
34550
34947
  var contentMinHeight = content ? parseFloat(this.ow.getComputedStyle(content).minHeight) || 0 : 0;
34551
- 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);
34552
- 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;
34948
+ 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);
34949
+ 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;
34553
34950
  this.lockSelect();
34554
34951
  this.__addGlobalResizeListeners();
34555
34952
  if (this.e) {
@@ -34559,6 +34956,21 @@ _config_js__WEBPACK_IMPORTED_MODULE_13__.Config.prototype.controls.dialog = {
34559
34956
  }
34560
34957
  }
34561
34958
  },
34959
+ {
34960
+ /**
34961
+ * The width `box` takes with its content on one line. The header and
34962
+ * footer are flex rows as wide as the dialog, so the footer's
34963
+ * `scrollWidth` was the dialog's width and kept it from getting any
34964
+ * narrower
34965
+ */ key: "__contentWidth",
34966
+ value: function __contentWidth(box) {
34967
+ var width = box.style.width;
34968
+ box.style.width = 'max-content';
34969
+ var contentWidth = box.offsetWidth;
34970
+ box.style.width = width;
34971
+ return contentWidth;
34972
+ }
34973
+ },
34562
34974
  {
34563
34975
  key: "__addGlobalResizeListeners",
34564
34976
  value: function __addGlobalResizeListeners() {
@@ -34570,7 +34982,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_13__.Config.prototype.controls.dialog = {
34570
34982
  key: "__removeGlobalResizeListeners",
34571
34983
  value: function __removeGlobalResizeListeners() {
34572
34984
  var self1 = this;
34573
- self1.e.off(self1.ow, 'mousemove pointermove', self1.__onMouseMove).off(self1.ow, 'mouseup pointerup', self1.__onMouseUp);
34985
+ self1.e.off(self1.ow, 'pointermove touchmove', self1.__onMouseMove).off(self1.ow, 'pointerup touchend', self1.__onMouseUp);
34574
34986
  }
34575
34987
  },
34576
34988
  {
@@ -38113,7 +38525,8 @@ var DEFAULT_SOURCE_NAME = 'default';
38113
38525
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
38114
38526
  /* harmony export */ FileBrowserFiles: function() { return /* binding */ FileBrowserFiles; }
38115
38527
  /* harmony export */ });
38116
- /* harmony import */ var _core_ui_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(67510);
38528
+ /* harmony import */ var _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(65478);
38529
+ /* harmony import */ var _core_ui_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(67510);
38117
38530
  function _assert_this_initialized(self) {
38118
38531
  if (self === void 0) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
38119
38532
  return self;
@@ -38185,7 +38598,14 @@ function _type_of(obj) {
38185
38598
  * Jodit Editor (https://xdsoft.net/jodit/)
38186
38599
  * Released under MIT see LICENSE.txt in the project root for license information.
38187
38600
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
38188
- */ ;
38601
+ */ var __decorate = undefined && undefined.__decorate || function(decorators, target, key, desc) {
38602
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
38603
+ if ((typeof Reflect === "undefined" ? "undefined" : _type_of(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
38604
+ 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;
38605
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
38606
+ };
38607
+
38608
+
38189
38609
  var FileBrowserFiles = /*#__PURE__*/ function(UIGroup) {
38190
38610
  "use strict";
38191
38611
  _inherits(FileBrowserFiles, UIGroup);
@@ -38202,7 +38622,11 @@ var FileBrowserFiles = /*#__PURE__*/ function(UIGroup) {
38202
38622
  }
38203
38623
  ]);
38204
38624
  return FileBrowserFiles;
38205
- }(_core_ui_index_js__WEBPACK_IMPORTED_MODULE_0__.UIGroup);
38625
+ }(_core_ui_index_js__WEBPACK_IMPORTED_MODULE_1__.UIGroup);
38626
+ FileBrowserFiles = __decorate([
38627
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.component
38628
+ ], FileBrowserFiles);
38629
+
38206
38630
 
38207
38631
 
38208
38632
  /***/ }),
@@ -38234,7 +38658,8 @@ var FileBrowserFiles = /*#__PURE__*/ function(UIGroup) {
38234
38658
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
38235
38659
  /* harmony export */ FileBrowserTree: function() { return /* binding */ FileBrowserTree; }
38236
38660
  /* harmony export */ });
38237
- /* harmony import */ var _core_ui_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(67510);
38661
+ /* harmony import */ var _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(65478);
38662
+ /* harmony import */ var _core_ui_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(67510);
38238
38663
  function _assert_this_initialized(self) {
38239
38664
  if (self === void 0) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
38240
38665
  return self;
@@ -38306,7 +38731,14 @@ function _type_of(obj) {
38306
38731
  * Jodit Editor (https://xdsoft.net/jodit/)
38307
38732
  * Released under MIT see LICENSE.txt in the project root for license information.
38308
38733
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
38309
- */ ;
38734
+ */ var __decorate = undefined && undefined.__decorate || function(decorators, target, key, desc) {
38735
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
38736
+ if ((typeof Reflect === "undefined" ? "undefined" : _type_of(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
38737
+ 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;
38738
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
38739
+ };
38740
+
38741
+
38310
38742
  var FileBrowserTree = /*#__PURE__*/ function(UIGroup) {
38311
38743
  "use strict";
38312
38744
  _inherits(FileBrowserTree, UIGroup);
@@ -38323,7 +38755,11 @@ var FileBrowserTree = /*#__PURE__*/ function(UIGroup) {
38323
38755
  }
38324
38756
  ]);
38325
38757
  return FileBrowserTree;
38326
- }(_core_ui_index_js__WEBPACK_IMPORTED_MODULE_0__.UIGroup);
38758
+ }(_core_ui_index_js__WEBPACK_IMPORTED_MODULE_1__.UIGroup);
38759
+ FileBrowserTree = __decorate([
38760
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.component
38761
+ ], FileBrowserTree);
38762
+
38327
38763
 
38328
38764
 
38329
38765
  /***/ }),
@@ -40784,11 +41220,10 @@ StatusBar = __decorate([
40784
41220
  /* harmony export */ });
40785
41221
  /* harmony import */ var _core_component_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(91907);
40786
41222
  /* harmony import */ var _core_constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(82758);
40787
- /* harmony import */ var _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(65478);
40788
- /* harmony import */ var _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(22732);
40789
- /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(580);
40790
- /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(21537);
40791
- /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(41180);
41223
+ /* harmony import */ var _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(22732);
41224
+ /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(580);
41225
+ /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(21537);
41226
+ /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(41180);
40792
41227
  function _array_like_to_array(arr, len) {
40793
41228
  if (len == null || len > arr.length) len = arr.length;
40794
41229
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
@@ -40926,14 +41361,7 @@ function _unsupported_iterable_to_array(o, minLen) {
40926
41361
  * Jodit Editor (https://xdsoft.net/jodit/)
40927
41362
  * Released under MIT see LICENSE.txt in the project root for license information.
40928
41363
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
40929
- */ var __decorate = undefined && undefined.__decorate || function(decorators, target, key, desc) {
40930
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
40931
- if ((typeof Reflect === "undefined" ? "undefined" : _type_of(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
40932
- 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;
40933
- return c > 3 && r && Object.defineProperty(target, key, r), r;
40934
- };
40935
-
40936
-
41364
+ */ ;
40937
41365
 
40938
41366
 
40939
41367
 
@@ -40948,6 +41376,20 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
40948
41376
  var _this;
40949
41377
  _this = _call_super(this, Table, arguments);
40950
41378
  _this.selected = new Set();
41379
+ /**
41380
+ * Rewrite the `<style>` that marks the selected cells once for all the
41381
+ * cells (un)selected in one go: a drag over a block of cells unmarks and
41382
+ * marks every one of them on each move. `@debounce()` was never applied,
41383
+ * as a Table never reaches `ready`
41384
+ */ _this.__recalculateStyles = _this.async.microDebounce(function() {
41385
+ var style = (0,_core_global_js__WEBPACK_IMPORTED_MODULE_3__.getContainer)(_this.j, Table, 'style', true);
41386
+ var selectors = [];
41387
+ _this.selected.forEach(function(td) {
41388
+ var selector = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.cssPath)(td);
41389
+ selector && selectors.push(selector);
41390
+ });
41391
+ style.innerHTML = selectors.length ? selectors.join(',') + "{".concat(_this.jodit.options.table.selectionCellStyle, "}") : '';
41392
+ });
40951
41393
  return _this;
40952
41394
  }
40953
41395
  _create_class(Table, [
@@ -40957,24 +41399,12 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
40957
41399
  return 'Table';
40958
41400
  }
40959
41401
  },
40960
- {
40961
- key: "__recalculateStyles",
40962
- value: function __recalculateStyles() {
40963
- var style = (0,_core_global_js__WEBPACK_IMPORTED_MODULE_4__.getContainer)(this.j, Table, 'style', true);
40964
- var selectors = [];
40965
- this.selected.forEach(function(td) {
40966
- var selector = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.cssPath)(td);
40967
- selector && selectors.push(selector);
40968
- });
40969
- style.innerHTML = selectors.length ? selectors.join(',') + "{".concat(this.jodit.options.table.selectionCellStyle, "}") : '';
40970
- }
40971
- },
40972
41402
  {
40973
41403
  key: "addSelection",
40974
41404
  value: function addSelection(td) {
40975
41405
  this.selected.add(td);
40976
41406
  this.__recalculateStyles();
40977
- var table = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.closest(td, 'table', this.j.editor);
41407
+ var table = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.closest(td, 'table', this.j.editor);
40978
41408
  if (table) {
40979
41409
  var cells = Table.__selectedByTable.get(table) || new Set();
40980
41410
  cells.add(td);
@@ -40987,7 +41417,7 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
40987
41417
  value: function removeSelection(td) {
40988
41418
  this.selected.delete(td);
40989
41419
  this.__recalculateStyles();
40990
- var table = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.closest(td, 'table', this.j.editor);
41420
+ var table = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.closest(td, 'table', this.j.editor);
40991
41421
  if (table) {
40992
41422
  var cells = Table.__selectedByTable.get(table);
40993
41423
  if (cells) {
@@ -41004,7 +41434,7 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41004
41434
  * Returns array of selected cells
41005
41435
  */ key: "getAllSelectedCells",
41006
41436
  value: function getAllSelectedCells() {
41007
- return (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.toArray)(this.selected);
41437
+ return (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.toArray)(this.selected);
41008
41438
  }
41009
41439
  },
41010
41440
  {
@@ -41077,7 +41507,7 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41077
41507
  value: function appendColumn(table, selectedCell) {
41078
41508
  var insertAfter = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true;
41079
41509
  var box = Table.__formalMatrix(table);
41080
- if (!insertAfter && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.isCell(selectedCell.previousElementSibling)) {
41510
+ if (!insertAfter && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isCell(selectedCell.previousElementSibling)) {
41081
41511
  return this.appendColumn(table, selectedCell.previousElementSibling, true);
41082
41512
  }
41083
41513
  var _Table___formalCoordinate = _sliced_to_array(Table.__formalCoordinate(table, selectedCell, insertAfter), 2), formalCol = _Table___formalCoordinate[1];
@@ -41087,11 +41517,11 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41087
41517
  var cells = box[i];
41088
41518
  if (cells[columnIndex] !== cells[newColumnIndex] || columnIndex === newColumnIndex) {
41089
41519
  var cell = this.j.createInside.element('td');
41090
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.append(cell, this.j.createInside.element('br'));
41520
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(cell, this.j.createInside.element('br'));
41091
41521
  if (insertAfter) {
41092
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.after(cells[columnIndex], cell);
41522
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.after(cells[columnIndex], cell);
41093
41523
  } else {
41094
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.before(cells[columnIndex], cell);
41524
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.before(cells[columnIndex], cell);
41095
41525
  }
41096
41526
  if (cells[columnIndex].rowSpan > 1) {
41097
41527
  cell.rowSpan = cells[columnIndex].rowSpan;
@@ -41164,7 +41594,7 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41164
41594
  key: "__getSelectedCellsByTable",
41165
41595
  value: function __getSelectedCellsByTable(table) {
41166
41596
  var cells = Table.__selectedByTable.get(table);
41167
- return cells ? (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.toArray)(cells) : [];
41597
+ return cells ? (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.toArray)(cells) : [];
41168
41598
  }
41169
41599
  },
41170
41600
  {
@@ -41188,7 +41618,7 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41188
41618
  var matrix = [
41189
41619
  []
41190
41620
  ];
41191
- var rows = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.toArray)(table.rows);
41621
+ var rows = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.toArray)(table.rows);
41192
41622
  var setCell = function setCell(cell, i) {
41193
41623
  if (matrix[i] === undefined) {
41194
41624
  matrix[i] = [];
@@ -41211,7 +41641,7 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41211
41641
  }
41212
41642
  };
41213
41643
  for(var i = 0; i < rows.length; i += 1){
41214
- var cells = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.toArray)(rows[i].cells);
41644
+ var cells = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.toArray)(rows[i].cells);
41215
41645
  for(var j = 0; j < cells.length; j += 1){
41216
41646
  if (setCell(cells[j], i) === false) {
41217
41647
  return matrix;
@@ -41256,35 +41686,35 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41256
41686
  row = create.element('tr');
41257
41687
  for(var j = 0; j < columnsCount; j += 1){
41258
41688
  var cell = create.element('td');
41259
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.append(cell, create.element('br'));
41260
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.append(row, cell);
41689
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(cell, create.element('br'));
41690
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(row, cell);
41261
41691
  }
41262
41692
  } else {
41263
41693
  row = line.cloneNode(true);
41264
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.each(line, function(cell) {
41265
- if (!_core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.isCell(cell)) {
41694
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.each(line, function(cell) {
41695
+ if (!_core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isCell(cell)) {
41266
41696
  return;
41267
41697
  }
41268
- var rowspan = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.attr)(cell, 'rowspan');
41698
+ var rowspan = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(cell, 'rowspan');
41269
41699
  if (rowspan && parseInt(rowspan, 10) > 1) {
41270
41700
  var newRowSpan = parseInt(rowspan, 10) - 1;
41271
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.attr)(cell, 'rowspan', newRowSpan > 1 ? newRowSpan : null);
41701
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(cell, 'rowspan', newRowSpan > 1 ? newRowSpan : null);
41272
41702
  }
41273
41703
  });
41274
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.each(row, function(cell) {
41275
- if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.isCell(cell)) {
41276
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.detach(cell);
41277
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.append(cell, create.element('br'));
41704
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.each(row, function(cell) {
41705
+ if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isCell(cell)) {
41706
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.detach(cell);
41707
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(cell, create.element('br'));
41278
41708
  }
41279
41709
  });
41280
41710
  }
41281
41711
  if (after && line && line.nextSibling) {
41282
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.after(line, row);
41712
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.after(line, row);
41283
41713
  } else if (!after && line) {
41284
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.before(line, row);
41714
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.before(line, row);
41285
41715
  } else {
41286
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.append(_core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.first(table, function(node) {
41287
- return _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.isTag(node, 'tbody');
41716
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(_core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.first(table, function(node) {
41717
+ return _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(node, 'tbody');
41288
41718
  }) || table, row);
41289
41719
  }
41290
41720
  }
@@ -41306,8 +41736,8 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41306
41736
  while(box[rowIndex + 1][nextCell] === cell){
41307
41737
  nextCell += 1;
41308
41738
  }
41309
- var nextRow = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.next(cell.parentNode, function(elm) {
41310
- return _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.isTag(elm, 'tr');
41739
+ var nextRow = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.next(cell.parentNode, function(elm) {
41740
+ return _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(elm, 'tr');
41311
41741
  }, table);
41312
41742
  if (nextRow) {
41313
41743
  // `box[rowIndex + 1][nextCell]` is the cell that
@@ -41325,21 +41755,21 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41325
41755
  }
41326
41756
  }
41327
41757
  if (referenceCell) {
41328
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.before(referenceCell, cell);
41758
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.before(referenceCell, cell);
41329
41759
  } else {
41330
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.append(nextRow, cell);
41760
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(nextRow, cell);
41331
41761
  }
41332
41762
  }
41333
41763
  }
41334
41764
  } else {
41335
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.safeRemove(cell);
41765
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove(cell);
41336
41766
  }
41337
41767
  if (dec && (cell.parentNode === row || cell !== box[rowIndex][j - 1])) {
41338
41768
  var rowSpan = cell.rowSpan;
41339
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.attr)(cell, 'rowspan', rowSpan - 1 > 1 ? rowSpan - 1 : null);
41769
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(cell, 'rowspan', rowSpan - 1 > 1 ? rowSpan - 1 : null);
41340
41770
  }
41341
41771
  });
41342
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.safeRemove(row);
41772
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove(row);
41343
41773
  }
41344
41774
  },
41345
41775
  {
@@ -41355,11 +41785,11 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41355
41785
  } else if (j + 1 < cells.length && box[i][j + 1] === td) {
41356
41786
  dec = true;
41357
41787
  } else {
41358
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.safeRemove(td);
41788
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove(td);
41359
41789
  }
41360
41790
  if (dec && (i - 1 < 0 || td !== box[i - 1][j])) {
41361
41791
  var colSpan = td.colSpan;
41362
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.attr)(td, 'colspan', colSpan - 1 > 1 ? (colSpan - 1).toString() : null);
41792
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(td, 'colspan', colSpan - 1 > 1 ? (colSpan - 1).toString() : null);
41363
41793
  }
41364
41794
  });
41365
41795
  }
@@ -41432,13 +41862,13 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41432
41862
  continue; // broken table
41433
41863
  }
41434
41864
  if (box[i][j].hasAttribute('rowspan') && box[i][j].rowSpan === 1) {
41435
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.attr)(box[i][j], 'rowspan', null);
41865
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(box[i][j], 'rowspan', null);
41436
41866
  }
41437
41867
  if (box[i][j].hasAttribute('colspan') && box[i][j].colSpan === 1) {
41438
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.attr)(box[i][j], 'colspan', null);
41868
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(box[i][j], 'colspan', null);
41439
41869
  }
41440
- if (box[i][j].hasAttribute('class') && !(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.attr)(box[i][j], 'class')) {
41441
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.attr)(box[i][j], 'class', null);
41870
+ if (box[i][j].hasAttribute('class') && !(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(box[i][j], 'class')) {
41871
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(box[i][j], 'class', null);
41442
41872
  }
41443
41873
  }
41444
41874
  }
@@ -41516,10 +41946,10 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41516
41946
  return;
41517
41947
  }
41518
41948
  alreadyMerged.add(td);
41519
- if (i === bound[0][0] && (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.cssInline)(td, 'width')) {
41949
+ if (i === bound[0][0] && (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_5__.cssInline)(td, 'width')) {
41520
41950
  w += td.offsetWidth;
41521
41951
  }
41522
- if ((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.trim)(cell.innerHTML.replace(/<br(\/)?>/g, '')) !== '') {
41952
+ if ((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.trim)(cell.innerHTML.replace(/<br(\/)?>/g, '')) !== '') {
41523
41953
  html.push(cell.innerHTML);
41524
41954
  }
41525
41955
  if (cs > 1) {
@@ -41558,9 +41988,9 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41558
41988
  alreadyMerged.delete(first);
41559
41989
  Table.__unmark(__marked);
41560
41990
  Table.__normalizeTable(table);
41561
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.toArray)(table.rows).forEach(function(tr) {
41991
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.toArray)(table.rows).forEach(function(tr) {
41562
41992
  if (!tr.cells.length) {
41563
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.safeRemove(tr);
41993
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove(tr);
41564
41994
  }
41565
41995
  });
41566
41996
  }
@@ -41574,7 +42004,7 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41574
42004
  var __marked = [];
41575
42005
  Table.__getSelectedCellsByTable(table).forEach(function(cell) {
41576
42006
  td = jodit.createInside.element('td');
41577
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.append(td, jodit.createInside.element('br'));
42007
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(td, jodit.createInside.element('br'));
41578
42008
  tr = jodit.createInside.element('tr');
41579
42009
  coord = Table.__formalCoordinate(table, cell);
41580
42010
  if (cell.rowSpan < 2) {
@@ -41583,8 +42013,8 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41583
42013
  Table.__mark(tdElm, 'rowspan', tdElm.rowSpan + 1, __marked);
41584
42014
  }
41585
42015
  });
41586
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.after(_core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.closest(cell, 'tr', table), tr);
41587
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.append(tr, td);
42016
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.after(_core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.closest(cell, 'tr', table), tr);
42017
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(tr, td);
41588
42018
  } else {
41589
42019
  Table.__mark(cell, 'rowspan', cell.rowSpan - 1, __marked);
41590
42020
  Table.__formalMatrix(table, function(tdElm, i, j) {
@@ -41596,9 +42026,9 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41596
42026
  }
41597
42027
  });
41598
42028
  if (after) {
41599
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.after(after, td);
42029
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.after(after, td);
41600
42030
  } else {
41601
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.prepend(parent, td);
42031
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.prepend(parent, td);
41602
42032
  }
41603
42033
  }
41604
42034
  if (cell.colSpan > 1) {
@@ -41627,12 +42057,12 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41627
42057
  Table.__mark(cell, 'colspan', cell.colSpan - 1, __marked);
41628
42058
  }
41629
42059
  td = jodit.createInside.element('td');
41630
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.append(td, jodit.createInside.element('br'));
42060
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(td, jodit.createInside.element('br'));
41631
42061
  if (cell.rowSpan > 1) {
41632
42062
  Table.__mark(td, 'rowspan', cell.rowSpan, __marked);
41633
42063
  }
41634
42064
  var oldWidth = cell.offsetWidth; // get old width
41635
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.after(cell, td);
42065
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.after(cell, td);
41636
42066
  percentage = oldWidth / table.offsetWidth / 2;
41637
42067
  Table.__mark(cell, 'width', (percentage * 100).toFixed(_core_constants_js__WEBPACK_IMPORTED_MODULE_1__.ACCURACY) + '%', __marked);
41638
42068
  Table.__mark(td, 'width', (percentage * 100).toFixed(_core_constants_js__WEBPACK_IMPORTED_MODULE_1__.ACCURACY) + '%', __marked);
@@ -41687,22 +42117,22 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41687
42117
  var value = dict[key];
41688
42118
  switch(key){
41689
42119
  case 'remove':
41690
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.safeRemove(cell);
42120
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove(cell);
41691
42121
  break;
41692
42122
  case 'rowspan':
41693
- (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);
42123
+ (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);
41694
42124
  break;
41695
42125
  case 'colspan':
41696
- (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);
42126
+ (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);
41697
42127
  break;
41698
42128
  case 'width':
41699
42129
  if (value == null) {
41700
42130
  cell.style.removeProperty('width');
41701
- if (!(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.attr)(cell, 'style')) {
41702
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.attr)(cell, 'style', null);
42131
+ if (!(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(cell, 'style')) {
42132
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(cell, 'style', null);
41703
42133
  }
41704
42134
  } else {
41705
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.css)(cell, 'width', value.toString());
42135
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.css)(cell, 'width', value.toString());
41706
42136
  }
41707
42137
  break;
41708
42138
  }
@@ -41717,9 +42147,6 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41717
42147
  return Table;
41718
42148
  }(_core_component_index_js__WEBPACK_IMPORTED_MODULE_0__.ViewComponent);
41719
42149
  Table.__selectedByTable = new WeakMap();
41720
- __decorate([
41721
- (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_2__.debounce)()
41722
- ], Table.prototype, "__recalculateStyles", null);
41723
42150
  var instance = function instance(j) {
41724
42151
  return j.getInstance('Table', j.o);
41725
42152
  };
@@ -46925,6 +47352,10 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('backspace', backs
46925
47352
  mainClosestBox = nextBox;
46926
47353
  }
46927
47354
  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)) {
47355
+ // A table cell is never joined with its neighbour
47356
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.up(fakeNode, _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isCell, mainClosestBox, true)) {
47357
+ return false;
47358
+ }
46928
47359
  var sibling = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.findNotEmptySibling(mainClosestBox, backspace);
46929
47360
  // A line break before the cursor is a single unit: remove it instead of
46930
47361
  // merging the current element into the (void) `<br>`, which used to move
@@ -46934,13 +47365,48 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('backspace', backs
46934
47365
  jodit.s.setCursorBefore(fakeNode);
46935
47366
  return true;
46936
47367
  }
46937
- if (sibling && (checkMoveListContent(jodit, mainClosestBox, sibling, backspace) || moveContentAndRemoveEmpty(jodit, mainClosestBox, resolveTableSibling(sibling, backspace), backspace))) {
47368
+ // Backspace leaves a block after a table alone, as Word does, rather
47369
+ // than moving its text into the last cell
47370
+ if (backspace && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(sibling, 'table')) {
47371
+ jodit.s.setCursorBefore(fakeNode);
47372
+ return true;
47373
+ }
47374
+ var box = findCaretBox(fakeNode, mainClosestBox);
47375
+ if (sibling && (checkPullNextLine(jodit, fakeNode, box, sibling, backspace) || checkMoveListContent(jodit, box, sibling, backspace) || moveContentAndRemoveEmpty(jodit, box, findEdgeBlock(resolveTableSibling(sibling, backspace), backspace, jodit.editor), backspace))) {
46938
47376
  jodit.s.setCursorBefore(fakeNode);
46939
47377
  return true;
46940
47378
  }
46941
47379
  }
46942
47380
  return false;
46943
47381
  }
47382
+ /**
47383
+ * The block holding the caret inside the box that has the sibling, so
47384
+ * `<p>one</p><div><p>|two</p></div>` joins the two paragraphs instead of
47385
+ * moving the whole `<div>` into the first one. For a list item that is its
47386
+ * list, which the list cases handle.
47387
+ */ function findCaretBox(fakeNode, mainClosestBox) {
47388
+ var block = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.up(fakeNode, _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock, mainClosestBox);
47389
+ if (!block) {
47390
+ return mainClosestBox;
47391
+ }
47392
+ return _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isLeaf(block) && block.parentElement ? block.parentElement : block;
47393
+ }
47394
+ /**
47395
+ * The innermost block on the sibling's edge facing the caret, so the
47396
+ * content is joined to text: `<div><p>one</p></div><p>|two</p>` gives
47397
+ * `<div><p>one|two</p></div>`
47398
+ */ function findEdgeBlock(sibling, backspace, root) {
47399
+ var block = sibling;
47400
+ while(block){
47401
+ var edge = backspace ? block.lastChild : block.firstChild;
47402
+ var 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;
47403
+ 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)) {
47404
+ return block;
47405
+ }
47406
+ block = child;
47407
+ }
47408
+ return block;
47409
+ }
46944
47410
  /**
46945
47411
  * Content cannot be merged into the `<table>` element itself — it would land
46946
47412
  * between the table sections (after `</tbody>`), which is invalid HTML and
@@ -46957,6 +47423,42 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('backspace', backs
46957
47423
  });
46958
47424
  return cells.length ? cells[backspace ? cells.length - 1 : 0] : null;
46959
47425
  }
47426
+ /**
47427
+ * Delete at the edge of a list pulls the next line up to the caret, as the
47428
+ * browsers do, instead of moving the caret's line into the next block:
47429
+ * `<ul><li>one|</li></ul><p>two</p>` gives `<ul><li>one|two</li></ul>`, and
47430
+ * `<p>one|</p><ul><li>two</li></ul>` gives `<p>one|two</p>`
47431
+ * @private
47432
+ */ function checkPullNextLine(jodit, fakeNode, box, sibling, backspace) {
47433
+ if (backspace || !(_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isList(box) || _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isList(sibling))) {
47434
+ return false;
47435
+ }
47436
+ var target = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.up(fakeNode, _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock, box, true);
47437
+ var source = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isList(sibling) ? sibling.firstElementChild : sibling;
47438
+ 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')) {
47439
+ return false;
47440
+ }
47441
+ if (!_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isEmpty(source)) {
47442
+ var line = [];
47443
+ for(var node = source.firstChild; node && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock(node); node = node.nextSibling){
47444
+ line.push(node);
47445
+ }
47446
+ if (!line.length) {
47447
+ return false;
47448
+ }
47449
+ var filter = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_2__.getMoveFilter)(jodit);
47450
+ line.forEach(function(node) {
47451
+ return 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);
47452
+ });
47453
+ }
47454
+ var remove = source;
47455
+ while(remove && remove !== jodit.editor && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isEmpty(remove)){
47456
+ var parent = remove.parentElement;
47457
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(remove);
47458
+ remove = parent;
47459
+ }
47460
+ return true;
47461
+ }
46960
47462
  function checkMoveListContent(jodit, mainClosestBox, sibling, backspace) {
46961
47463
  // Process UL/LI/OL cases
46962
47464
  var siblingIsList = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(sibling, _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.LIST_TAGS);
@@ -47100,9 +47602,11 @@ function moveContentAndRemoveEmpty(jodit, mainClosestBox, sibling, backspace) {
47100
47602
  * ```html
47101
47603
  * t|st
47102
47604
  * ```
47605
+ * With `stopBeforeSpace`, nothing is removed when the next char is a space.
47103
47606
  * @private
47104
47607
  */ // eslint-disable-next-line complexity
47105
47608
  function checkRemoveChar(jodit, fakeNode, backspace, mode) {
47609
+ var stopBeforeSpace = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : false;
47106
47610
  var _a, _b;
47107
47611
  var step = backspace ? -1 : 1;
47108
47612
  var anotherSibling = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.sibling(fakeNode, !backspace);
@@ -47121,6 +47625,9 @@ function checkRemoveChar(jodit, fakeNode, backspace, mode) {
47121
47625
  break;
47122
47626
  }
47123
47627
  if ((_a = sibling.nodeValue) === null || _a === void 0 ? void 0 : _a.length) {
47628
+ if (stopBeforeSpace && isSpace(nextChar(sibling.nodeValue, backspace))) {
47629
+ break;
47630
+ }
47124
47631
  removed = tryRemoveChar(sibling, backspace, step, anotherSibling);
47125
47632
  if (!sibling.nodeValue.length && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isInlineBlock(sibling.parentNode)) {
47126
47633
  sibling.nodeValue = _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.INVISIBLE_SPACE;
@@ -47228,10 +47735,26 @@ function replaceSpaceOnNBSP(anotherSibling, backspace, value) {
47228
47735
  }
47229
47736
  function checkRepeatRemoveCharAction(backspace, sibling, fakeNode, mode, removed, jodit) {
47230
47737
  ;(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.call)(backspace ? _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.after : _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.before, sibling, fakeNode);
47231
- if (mode === 'sentence' || mode === 'word' && removed !== ' ' && removed !== _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.NBSP_SPACE) {
47232
- checkRemoveChar(jodit, fakeNode, backspace, mode);
47738
+ var wordChar = mode === 'word' && !isSpace(removed);
47739
+ // Backspace by word removes the spaces before the caret, then the word, and keeps the space in front of it
47740
+ if (mode === 'sentence' || wordChar || mode === 'word' && backspace) {
47741
+ checkRemoveChar(jodit, fakeNode, backspace, mode, wordChar && backspace);
47233
47742
  }
47234
47743
  }
47744
+ /**
47745
+ * The char tryRemoveChar would remove next
47746
+ */ function nextChar(value, backspace) {
47747
+ var chars = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.toArray)(value);
47748
+ var step = backspace ? -1 : 1;
47749
+ var index = backspace ? chars.length - 1 : 0;
47750
+ while(chars[index] === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.INVISIBLE_SPACE){
47751
+ index += step;
47752
+ }
47753
+ return chars[index];
47754
+ }
47755
+ function isSpace(char) {
47756
+ return char === ' ' || char === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.NBSP_SPACE;
47757
+ }
47235
47758
 
47236
47759
 
47237
47760
  /***/ }),
@@ -47643,7 +48166,8 @@ function _unsupported_iterable_to_array(o, minLen) {
47643
48166
  /***/ 32496:
47644
48167
  /***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) {
47645
48168
 
47646
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6441);
48169
+ /* harmony import */ var _core_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82758);
48170
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6441);
47647
48171
  /*!
47648
48172
  * Jodit Editor (https://xdsoft.net/jodit/)
47649
48173
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -47651,13 +48175,18 @@ function _unsupported_iterable_to_array(o, minLen) {
47651
48175
  */ /**
47652
48176
  * @module plugins/backspace
47653
48177
  */
47654
- _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.delete = {
48178
+
48179
+ _config_js__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.delete = {
47655
48180
  hotkeys: {
47656
- delete: [
48181
+ delete: _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_MAC ? [
48182
+ 'delete'
48183
+ ] : [
47657
48184
  'delete',
47658
48185
  'cmd+backspace'
47659
48186
  ],
47660
- deleteWord: [
48187
+ deleteWord: _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_MAC ? [
48188
+ 'ctrl+delete'
48189
+ ] : [
47661
48190
  'ctrl+delete',
47662
48191
  'cmd+alt+backspace',
47663
48192
  'ctrl+alt+backspace'
@@ -47669,7 +48198,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.delete = {
47669
48198
  backspace: [
47670
48199
  'backspace'
47671
48200
  ],
47672
- backspaceWord: [
48201
+ backspaceWord: _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_MAC ? [] : [
47673
48202
  'ctrl+backspace'
47674
48203
  ],
47675
48204
  backspaceSentence: [
@@ -48484,6 +49013,22 @@ var cleanHtml = /*#__PURE__*/ function(Plugin) {
48484
49013
  this.currentSelectionNode = editor.s.current();
48485
49014
  }
48486
49015
  },
49016
+ {
49017
+ /**
49018
+ * Typing into an empty block (`<p><br></p>`) replaces its `<br>`, but the
49019
+ * browser keeps the `<br>` when the caret is in an invisible-space text
49020
+ * node in front of it, as Jodit leaves the caret in many of the empty
49021
+ * blocks it makes (a cleared editor, a heading in an empty table cell).
49022
+ * See #1632
49023
+ */ key: "onInputRemovePlaceholderBr",
49024
+ value: function onInputRemovePlaceholderBr(event) {
49025
+ var _a;
49026
+ if (!this.isEditMode || event.type === 'input' && (event.isComposing || !((_a = event.inputType) === null || _a === void 0 ? void 0 : _a.startsWith('insert')))) {
49027
+ return;
49028
+ }
49029
+ ;(0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_8__.removePlaceholderBr)(this.j);
49030
+ }
49031
+ },
48487
49032
  {
48488
49033
  key: "startWalker",
48489
49034
  value: function startWalker() {
@@ -48674,6 +49219,12 @@ __decorate([
48674
49219
  ':keydown'
48675
49220
  ])
48676
49221
  ], cleanHtml.prototype, "onChangeCleanHTML", null);
49222
+ __decorate([
49223
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)([
49224
+ ':input',
49225
+ 'jodit.editor:compositionend'
49226
+ ])
49227
+ ], cleanHtml.prototype, "onInputRemovePlaceholderBr", null);
48677
49228
  __decorate([
48678
49229
  (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.hook)('ready')
48679
49230
  ], cleanHtml.prototype, "startWalker", null);
@@ -48805,12 +49356,14 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.controls.eraser = {
48805
49356
  /* harmony export */ getHash: function() { return /* reexport safe */ _get_hash_js__WEBPACK_IMPORTED_MODULE_0__.getHash; },
48806
49357
  /* harmony export */ removeFormatForCollapsedSelection: function() { return /* reexport safe */ _remove_format_remove_format_for_collapsed_selection_js__WEBPACK_IMPORTED_MODULE_1__.removeFormatForCollapsedSelection; },
48807
49358
  /* harmony export */ removeFormatForSelection: function() { return /* reexport safe */ _remove_format_remove_format_for_selection_js__WEBPACK_IMPORTED_MODULE_2__.removeFormatForSelection; },
48808
- /* harmony export */ visitNodeWalker: function() { return /* reexport safe */ _visitor_visit_node_walker_js__WEBPACK_IMPORTED_MODULE_3__.visitNodeWalker; }
49359
+ /* harmony export */ removePlaceholderBr: function() { return /* reexport safe */ _remove_placeholder_br_js__WEBPACK_IMPORTED_MODULE_3__.removePlaceholderBr; },
49360
+ /* harmony export */ visitNodeWalker: function() { return /* reexport safe */ _visitor_visit_node_walker_js__WEBPACK_IMPORTED_MODULE_4__.visitNodeWalker; }
48809
49361
  /* harmony export */ });
48810
49362
  /* harmony import */ var _get_hash_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(83447);
48811
49363
  /* harmony import */ var _remove_format_remove_format_for_collapsed_selection_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(84272);
48812
49364
  /* harmony import */ var _remove_format_remove_format_for_selection_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42312);
48813
- /* harmony import */ var _visitor_visit_node_walker_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(39516);
49365
+ /* harmony import */ var _remove_placeholder_br_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(56385);
49366
+ /* harmony import */ var _visitor_visit_node_walker_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(39516);
48814
49367
  /*!
48815
49368
  * Jodit Editor (https://xdsoft.net/jodit/)
48816
49369
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -48824,6 +49377,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.controls.eraser = {
48824
49377
 
48825
49378
 
48826
49379
 
49380
+
48827
49381
  /***/ }),
48828
49382
 
48829
49383
  /***/ 15908:
@@ -48978,6 +49532,62 @@ var VIMEO_EMBED = /^(https?:)?\/\/player\.vimeo\.com\/video\//i;
48978
49532
  }
48979
49533
 
48980
49534
 
49535
+ /***/ }),
49536
+
49537
+ /***/ 56385:
49538
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
49539
+
49540
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
49541
+ /* harmony export */ removePlaceholderBr: function() { return /* binding */ removePlaceholderBr; }
49542
+ /* harmony export */ });
49543
+ /* harmony import */ var _core_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82758);
49544
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2748);
49545
+ /* harmony import */ var _core_helpers_string_trim_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(49055);
49546
+ /*!
49547
+ * Jodit Editor (https://xdsoft.net/jodit/)
49548
+ * Released under MIT see LICENSE.txt in the project root for license information.
49549
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
49550
+ */
49551
+
49552
+
49553
+ function lastNode(node) {
49554
+ var last = node.lastChild;
49555
+ while(_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isText(last) && !last.nodeValue){
49556
+ last = last.previousSibling;
49557
+ }
49558
+ return last;
49559
+ }
49560
+ /**
49561
+ * Remove the `<br>` that kept the block with the caret open while it was
49562
+ * empty, once text has gone into the block: when the block is one line of
49563
+ * text that ends in that `<br>`, the `<br>` adds nothing to it
49564
+ * @private
49565
+ */ function removePlaceholderBr(jodit) {
49566
+ var _a;
49567
+ var 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);
49568
+ if (!block || !(0,_core_helpers_string_trim_js__WEBPACK_IMPORTED_MODULE_2__.trim)((_a = block.textContent) !== null && _a !== void 0 ? _a : '')) {
49569
+ return;
49570
+ }
49571
+ var br = lastNode(block);
49572
+ 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)){
49573
+ br = lastNode(br);
49574
+ }
49575
+ if (!_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(br, 'br')) {
49576
+ return;
49577
+ }
49578
+ // Another line break, a block, an image or an embed means the `<br>` may
49579
+ // end an empty line, or give the caret a place after the embed
49580
+ var isOneLineOfText = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.each(block, function(node) {
49581
+ 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)) {
49582
+ return false;
49583
+ }
49584
+ });
49585
+ if (isOneLineOfText) {
49586
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(br);
49587
+ }
49588
+ }
49589
+
49590
+
48981
49591
  /***/ }),
48982
49592
 
48983
49593
  /***/ 82558:
@@ -50660,6 +51270,14 @@ __webpack_require__.r(__webpack_exports__);
50660
51270
  /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(21537);
50661
51271
  /* harmony import */ var _core_helpers_string_trim_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(49055);
50662
51272
  /* harmony import */ var _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(50911);
51273
+ function _array_like_to_array(arr, len) {
51274
+ if (len == null || len > arr.length) len = arr.length;
51275
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
51276
+ return arr2;
51277
+ }
51278
+ function _array_with_holes(arr) {
51279
+ if (Array.isArray(arr)) return arr;
51280
+ }
50663
51281
  function _assert_this_initialized(self) {
50664
51282
  if (self === void 0) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
50665
51283
  return self;
@@ -50731,6 +51349,33 @@ function _is_native_reflect_construct() {
50731
51349
  return !!result;
50732
51350
  })();
50733
51351
  }
51352
+ function _iterable_to_array_limit(arr, i) {
51353
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
51354
+ if (_i == null) return;
51355
+ var _arr = [];
51356
+ var _n = true;
51357
+ var _d = false;
51358
+ var _s, _e;
51359
+ try {
51360
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
51361
+ _arr.push(_s.value);
51362
+ if (i && _arr.length === i) break;
51363
+ }
51364
+ } catch (err) {
51365
+ _d = true;
51366
+ _e = err;
51367
+ } finally{
51368
+ try {
51369
+ if (!_n && _i["return"] != null) _i["return"]();
51370
+ } finally{
51371
+ if (_d) throw _e;
51372
+ }
51373
+ }
51374
+ return _arr;
51375
+ }
51376
+ function _non_iterable_rest() {
51377
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
51378
+ }
50734
51379
  function _possible_constructor_return(self, call) {
50735
51380
  if (call && (_type_of(call) === "object" || typeof call === "function")) return call;
50736
51381
  return _assert_this_initialized(self);
@@ -50742,10 +51387,21 @@ function _set_prototype_of(o, p) {
50742
51387
  };
50743
51388
  return _set_prototype_of(o, p);
50744
51389
  }
51390
+ function _sliced_to_array(arr, i) {
51391
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
51392
+ }
50745
51393
  function _type_of(obj) {
50746
51394
  "@swc/helpers - typeof";
50747
51395
  return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
50748
51396
  }
51397
+ function _unsupported_iterable_to_array(o, minLen) {
51398
+ if (!o) return;
51399
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
51400
+ var n = Object.prototype.toString.call(o).slice(8, -1);
51401
+ if (n === "Object" && o.constructor) n = o.constructor.name;
51402
+ if (n === "Map" || n === "Set") return Array.from(n);
51403
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
51404
+ }
50749
51405
  function _wrap_native_super(Class) {
50750
51406
  var _cache = typeof Map === "function" ? new Map() : undefined;
50751
51407
  _wrap_native_super = function(Class) {
@@ -50845,6 +51501,11 @@ var deleteCommand = /*#__PURE__*/ function(Plugin) {
50845
51501
  }
50846
51502
  jodit.s.expandSelection();
50847
51503
  var range = jodit.s.range;
51504
+ var caret = this.__clearSelectedCells(range);
51505
+ if (caret && range.collapsed) {
51506
+ jodit.s.selectRange(caret);
51507
+ return false;
51508
+ }
50848
51509
  range.deleteContents();
50849
51510
  var fake = jodit.createInside.fake();
50850
51511
  range.insertNode(fake);
@@ -50854,24 +51515,109 @@ var deleteCommand = /*#__PURE__*/ function(Plugin) {
50854
51515
  range.setStartBefore(fake);
50855
51516
  range.collapse(true);
50856
51517
  this.__moveCursorInEditableSibling(jodit, leftSibling, fake, range);
50857
- this.__addBrInEmptyBlock(fake, rightSibling, range);
51518
+ this.__addBrInEmptyBlock(fake, range);
50858
51519
  _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(fake);
50859
- jodit.s.selectRange(range);
51520
+ jodit.s.selectRange(caret !== null && caret !== void 0 ? caret : range);
50860
51521
  return false;
50861
51522
  }
50862
51523
  },
51524
+ {
51525
+ /**
51526
+ * A selection that starts or ends in a table cell clears the selected part
51527
+ * of each cell it covers and keeps the cells, as the browsers do.
51528
+ * `deleteContents` would remove the cells it fully covers, and the cells
51529
+ * it cuts would then be merged as blocks. The range is moved out of those
51530
+ * tables, so only the content between them is left to delete.
51531
+ *
51532
+ * Returns where the caret goes, or null when no table is involved
51533
+ */ key: "__clearSelectedCells",
51534
+ value: function __clearSelectedCells(range) {
51535
+ var _this_j = this.j, editor = _this_j.editor, createInside = _this_j.createInside;
51536
+ var startCell = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(range.startContainer, _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isCell, editor);
51537
+ var endCell = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(range.endContainer, _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isCell, editor);
51538
+ if (startCell === endCell) {
51539
+ return null;
51540
+ }
51541
+ var startTable = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(startCell, 'table', editor);
51542
+ var endTable = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(endCell, 'table', editor);
51543
+ var caret = range.cloneRange();
51544
+ caret.collapse(true);
51545
+ var parts = [];
51546
+ var addParts = function addParts(table) {
51547
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.toArray)(table.rows).flatMap(function(row) {
51548
+ return (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.toArray)(row.cells);
51549
+ }).filter(function(cell) {
51550
+ return range.intersectsNode(cell);
51551
+ }).forEach(function(cell) {
51552
+ var part = range.cloneRange();
51553
+ if (!_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isOrContains(cell, range.startContainer)) {
51554
+ part.setStart(cell, 0);
51555
+ }
51556
+ if (!_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isOrContains(cell, range.endContainer)) {
51557
+ part.setEnd(cell, cell.childNodes.length);
51558
+ }
51559
+ parts.push([
51560
+ cell,
51561
+ part
51562
+ ]);
51563
+ });
51564
+ };
51565
+ if (startTable) {
51566
+ addParts(startTable);
51567
+ if (startTable === endTable) {
51568
+ range.collapse(true);
51569
+ } else {
51570
+ range.setStartAfter(startTable);
51571
+ }
51572
+ }
51573
+ if (endTable && endTable !== startTable) {
51574
+ addParts(endTable);
51575
+ range.setEndBefore(endTable);
51576
+ }
51577
+ parts.forEach(function(param) {
51578
+ var _param = _sliced_to_array(param, 2), cell = _param[0], part = _param[1];
51579
+ part.deleteContents();
51580
+ if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(cell)) {
51581
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.detach(cell);
51582
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.append(cell, createInside.element('br'));
51583
+ }
51584
+ });
51585
+ return startTable ? caret : null;
51586
+ }
51587
+ },
50863
51588
  {
50864
51589
  key: "__moveContentInLeftSibling",
50865
51590
  value: function __moveContentInLeftSibling(fake, leftSibling, rightSibling) {
50866
51591
  leftSibling = this.__defineRightLeftBox(leftSibling);
51592
+ // Nothing is moved into a table, and a block left empty after it goes
51593
+ if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(leftSibling, 'table')) {
51594
+ if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(rightSibling) && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(rightSibling)) {
51595
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(rightSibling);
51596
+ }
51597
+ return;
51598
+ }
50867
51599
  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)) {
50868
51600
  _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.append(leftSibling, fake);
50869
51601
  _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.moveContent(rightSibling, leftSibling);
50870
51602
  _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(rightSibling);
50871
51603
  }
50872
- // Remove empty right LI
50873
- 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)) {
50874
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(rightSibling.firstElementChild);
51604
+ if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isList(rightSibling) && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isLeaf(rightSibling.firstElementChild)) {
51605
+ var item = rightSibling.firstElementChild;
51606
+ // What's left of the right list's first item joins the left block,
51607
+ // up to a list nested in the item
51608
+ if (!_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(item) && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(leftSibling)) {
51609
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.append(leftSibling, fake);
51610
+ while(item.firstChild && !_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(item.firstChild)){
51611
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.append(leftSibling, item.firstChild);
51612
+ }
51613
+ }
51614
+ // Remove empty right LI
51615
+ if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(item)) {
51616
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(item);
51617
+ }
51618
+ if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(rightSibling)) {
51619
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(rightSibling);
51620
+ }
50875
51621
  }
50876
51622
  }
50877
51623
  },
@@ -50893,9 +51639,9 @@ var deleteCommand = /*#__PURE__*/ function(Plugin) {
50893
51639
  },
50894
51640
  {
50895
51641
  /**
50896
- * Add BR in empty blocks left and right(for table cell)
51642
+ * Add BR in the empty block left at the caret
50897
51643
  */ key: "__addBrInEmptyBlock",
50898
- value: function __addBrInEmptyBlock(fake, rightSibling, range) {
51644
+ value: function __addBrInEmptyBlock(fake, range) {
50899
51645
  var jodit = this.j;
50900
51646
  if (fake.isConnected && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(fake.parentNode) && !fake.nextSibling && !fake.previousSibling) {
50901
51647
  var br = jodit.createInside.element('br');
@@ -50903,13 +51649,6 @@ var deleteCommand = /*#__PURE__*/ function(Plugin) {
50903
51649
  range.setStartBefore(br);
50904
51650
  range.collapse(true);
50905
51651
  }
50906
- // Add BR in the right empty table cell
50907
- if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(rightSibling, 'table')) {
50908
- var firstCell = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.$$)('td,th', rightSibling).shift();
50909
- if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isCell(firstCell) && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(firstCell)) {
50910
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.append(firstCell, jodit.createInside.element('br'));
50911
- }
50912
- }
50913
51652
  }
50914
51653
  },
50915
51654
  {
@@ -53004,7 +53743,18 @@ function focus(editor) {
53004
53743
  editor.e.on('afterInit', function() {
53005
53744
  if (editor.o.autofocus) {
53006
53745
  if (editor.defaultTimeout) {
53007
- editor.async.setTimeout(_$focus, 300);
53746
+ // A click or key in the editor during the delay has put the
53747
+ // caret where the user wants it, so autofocus leaves it there
53748
+ var userInput = 'mousedown touchstart keydown';
53749
+ var cancel = function cancel1() {
53750
+ editor.async.clearTimeout(timeout);
53751
+ editor.e.off(userInput, cancel);
53752
+ };
53753
+ var timeout = editor.async.setTimeout(function() {
53754
+ editor.e.off(userInput, cancel);
53755
+ _$focus();
53756
+ }, 300);
53757
+ editor.e.on(userInput, cancel);
53008
53758
  } else {
53009
53759
  _$focus();
53010
53760
  }
@@ -54868,7 +55618,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeBaseUrl = '';
54868
55618
  _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeTitle = 'Jodit Editor';
54869
55619
  _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeDoctype = '<!DOCTYPE html>';
54870
55620
  _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeDefaultSrc = 'about:blank';
54871
- _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' + '}';
55621
+ _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' + '}';
54872
55622
  _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeCSSLinks = [];
54873
55623
  _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeSandbox = null;
54874
55624
 
@@ -54914,6 +55664,10 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeSandbox = null;
54914
55664
  (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(link, 'rel', 'stylesheet');
54915
55665
  (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(link, 'href', href);
54916
55666
  doc.head && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.append(doc.head, link);
55667
+ // What plugins measured in the editing document changes once it's styled
55668
+ jodit.e.on(link, 'load', function() {
55669
+ return jodit.e.fire('resize');
55670
+ });
54917
55671
  });
54918
55672
  }
54919
55673
  if (opt.iframeStyle) {
@@ -54951,6 +55705,8 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeSandbox = null;
54951
55705
  (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);
54952
55706
  };
54953
55707
  var clearMarkers = function clearMarkers(html) {
55708
+ // The plugins' own styles, from `getContainer`, aren't part of the value
55709
+ html = html.replace(/<style[^>]+jodit-box[^>]*>[\s\S]*?<\/style>/gi, '');
54954
55710
  var bodyReg = /<body.*<\/body>/im, bodyMarker = '{%%BODY%%}', body = bodyReg.exec(html);
54955
55711
  if (body) {
54956
55712
  // remove markers
@@ -54975,7 +55731,12 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeSandbox = null;
54975
55731
  */ var replaceDocument = function replaceDocument(html) {
54976
55732
  var inert = new DOMParser().parseFromString(html, 'text/html');
54977
55733
  editor.e.fire('safeHTML', inert.documentElement);
55734
+ // The plugins' own styles stay, as the value leaves them out
55735
+ var styles = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.$$)('style.jodit-box', doc.head);
54978
55736
  doc.replaceChild(doc.adoptNode(inert.documentElement), doc.documentElement);
55737
+ styles.forEach(function(style) {
55738
+ return _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.append(doc.head, style);
55739
+ });
54979
55740
  };
54980
55741
  if (docMode) {
54981
55742
  var tag = editor.element.tagName;
@@ -55367,6 +56128,9 @@ var SELECTED_TAGS = new Set([
55367
56128
  key: "afterInit",
55368
56129
  value: function afterInit(jodit) {
55369
56130
  jodit.e.on(jodit.ed, 'selectionchange', this.onSelectionChange);
56131
+ // Over the highlight in `styles/reset.less`; the image keeps its own. It goes
56132
+ // in the editing document, so iframe mode has it whatever `iframeStyle` holds
56133
+ (0,_core_global_js__WEBPACK_IMPORTED_MODULE_3__.getContainer)(jodit, 'image-processor', 'style', true).textContent = ".jodit-wysiwyg.".concat(IMAGE_SELECTED, "::selection,") + ".jodit-wysiwyg.".concat(IMAGE_SELECTED, " *:not(img)::selection{background:transparent}");
55370
56134
  }
55371
56135
  },
55372
56136
  {
@@ -55968,8 +56732,12 @@ function _wrap_native_super(Class) {
55968
56732
  dialog.close();
55969
56733
  });
55970
56734
  buttons.remove.onAction(function() {
56735
+ var caret = j.s.createRange();
56736
+ caret.setStartBefore(_this.state.sourceImage);
56737
+ caret.collapse(true);
55971
56738
  j.s.removeNode(_this.state.sourceImage);
55972
56739
  dialog.close();
56740
+ j.s.selectRange(caret);
55973
56741
  });
55974
56742
  buttons.cancel.onAction(function() {
55975
56743
  dialog.close();
@@ -55983,10 +56751,20 @@ function _wrap_native_super(Class) {
55983
56751
  ],
55984
56752
  buttons.check
55985
56753
  ]);
55986
- j.e.on(dialog, 'afterClose', function() {
55987
- if (_this.state.image.parentNode && j.o.image.selectImageAfterClose) {
55988
- j.s.select(_this.state.sourceImage);
56754
+ // The dialog fires `afterClose` on its own emitter, not the editor's
56755
+ dialog.e.on(dialog, 'afterClose', function() {
56756
+ var sourceImage = _this.state.sourceImage;
56757
+ if (j.isInDestruct || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isOrContains(j.editor, sourceImage)) {
56758
+ return;
56759
+ }
56760
+ if (j.o.image.selectImageAfterClose) {
56761
+ j.s.select(sourceImage);
56762
+ return;
55989
56763
  }
56764
+ var caret = j.s.createRange();
56765
+ caret.setStartAfter(sourceImage);
56766
+ caret.collapse(true);
56767
+ j.s.selectRange(caret);
55990
56768
  });
55991
56769
  dialog.setSize(j.o.image.dialogWidth);
55992
56770
  (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.markOwner)(j, dialog.container);
@@ -56024,6 +56802,7 @@ function _wrap_native_super(Class) {
56024
56802
  this.activeTabState.activeTab = 'Image';
56025
56803
  this.__lock();
56026
56804
  this.dialog.open().setModal(true).setPosition();
56805
+ this.__focusFirstField();
56027
56806
  this.async.promise(function(resolve, reject) {
56028
56807
  return (0,_readers_index_js__WEBPACK_IMPORTED_MODULE_10__.readValuesFromImage)(_this.j, _this.state).then(resolve, reject);
56029
56808
  }).catch(function(e) {
@@ -56036,6 +56815,21 @@ function _wrap_native_super(Class) {
56036
56815
  return false;
56037
56816
  }
56038
56817
  },
56818
+ {
56819
+ /**
56820
+ * Keys typed while the dialog is open must not reach the editor behind it,
56821
+ * so focus the active tab's first field, or else the first field shown
56822
+ */ key: "__focusFirstField",
56823
+ value: function __focusFirstField() {
56824
+ var _a;
56825
+ var fields = function fields(box) {
56826
+ return (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.toArray)(box.querySelectorAll('input, select, textarea'));
56827
+ };
56828
+ (_a = fields(this.form.getElm('tabsBox')).concat(fields(this.form.container)).find(function(field) {
56829
+ return field.offsetParent != null;
56830
+ })) === null || _a === void 0 ? void 0 : _a.focus();
56831
+ }
56832
+ },
56039
56833
  {
56040
56834
  key: "__lock",
56041
56835
  value: function __lock() {
@@ -59505,10 +60299,11 @@ var align = {
59505
60299
  /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(580);
59506
60300
  /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21537);
59507
60301
  /* harmony import */ var _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(50911);
59508
- /* harmony import */ var _core_ui_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(67510);
59509
- /* harmony import */ var _core_ui_popup_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(61259);
59510
- /* harmony import */ var _modules_toolbar_factory_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(21491);
59511
- /* harmony import */ var _config_config_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(24526);
60302
+ /* harmony import */ var _core_selection_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(45124);
60303
+ /* harmony import */ var _core_ui_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(67510);
60304
+ /* harmony import */ var _core_ui_popup_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(61259);
60305
+ /* harmony import */ var _modules_toolbar_factory_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(21491);
60306
+ /* harmony import */ var _config_config_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(24526);
59512
60307
  function _array_like_to_array(arr, len) {
59513
60308
  if (len == null || len > arr.length) len = arr.length;
59514
60309
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
@@ -59714,6 +60509,7 @@ function _wrap_native_super(Class) {
59714
60509
 
59715
60510
 
59716
60511
 
60512
+
59717
60513
  /**
59718
60514
  * Plugin for show inline popup dialog
59719
60515
  */ var inlinePopup = /*#__PURE__*/ function(Plugin) {
@@ -59729,7 +60525,13 @@ function _wrap_native_super(Class) {
59729
60525
  * command fires `closeAllPopups`, the toolbar should be shown again
59730
60526
  * while the selection is still there. See #1238
59731
60527
  */ _this.__reopenSelectionPopup = false;
60528
+ /**
60529
+ * The alignment controls fire `recalcPositionPopup` once they have moved
60530
+ * the element, and their button then fires `closeAllPopups`. The popup
60531
+ * opens again beside the element, as the selection toolbar does
60532
+ */ _this.__reopenFor = null;
59732
60533
  _this.snapRange = null;
60534
+ _this.__keyDownElement = null;
59733
60535
  _this.elmsList = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.keys)(_this.j.o.popup, false).filter(function(s) {
59734
60536
  return !_this.isExcludedTarget(s);
59735
60537
  });
@@ -59739,13 +60541,13 @@ function _wrap_native_super(Class) {
59739
60541
  {
59740
60542
  key: "popup",
59741
60543
  get: function get() {
59742
- return new _core_ui_popup_index_js__WEBPACK_IMPORTED_MODULE_6__.Popup(this.jodit, false);
60544
+ return new _core_ui_popup_index_js__WEBPACK_IMPORTED_MODULE_7__.Popup(this.jodit, false);
59743
60545
  }
59744
60546
  },
59745
60547
  {
59746
60548
  key: "toolbar",
59747
60549
  get: function get() {
59748
- return (0,_modules_toolbar_factory_js__WEBPACK_IMPORTED_MODULE_7__.makeCollection)(this.jodit, this.popup);
60550
+ return (0,_modules_toolbar_factory_js__WEBPACK_IMPORTED_MODULE_8__.makeCollection)(this.jodit, this.popup);
59749
60551
  }
59750
60552
  },
59751
60553
  {
@@ -59839,6 +60641,42 @@ function _wrap_native_super(Class) {
59839
60641
  },
59840
60642
  {
59841
60643
  /**
60644
+ * A key that moves the caret off an element closes its popup, and one
60645
+ * that moves the caret into an element with a popup (a link) opens it,
60646
+ * as clicks do
60647
+ */ key: "onKeyUp",
60648
+ value: function onKeyUp() {
60649
+ this.__followCaret();
60650
+ }
60651
+ },
60652
+ {
60653
+ key: "__followCaret",
60654
+ value: function __followCaret() {
60655
+ if (!(0,_core_selection_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.isMoved)(this.j, this.snapRange)) {
60656
+ return;
60657
+ }
60658
+ var range = this.j.s.range;
60659
+ var target = this.previousTarget;
60660
+ if (this.popup.isOpened && this.type !== 'selection' && target && !range.intersectsNode(target)) {
60661
+ this.popup.close();
60662
+ }
60663
+ var node = range.startContainer;
60664
+ var element = this.__elementAt(node);
60665
+ if (range.collapsed && element && element !== this.__keyDownElement) {
60666
+ this.onClick(node);
60667
+ }
60668
+ }
60669
+ },
60670
+ {
60671
+ /**
60672
+ * The element with a popup that holds `node`
60673
+ */ key: "__elementAt",
60674
+ value: function __elementAt(node) {
60675
+ return _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.closest(node, this.elmsList, this.j.editor);
60676
+ }
60677
+ },
60678
+ {
60679
+ /**
59842
60680
  * Can show popup for this type
59843
60681
  */ key: "canShowPopupForType",
59844
60682
  value: function canShowPopupForType(type) {
@@ -59890,10 +60728,19 @@ function _wrap_native_super(Class) {
59890
60728
  this.addListenersForElements();
59891
60729
  }
59892
60730
  },
60731
+ {
60732
+ key: "onRecalcPositionPopup",
60733
+ value: function onRecalcPositionPopup() {
60734
+ if (this.popup.isOpened && this.type !== 'selection' && this.previousTarget) {
60735
+ this.__reopenFor = this.previousTarget;
60736
+ }
60737
+ }
60738
+ },
59893
60739
  {
59894
60740
  key: "__onDocumentMouseDown",
59895
60741
  value: function __onDocumentMouseDown(e) {
59896
- 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)) {
60742
+ this.__reopenFor = null;
60743
+ 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)) {
59897
60744
  this.__reopenSelectionPopup = true;
59898
60745
  }
59899
60746
  }
@@ -59902,6 +60749,16 @@ function _wrap_native_super(Class) {
59902
60749
  key: "__onCloseAllPopups",
59903
60750
  value: function __onCloseAllPopups() {
59904
60751
  var _this = this;
60752
+ var target = this.__reopenFor;
60753
+ if (target) {
60754
+ this.__reopenFor = null;
60755
+ // After the popup's own `closeAllPopups` handler, as below
60756
+ this.j.async.setTimeout(function() {
60757
+ if (_this.j.editor.contains(target)) {
60758
+ _this.onClick(target);
60759
+ }
60760
+ }, 1);
60761
+ }
59905
60762
  if (!this.__reopenSelectionPopup) {
59906
60763
  return;
59907
60764
  }
@@ -59946,14 +60803,19 @@ function _wrap_native_super(Class) {
59946
60803
  },
59947
60804
  {
59948
60805
  key: "onSelectionStart",
59949
- value: function onSelectionStart() {
60806
+ value: function onSelectionStart(event) {
60807
+ // A key held down moves the caret on every repeat, with one keyup
60808
+ if (event === null || event === void 0 ? void 0 : event.repeat) {
60809
+ this.__followCaret();
60810
+ }
59950
60811
  this.snapRange = this.j.s.range.cloneRange();
60812
+ this.__keyDownElement = this.__elementAt(this.snapRange.startContainer);
59951
60813
  }
59952
60814
  },
59953
60815
  {
59954
60816
  key: "onSelectionEnd",
59955
60817
  value: function onSelectionEnd(e) {
59956
- 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)) {
60818
+ 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)) {
59957
60819
  return;
59958
60820
  }
59959
60821
  var snapRange = this.snapRange, range = this.j.s.range;
@@ -60091,6 +60953,12 @@ __decorate([
60091
60953
  __decorate([
60092
60954
  (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)(':outsideClick')
60093
60955
  ], inlinePopup.prototype, "onOutsideClick", null);
60956
+ __decorate([
60957
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)(':keyup')
60958
+ ], inlinePopup.prototype, "onKeyUp", null);
60959
+ __decorate([
60960
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)(':recalcPositionPopup')
60961
+ ], inlinePopup.prototype, "onRecalcPositionPopup", null);
60094
60962
  __decorate([
60095
60963
  _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.autobind
60096
60964
  ], inlinePopup.prototype, "__onDocumentMouseDown", null);
@@ -62617,9 +63485,11 @@ var isButtonSeparator = function isButtonSeparator(item) {
62617
63485
  return cleaned;
62618
63486
  }
62619
63487
  /**
62620
- * The width that decides which breakpoint set the toolbar uses. A toolbar
62621
- * rendered into an external container (`toolbar` set to an element or a
62622
- * selector) lays out in that container, so its width is what matters there.
63488
+ * The width that decides which breakpoint set the toolbar uses: the editor's
63489
+ * own width, or its parent's while the editor has none yet (for example
63490
+ * while hidden at init). A toolbar rendered into an external container
63491
+ * (`toolbar` set to an element or a selector) lays out in that container, so
63492
+ * its width is what matters there.
62623
63493
  */ function adaptiveWidth(editor) {
62624
63494
  var _a;
62625
63495
  var toolbar = editor.o.toolbar;
@@ -62629,7 +63499,7 @@ var isButtonSeparator = function isButtonSeparator(item) {
62629
63499
  return width;
62630
63500
  }
62631
63501
  }
62632
- return ((_a = editor.container.parentElement) !== null && _a !== void 0 ? _a : editor.container).offsetWidth;
63502
+ return editor.container.offsetWidth || ((_a = editor.container.parentElement) !== null && _a !== void 0 ? _a : editor.container).offsetWidth;
62633
63503
  }
62634
63504
  /**
62635
63505
  * Rebuild toolbar in depends on editor's width
@@ -62705,21 +63575,41 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_1__.pluginSystem.add('mobile', mobile);
62705
63575
  /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6441);
62706
63576
  /* harmony import */ var _icons_ol_svg_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(13465);
62707
63577
  /* harmony import */ var _icons_ul_svg_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(50267);
63578
+ /* harmony import */ var _start_dialog_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(83086);
63579
+ function _define_property(obj, key, value) {
63580
+ if (key in obj) {
63581
+ Object.defineProperty(obj, key, {
63582
+ value: value,
63583
+ enumerable: true,
63584
+ configurable: true,
63585
+ writable: true
63586
+ });
63587
+ } else obj[key] = value;
63588
+ return obj;
63589
+ }
62708
63590
  /*!
62709
63591
  * Jodit Editor (https://xdsoft.net/jodit/)
62710
63592
  * Released under MIT see LICENSE.txt in the project root for license information.
62711
63593
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
62712
- */
63594
+ */ ;
62713
63595
 
62714
63596
 
62715
63597
 
62716
63598
 
63599
+
63600
+ /**
63601
+ * The `ol` dropdown item that asks for the list's start number
63602
+ */ var START = 'start';
62717
63603
  var memoExec = function memoExec(jodit, _, param) {
62718
63604
  var control = param.control;
62719
63605
  var _a;
62720
63606
  var key = "button".concat(control.command);
62721
63607
  var 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);
62722
- (0,_core_helpers_utils_data_bind_js__WEBPACK_IMPORTED_MODULE_0__.dataBind)(jodit, key, value);
63608
+ if (value === START) {
63609
+ (0,_start_dialog_js__WEBPACK_IMPORTED_MODULE_5__.openStartDialog)(jodit);
63610
+ return;
63611
+ }
63612
+ ;(0,_core_helpers_utils_data_bind_js__WEBPACK_IMPORTED_MODULE_0__.dataBind)(jodit, key, value);
62723
63613
  jodit.execCommand(control.command, false, value === 'default' ? null : value);
62724
63614
  };
62725
63615
  _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"]);
@@ -62743,15 +63633,19 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.controls.ol = {
62743
63633
  'ol'
62744
63634
  ],
62745
63635
  tooltip: 'Insert Ordered List',
62746
- list: {
63636
+ list: _define_property({
62747
63637
  default: 'Default',
62748
63638
  'lower-alpha': 'Lower Alpha',
62749
63639
  'lower-greek': 'Lower Greek',
62750
63640
  'lower-roman': 'Lower Roman',
62751
63641
  'upper-alpha': 'Upper Alpha',
62752
63642
  'upper-roman': 'Upper Roman'
62753
- },
62754
- exec: memoExec
63643
+ }, START, 'Start at...'),
63644
+ exec: memoExec,
63645
+ isChildDisabled: function isChildDisabled(jodit, button) {
63646
+ var _a;
63647
+ return ((_a = button.control.args) === null || _a === void 0 ? void 0 : _a[0]) === START && !(0,_start_dialog_js__WEBPACK_IMPORTED_MODULE_5__.closestOrderedList)(jodit);
63648
+ }
62755
63649
  };
62756
63650
 
62757
63651
 
@@ -62961,6 +63855,88 @@ __decorate([
62961
63855
  _core_global_js__WEBPACK_IMPORTED_MODULE_1__.pluginSystem.add('orderedList', orderedList);
62962
63856
 
62963
63857
 
63858
+ /***/ }),
63859
+
63860
+ /***/ 83086:
63861
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
63862
+
63863
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
63864
+ /* harmony export */ closestOrderedList: function() { return /* binding */ closestOrderedList; },
63865
+ /* harmony export */ openStartDialog: function() { return /* binding */ openStartDialog; }
63866
+ /* harmony export */ });
63867
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
63868
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29960);
63869
+ /* harmony import */ var _core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(62843);
63870
+ /* harmony import */ var _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2525);
63871
+ /*!
63872
+ * Jodit Editor (https://xdsoft.net/jodit/)
63873
+ * Released under MIT see LICENSE.txt in the project root for license information.
63874
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
63875
+ */
63876
+
63877
+
63878
+
63879
+ /**
63880
+ * The numbered list the selection is in
63881
+ */ function closestOrderedList(jodit) {
63882
+ var current = jodit.s.current();
63883
+ return current ? _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(current, 'ol', jodit.editor) : null;
63884
+ }
63885
+ /**
63886
+ * Asks for the number of the first item of the list the selection is in,
63887
+ * and sets the list's `start`. The selection is put back when the dialog
63888
+ * closes, however it closes.
63889
+ */ function openStartDialog(jodit) {
63890
+ var list = closestOrderedList(jodit);
63891
+ if (!list) {
63892
+ return;
63893
+ }
63894
+ var dialog = jodit.dlg({
63895
+ resizable: false,
63896
+ closeOnClickOverlay: true
63897
+ });
63898
+ var input = new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_3__.UIInput(jodit, {
63899
+ name: 'start',
63900
+ type: 'number',
63901
+ label: 'Number for the first item',
63902
+ value: list.start
63903
+ });
63904
+ var form = new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_3__.UIForm(jodit, [
63905
+ new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_3__.UIBlock(jodit, [
63906
+ input
63907
+ ])
63908
+ ]);
63909
+ form.container.classList.add('jodit-dialog_alert');
63910
+ form.onSubmit(function(param) {
63911
+ var start = param.start;
63912
+ var value = start === '' ? 1 : parseInt(start, 10);
63913
+ if (isNaN(value)) {
63914
+ input.focus();
63915
+ return false;
63916
+ }
63917
+ dialog.close();
63918
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(list, 'start', value === 1 ? null : value);
63919
+ jodit.synchronizeValues();
63920
+ });
63921
+ jodit.s.save();
63922
+ dialog.e.on(dialog, 'afterClose', function() {
63923
+ jodit.s.focus();
63924
+ jodit.s.restore();
63925
+ });
63926
+ dialog.setFooter([
63927
+ (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_2__.Button)(jodit, 'cancel', 'Cancel').onAction(function() {
63928
+ return dialog.close();
63929
+ }),
63930
+ (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_2__.Button)(jodit, 'ok', 'Apply', 'primary').onAction(function() {
63931
+ return form.submit();
63932
+ })
63933
+ ]);
63934
+ dialog.open(form, jodit.i18n('Start numbering at'), true, true);
63935
+ input.focus();
63936
+ input.nativeInput.select();
63937
+ }
63938
+
63939
+
62964
63940
  /***/ }),
62965
63941
 
62966
63942
  /***/ 71842:
@@ -64529,6 +65505,10 @@ function _wrap_native_super(Class) {
64529
65505
  return true;
64530
65506
  }
64531
65507
  var first = root.firstChild;
65508
+ // Firefox pads an empty editable body with a bare <br>
65509
+ 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)) {
65510
+ return true;
65511
+ }
64532
65512
  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)) {
64533
65513
  return false;
64534
65514
  }
@@ -64560,7 +65540,7 @@ function _wrap_native_super(Class) {
64560
65540
  _this.placeholderElm.innerHTML = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_5__.attr)(editor.element, 'placeholder') || '';
64561
65541
  }
64562
65542
  editor.e.fire('placeholder', _this.placeholderElm.innerHTML);
64563
- 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);
65543
+ 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);
64564
65544
  _this.addNativeListeners();
64565
65545
  _this.toggle();
64566
65546
  };
@@ -64609,11 +65589,13 @@ function _wrap_native_super(Class) {
64609
65589
  marginTop = parseInt(style2.getPropertyValue('margin-top'), 10);
64610
65590
  marginLeft = parseInt(style2.getPropertyValue('margin-left'), 10);
64611
65591
  (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(this.placeholderElm, {
65592
+ fontFamily: style2.getPropertyValue('font-family'),
64612
65593
  fontSize: parseInt(style2.getPropertyValue('font-size'), 10),
64613
65594
  lineHeight: style2.getPropertyValue('line-height')
64614
65595
  });
64615
65596
  } else {
64616
65597
  (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(this.placeholderElm, {
65598
+ fontFamily: style.getPropertyValue('font-family'),
64617
65599
  fontSize: parseInt(style.getPropertyValue('font-size'), 10),
64618
65600
  lineHeight: style.getPropertyValue('line-height')
64619
65601
  });
@@ -66067,7 +67049,10 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.resizer = {
66067
67049
  /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(21537);
66068
67050
  /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(41180);
66069
67051
  /* harmony import */ var _core_plugin_plugin_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(20356);
66070
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(71675);
67052
+ /* harmony import */ var _core_selection_helpers_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(45124);
67053
+ /* harmony import */ var _core_ui_index_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(67510);
67054
+ /* harmony import */ var _core_ui_popup_index_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(61259);
67055
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(71675);
66071
67056
  function _assert_this_initialized(self) {
66072
67057
  if (self === void 0) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
66073
67058
  return self;
@@ -66197,6 +67182,9 @@ function _wrap_native_super(Class) {
66197
67182
 
66198
67183
 
66199
67184
 
67185
+
67186
+
67187
+
66200
67188
  var keyBInd = '__jodit-resizer_binded';
66201
67189
  /**
66202
67190
  * Reads a plain pixel value out of a `width`/`height` attribute.
@@ -66216,6 +67204,12 @@ var keyBInd = '__jodit-resizer_binded';
66216
67204
  */ function heightFollowsWidth(element) {
66217
67205
  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');
66218
67206
  }
67207
+ var IFRAME_WRAPPER = '[data-jodit_iframe_wrapper]';
67208
+ /**
67209
+ * A click on an embed lands on its wrapper, so it selects the embed, until the
67210
+ * wrapper is active. While the editor is locked, as during resizing, the
67211
+ * wrapper takes the mouse again.
67212
+ */ var EMBED_WRAPPER_STYLE = "".concat(IFRAME_WRAPPER, "{position:relative;display:block;user-select:none}") + "".concat(IFRAME_WRAPPER, " iframe{position:relative}") + "".concat(IFRAME_WRAPPER, "::after{position:absolute;z-index:1;display:block;background:transparent;content:'';cursor:pointer;inset:0}") + "".concat(IFRAME_WRAPPER, "[data-jodit-wrapper_active=true] iframe{z-index:2}") + ".jodit_lock ".concat(IFRAME_WRAPPER, "[data-jodit-wrapper_active=true] iframe{z-index:1}");
66219
67213
  /**
66220
67214
  * The module creates a supporting frame for resizing of the elements img and table
66221
67215
  */ var resizer = /*#__PURE__*/ function(Plugin) {
@@ -66240,6 +67234,8 @@ var keyBInd = '__jodit-resizer_binded';
66240
67234
  _this.sizeViewer = _this.rect.getElementsByTagName('span')[0];
66241
67235
  _this.pointerX = 0;
66242
67236
  _this.pointerY = 0;
67237
+ _this.__keyDownRange = null;
67238
+ _this.__keyDownTable = null;
66243
67239
  _this.isAltMode = false;
66244
67240
  _this.onClickElement = function(element) {
66245
67241
  if (_this.isResizeMode) {
@@ -66291,6 +67287,8 @@ var keyBInd = '__jodit-resizer_binded';
66291
67287
  /** @override */ key: "afterInit",
66292
67288
  value: function afterInit(editor) {
66293
67289
  var _this = this;
67290
+ // It goes in the editing document, so iframe mode has it whatever `iframeStyle` holds
67291
+ (0,_core_global_js__WEBPACK_IMPORTED_MODULE_3__.getContainer)(editor, 'resizer', 'style', true).textContent = EMBED_WRAPPER_STYLE;
66294
67292
  (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.$$)('div', this.rect).forEach(function(resizeHandle) {
66295
67293
  editor.e.on(resizeHandle, 'mousedown.resizer touchstart.resizer', _this.onStartResizing.bind(_this, resizeHandle));
66296
67294
  });
@@ -66299,7 +67297,11 @@ var keyBInd = '__jodit-resizer_binded';
66299
67297
  if (isReadOnly) {
66300
67298
  _this.hide();
66301
67299
  }
66302
- }).on('afterInit changePlace', this.addEventListeners.bind(this)).on('afterGetValueFromEditor.resizer', function(data) {
67300
+ }).on('afterInit changePlace', this.addEventListeners.bind(this))// Handlers without a namespace run first, ahead of those that
67301
+ // move the caret, as table-keyboard-navigation's do
67302
+ .on('keydown', this.onEditorKeyDown, {
67303
+ top: true
67304
+ }).on('afterGetValueFromEditor.resizer', function(data) {
66303
67305
  var rgx = /<jodit[^>]+data-jodit_iframe_wrapper[^>]+>(.*?<iframe[^>]*>.*?<\/iframe>.*?)<\/jodit>/gi;
66304
67306
  if (rgx.test(data.value)) {
66305
67307
  data.value = data.value.replace(rgx, '$1');
@@ -66467,6 +67469,50 @@ var keyBInd = '__jodit-resizer_binded';
66467
67469
  }
66468
67470
  }
66469
67471
  },
67472
+ {
67473
+ key: "onEditorKeyDown",
67474
+ value: function onEditorKeyDown(event) {
67475
+ // A key held down moves the caret on every repeat, with one keyup
67476
+ if (event === null || event === void 0 ? void 0 : event.repeat) {
67477
+ this.__followCaret();
67478
+ }
67479
+ this.__keyDownRange = this.j.s.range.cloneRange();
67480
+ this.__keyDownTable = this.__caretTable();
67481
+ }
67482
+ },
67483
+ {
67484
+ key: "__caretTable",
67485
+ value: function __caretTable() {
67486
+ return _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.closest(this.j.s.range.startContainer, 'table', this.j.editor);
67487
+ }
67488
+ },
67489
+ {
67490
+ /**
67491
+ * Hide the frame once a key has moved the caret off its element, and
67492
+ * frame a table the caret has moved into, as clicks do
67493
+ */ key: "onEditorKeyUp",
67494
+ value: function onEditorKeyUp() {
67495
+ this.__followCaret();
67496
+ }
67497
+ },
67498
+ {
67499
+ key: "__followCaret",
67500
+ value: function __followCaret() {
67501
+ var before = this.__keyDownRange;
67502
+ this.__keyDownRange = null;
67503
+ if (!(0,_core_selection_helpers_index_js__WEBPACK_IMPORTED_MODULE_7__.isMoved)(this.j, before)) {
67504
+ return;
67505
+ }
67506
+ if (this.isShown && this.element && !this.j.s.range.intersectsNode(this.element)) {
67507
+ this.hide();
67508
+ }
67509
+ var table = this.__caretTable();
67510
+ if (table && table !== this.__keyDownTable && this.j.o.allowResizeTags.has('table')) {
67511
+ this.__bind(table);
67512
+ this.onClickElement(table);
67513
+ }
67514
+ }
67515
+ },
66470
67516
  {
66471
67517
  key: "onKeyDown",
66472
67518
  value: function onKeyDown(e) {
@@ -66496,6 +67542,11 @@ var keyBInd = '__jodit-resizer_binded';
66496
67542
  return;
66497
67543
  }
66498
67544
  if (!this.isResizeMode) {
67545
+ // A click in the element's popup, or in a list it opens, works on
67546
+ // the element, so it keeps its frame
67547
+ 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)) {
67548
+ return;
67549
+ }
66499
67550
  return this.hide();
66500
67551
  }
66501
67552
  e.stopImmediatePropagation();
@@ -66695,7 +67746,7 @@ var keyBInd = '__jodit-resizer_binded';
66695
67746
  this.hide();
66696
67747
  _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove(this.layer);
66697
67748
  _core_global_js__WEBPACK_IMPORTED_MODULE_3__.eventEmitter.off('hideHelpers', this.hide);
66698
- jodit.e.off(this.j.ow, '.resizer').off('.resizer');
67749
+ jodit.e.off(this.j.ow, '.resizer').off('.resizer').off('keydown', this.onEditorKeyDown);
66699
67750
  }
66700
67751
  }
66701
67752
  ]);
@@ -66716,6 +67767,12 @@ __decorate([
66716
67767
  __decorate([
66717
67768
  _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.autobind
66718
67769
  ], resizer.prototype, "onResize", null);
67770
+ __decorate([
67771
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.autobind
67772
+ ], resizer.prototype, "onEditorKeyDown", null);
67773
+ __decorate([
67774
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.watch)(':keyup')
67775
+ ], resizer.prototype, "onEditorKeyUp", null);
66719
67776
  __decorate([
66720
67777
  _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.autobind
66721
67778
  ], resizer.prototype, "onKeyDown", null);
@@ -68576,8 +69633,9 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.tableAllowCellSelection
68576
69633
  /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(580);
68577
69634
  /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(21537);
68578
69635
  /* harmony import */ var _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(50911);
68579
- /* harmony import */ var _modules_table_table_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(76014);
68580
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(55311);
69636
+ /* harmony import */ var _core_selection_helpers_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(45124);
69637
+ /* harmony import */ var _modules_table_table_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(76014);
69638
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(55311);
68581
69639
  function _array_like_to_array(arr, len) {
68582
69640
  if (len == null || len > arr.length) len = arr.length;
68583
69641
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
@@ -68752,6 +69810,7 @@ function _wrap_native_super(Class) {
68752
69810
 
68753
69811
 
68754
69812
 
69813
+
68755
69814
  var key = 'table_processor_observer';
68756
69815
  var MOUSE_MOVE_LABEL = 'onMoveTableSelectCell';
68757
69816
  var selectCells = /*#__PURE__*/ function(Plugin) {
@@ -68761,6 +69820,13 @@ var selectCells = /*#__PURE__*/ function(Plugin) {
68761
69820
  _class_call_check(this, selectCells);
68762
69821
  var _this;
68763
69822
  _this = _call_super(this, selectCells, arguments);
69823
+ /**
69824
+ * The cell with the caret, and the selection, when a key went down
69825
+ */ _this.__keyDownCell = null;
69826
+ _this.__keyDownRange = null;
69827
+ /**
69828
+ * A link's popup replaces the cell's while the caret is in the link
69829
+ */ _this.__keyDownInLink = false;
68764
69830
  /**
68765
69831
  * First selected cell
68766
69832
  */ _this.__selectedCell = null;
@@ -68775,7 +69841,7 @@ var selectCells = /*#__PURE__*/ function(Plugin) {
68775
69841
  get: /**
68776
69842
  * Shortcut for Jodit.modules.Table
68777
69843
  */ function get() {
68778
- return this.j.getInstance(_modules_table_table_js__WEBPACK_IMPORTED_MODULE_6__.Table, this.j.o);
69844
+ return this.j.getInstance(_modules_table_table_js__WEBPACK_IMPORTED_MODULE_7__.Table, this.j.o);
68779
69845
  }
68780
69846
  },
68781
69847
  {
@@ -68785,7 +69851,11 @@ var selectCells = /*#__PURE__*/ function(Plugin) {
68785
69851
  if (!jodit.o.tableAllowCellSelection) {
68786
69852
  return;
68787
69853
  }
68788
- jodit.e.on('keydown.select-cells', function(event) {
69854
+ jodit.e// Handlers without a namespace run first, ahead of those that
69855
+ // move the caret, as table-keyboard-navigation's do
69856
+ .on('keydown', this.__onKeyDown, {
69857
+ top: true
69858
+ }).on('keydown.select-cells', function(event) {
68789
69859
  if (event.key === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.KEY_TAB) {
68790
69860
  _this.unselectCells();
68791
69861
  }
@@ -68812,6 +69882,77 @@ var selectCells = /*#__PURE__*/ function(Plugin) {
68812
69882
  });
68813
69883
  }
68814
69884
  },
69885
+ {
69886
+ key: "__onKeyDown",
69887
+ value: function __onKeyDown(event) {
69888
+ // A key held down moves the caret on every repeat, with one keyup
69889
+ if (event === null || event === void 0 ? void 0 : event.repeat) {
69890
+ this.__followCaret();
69891
+ }
69892
+ this.__keyDownCell = this.__caretCell();
69893
+ this.__keyDownRange = this.j.s.range.cloneRange();
69894
+ this.__keyDownInLink = this.__isInLink();
69895
+ }
69896
+ },
69897
+ {
69898
+ key: "__isInLink",
69899
+ value: function __isInLink() {
69900
+ return Boolean(_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.closest(this.j.s.range.startContainer, 'a', this.j.editor));
69901
+ }
69902
+ },
69903
+ {
69904
+ /**
69905
+ * Where the selection starts rather than `s.current()`, which finds the
69906
+ * first cell when the caret is just before the table
69907
+ */ key: "__caretCell",
69908
+ value: function __caretCell() {
69909
+ 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);
69910
+ }
69911
+ },
69912
+ {
69913
+ /**
69914
+ * A key that moves the caret into a cell, from another cell or from
69915
+ * outside the table, marks that cell and opens its popup, as a click on
69916
+ * it does. One that moves the caret out of the table unmarks the cells
69917
+ */ key: "onKeyUp",
69918
+ value: function onKeyUp() {
69919
+ this.__followCaret();
69920
+ }
69921
+ },
69922
+ {
69923
+ key: "__followCaret",
69924
+ value: function __followCaret() {
69925
+ var _this = this;
69926
+ var before = this.__keyDownRange;
69927
+ this.__keyDownRange = null;
69928
+ if (this.j.o.readonly || !(0,_core_selection_helpers_index_js__WEBPACK_IMPORTED_MODULE_6__.isMoved)(this.j, before)) {
69929
+ return;
69930
+ }
69931
+ var cell = this.__caretCell();
69932
+ var hasLeftLink = this.__keyDownInLink && !this.__isInLink();
69933
+ if (cell === this.__keyDownCell && !(cell && hasLeftLink)) {
69934
+ return;
69935
+ }
69936
+ var hadMarked = this.__tableModule.getAllSelectedCells().length > 0;
69937
+ this.unselectCells();
69938
+ if (!cell) {
69939
+ if (hadMarked) {
69940
+ this.j.e.fire('hidePopup', 'cells');
69941
+ }
69942
+ return;
69943
+ }
69944
+ var table = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.closest(cell, 'table', this.j.editor);
69945
+ if (!table) {
69946
+ return;
69947
+ }
69948
+ // As after a click, the first change to the cell keeps the mark
69949
+ this.__selectedCell = cell;
69950
+ this.__tableModule.addSelection(cell);
69951
+ this.j.e.fire('showPopup', table, function() {
69952
+ return (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.position)(cell, _this.j);
69953
+ }, 'cells');
69954
+ }
69955
+ },
68815
69956
  {
68816
69957
  /**
68817
69958
  * Mouse click inside the table
@@ -69184,7 +70325,7 @@ var selectCells = /*#__PURE__*/ function(Plugin) {
69184
70325
  /** @override */ key: "beforeDestruct",
69185
70326
  value: function beforeDestruct(jodit) {
69186
70327
  this.__onRemoveSelection();
69187
- jodit.e.off('.select-cells');
70328
+ jodit.e.off('.select-cells').off('keydown', this.__onKeyDown);
69188
70329
  }
69189
70330
  }
69190
70331
  ]);
@@ -69193,6 +70334,12 @@ var selectCells = /*#__PURE__*/ function(Plugin) {
69193
70334
  selectCells.requires = [
69194
70335
  'select'
69195
70336
  ];
70337
+ __decorate([
70338
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.autobind
70339
+ ], selectCells.prototype, "__onKeyDown", null);
70340
+ __decorate([
70341
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.watch)(':keyup')
70342
+ ], selectCells.prototype, "onKeyUp", null);
69196
70343
  __decorate([
69197
70344
  _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.autobind
69198
70345
  ], selectCells.prototype, "onStartSelection", null);
@@ -75507,7 +76654,9 @@ var WORK_KEYS = new Set([
75507
76654
  case _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.KEY_LEFT:
75508
76655
  {
75509
76656
  next = getNextCell();
75510
- if (!next) {
76657
+ // Left in the first cell leaves the table, as Up in the
76658
+ // top row does
76659
+ if (!next && key === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.KEY_TAB) {
75511
76660
  tableModule.appendRow(table, !isPrev ? false : _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.first(table, function(node) {
75512
76661
  return _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(node, 'tr');
75513
76662
  }), !isPrev);
@@ -75535,7 +76684,6 @@ var WORK_KEYS = new Set([
75535
76684
  if (!next) {
75536
76685
  return;
75537
76686
  }
75538
- editor.e.fire('hidePopup hideResizer');
75539
76687
  if (!next.firstChild) {
75540
76688
  var first = editor.createInside.element('br');
75541
76689
  _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.append(next, first);