jodit-pro 4.18.8 → 4.18.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (351) hide show
  1. package/es2015/jodit.css +2 -2
  2. package/es2015/jodit.fat.min.css +1 -1
  3. package/es2015/jodit.fat.min.js +26 -26
  4. package/es2015/jodit.js +1117 -197
  5. package/es2015/jodit.min.css +1 -1
  6. package/es2015/jodit.min.js +11 -11
  7. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  8. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  9. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  10. package/es2015/plugins/autocomplete/autocomplete.css +1 -1
  11. package/es2015/plugins/autocomplete/autocomplete.js +1 -1
  12. package/es2015/plugins/autocomplete/autocomplete.min.js +1 -1
  13. package/es2015/plugins/backup/backup.css +1 -1
  14. package/es2015/plugins/backup/backup.js +1 -1
  15. package/es2015/plugins/backup/backup.min.js +1 -1
  16. package/es2015/plugins/button-generator/button-generator.css +1 -1
  17. package/es2015/plugins/button-generator/button-generator.js +1 -1
  18. package/es2015/plugins/button-generator/button-generator.min.js +1 -1
  19. package/es2015/plugins/change-case/change-case.js +1 -1
  20. package/es2015/plugins/change-case/change-case.min.js +1 -1
  21. package/es2015/plugins/chart/chart.css +1 -1
  22. package/es2015/plugins/chart/chart.js +1 -1
  23. package/es2015/plugins/chart/chart.min.js +1 -1
  24. package/es2015/plugins/color-picker/color-picker.css +1 -1
  25. package/es2015/plugins/color-picker/color-picker.js +1 -1
  26. package/es2015/plugins/color-picker/color-picker.min.js +1 -1
  27. package/es2015/plugins/emoji/emoji.css +1 -1
  28. package/es2015/plugins/emoji/emoji.js +1 -1
  29. package/es2015/plugins/emoji/emoji.min.js +1 -1
  30. package/es2015/plugins/export-docs/export-docs.js +1 -1
  31. package/es2015/plugins/export-docs/export-docs.min.js +1 -1
  32. package/es2015/plugins/finder/finder.css +1 -1
  33. package/es2015/plugins/finder/finder.js +1 -1
  34. package/es2015/plugins/finder/finder.min.js +1 -1
  35. package/es2015/plugins/google-maps/google-maps.css +1 -1
  36. package/es2015/plugins/google-maps/google-maps.js +1 -1
  37. package/es2015/plugins/google-maps/google-maps.min.js +1 -1
  38. package/es2015/plugins/google-search/google-search.js +1 -1
  39. package/es2015/plugins/google-search/google-search.min.js +1 -1
  40. package/es2015/plugins/highlight-signature/highlight-signature.js +1 -1
  41. package/es2015/plugins/highlight-signature/highlight-signature.min.js +1 -1
  42. package/es2015/plugins/iframe-editor/iframe-editor.css +1 -1
  43. package/es2015/plugins/iframe-editor/iframe-editor.js +1 -1
  44. package/es2015/plugins/iframe-editor/iframe-editor.min.js +1 -1
  45. package/es2015/plugins/image-editor-pro/image-editor-pro.css +1 -1
  46. package/es2015/plugins/image-editor-pro/image-editor-pro.js +1 -1
  47. package/es2015/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  48. package/es2015/plugins/keyboard/keyboard.css +1 -1
  49. package/es2015/plugins/keyboard/keyboard.js +1 -1
  50. package/es2015/plugins/keyboard/keyboard.min.js +1 -1
  51. package/es2015/plugins/math/math.css +1 -1
  52. package/es2015/plugins/math/math.js +1 -1
  53. package/es2015/plugins/math/math.min.js +1 -1
  54. package/es2015/plugins/mobile-view/mobile-view.js +1 -1
  55. package/es2015/plugins/mobile-view/mobile-view.min.js +1 -1
  56. package/es2015/plugins/page-break/page-break.js +1 -1
  57. package/es2015/plugins/page-break/page-break.min.js +1 -1
  58. package/es2015/plugins/paste-code/paste-code.css +1 -1
  59. package/es2015/plugins/paste-code/paste-code.js +1 -1
  60. package/es2015/plugins/paste-code/paste-code.min.js +1 -1
  61. package/es2015/plugins/paste-from-word/paste-from-word.js +1 -1
  62. package/es2015/plugins/paste-from-word/paste-from-word.min.js +1 -1
  63. package/es2015/plugins/show-blocks/show-blocks.js +1 -1
  64. package/es2015/plugins/show-blocks/show-blocks.min.js +1 -1
  65. package/es2015/plugins/style/style.css +1 -1
  66. package/es2015/plugins/style/style.js +1 -1
  67. package/es2015/plugins/style/style.min.js +1 -1
  68. package/es2015/plugins/templates/templates.css +1 -1
  69. package/es2015/plugins/templates/templates.js +1 -1
  70. package/es2015/plugins/templates/templates.min.js +1 -1
  71. package/es2015/plugins/todo-list/todo-list.css +1 -1
  72. package/es2015/plugins/todo-list/todo-list.js +1 -1
  73. package/es2015/plugins/todo-list/todo-list.min.js +1 -1
  74. package/es2015/plugins/translate/translate.css +1 -1
  75. package/es2015/plugins/translate/translate.js +1 -1
  76. package/es2015/plugins/translate/translate.min.js +1 -1
  77. package/es2015/plugins/tune-block/tune-block.css +1 -1
  78. package/es2015/plugins/tune-block/tune-block.js +1 -1
  79. package/es2015/plugins/tune-block/tune-block.min.js +1 -1
  80. package/es2018/jodit.fat.min.css +1 -1
  81. package/es2018/jodit.fat.min.js +10 -10
  82. package/es2018/jodit.min.css +1 -1
  83. package/es2018/jodit.min.js +21 -21
  84. package/es2018/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  85. package/es2018/plugins/autocomplete/autocomplete.min.js +1 -1
  86. package/es2018/plugins/backup/backup.min.js +1 -1
  87. package/es2018/plugins/button-generator/button-generator.min.js +1 -1
  88. package/es2018/plugins/change-case/change-case.min.js +1 -1
  89. package/es2018/plugins/chart/chart.min.js +1 -1
  90. package/es2018/plugins/color-picker/color-picker.min.js +1 -1
  91. package/es2018/plugins/emoji/emoji.min.js +1 -1
  92. package/es2018/plugins/export-docs/export-docs.min.js +1 -1
  93. package/es2018/plugins/finder/finder.min.js +1 -1
  94. package/es2018/plugins/google-maps/google-maps.min.js +1 -1
  95. package/es2018/plugins/google-search/google-search.min.js +1 -1
  96. package/es2018/plugins/highlight-signature/highlight-signature.min.js +1 -1
  97. package/es2018/plugins/iframe-editor/iframe-editor.min.js +1 -1
  98. package/es2018/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  99. package/es2018/plugins/keyboard/keyboard.min.js +1 -1
  100. package/es2018/plugins/math/math.min.js +1 -1
  101. package/es2018/plugins/mobile-view/mobile-view.min.js +1 -1
  102. package/es2018/plugins/page-break/page-break.min.js +1 -1
  103. package/es2018/plugins/paste-code/paste-code.min.js +1 -1
  104. package/es2018/plugins/paste-from-word/paste-from-word.min.js +1 -1
  105. package/es2018/plugins/show-blocks/show-blocks.min.js +1 -1
  106. package/es2018/plugins/style/style.min.js +1 -1
  107. package/es2018/plugins/templates/templates.min.js +1 -1
  108. package/es2018/plugins/todo-list/todo-list.min.js +1 -1
  109. package/es2018/plugins/translate/translate.min.js +1 -1
  110. package/es2018/plugins/tune-block/tune-block.min.js +1 -1
  111. package/es2021/jodit.css +2 -2
  112. package/es2021/jodit.fat.min.css +1 -1
  113. package/es2021/jodit.fat.min.js +14 -14
  114. package/es2021/jodit.js +1092 -197
  115. package/es2021/jodit.min.css +1 -1
  116. package/es2021/jodit.min.js +14 -14
  117. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  118. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  119. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  120. package/es2021/plugins/autocomplete/autocomplete.css +1 -1
  121. package/es2021/plugins/autocomplete/autocomplete.js +1 -1
  122. package/es2021/plugins/autocomplete/autocomplete.min.js +1 -1
  123. package/es2021/plugins/backup/backup.css +1 -1
  124. package/es2021/plugins/backup/backup.js +1 -1
  125. package/es2021/plugins/backup/backup.min.js +1 -1
  126. package/es2021/plugins/button-generator/button-generator.css +1 -1
  127. package/es2021/plugins/button-generator/button-generator.js +1 -1
  128. package/es2021/plugins/button-generator/button-generator.min.js +1 -1
  129. package/es2021/plugins/change-case/change-case.js +1 -1
  130. package/es2021/plugins/change-case/change-case.min.js +1 -1
  131. package/es2021/plugins/chart/chart.css +1 -1
  132. package/es2021/plugins/chart/chart.js +1 -1
  133. package/es2021/plugins/chart/chart.min.js +1 -1
  134. package/es2021/plugins/color-picker/color-picker.css +1 -1
  135. package/es2021/plugins/color-picker/color-picker.js +1 -1
  136. package/es2021/plugins/color-picker/color-picker.min.js +1 -1
  137. package/es2021/plugins/emoji/emoji.css +1 -1
  138. package/es2021/plugins/emoji/emoji.js +1 -1
  139. package/es2021/plugins/emoji/emoji.min.js +1 -1
  140. package/es2021/plugins/export-docs/export-docs.js +1 -1
  141. package/es2021/plugins/export-docs/export-docs.min.js +1 -1
  142. package/es2021/plugins/finder/finder.css +1 -1
  143. package/es2021/plugins/finder/finder.js +1 -1
  144. package/es2021/plugins/finder/finder.min.js +1 -1
  145. package/es2021/plugins/google-maps/google-maps.css +1 -1
  146. package/es2021/plugins/google-maps/google-maps.js +1 -1
  147. package/es2021/plugins/google-maps/google-maps.min.js +1 -1
  148. package/es2021/plugins/google-search/google-search.js +1 -1
  149. package/es2021/plugins/google-search/google-search.min.js +1 -1
  150. package/es2021/plugins/highlight-signature/highlight-signature.js +1 -1
  151. package/es2021/plugins/highlight-signature/highlight-signature.min.js +1 -1
  152. package/es2021/plugins/iframe-editor/iframe-editor.css +1 -1
  153. package/es2021/plugins/iframe-editor/iframe-editor.js +1 -1
  154. package/es2021/plugins/iframe-editor/iframe-editor.min.js +1 -1
  155. package/es2021/plugins/image-editor-pro/image-editor-pro.css +1 -1
  156. package/es2021/plugins/image-editor-pro/image-editor-pro.js +1 -1
  157. package/es2021/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  158. package/es2021/plugins/keyboard/keyboard.css +1 -1
  159. package/es2021/plugins/keyboard/keyboard.js +1 -1
  160. package/es2021/plugins/keyboard/keyboard.min.js +1 -1
  161. package/es2021/plugins/math/math.css +1 -1
  162. package/es2021/plugins/math/math.js +1 -1
  163. package/es2021/plugins/math/math.min.js +1 -1
  164. package/es2021/plugins/mobile-view/mobile-view.js +1 -1
  165. package/es2021/plugins/mobile-view/mobile-view.min.js +1 -1
  166. package/es2021/plugins/page-break/page-break.js +1 -1
  167. package/es2021/plugins/page-break/page-break.min.js +1 -1
  168. package/es2021/plugins/paste-code/paste-code.css +1 -1
  169. package/es2021/plugins/paste-code/paste-code.js +1 -1
  170. package/es2021/plugins/paste-code/paste-code.min.js +1 -1
  171. package/es2021/plugins/paste-from-word/paste-from-word.js +1 -1
  172. package/es2021/plugins/paste-from-word/paste-from-word.min.js +1 -1
  173. package/es2021/plugins/show-blocks/show-blocks.js +1 -1
  174. package/es2021/plugins/show-blocks/show-blocks.min.js +1 -1
  175. package/es2021/plugins/style/style.css +1 -1
  176. package/es2021/plugins/style/style.js +1 -1
  177. package/es2021/plugins/style/style.min.js +1 -1
  178. package/es2021/plugins/templates/templates.css +1 -1
  179. package/es2021/plugins/templates/templates.js +1 -1
  180. package/es2021/plugins/templates/templates.min.js +1 -1
  181. package/es2021/plugins/todo-list/todo-list.css +1 -1
  182. package/es2021/plugins/todo-list/todo-list.js +1 -1
  183. package/es2021/plugins/todo-list/todo-list.min.js +1 -1
  184. package/es2021/plugins/translate/translate.css +1 -1
  185. package/es2021/plugins/translate/translate.js +1 -1
  186. package/es2021/plugins/translate/translate.min.js +1 -1
  187. package/es2021/plugins/tune-block/tune-block.css +1 -1
  188. package/es2021/plugins/tune-block/tune-block.js +1 -1
  189. package/es2021/plugins/tune-block/tune-block.min.js +1 -1
  190. package/es2021.en/jodit.css +2 -2
  191. package/es2021.en/jodit.fat.min.css +1 -1
  192. package/es2021.en/jodit.fat.min.js +14 -14
  193. package/es2021.en/jodit.js +1092 -197
  194. package/es2021.en/jodit.min.css +1 -1
  195. package/es2021.en/jodit.min.js +30 -30
  196. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  197. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  198. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  199. package/es2021.en/plugins/autocomplete/autocomplete.css +1 -1
  200. package/es2021.en/plugins/autocomplete/autocomplete.js +1 -1
  201. package/es2021.en/plugins/autocomplete/autocomplete.min.js +1 -1
  202. package/es2021.en/plugins/backup/backup.css +1 -1
  203. package/es2021.en/plugins/backup/backup.js +1 -1
  204. package/es2021.en/plugins/backup/backup.min.js +1 -1
  205. package/es2021.en/plugins/button-generator/button-generator.css +1 -1
  206. package/es2021.en/plugins/button-generator/button-generator.js +1 -1
  207. package/es2021.en/plugins/button-generator/button-generator.min.js +1 -1
  208. package/es2021.en/plugins/change-case/change-case.js +1 -1
  209. package/es2021.en/plugins/change-case/change-case.min.js +1 -1
  210. package/es2021.en/plugins/chart/chart.css +1 -1
  211. package/es2021.en/plugins/chart/chart.js +1 -1
  212. package/es2021.en/plugins/chart/chart.min.js +1 -1
  213. package/es2021.en/plugins/color-picker/color-picker.css +1 -1
  214. package/es2021.en/plugins/color-picker/color-picker.js +1 -1
  215. package/es2021.en/plugins/color-picker/color-picker.min.js +1 -1
  216. package/es2021.en/plugins/emoji/emoji.css +1 -1
  217. package/es2021.en/plugins/emoji/emoji.js +1 -1
  218. package/es2021.en/plugins/emoji/emoji.min.js +1 -1
  219. package/es2021.en/plugins/export-docs/export-docs.js +1 -1
  220. package/es2021.en/plugins/export-docs/export-docs.min.js +1 -1
  221. package/es2021.en/plugins/finder/finder.css +1 -1
  222. package/es2021.en/plugins/finder/finder.js +1 -1
  223. package/es2021.en/plugins/finder/finder.min.js +1 -1
  224. package/es2021.en/plugins/google-maps/google-maps.css +1 -1
  225. package/es2021.en/plugins/google-maps/google-maps.js +1 -1
  226. package/es2021.en/plugins/google-maps/google-maps.min.js +1 -1
  227. package/es2021.en/plugins/google-search/google-search.js +1 -1
  228. package/es2021.en/plugins/google-search/google-search.min.js +1 -1
  229. package/es2021.en/plugins/highlight-signature/highlight-signature.js +1 -1
  230. package/es2021.en/plugins/highlight-signature/highlight-signature.min.js +1 -1
  231. package/es2021.en/plugins/iframe-editor/iframe-editor.css +1 -1
  232. package/es2021.en/plugins/iframe-editor/iframe-editor.js +1 -1
  233. package/es2021.en/plugins/iframe-editor/iframe-editor.min.js +1 -1
  234. package/es2021.en/plugins/image-editor-pro/image-editor-pro.css +1 -1
  235. package/es2021.en/plugins/image-editor-pro/image-editor-pro.js +1 -1
  236. package/es2021.en/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  237. package/es2021.en/plugins/keyboard/keyboard.css +1 -1
  238. package/es2021.en/plugins/keyboard/keyboard.js +1 -1
  239. package/es2021.en/plugins/keyboard/keyboard.min.js +1 -1
  240. package/es2021.en/plugins/math/math.css +1 -1
  241. package/es2021.en/plugins/math/math.js +1 -1
  242. package/es2021.en/plugins/math/math.min.js +1 -1
  243. package/es2021.en/plugins/mobile-view/mobile-view.js +1 -1
  244. package/es2021.en/plugins/mobile-view/mobile-view.min.js +1 -1
  245. package/es2021.en/plugins/page-break/page-break.js +1 -1
  246. package/es2021.en/plugins/page-break/page-break.min.js +1 -1
  247. package/es2021.en/plugins/paste-code/paste-code.css +1 -1
  248. package/es2021.en/plugins/paste-code/paste-code.js +1 -1
  249. package/es2021.en/plugins/paste-code/paste-code.min.js +1 -1
  250. package/es2021.en/plugins/paste-from-word/paste-from-word.js +1 -1
  251. package/es2021.en/plugins/paste-from-word/paste-from-word.min.js +1 -1
  252. package/es2021.en/plugins/show-blocks/show-blocks.js +1 -1
  253. package/es2021.en/plugins/show-blocks/show-blocks.min.js +1 -1
  254. package/es2021.en/plugins/style/style.css +1 -1
  255. package/es2021.en/plugins/style/style.js +1 -1
  256. package/es2021.en/plugins/style/style.min.js +1 -1
  257. package/es2021.en/plugins/templates/templates.css +1 -1
  258. package/es2021.en/plugins/templates/templates.js +1 -1
  259. package/es2021.en/plugins/templates/templates.min.js +1 -1
  260. package/es2021.en/plugins/todo-list/todo-list.css +1 -1
  261. package/es2021.en/plugins/todo-list/todo-list.js +1 -1
  262. package/es2021.en/plugins/todo-list/todo-list.min.js +1 -1
  263. package/es2021.en/plugins/translate/translate.css +1 -1
  264. package/es2021.en/plugins/translate/translate.js +1 -1
  265. package/es2021.en/plugins/translate/translate.min.js +1 -1
  266. package/es2021.en/plugins/tune-block/tune-block.css +1 -1
  267. package/es2021.en/plugins/tune-block/tune-block.js +1 -1
  268. package/es2021.en/plugins/tune-block/tune-block.min.js +1 -1
  269. package/es5/jodit.css +3 -3
  270. package/es5/jodit.fat.min.css +1 -1
  271. package/es5/jodit.fat.min.js +2 -2
  272. package/es5/jodit.js +1254 -207
  273. package/es5/jodit.min.css +3 -3
  274. package/es5/jodit.min.js +2 -2
  275. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  276. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  277. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  278. package/es5/plugins/autocomplete/autocomplete.css +1 -1
  279. package/es5/plugins/autocomplete/autocomplete.js +1 -1
  280. package/es5/plugins/autocomplete/autocomplete.min.js +1 -1
  281. package/es5/plugins/backup/backup.css +1 -1
  282. package/es5/plugins/backup/backup.js +1 -1
  283. package/es5/plugins/backup/backup.min.js +1 -1
  284. package/es5/plugins/button-generator/button-generator.css +1 -1
  285. package/es5/plugins/button-generator/button-generator.js +1 -1
  286. package/es5/plugins/button-generator/button-generator.min.js +1 -1
  287. package/es5/plugins/change-case/change-case.js +1 -1
  288. package/es5/plugins/change-case/change-case.min.js +1 -1
  289. package/es5/plugins/chart/chart.css +1 -1
  290. package/es5/plugins/chart/chart.js +1 -1
  291. package/es5/plugins/chart/chart.min.js +1 -1
  292. package/es5/plugins/color-picker/color-picker.css +1 -1
  293. package/es5/plugins/color-picker/color-picker.js +1 -1
  294. package/es5/plugins/color-picker/color-picker.min.js +1 -1
  295. package/es5/plugins/emoji/emoji.css +1 -1
  296. package/es5/plugins/emoji/emoji.js +1 -1
  297. package/es5/plugins/emoji/emoji.min.js +1 -1
  298. package/es5/plugins/export-docs/export-docs.js +1 -1
  299. package/es5/plugins/export-docs/export-docs.min.js +1 -1
  300. package/es5/plugins/finder/finder.css +1 -1
  301. package/es5/plugins/finder/finder.js +1 -1
  302. package/es5/plugins/finder/finder.min.js +1 -1
  303. package/es5/plugins/google-maps/google-maps.css +1 -1
  304. package/es5/plugins/google-maps/google-maps.js +1 -1
  305. package/es5/plugins/google-maps/google-maps.min.js +1 -1
  306. package/es5/plugins/google-search/google-search.js +1 -1
  307. package/es5/plugins/google-search/google-search.min.js +1 -1
  308. package/es5/plugins/highlight-signature/highlight-signature.js +1 -1
  309. package/es5/plugins/highlight-signature/highlight-signature.min.js +1 -1
  310. package/es5/plugins/iframe-editor/iframe-editor.css +1 -1
  311. package/es5/plugins/iframe-editor/iframe-editor.js +1 -1
  312. package/es5/plugins/iframe-editor/iframe-editor.min.js +1 -1
  313. package/es5/plugins/image-editor-pro/image-editor-pro.css +1 -1
  314. package/es5/plugins/image-editor-pro/image-editor-pro.js +1 -1
  315. package/es5/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  316. package/es5/plugins/keyboard/keyboard.css +1 -1
  317. package/es5/plugins/keyboard/keyboard.js +1 -1
  318. package/es5/plugins/keyboard/keyboard.min.js +1 -1
  319. package/es5/plugins/math/math.css +1 -1
  320. package/es5/plugins/math/math.js +1 -1
  321. package/es5/plugins/math/math.min.js +1 -1
  322. package/es5/plugins/mobile-view/mobile-view.js +1 -1
  323. package/es5/plugins/mobile-view/mobile-view.min.js +1 -1
  324. package/es5/plugins/page-break/page-break.js +1 -1
  325. package/es5/plugins/page-break/page-break.min.js +1 -1
  326. package/es5/plugins/paste-code/paste-code.css +1 -1
  327. package/es5/plugins/paste-code/paste-code.js +1 -1
  328. package/es5/plugins/paste-code/paste-code.min.js +1 -1
  329. package/es5/plugins/paste-from-word/paste-from-word.js +1 -1
  330. package/es5/plugins/paste-from-word/paste-from-word.min.js +1 -1
  331. package/es5/plugins/show-blocks/show-blocks.js +1 -1
  332. package/es5/plugins/show-blocks/show-blocks.min.js +1 -1
  333. package/es5/plugins/style/style.css +1 -1
  334. package/es5/plugins/style/style.js +1 -1
  335. package/es5/plugins/style/style.min.js +1 -1
  336. package/es5/plugins/templates/templates.css +1 -1
  337. package/es5/plugins/templates/templates.js +1 -1
  338. package/es5/plugins/templates/templates.min.js +1 -1
  339. package/es5/plugins/todo-list/todo-list.css +1 -1
  340. package/es5/plugins/todo-list/todo-list.js +1 -1
  341. package/es5/plugins/todo-list/todo-list.min.js +1 -1
  342. package/es5/plugins/translate/translate.css +1 -1
  343. package/es5/plugins/translate/translate.js +1 -1
  344. package/es5/plugins/translate/translate.min.js +1 -1
  345. package/es5/plugins/tune-block/tune-block.css +1 -1
  346. package/es5/plugins/tune-block/tune-block.js +1 -1
  347. package/es5/plugins/tune-block/tune-block.min.js +1 -1
  348. package/es5/polyfills.fat.min.js +1 -1
  349. package/es5/polyfills.js +1 -1
  350. package/es5/polyfills.min.js +1 -1
  351. package/package.json +1 -1
package/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.9
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.9";
2335
2335
  // prettier-ignore
2336
2336
  var ES = "es5";
2337
2337
  var IS_ES_MODERN = false;
@@ -7429,10 +7429,11 @@ function _instanceof(left, right) {
7429
7429
  /* harmony export */ });
7430
7430
  /* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82758);
7431
7431
  /* 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);
7432
+ /* harmony import */ var _word_lists_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(90723);
7433
+ /* harmony import */ var _string_trim_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(49055);
7434
+ /* harmony import */ var _utils_attr_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(29960);
7435
+ /* harmony import */ var _utils_css_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(41180);
7436
+ /* harmony import */ var _utils_selector_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(76078);
7436
7437
  /*!
7437
7438
  * Jodit Editor (https://xdsoft.net/jodit/)
7438
7439
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -7445,6 +7446,7 @@ function _instanceof(left, right) {
7445
7446
 
7446
7447
 
7447
7448
 
7449
+
7448
7450
  function normalizeCSS(s) {
7449
7451
  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
7452
  switch(metrics.toLowerCase()){
@@ -7478,7 +7480,7 @@ function normalizeCSS(s) {
7478
7480
  html = html.substring(0, closeIndex + '</html>'.length);
7479
7481
  }
7480
7482
  var iframe = _constants_js__WEBPACK_IMPORTED_MODULE_0__.globalDocument.createElement('iframe');
7481
- (0,_utils_css_js__WEBPACK_IMPORTED_MODULE_4__.css)(iframe, 'display', 'none');
7483
+ (0,_utils_css_js__WEBPACK_IMPORTED_MODULE_5__.css)(iframe, 'display', 'none');
7482
7484
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.append(_constants_js__WEBPACK_IMPORTED_MODULE_0__.globalDocument.body, iframe);
7483
7485
  var convertedString = '', collection;
7484
7486
  try {
@@ -7487,13 +7489,14 @@ function normalizeCSS(s) {
7487
7489
  iframeDoc.open();
7488
7490
  iframeDoc.write(html);
7489
7491
  iframeDoc.close();
7492
+ var listItems = (0,_word_lists_js__WEBPACK_IMPORTED_MODULE_2__.readWordListItems)(iframeDoc.body);
7490
7493
  // Word marks its auto-generated list markers (the literal
7491
7494
  // bullet/number, e.g. `1.` or `·`) with `mso-list:Ignore`.
7492
7495
  // They are display-only and must not be imported, otherwise
7493
7496
  // the marker text leaks into the content. Drop them before any
7494
7497
  // style normalization strips the `mso-list` hint. See #948
7495
7498
  _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') || '')) {
7499
+ 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
7500
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(node);
7498
7501
  }
7499
7502
  });
@@ -7503,7 +7506,7 @@ function normalizeCSS(s) {
7503
7506
  if (rules[idx].selectorText === '') {
7504
7507
  return "continue";
7505
7508
  }
7506
- collection = (0,_utils_selector_js__WEBPACK_IMPORTED_MODULE_5__.$$)(rules[idx].selectorText, iframeDoc.body);
7509
+ collection = (0,_utils_selector_js__WEBPACK_IMPORTED_MODULE_6__.$$)(rules[idx].selectorText, iframeDoc.body);
7507
7510
  // `style.cssText` on purpose: the CSSOM parses the text,
7508
7511
  // drops invalid declarations and re-serializes it. The raw
7509
7512
  // `style` attribute would keep Word-only junk verbatim
@@ -7520,18 +7523,19 @@ function normalizeCSS(s) {
7520
7523
  throw e;
7521
7524
  }
7522
7525
  }
7526
+ ;(0,_word_lists_js__WEBPACK_IMPORTED_MODULE_2__.wrapWordListItems)(listItems);
7523
7527
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.each(iframeDoc.body, function(node) {
7524
7528
  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');
7529
+ var cssText = (0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_4__.attr)(node, 'style');
7526
7530
  if (cssText) {
7527
7531
  node.style.cssText = normalizeCSS(cssText);
7528
7532
  }
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);
7533
+ if (!(0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_4__.attr)(node, 'style')) {
7534
+ (0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_4__.attr)(node, 'style', null);
7531
7535
  }
7532
7536
  }
7533
7537
  });
7534
- convertedString = iframeDoc.firstChild ? (0,_string_trim_js__WEBPACK_IMPORTED_MODULE_2__.trim)(iframeDoc.body.innerHTML) : '';
7538
+ convertedString = iframeDoc.firstChild ? (0,_string_trim_js__WEBPACK_IMPORTED_MODULE_3__.trim)(iframeDoc.body.innerHTML) : '';
7535
7539
  }
7536
7540
  } catch (_a) {} finally{
7537
7541
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(iframe);
@@ -7539,7 +7543,7 @@ function normalizeCSS(s) {
7539
7543
  if (convertedString) {
7540
7544
  html = convertedString;
7541
7545
  }
7542
- return (0,_string_trim_js__WEBPACK_IMPORTED_MODULE_2__.trim)(html.replace(/<(\/)?(html|colgroup|col|o:p)[^>]*>/g, '').replace(/<!--[^>]*>/g, ''));
7546
+ return (0,_string_trim_js__WEBPACK_IMPORTED_MODULE_3__.trim)(html.replace(/<(\/)?(html|colgroup|col|o:p)[^>]*>/g, '').replace(/<!--[^>]*>/g, ''));
7543
7547
  }
7544
7548
 
7545
7549
 
@@ -7554,8 +7558,9 @@ function normalizeCSS(s) {
7554
7558
  /* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82758);
7555
7559
  /* harmony import */ var _dom_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2748);
7556
7560
  /* 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);
7561
+ /* harmony import */ var _word_lists_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(90723);
7562
+ /* harmony import */ var _string_trim_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(49055);
7563
+ /* harmony import */ var _utils_attr_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(29960);
7559
7564
  /*!
7560
7565
  * Jodit Editor (https://xdsoft.net/jodit/)
7561
7566
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -7567,6 +7572,7 @@ function normalizeCSS(s) {
7567
7572
 
7568
7573
 
7569
7574
 
7575
+
7570
7576
  /**
7571
7577
  * The method automatically cleans up content from Microsoft Word and other HTML sources to ensure clean, compliant
7572
7578
  * content that matches the look and feel of the site.
@@ -7580,6 +7586,7 @@ function normalizeCSS(s) {
7580
7586
  var div = _constants_js__WEBPACK_IMPORTED_MODULE_0__.globalDocument.createElement('div');
7581
7587
  div.innerHTML = html;
7582
7588
  var marks = [];
7589
+ var listItems = (0,_word_lists_js__WEBPACK_IMPORTED_MODULE_3__.readWordListItems)(div);
7583
7590
  if (div.firstChild) {
7584
7591
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.each(div, function(node) {
7585
7592
  if (!node) {
@@ -7604,7 +7611,7 @@ function normalizeCSS(s) {
7604
7611
  // with `mso-list:Ignore`. They are display-only
7605
7612
  // and must not be imported, otherwise the marker
7606
7613
  // 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') || '')) {
7614
+ if (/mso-list:\s*ignore/i.test((0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_5__.attr)(node, 'style') || '')) {
7608
7615
  marks.push(node);
7609
7616
  break;
7610
7617
  }
@@ -7618,7 +7625,7 @@ function normalizeCSS(s) {
7618
7625
  // `attrRaw`: SVG keeps camelCase names
7619
7626
  // (`viewBox`), `attr()` would kebab-case
7620
7627
  // them and silently skip the removal
7621
- (0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_4__.attrRaw)(node, attribute.name, null);
7628
+ (0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_5__.attrRaw)(node, attribute.name, null);
7622
7629
  }
7623
7630
  });
7624
7631
  }
@@ -7631,12 +7638,13 @@ function normalizeCSS(s) {
7631
7638
  });
7632
7639
  }
7633
7640
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove.apply(null, marks);
7641
+ (0,_word_lists_js__WEBPACK_IMPORTED_MODULE_3__.wrapWordListItems)(listItems);
7634
7642
  convertedString = div.innerHTML;
7635
7643
  } catch (e) {}
7636
7644
  if (convertedString) {
7637
7645
  html = convertedString;
7638
7646
  }
7639
- html = html.split(/(\n)/).filter(_string_trim_js__WEBPACK_IMPORTED_MODULE_3__.trim).join('\n');
7647
+ html = html.split(/(\n)/).filter(_string_trim_js__WEBPACK_IMPORTED_MODULE_4__.trim).join('\n');
7640
7648
  return html.replace(/<(\/)?(html|colgroup|col|o:p)[^>]*>/g, '').replace(/<!--[^>]*>/g, '');
7641
7649
  }
7642
7650
 
@@ -8042,7 +8050,14 @@ var NEW_LINE_TAGS = new Set([
8042
8050
  'h4',
8043
8051
  'h5',
8044
8052
  'h6',
8045
- 'hr'
8053
+ 'hr',
8054
+ 'ul',
8055
+ 'ol',
8056
+ 'li'
8057
+ ]);
8058
+ var LIST_TAGS = new Set([
8059
+ 'ul',
8060
+ 'ol'
8046
8061
  ]);
8047
8062
  var INVISIBLE_TAGS = new Set([
8048
8063
  'script',
@@ -8069,6 +8084,16 @@ var ALONE_TAGS = new Set([
8069
8084
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.each(tmp, function(node) {
8070
8085
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(node) && all.push(node);
8071
8086
  });
8087
+ // By default blocks are joined with a single space (single-line
8088
+ // plain text). When `blockBr` is set, separate them with a line
8089
+ // break instead, so paragraph structure survives — e.g. the
8090
+ // "Insert only Text" paste option. See #1232
8091
+ var separators = new Set();
8092
+ var separator = function separator() {
8093
+ var text = doc.createTextNode(blockBr ? '%%%jodit-single-br%%%' : ' ');
8094
+ separators.add(text);
8095
+ return text;
8096
+ };
8072
8097
  all.forEach(function(p) {
8073
8098
  var pr = p.parentNode;
8074
8099
  if (!pr) {
@@ -8088,16 +8113,17 @@ var ALONE_TAGS = new Set([
8088
8113
  if (!_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(p, NEW_LINE_TAGS)) {
8089
8114
  return;
8090
8115
  }
8116
+ var pv = p.previousSibling;
8117
+ // A nested list starts on a new line after its item's own text
8118
+ 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 || ''))) {
8119
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.before(p, separator());
8120
+ }
8091
8121
  var nx = p.nextSibling;
8092
8122
  if (_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isText(nx) && /^\s/.test(nx.nodeValue || '')) {
8093
8123
  return;
8094
8124
  }
8095
8125
  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%%%' : ' '));
8126
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.before(nx, separator());
8101
8127
  }
8102
8128
  });
8103
8129
  return restoreTags((0,_string_trim_js__WEBPACK_IMPORTED_MODULE_2__.trim)(tmp.innerText));
@@ -8109,6 +8135,211 @@ function restoreTags(content) {
8109
8135
  }
8110
8136
 
8111
8137
 
8138
+ /***/ }),
8139
+
8140
+ /***/ 90723:
8141
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
8142
+
8143
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
8144
+ /* harmony export */ readWordListItems: function() { return /* binding */ readWordListItems; },
8145
+ /* harmony export */ wrapWordListItems: function() { return /* binding */ wrapWordListItems; }
8146
+ /* harmony export */ });
8147
+ /* harmony import */ var _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
8148
+ /* harmony import */ var _array_to_array_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4510);
8149
+ /* harmony import */ var _utils_attr_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29960);
8150
+ function _define_property(obj, key, value) {
8151
+ if (key in obj) {
8152
+ Object.defineProperty(obj, key, {
8153
+ value: value,
8154
+ enumerable: true,
8155
+ configurable: true,
8156
+ writable: true
8157
+ });
8158
+ } else obj[key] = value;
8159
+ return obj;
8160
+ }
8161
+ function _object_spread(target) {
8162
+ for(var i = 1; i < arguments.length; i++){
8163
+ var source = arguments[i] != null ? arguments[i] : {};
8164
+ var ownKeys = Object.keys(source);
8165
+ if (typeof Object.getOwnPropertySymbols === "function") {
8166
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
8167
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
8168
+ }));
8169
+ }
8170
+ ownKeys.forEach(function(key) {
8171
+ _define_property(target, key, source[key]);
8172
+ });
8173
+ }
8174
+ return target;
8175
+ }
8176
+ /*!
8177
+ * Jodit Editor (https://xdsoft.net/jodit/)
8178
+ * Released under MIT see LICENSE.txt in the project root for license information.
8179
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
8180
+ */ /**
8181
+ * @module helpers/html
8182
+ */ ;
8183
+
8184
+
8185
+ var ROMAN = {
8186
+ i: 1,
8187
+ v: 5,
8188
+ x: 10,
8189
+ l: 50,
8190
+ c: 100,
8191
+ d: 500,
8192
+ m: 1000
8193
+ };
8194
+ function romanValue(roman) {
8195
+ var value = 0;
8196
+ for(var i = 0; i < roman.length; i += 1){
8197
+ var current = ROMAN[roman[i]], next = ROMAN[roman[i + 1]] || 0;
8198
+ value += current < next ? -current : current;
8199
+ }
8200
+ return value;
8201
+ }
8202
+ /**
8203
+ * Word's marker text (`1.`, `b)`, `iv.`, `·`, `o`, `§`) decides the list type
8204
+ */ function parseMarker(marker) {
8205
+ var text = marker.replace(/\s+/g, '');
8206
+ var decimal = /^\(?(?:\d+\.)*(\d+)[.)]?$/.exec(text);
8207
+ if (decimal) {
8208
+ return {
8209
+ tag: 'ol',
8210
+ listStyleType: null,
8211
+ start: Number(decimal[1])
8212
+ };
8213
+ }
8214
+ var letters = /^\(?([a-z]+|[A-Z]+)[.)]$/.exec(text);
8215
+ if (letters) {
8216
+ var value = letters[1], lower = value.toLowerCase(), upper = value !== lower;
8217
+ if (/^[ivxlcdm]+$/.test(lower) && (lower.length > 1 || lower === 'i')) {
8218
+ return {
8219
+ tag: 'ol',
8220
+ listStyleType: upper ? 'upper-roman' : 'lower-roman',
8221
+ start: romanValue(lower)
8222
+ };
8223
+ }
8224
+ // Word continues a lettered list with aa, bb, ...
8225
+ if (/^([a-z])\1*$/.test(lower)) {
8226
+ return {
8227
+ tag: 'ol',
8228
+ listStyleType: upper ? 'upper-alpha' : 'lower-alpha',
8229
+ start: (lower.length - 1) * 26 + lower.charCodeAt(0) - 96
8230
+ };
8231
+ }
8232
+ }
8233
+ return {
8234
+ tag: 'ul',
8235
+ listStyleType: null,
8236
+ start: 1
8237
+ };
8238
+ }
8239
+ /**
8240
+ * Removes the marker and the wrappers it leaves empty
8241
+ */ function removeMarker(marker, paragraph) {
8242
+ var parent = marker.parentNode;
8243
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(marker);
8244
+ while(parent && parent !== paragraph && _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(parent) && _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(parent)){
8245
+ var next = parent.parentNode;
8246
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(parent);
8247
+ parent = next;
8248
+ }
8249
+ }
8250
+ /**
8251
+ * Finds Word's list paragraphs (`<p style="mso-list:l0 level1 lfo1">`), reads
8252
+ * their list, level and type from the `mso-list:Ignore` marker, and removes the
8253
+ * marker. Call it before anything strips the `mso-list` styles, then pass the
8254
+ * result to {@link wrapWordListItems}
8255
+ */ function readWordListItems(root) {
8256
+ var items = [];
8257
+ (0,_array_to_array_js__WEBPACK_IMPORTED_MODULE_1__.toArray)(root.querySelectorAll('p')).forEach(function(paragraph) {
8258
+ 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') || '');
8259
+ if (!match) {
8260
+ return;
8261
+ }
8262
+ var marker = (0,_array_to_array_js__WEBPACK_IMPORTED_MODULE_1__.toArray)(paragraph.querySelectorAll('[style]')).find(function(elm) {
8263
+ return /mso-list:\s*ignore/i.test((0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_2__.attr)(elm, 'style') || '');
8264
+ });
8265
+ items.push(_object_spread({
8266
+ paragraph: paragraph,
8267
+ list: "".concat(match[1], ":").concat(match[3] || ''),
8268
+ level: Number(match[2])
8269
+ }, parseMarker((marker === null || marker === void 0 ? void 0 : marker.textContent) || '')));
8270
+ if (marker) {
8271
+ removeMarker(marker, paragraph);
8272
+ }
8273
+ });
8274
+ return items;
8275
+ }
8276
+ function isAdjacent(prev, item) {
8277
+ return _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.findSibling(item.paragraph, true, function(n) {
8278
+ return !_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmptyTextNode(n) && !_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isComment(n);
8279
+ }) === prev.paragraph;
8280
+ }
8281
+ /**
8282
+ * Turns the paragraphs found by {@link readWordListItems} into `<ul>`/`<ol>`
8283
+ * lists, nesting them by level. Each paragraph becomes an `<li>` without Word's
8284
+ * hanging indent
8285
+ */ function wrapWordListItems(items) {
8286
+ var stack = [];
8287
+ var continues = items.map(function(item, index) {
8288
+ return index > 0 && isAdjacent(items[index - 1], item);
8289
+ });
8290
+ items.forEach(function(item, index) {
8291
+ var paragraph = item.paragraph;
8292
+ if (!continues[index]) {
8293
+ stack = [];
8294
+ }
8295
+ while(stack.length && stack[stack.length - 1].level > item.level){
8296
+ stack.pop();
8297
+ }
8298
+ var top = stack[stack.length - 1];
8299
+ if (top && top.level === item.level && top.list !== item.list) {
8300
+ stack.pop();
8301
+ top = stack[stack.length - 1];
8302
+ }
8303
+ var doc = paragraph.ownerDocument;
8304
+ if (!top || top.level < item.level) {
8305
+ var element = doc.createElement(item.tag);
8306
+ if (item.listStyleType) {
8307
+ element.style.listStyleType = item.listStyleType;
8308
+ }
8309
+ if (item.tag === 'ol' && item.start !== 1) {
8310
+ (0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_2__.attr)(element, 'start', item.start);
8311
+ }
8312
+ if (top && top.li) {
8313
+ top.li.appendChild(element);
8314
+ } else {
8315
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.before(paragraph, element);
8316
+ }
8317
+ top = {
8318
+ level: item.level,
8319
+ list: item.list,
8320
+ element: element
8321
+ };
8322
+ stack.push(top);
8323
+ }
8324
+ var li = doc.createElement('li');
8325
+ (0,_array_to_array_js__WEBPACK_IMPORTED_MODULE_1__.toArray)(paragraph.attributes).forEach(function(attribute) {
8326
+ if (attribute.name !== 'class') {
8327
+ li.setAttribute(attribute.name, attribute.value);
8328
+ }
8329
+ });
8330
+ li.style.removeProperty('margin-left');
8331
+ li.style.removeProperty('text-indent');
8332
+ if (!(0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_2__.attr)(li, 'style')) {
8333
+ (0,_utils_attr_js__WEBPACK_IMPORTED_MODULE_2__.attr)(li, 'style', null);
8334
+ }
8335
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.moveContent(paragraph, li);
8336
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(paragraph);
8337
+ top.element.appendChild(li);
8338
+ top.li = li;
8339
+ });
8340
+ }
8341
+
8342
+
8112
8343
  /***/ }),
8113
8344
 
8114
8345
  /***/ 21537:
@@ -13898,13 +14129,15 @@ function usable(ranges, shadowRoot) {
13898
14129
  /* harmony export */ composedRanges: function() { return /* reexport safe */ _composed_ranges_js__WEBPACK_IMPORTED_MODULE_2__.composedRanges; },
13899
14130
  /* harmony export */ cursorInTheEdgeOfString: function() { return /* binding */ cursorInTheEdgeOfString; },
13900
14131
  /* 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; }
14132
+ /* harmony export */ isMoved: function() { return /* reexport safe */ _is_moved_js__WEBPACK_IMPORTED_MODULE_3__.isMoved; },
14133
+ /* harmony export */ moveNodeInsideStart: function() { return /* reexport safe */ _move_node_inside_start_js__WEBPACK_IMPORTED_MODULE_4__.moveNodeInsideStart; }
13902
14134
  /* harmony export */ });
13903
14135
  /* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82758);
13904
14136
  /* harmony import */ var _dom_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2748);
13905
14137
  /* 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);
14138
+ /* harmony import */ var _is_moved_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12604);
14139
+ /* harmony import */ var _move_node_inside_start_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(26716);
14140
+ /* harmony import */ var _move_the_node_along_the_edge_outward_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(43463);
13908
14141
  /*!
13909
14142
  * Jodit Editor (https://xdsoft.net/jodit/)
13910
14143
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -13916,6 +14149,7 @@ function usable(ranges, shadowRoot) {
13916
14149
 
13917
14150
 
13918
14151
 
14152
+
13919
14153
  /**
13920
14154
  * Despite the name, returns `true` when the cursor is NOT at the checked edge
13921
14155
  * of the text node: there is significant (non invisible-space) text between
@@ -13973,6 +14207,33 @@ function findCorrectCurrentNode(node, range, rightMode, isCollapsed, checkChild,
13973
14207
  }
13974
14208
 
13975
14209
 
14210
+ /***/ }),
14211
+
14212
+ /***/ 12604:
14213
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
14214
+
14215
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
14216
+ /* harmony export */ isMoved: function() { return /* binding */ isMoved; }
14217
+ /* harmony export */ });
14218
+ /*!
14219
+ * Jodit Editor (https://xdsoft.net/jodit/)
14220
+ * Released under MIT see LICENSE.txt in the project root for license information.
14221
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
14222
+ */ /**
14223
+ * Whether the selection, `before` as it was when a key went down, has since
14224
+ * moved to somewhere else in the editor
14225
+ * @private
14226
+ */ function isMoved(jodit, before) {
14227
+ var s = jodit.s;
14228
+ // Selecting table cells, for one, removes the selection altogether
14229
+ if (!before || !s.isInsideArea) {
14230
+ return false;
14231
+ }
14232
+ var range = s.range;
14233
+ return range.startContainer !== before.startContainer || range.startOffset !== before.startOffset || range.endContainer !== before.endContainer || range.endOffset !== before.endOffset;
14234
+ }
14235
+
14236
+
13976
14237
  /***/ }),
13977
14238
 
13978
14239
  /***/ 26716:
@@ -16678,11 +16939,13 @@ function elementsEqualAttributes(elm1, elm2) {
16678
16939
  /* harmony export */ toggleOrderedList: function() { return /* binding */ toggleOrderedList; }
16679
16940
  /* harmony export */ });
16680
16941
  /* 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);
16942
+ /* harmony import */ var _helpers_size_object_size_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(21496);
16943
+ /* harmony import */ var _helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(38837);
16944
+ /* harmony import */ var _extract_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(32526);
16945
+ /* harmony import */ var _is_same_attributes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(94466);
16946
+ /* harmony import */ var _toggle_attributes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(44253);
16947
+ /* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(77361);
16948
+ /* harmony import */ var _wrap_list_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(82515);
16686
16949
  /*!
16687
16950
  * Jodit Editor (https://xdsoft.net/jodit/)
16688
16951
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -16693,6 +16956,8 @@ function elementsEqualAttributes(elm1, elm2) {
16693
16956
 
16694
16957
 
16695
16958
 
16959
+
16960
+
16696
16961
  /**
16697
16962
  * Replaces `ul->ol` or `ol->ul`, apply styles to the list, or remove a list item from it
16698
16963
  * @private
@@ -16704,39 +16969,70 @@ function elementsEqualAttributes(elm1, elm2) {
16704
16969
  if (!list) {
16705
16970
  return mode;
16706
16971
  }
16707
- var result = jodit.e.fire("".concat(_constants_js__WEBPACK_IMPORTED_MODULE_4__._PREFIX, "BeforeToggleList"), mode, commitStyle, list);
16972
+ var result = jodit.e.fire("".concat(_constants_js__WEBPACK_IMPORTED_MODULE_6__._PREFIX, "BeforeToggleList"), mode, commitStyle, list);
16708
16973
  if (result !== undefined) {
16709
16974
  return result;
16710
16975
  }
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;
16976
+ var hook = jodit.e.fire.bind(jodit.e, "".concat(_constants_js__WEBPACK_IMPORTED_MODULE_6__._PREFIX, "AfterToggleList"));
16977
+ if (mode !== _constants_js__WEBPACK_IMPORTED_MODULE_6__.UNWRAP) {
16978
+ 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;
16979
+ var isSameList = _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(list, commitStyle.element);
16980
+ // ol => ol[style="list-style-type: lower-roman"]: a list's style
16981
+ // belongs to the whole list, so it is changed without splitting it
16982
+ if (isSameList && isChangeMode && mode !== _constants_js__WEBPACK_IMPORTED_MODULE_6__.REPLACE && changesStyleOnly(commitStyle)) {
16983
+ (0,_toggle_attributes_js__WEBPACK_IMPORTED_MODULE_5__.toggleAttributes)(commitStyle, list, jodit, _constants_js__WEBPACK_IMPORTED_MODULE_6__.CHANGE);
16984
+ hook(_constants_js__WEBPACK_IMPORTED_MODULE_6__.CHANGE, joinPrevious(commitStyle, list, mode), commitStyle);
16985
+ return _constants_js__WEBPACK_IMPORTED_MODULE_6__.CHANGE;
16986
+ }
16987
+ // Restyled already, for an earlier part of the selection
16988
+ if (isSameList && mode === _constants_js__WEBPACK_IMPORTED_MODULE_6__.CHANGE) {
16989
+ return _constants_js__WEBPACK_IMPORTED_MODULE_6__.CHANGE;
16990
+ }
16714
16991
  // 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;
16992
+ if (mode === _constants_js__WEBPACK_IMPORTED_MODULE_6__.REPLACE || isChangeMode || !isSameList) {
16993
+ var wrapper = unwrapList(_constants_js__WEBPACK_IMPORTED_MODULE_6__.REPLACE, list, li, jodit, commitStyle);
16994
+ var newList = (0,_wrap_list_js__WEBPACK_IMPORTED_MODULE_7__.wrapList)(commitStyle, wrapper, jodit);
16995
+ hook(_constants_js__WEBPACK_IMPORTED_MODULE_6__.REPLACE, newList, commitStyle);
16996
+ return _constants_js__WEBPACK_IMPORTED_MODULE_6__.REPLACE;
16720
16997
  }
16721
16998
  }
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;
16999
+ var wrapper1 = unwrapList(_constants_js__WEBPACK_IMPORTED_MODULE_6__.UNWRAP, list, li, jodit, commitStyle);
17000
+ hook(_constants_js__WEBPACK_IMPORTED_MODULE_6__.UNWRAP, wrapper1, commitStyle);
17001
+ return _constants_js__WEBPACK_IMPORTED_MODULE_6__.UNWRAP;
17002
+ }
17003
+ /**
17004
+ * Other attributes, such as a class, still move the items into a new list,
17005
+ * where the `beforeWrapList` hook can add markup to each of them
17006
+ */ function changesStyleOnly(param) {
17007
+ var attributes = param.options.attributes;
17008
+ return Boolean(attributes === null || attributes === void 0 ? void 0 : attributes.style) && (0,_helpers_size_object_size_js__WEBPACK_IMPORTED_MODULE_1__.size)(attributes) === 1;
17009
+ }
17010
+ /**
17011
+ * Joins a restyled list to the list before it, when the selection runs on
17012
+ * from that list and the two now match
17013
+ */ function joinPrevious(commitStyle, list, mode) {
17014
+ var prev = _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.findSibling(list, true);
17015
+ 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)) {
17016
+ return list;
17017
+ }
17018
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.append(prev, Array.from(list.childNodes));
17019
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(list);
17020
+ return prev;
16725
17021
  }
16726
17022
  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);
17023
+ var result = jodit.e.fire("".concat(_constants_js__WEBPACK_IMPORTED_MODULE_6__._PREFIX, "BeforeUnwrapList"), mode, list, cs);
16728
17024
  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"));
17025
+ (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
17026
  return result;
16731
17027
  }
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');
17028
+ ;(0,_extract_js__WEBPACK_IMPORTED_MODULE_3__.extractSelectedPart)(list, li, jodit);
17029
+ (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
17030
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.unwrap(li.parentElement);
16735
17031
  // In the REPLACE mode the content will be immediately wrapped in a `li`
16736
17032
  // of the new list inside `wrapList`, so it should stay in the document.
16737
17033
  // Replacing it with a fragment here would dissolve the content
16738
17034
  // (with `enter: 'br'`) and the new list would never be inserted.
16739
- if (mode === _constants_js__WEBPACK_IMPORTED_MODULE_4__.REPLACE) {
17035
+ if (mode === _constants_js__WEBPACK_IMPORTED_MODULE_6__.REPLACE) {
16740
17036
  return li;
16741
17037
  }
16742
17038
  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 +17906,7 @@ var transactions = (_obj = {}, _define_property(_obj, states.START, {
17610
17906
  }), _define_property(_obj, states.LIST, {
17611
17907
  exec: function exec(value) {
17612
17908
  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) {
17909
+ 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
17910
  return _object_spread_props(_object_spread({}, value), {
17615
17911
  next: states.END
17616
17912
  });
@@ -27764,7 +28060,10 @@ function addClassNames(className, elm) {
27764
28060
  Autoplay: 'تشغيل تلقائي',
27765
28061
  Loop: 'تكرار',
27766
28062
  Muted: 'مكتوم الصوت',
27767
- Controls: 'عناصر التحكم'
28063
+ Controls: 'عناصر التحكم',
28064
+ 'Start at...': 'البدء من...',
28065
+ 'Start numbering at': 'بدء الترقيم من',
28066
+ 'Number for the first item': 'رقم العنصر الأول'
27768
28067
  });
27769
28068
 
27770
28069
 
@@ -28005,7 +28304,10 @@ function addClassNames(className, elm) {
28005
28304
  Autoplay: 'Avtomatik oynatma',
28006
28305
  Loop: 'Təkrarla',
28007
28306
  Muted: 'Səssiz',
28008
- Controls: 'İdarəetmə elementləri'
28307
+ Controls: 'İdarəetmə elementləri',
28308
+ 'Start at...': 'Başlanğıc nömrəsi...',
28309
+ 'Start numbering at': 'Nömrələmənin başlanğıcı',
28310
+ 'Number for the first item': 'Birinci bəndin nömrəsi'
28009
28311
  });
28010
28312
 
28011
28313
 
@@ -28238,7 +28540,10 @@ function addClassNames(className, elm) {
28238
28540
  Autoplay: 'Automatické přehrávání',
28239
28541
  Loop: 'Opakovat',
28240
28542
  Muted: 'Ztlumeno',
28241
- Controls: 'Ovládací prvky'
28543
+ Controls: 'Ovládací prvky',
28544
+ 'Start at...': 'Začít od...',
28545
+ 'Start numbering at': 'Začít číslování od',
28546
+ 'Number for the first item': 'Číslo první položky'
28242
28547
  });
28243
28548
 
28244
28549
 
@@ -28475,7 +28780,10 @@ function addClassNames(className, elm) {
28475
28780
  Autoplay: 'Automatische Wiedergabe',
28476
28781
  Loop: 'Wiederholen',
28477
28782
  Muted: 'Stumm',
28478
- Controls: 'Steuerelemente'
28783
+ Controls: 'Steuerelemente',
28784
+ 'Start at...': 'Beginnen bei...',
28785
+ 'Start numbering at': 'Nummerierung beginnen bei',
28786
+ 'Number for the first item': 'Nummer des ersten Eintrags'
28479
28787
  });
28480
28788
 
28481
28789
 
@@ -28729,7 +29037,10 @@ function addClassNames(className, elm) {
28729
29037
  Autoplay: 'Reproducción automática',
28730
29038
  Loop: 'Repetir',
28731
29039
  Muted: 'Silenciado',
28732
- Controls: 'Controles'
29040
+ Controls: 'Controles',
29041
+ 'Start at...': 'Empezar en...',
29042
+ 'Start numbering at': 'Empezar la numeración en',
29043
+ 'Number for the first item': 'Número del primer elemento'
28733
29044
  });
28734
29045
 
28735
29046
 
@@ -28961,7 +29272,10 @@ function addClassNames(className, elm) {
28961
29272
  Autoplay: 'پخش خودکار',
28962
29273
  Loop: 'تکرار',
28963
29274
  Muted: 'بی‌صدا',
28964
- Controls: 'کنترل‌ها'
29275
+ Controls: 'کنترل‌ها',
29276
+ 'Start at...': 'شروع از...',
29277
+ 'Start numbering at': 'شروع شماره‌گذاری از',
29278
+ 'Number for the first item': 'شماره‌ی نخستین مورد'
28965
29279
  });
28966
29280
 
28967
29281
 
@@ -29199,7 +29513,10 @@ function addClassNames(className, elm) {
29199
29513
  Autoplay: 'Automaattinen toisto',
29200
29514
  Loop: 'Toista uudelleen',
29201
29515
  Muted: 'Mykistetty',
29202
- Controls: 'Säätimet'
29516
+ Controls: 'Säätimet',
29517
+ 'Start at...': 'Aloita numerosta...',
29518
+ 'Start numbering at': 'Aloita numerointi numerosta',
29519
+ 'Number for the first item': 'Ensimmäisen kohdan numero'
29203
29520
  });
29204
29521
 
29205
29522
 
@@ -29431,7 +29748,10 @@ function addClassNames(className, elm) {
29431
29748
  Autoplay: 'Lecture automatique',
29432
29749
  Loop: 'Lecture en boucle',
29433
29750
  Muted: 'Muet',
29434
- Controls: 'Commandes'
29751
+ Controls: 'Commandes',
29752
+ 'Start at...': 'Commencer à...',
29753
+ 'Start numbering at': 'Commencer la numérotation à',
29754
+ 'Number for the first item': 'Numéro du premier élément'
29435
29755
  });
29436
29756
 
29437
29757
 
@@ -29663,7 +29983,10 @@ function addClassNames(className, elm) {
29663
29983
  Autoplay: 'ניגון אוטומטי',
29664
29984
  Loop: 'הפעלה חוזרת',
29665
29985
  Muted: 'מושתק',
29666
- Controls: 'פקדים'
29986
+ Controls: 'פקדים',
29987
+ 'Start at...': 'התחל מ...',
29988
+ 'Start numbering at': 'התחל מספור מ',
29989
+ 'Number for the first item': 'מספר הפריט הראשון'
29667
29990
  });
29668
29991
 
29669
29992
 
@@ -29897,7 +30220,10 @@ function addClassNames(className, elm) {
29897
30220
  Autoplay: 'Automatikus lejátszás',
29898
30221
  Loop: 'Ismétlés',
29899
30222
  Muted: 'Némítva',
29900
- Controls: 'Vezérlők'
30223
+ Controls: 'Vezérlők',
30224
+ 'Start at...': 'Kezdőszám...',
30225
+ 'Start numbering at': 'Számozás kezdőértéke',
30226
+ 'Number for the first item': 'Az első elem száma'
29901
30227
  });
29902
30228
 
29903
30229
 
@@ -30130,7 +30456,10 @@ function addClassNames(className, elm) {
30130
30456
  Autoplay: 'Putar otomatis',
30131
30457
  Loop: 'Ulangi',
30132
30458
  Muted: 'Dibisukan',
30133
- Controls: 'Kontrol'
30459
+ Controls: 'Kontrol',
30460
+ 'Start at...': 'Mulai dari...',
30461
+ 'Start numbering at': 'Mulai penomoran dari',
30462
+ 'Number for the first item': 'Nomor untuk item pertama'
30134
30463
  });
30135
30464
 
30136
30465
 
@@ -30367,7 +30696,10 @@ function addClassNames(className, elm) {
30367
30696
  Autoplay: 'Riproduzione automatica',
30368
30697
  Loop: 'Ripeti',
30369
30698
  Muted: 'Muto',
30370
- Controls: 'Controlli'
30699
+ Controls: 'Controlli',
30700
+ 'Start at...': 'Inizia da...',
30701
+ 'Start numbering at': 'Inizia la numerazione da',
30702
+ 'Number for the first item': 'Numero del primo elemento'
30371
30703
  });
30372
30704
 
30373
30705
 
@@ -30604,7 +30936,10 @@ function addClassNames(className, elm) {
30604
30936
  Autoplay: '自動再生',
30605
30937
  Loop: 'ループ再生',
30606
30938
  Muted: 'ミュート',
30607
- Controls: 'コントロール'
30939
+ Controls: 'コントロール',
30940
+ 'Start at...': '開始番号...',
30941
+ 'Start numbering at': '番号の開始値',
30942
+ 'Number for the first item': '最初の項目の番号'
30608
30943
  });
30609
30944
 
30610
30945
 
@@ -30847,7 +31182,10 @@ function addClassNames(className, elm) {
30847
31182
  Autoplay: '자동 재생',
30848
31183
  Loop: '반복 재생',
30849
31184
  Muted: '음소거',
30850
- Controls: '컨트롤'
31185
+ Controls: '컨트롤',
31186
+ 'Start at...': '시작 번호...',
31187
+ 'Start numbering at': '번호 매기기 시작 값',
31188
+ 'Number for the first item': '첫 번째 항목의 번호'
30851
31189
  });
30852
31190
 
30853
31191
 
@@ -31079,7 +31417,10 @@ function addClassNames(className, elm) {
31079
31417
  Autoplay: 'Автоматаар тоглуулах',
31080
31418
  Loop: 'Давтах',
31081
31419
  Muted: 'Дуугүй',
31082
- Controls: 'Удирдлага'
31420
+ Controls: 'Удирдлага',
31421
+ 'Start at...': 'Эхлэх дугаар...',
31422
+ 'Start numbering at': 'Дугаарлалт эхлэх',
31423
+ 'Number for the first item': 'Эхний зүйлийн дугаар'
31083
31424
  });
31084
31425
 
31085
31426
 
@@ -31312,7 +31653,10 @@ function addClassNames(className, elm) {
31312
31653
  Autoplay: 'Automatisch afspelen',
31313
31654
  Loop: 'Herhalen',
31314
31655
  Muted: 'Gedempt',
31315
- Controls: 'Bedieningselementen'
31656
+ Controls: 'Bedieningselementen',
31657
+ 'Start at...': 'Beginnen bij...',
31658
+ 'Start numbering at': 'Nummering beginnen bij',
31659
+ 'Number for the first item': 'Nummer van het eerste item'
31316
31660
  });
31317
31661
 
31318
31662
 
@@ -31553,7 +31897,10 @@ function addClassNames(className, elm) {
31553
31897
  Autoplay: 'Automatisk avspilling',
31554
31898
  Loop: 'Gjenta',
31555
31899
  Muted: 'Dempet',
31556
- Controls: 'Kontroller'
31900
+ Controls: 'Kontroller',
31901
+ 'Start at...': 'Start på...',
31902
+ 'Start numbering at': 'Start nummereringen på',
31903
+ 'Number for the first item': 'Nummer for første punkt'
31557
31904
  });
31558
31905
 
31559
31906
 
@@ -31785,7 +32132,10 @@ function addClassNames(className, elm) {
31785
32132
  Autoplay: 'Autoodtwarzanie',
31786
32133
  Loop: 'Zapętlenie',
31787
32134
  Muted: 'Wyciszony',
31788
- Controls: 'Elementy sterujące'
32135
+ Controls: 'Elementy sterujące',
32136
+ 'Start at...': 'Zacznij od...',
32137
+ 'Start numbering at': 'Rozpocznij numerowanie od',
32138
+ 'Number for the first item': 'Numer pierwszego elementu'
31789
32139
  });
31790
32140
 
31791
32141
 
@@ -32022,7 +32372,10 @@ function addClassNames(className, elm) {
32022
32372
  Autoplay: 'Reprodução automática',
32023
32373
  Loop: 'Repetir',
32024
32374
  Muted: 'Sem som',
32025
- Controls: 'Controles'
32375
+ Controls: 'Controles',
32376
+ 'Start at...': 'Começar em...',
32377
+ 'Start numbering at': 'Começar a numeração em',
32378
+ 'Number for the first item': 'Número do primeiro item'
32026
32379
  });
32027
32380
 
32028
32381
 
@@ -32253,7 +32606,10 @@ function addClassNames(className, elm) {
32253
32606
  Autoplay: 'Автовоспроизведение',
32254
32607
  Loop: 'Повтор',
32255
32608
  Muted: 'Без звука',
32256
- Controls: 'Элементы управления'
32609
+ Controls: 'Элементы управления',
32610
+ 'Start at...': 'Начать с...',
32611
+ 'Start numbering at': 'Начать нумерацию с',
32612
+ 'Number for the first item': 'Номер первого пункта'
32257
32613
  });
32258
32614
 
32259
32615
 
@@ -32492,7 +32848,10 @@ function addClassNames(className, elm) {
32492
32848
  Autoplay: 'Automatické prehrávanie',
32493
32849
  Loop: 'Opakovať',
32494
32850
  Muted: 'Stlmené',
32495
- Controls: 'Ovládacie prvky'
32851
+ Controls: 'Ovládacie prvky',
32852
+ 'Start at...': 'Začať od...',
32853
+ 'Start numbering at': 'Začať číslovanie od',
32854
+ 'Number for the first item': 'Číslo prvej položky'
32496
32855
  });
32497
32856
 
32498
32857
 
@@ -32732,7 +33091,10 @@ function addClassNames(className, elm) {
32732
33091
  Autoplay: 'Automatisk uppspelning',
32733
33092
  Loop: 'Upprepa',
32734
33093
  Muted: 'Ljudlös',
32735
- Controls: 'Kontroller'
33094
+ Controls: 'Kontroller',
33095
+ 'Start at...': 'Börja på...',
33096
+ 'Start numbering at': 'Börja numreringen på',
33097
+ 'Number for the first item': 'Nummer för första punkten'
32736
33098
  });
32737
33099
 
32738
33100
 
@@ -32964,7 +33326,10 @@ function addClassNames(className, elm) {
32964
33326
  Autoplay: 'Otomatik oynat',
32965
33327
  Loop: 'Döngü',
32966
33328
  Muted: 'Sessiz',
32967
- Controls: 'Kontroller'
33329
+ Controls: 'Kontroller',
33330
+ 'Start at...': 'Başlangıç numarası...',
33331
+ 'Start numbering at': 'Numaralandırma başlangıcı',
33332
+ 'Number for the first item': 'İlk öğenin numarası'
32968
33333
  });
32969
33334
 
32970
33335
 
@@ -33195,7 +33560,10 @@ function addClassNames(className, elm) {
33195
33560
  Autoplay: 'Автовідтворення',
33196
33561
  Loop: 'Повтор',
33197
33562
  Muted: 'Без звуку',
33198
- Controls: 'Елементи керування'
33563
+ Controls: 'Елементи керування',
33564
+ 'Start at...': 'Почати з...',
33565
+ 'Start numbering at': 'Почати нумерацію з',
33566
+ 'Number for the first item': 'Номер першого пункту'
33199
33567
  });
33200
33568
 
33201
33569
 
@@ -33428,7 +33796,10 @@ function addClassNames(className, elm) {
33428
33796
  Autoplay: '自动播放',
33429
33797
  Loop: '循环播放',
33430
33798
  Muted: '静音',
33431
- Controls: '播放控件'
33799
+ Controls: '播放控件',
33800
+ 'Start at...': '起始于...',
33801
+ 'Start numbering at': '编号起始值',
33802
+ 'Number for the first item': '第一项的编号'
33432
33803
  });
33433
33804
 
33434
33805
 
@@ -33660,7 +34031,10 @@ function addClassNames(className, elm) {
33660
34031
  Autoplay: '自動播放',
33661
34032
  Loop: '循環播放',
33662
34033
  Muted: '靜音',
33663
- Controls: '播放控制項'
34034
+ Controls: '播放控制項',
34035
+ 'Start at...': '起始於...',
34036
+ 'Start numbering at': '編號起始值',
34037
+ 'Number for the first item': '第一項的編號'
33664
34038
  });
33665
34039
 
33666
34040
 
@@ -34536,7 +34910,12 @@ _config_js__WEBPACK_IMPORTED_MODULE_13__.Config.prototype.controls.dialog = {
34536
34910
  {
34537
34911
  key: "__onResizerMouseDown",
34538
34912
  value: function __onResizerMouseDown(e) {
34539
- var _a, _b, _c;
34913
+ var _a, _b;
34914
+ // As for the header: otherwise Safari selects the dialog's text as
34915
+ // the pointer moves
34916
+ if (e.cancelable) {
34917
+ e.preventDefault();
34918
+ }
34540
34919
  this.resizable = true;
34541
34920
  this.startX = e.clientX;
34542
34921
  this.startY = e.clientY;
@@ -34548,8 +34927,8 @@ _config_js__WEBPACK_IMPORTED_MODULE_13__.Config.prototype.controls.dialog = {
34548
34927
  // the content area does not shrink below its CSS `min-height`,
34549
34928
  // so it is part of the smallest height the panel can take
34550
34929
  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;
34930
+ 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);
34931
+ 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
34932
  this.lockSelect();
34554
34933
  this.__addGlobalResizeListeners();
34555
34934
  if (this.e) {
@@ -34559,6 +34938,21 @@ _config_js__WEBPACK_IMPORTED_MODULE_13__.Config.prototype.controls.dialog = {
34559
34938
  }
34560
34939
  }
34561
34940
  },
34941
+ {
34942
+ /**
34943
+ * The width `box` takes with its content on one line. The header and
34944
+ * footer are flex rows as wide as the dialog, so the footer's
34945
+ * `scrollWidth` was the dialog's width and kept it from getting any
34946
+ * narrower
34947
+ */ key: "__contentWidth",
34948
+ value: function __contentWidth(box) {
34949
+ var width = box.style.width;
34950
+ box.style.width = 'max-content';
34951
+ var contentWidth = box.offsetWidth;
34952
+ box.style.width = width;
34953
+ return contentWidth;
34954
+ }
34955
+ },
34562
34956
  {
34563
34957
  key: "__addGlobalResizeListeners",
34564
34958
  value: function __addGlobalResizeListeners() {
@@ -34570,7 +34964,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_13__.Config.prototype.controls.dialog = {
34570
34964
  key: "__removeGlobalResizeListeners",
34571
34965
  value: function __removeGlobalResizeListeners() {
34572
34966
  var self1 = this;
34573
- self1.e.off(self1.ow, 'mousemove pointermove', self1.__onMouseMove).off(self1.ow, 'mouseup pointerup', self1.__onMouseUp);
34967
+ self1.e.off(self1.ow, 'pointermove touchmove', self1.__onMouseMove).off(self1.ow, 'pointerup touchend', self1.__onMouseUp);
34574
34968
  }
34575
34969
  },
34576
34970
  {
@@ -40784,11 +41178,10 @@ StatusBar = __decorate([
40784
41178
  /* harmony export */ });
40785
41179
  /* harmony import */ var _core_component_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(91907);
40786
41180
  /* 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);
41181
+ /* harmony import */ var _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(22732);
41182
+ /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(580);
41183
+ /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(21537);
41184
+ /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(41180);
40792
41185
  function _array_like_to_array(arr, len) {
40793
41186
  if (len == null || len > arr.length) len = arr.length;
40794
41187
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
@@ -40926,14 +41319,7 @@ function _unsupported_iterable_to_array(o, minLen) {
40926
41319
  * Jodit Editor (https://xdsoft.net/jodit/)
40927
41320
  * Released under MIT see LICENSE.txt in the project root for license information.
40928
41321
  * 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
-
41322
+ */ ;
40937
41323
 
40938
41324
 
40939
41325
 
@@ -40948,6 +41334,20 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
40948
41334
  var _this;
40949
41335
  _this = _call_super(this, Table, arguments);
40950
41336
  _this.selected = new Set();
41337
+ /**
41338
+ * Rewrite the `<style>` that marks the selected cells once for all the
41339
+ * cells (un)selected in one go: a drag over a block of cells unmarks and
41340
+ * marks every one of them on each move. `@debounce()` was never applied,
41341
+ * as a Table never reaches `ready`
41342
+ */ _this.__recalculateStyles = _this.async.microDebounce(function() {
41343
+ var style = (0,_core_global_js__WEBPACK_IMPORTED_MODULE_3__.getContainer)(_this.j, Table, 'style', true);
41344
+ var selectors = [];
41345
+ _this.selected.forEach(function(td) {
41346
+ var selector = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.cssPath)(td);
41347
+ selector && selectors.push(selector);
41348
+ });
41349
+ style.innerHTML = selectors.length ? selectors.join(',') + "{".concat(_this.jodit.options.table.selectionCellStyle, "}") : '';
41350
+ });
40951
41351
  return _this;
40952
41352
  }
40953
41353
  _create_class(Table, [
@@ -40957,24 +41357,12 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
40957
41357
  return 'Table';
40958
41358
  }
40959
41359
  },
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
41360
  {
40973
41361
  key: "addSelection",
40974
41362
  value: function addSelection(td) {
40975
41363
  this.selected.add(td);
40976
41364
  this.__recalculateStyles();
40977
- var table = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.closest(td, 'table', this.j.editor);
41365
+ var table = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.closest(td, 'table', this.j.editor);
40978
41366
  if (table) {
40979
41367
  var cells = Table.__selectedByTable.get(table) || new Set();
40980
41368
  cells.add(td);
@@ -40987,7 +41375,7 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
40987
41375
  value: function removeSelection(td) {
40988
41376
  this.selected.delete(td);
40989
41377
  this.__recalculateStyles();
40990
- var table = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.closest(td, 'table', this.j.editor);
41378
+ var table = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.closest(td, 'table', this.j.editor);
40991
41379
  if (table) {
40992
41380
  var cells = Table.__selectedByTable.get(table);
40993
41381
  if (cells) {
@@ -41004,7 +41392,7 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41004
41392
  * Returns array of selected cells
41005
41393
  */ key: "getAllSelectedCells",
41006
41394
  value: function getAllSelectedCells() {
41007
- return (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.toArray)(this.selected);
41395
+ return (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.toArray)(this.selected);
41008
41396
  }
41009
41397
  },
41010
41398
  {
@@ -41077,7 +41465,7 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41077
41465
  value: function appendColumn(table, selectedCell) {
41078
41466
  var insertAfter = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true;
41079
41467
  var box = Table.__formalMatrix(table);
41080
- if (!insertAfter && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.isCell(selectedCell.previousElementSibling)) {
41468
+ if (!insertAfter && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isCell(selectedCell.previousElementSibling)) {
41081
41469
  return this.appendColumn(table, selectedCell.previousElementSibling, true);
41082
41470
  }
41083
41471
  var _Table___formalCoordinate = _sliced_to_array(Table.__formalCoordinate(table, selectedCell, insertAfter), 2), formalCol = _Table___formalCoordinate[1];
@@ -41087,11 +41475,11 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41087
41475
  var cells = box[i];
41088
41476
  if (cells[columnIndex] !== cells[newColumnIndex] || columnIndex === newColumnIndex) {
41089
41477
  var cell = this.j.createInside.element('td');
41090
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.append(cell, this.j.createInside.element('br'));
41478
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(cell, this.j.createInside.element('br'));
41091
41479
  if (insertAfter) {
41092
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.after(cells[columnIndex], cell);
41480
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.after(cells[columnIndex], cell);
41093
41481
  } else {
41094
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.before(cells[columnIndex], cell);
41482
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.before(cells[columnIndex], cell);
41095
41483
  }
41096
41484
  if (cells[columnIndex].rowSpan > 1) {
41097
41485
  cell.rowSpan = cells[columnIndex].rowSpan;
@@ -41164,7 +41552,7 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41164
41552
  key: "__getSelectedCellsByTable",
41165
41553
  value: function __getSelectedCellsByTable(table) {
41166
41554
  var cells = Table.__selectedByTable.get(table);
41167
- return cells ? (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.toArray)(cells) : [];
41555
+ return cells ? (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.toArray)(cells) : [];
41168
41556
  }
41169
41557
  },
41170
41558
  {
@@ -41188,7 +41576,7 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41188
41576
  var matrix = [
41189
41577
  []
41190
41578
  ];
41191
- var rows = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.toArray)(table.rows);
41579
+ var rows = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.toArray)(table.rows);
41192
41580
  var setCell = function setCell(cell, i) {
41193
41581
  if (matrix[i] === undefined) {
41194
41582
  matrix[i] = [];
@@ -41211,7 +41599,7 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41211
41599
  }
41212
41600
  };
41213
41601
  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);
41602
+ var cells = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.toArray)(rows[i].cells);
41215
41603
  for(var j = 0; j < cells.length; j += 1){
41216
41604
  if (setCell(cells[j], i) === false) {
41217
41605
  return matrix;
@@ -41256,35 +41644,35 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41256
41644
  row = create.element('tr');
41257
41645
  for(var j = 0; j < columnsCount; j += 1){
41258
41646
  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);
41647
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(cell, create.element('br'));
41648
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(row, cell);
41261
41649
  }
41262
41650
  } else {
41263
41651
  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)) {
41652
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.each(line, function(cell) {
41653
+ if (!_core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isCell(cell)) {
41266
41654
  return;
41267
41655
  }
41268
- var rowspan = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.attr)(cell, 'rowspan');
41656
+ var rowspan = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(cell, 'rowspan');
41269
41657
  if (rowspan && parseInt(rowspan, 10) > 1) {
41270
41658
  var newRowSpan = parseInt(rowspan, 10) - 1;
41271
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.attr)(cell, 'rowspan', newRowSpan > 1 ? newRowSpan : null);
41659
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(cell, 'rowspan', newRowSpan > 1 ? newRowSpan : null);
41272
41660
  }
41273
41661
  });
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'));
41662
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.each(row, function(cell) {
41663
+ if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isCell(cell)) {
41664
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.detach(cell);
41665
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(cell, create.element('br'));
41278
41666
  }
41279
41667
  });
41280
41668
  }
41281
41669
  if (after && line && line.nextSibling) {
41282
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.after(line, row);
41670
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.after(line, row);
41283
41671
  } else if (!after && line) {
41284
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.before(line, row);
41672
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.before(line, row);
41285
41673
  } 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');
41674
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(_core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.first(table, function(node) {
41675
+ return _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(node, 'tbody');
41288
41676
  }) || table, row);
41289
41677
  }
41290
41678
  }
@@ -41306,8 +41694,8 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41306
41694
  while(box[rowIndex + 1][nextCell] === cell){
41307
41695
  nextCell += 1;
41308
41696
  }
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');
41697
+ var nextRow = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.next(cell.parentNode, function(elm) {
41698
+ return _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(elm, 'tr');
41311
41699
  }, table);
41312
41700
  if (nextRow) {
41313
41701
  // `box[rowIndex + 1][nextCell]` is the cell that
@@ -41325,21 +41713,21 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41325
41713
  }
41326
41714
  }
41327
41715
  if (referenceCell) {
41328
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.before(referenceCell, cell);
41716
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.before(referenceCell, cell);
41329
41717
  } else {
41330
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.append(nextRow, cell);
41718
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(nextRow, cell);
41331
41719
  }
41332
41720
  }
41333
41721
  }
41334
41722
  } else {
41335
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.safeRemove(cell);
41723
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove(cell);
41336
41724
  }
41337
41725
  if (dec && (cell.parentNode === row || cell !== box[rowIndex][j - 1])) {
41338
41726
  var rowSpan = cell.rowSpan;
41339
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.attr)(cell, 'rowspan', rowSpan - 1 > 1 ? rowSpan - 1 : null);
41727
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(cell, 'rowspan', rowSpan - 1 > 1 ? rowSpan - 1 : null);
41340
41728
  }
41341
41729
  });
41342
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.safeRemove(row);
41730
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove(row);
41343
41731
  }
41344
41732
  },
41345
41733
  {
@@ -41355,11 +41743,11 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41355
41743
  } else if (j + 1 < cells.length && box[i][j + 1] === td) {
41356
41744
  dec = true;
41357
41745
  } else {
41358
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.safeRemove(td);
41746
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove(td);
41359
41747
  }
41360
41748
  if (dec && (i - 1 < 0 || td !== box[i - 1][j])) {
41361
41749
  var colSpan = td.colSpan;
41362
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.attr)(td, 'colspan', colSpan - 1 > 1 ? (colSpan - 1).toString() : null);
41750
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(td, 'colspan', colSpan - 1 > 1 ? (colSpan - 1).toString() : null);
41363
41751
  }
41364
41752
  });
41365
41753
  }
@@ -41432,13 +41820,13 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41432
41820
  continue; // broken table
41433
41821
  }
41434
41822
  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);
41823
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(box[i][j], 'rowspan', null);
41436
41824
  }
41437
41825
  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);
41826
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(box[i][j], 'colspan', null);
41439
41827
  }
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);
41828
+ if (box[i][j].hasAttribute('class') && !(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(box[i][j], 'class')) {
41829
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(box[i][j], 'class', null);
41442
41830
  }
41443
41831
  }
41444
41832
  }
@@ -41516,10 +41904,10 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41516
41904
  return;
41517
41905
  }
41518
41906
  alreadyMerged.add(td);
41519
- if (i === bound[0][0] && (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.cssInline)(td, 'width')) {
41907
+ if (i === bound[0][0] && (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_5__.cssInline)(td, 'width')) {
41520
41908
  w += td.offsetWidth;
41521
41909
  }
41522
- if ((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.trim)(cell.innerHTML.replace(/<br(\/)?>/g, '')) !== '') {
41910
+ if ((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.trim)(cell.innerHTML.replace(/<br(\/)?>/g, '')) !== '') {
41523
41911
  html.push(cell.innerHTML);
41524
41912
  }
41525
41913
  if (cs > 1) {
@@ -41558,9 +41946,9 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41558
41946
  alreadyMerged.delete(first);
41559
41947
  Table.__unmark(__marked);
41560
41948
  Table.__normalizeTable(table);
41561
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.toArray)(table.rows).forEach(function(tr) {
41949
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.toArray)(table.rows).forEach(function(tr) {
41562
41950
  if (!tr.cells.length) {
41563
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.safeRemove(tr);
41951
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove(tr);
41564
41952
  }
41565
41953
  });
41566
41954
  }
@@ -41574,7 +41962,7 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41574
41962
  var __marked = [];
41575
41963
  Table.__getSelectedCellsByTable(table).forEach(function(cell) {
41576
41964
  td = jodit.createInside.element('td');
41577
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.append(td, jodit.createInside.element('br'));
41965
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(td, jodit.createInside.element('br'));
41578
41966
  tr = jodit.createInside.element('tr');
41579
41967
  coord = Table.__formalCoordinate(table, cell);
41580
41968
  if (cell.rowSpan < 2) {
@@ -41583,8 +41971,8 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41583
41971
  Table.__mark(tdElm, 'rowspan', tdElm.rowSpan + 1, __marked);
41584
41972
  }
41585
41973
  });
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);
41974
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.after(_core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.closest(cell, 'tr', table), tr);
41975
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(tr, td);
41588
41976
  } else {
41589
41977
  Table.__mark(cell, 'rowspan', cell.rowSpan - 1, __marked);
41590
41978
  Table.__formalMatrix(table, function(tdElm, i, j) {
@@ -41596,9 +41984,9 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41596
41984
  }
41597
41985
  });
41598
41986
  if (after) {
41599
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.after(after, td);
41987
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.after(after, td);
41600
41988
  } else {
41601
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.prepend(parent, td);
41989
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.prepend(parent, td);
41602
41990
  }
41603
41991
  }
41604
41992
  if (cell.colSpan > 1) {
@@ -41627,12 +42015,12 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41627
42015
  Table.__mark(cell, 'colspan', cell.colSpan - 1, __marked);
41628
42016
  }
41629
42017
  td = jodit.createInside.element('td');
41630
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.append(td, jodit.createInside.element('br'));
42018
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(td, jodit.createInside.element('br'));
41631
42019
  if (cell.rowSpan > 1) {
41632
42020
  Table.__mark(td, 'rowspan', cell.rowSpan, __marked);
41633
42021
  }
41634
42022
  var oldWidth = cell.offsetWidth; // get old width
41635
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.after(cell, td);
42023
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.after(cell, td);
41636
42024
  percentage = oldWidth / table.offsetWidth / 2;
41637
42025
  Table.__mark(cell, 'width', (percentage * 100).toFixed(_core_constants_js__WEBPACK_IMPORTED_MODULE_1__.ACCURACY) + '%', __marked);
41638
42026
  Table.__mark(td, 'width', (percentage * 100).toFixed(_core_constants_js__WEBPACK_IMPORTED_MODULE_1__.ACCURACY) + '%', __marked);
@@ -41687,22 +42075,22 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41687
42075
  var value = dict[key];
41688
42076
  switch(key){
41689
42077
  case 'remove':
41690
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.safeRemove(cell);
42078
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove(cell);
41691
42079
  break;
41692
42080
  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);
42081
+ (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
42082
  break;
41695
42083
  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);
42084
+ (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
42085
  break;
41698
42086
  case 'width':
41699
42087
  if (value == null) {
41700
42088
  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);
42089
+ if (!(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(cell, 'style')) {
42090
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(cell, 'style', null);
41703
42091
  }
41704
42092
  } else {
41705
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.css)(cell, 'width', value.toString());
42093
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.css)(cell, 'width', value.toString());
41706
42094
  }
41707
42095
  break;
41708
42096
  }
@@ -41717,9 +42105,6 @@ var Table = /*#__PURE__*/ function(ViewComponent) {
41717
42105
  return Table;
41718
42106
  }(_core_component_index_js__WEBPACK_IMPORTED_MODULE_0__.ViewComponent);
41719
42107
  Table.__selectedByTable = new WeakMap();
41720
- __decorate([
41721
- (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_2__.debounce)()
41722
- ], Table.prototype, "__recalculateStyles", null);
41723
42108
  var instance = function instance(j) {
41724
42109
  return j.getInstance('Table', j.o);
41725
42110
  };
@@ -46925,6 +47310,10 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('backspace', backs
46925
47310
  mainClosestBox = nextBox;
46926
47311
  }
46927
47312
  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)) {
47313
+ // A table cell is never joined with its neighbour
47314
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.up(fakeNode, _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isCell, mainClosestBox, true)) {
47315
+ return false;
47316
+ }
46928
47317
  var sibling = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.findNotEmptySibling(mainClosestBox, backspace);
46929
47318
  // A line break before the cursor is a single unit: remove it instead of
46930
47319
  // merging the current element into the (void) `<br>`, which used to move
@@ -46934,13 +47323,48 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('backspace', backs
46934
47323
  jodit.s.setCursorBefore(fakeNode);
46935
47324
  return true;
46936
47325
  }
46937
- if (sibling && (checkMoveListContent(jodit, mainClosestBox, sibling, backspace) || moveContentAndRemoveEmpty(jodit, mainClosestBox, resolveTableSibling(sibling, backspace), backspace))) {
47326
+ // Backspace leaves a block after a table alone, as Word does, rather
47327
+ // than moving its text into the last cell
47328
+ if (backspace && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(sibling, 'table')) {
47329
+ jodit.s.setCursorBefore(fakeNode);
47330
+ return true;
47331
+ }
47332
+ var box = findCaretBox(fakeNode, mainClosestBox);
47333
+ 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
47334
  jodit.s.setCursorBefore(fakeNode);
46939
47335
  return true;
46940
47336
  }
46941
47337
  }
46942
47338
  return false;
46943
47339
  }
47340
+ /**
47341
+ * The block holding the caret inside the box that has the sibling, so
47342
+ * `<p>one</p><div><p>|two</p></div>` joins the two paragraphs instead of
47343
+ * moving the whole `<div>` into the first one. For a list item that is its
47344
+ * list, which the list cases handle.
47345
+ */ function findCaretBox(fakeNode, mainClosestBox) {
47346
+ var block = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.up(fakeNode, _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock, mainClosestBox);
47347
+ if (!block) {
47348
+ return mainClosestBox;
47349
+ }
47350
+ return _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isLeaf(block) && block.parentElement ? block.parentElement : block;
47351
+ }
47352
+ /**
47353
+ * The innermost block on the sibling's edge facing the caret, so the
47354
+ * content is joined to text: `<div><p>one</p></div><p>|two</p>` gives
47355
+ * `<div><p>one|two</p></div>`
47356
+ */ function findEdgeBlock(sibling, backspace, root) {
47357
+ var block = sibling;
47358
+ while(block){
47359
+ var edge = backspace ? block.lastChild : block.firstChild;
47360
+ 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;
47361
+ 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)) {
47362
+ return block;
47363
+ }
47364
+ block = child;
47365
+ }
47366
+ return block;
47367
+ }
46944
47368
  /**
46945
47369
  * Content cannot be merged into the `<table>` element itself — it would land
46946
47370
  * between the table sections (after `</tbody>`), which is invalid HTML and
@@ -46957,6 +47381,42 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('backspace', backs
46957
47381
  });
46958
47382
  return cells.length ? cells[backspace ? cells.length - 1 : 0] : null;
46959
47383
  }
47384
+ /**
47385
+ * Delete at the edge of a list pulls the next line up to the caret, as the
47386
+ * browsers do, instead of moving the caret's line into the next block:
47387
+ * `<ul><li>one|</li></ul><p>two</p>` gives `<ul><li>one|two</li></ul>`, and
47388
+ * `<p>one|</p><ul><li>two</li></ul>` gives `<p>one|two</p>`
47389
+ * @private
47390
+ */ function checkPullNextLine(jodit, fakeNode, box, sibling, backspace) {
47391
+ if (backspace || !(_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isList(box) || _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isList(sibling))) {
47392
+ return false;
47393
+ }
47394
+ 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);
47395
+ var source = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isList(sibling) ? sibling.firstElementChild : sibling;
47396
+ 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')) {
47397
+ return false;
47398
+ }
47399
+ if (!_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isEmpty(source)) {
47400
+ var line = [];
47401
+ for(var node = source.firstChild; node && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock(node); node = node.nextSibling){
47402
+ line.push(node);
47403
+ }
47404
+ if (!line.length) {
47405
+ return false;
47406
+ }
47407
+ var filter = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_2__.getMoveFilter)(jodit);
47408
+ line.forEach(function(node) {
47409
+ 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);
47410
+ });
47411
+ }
47412
+ var remove = source;
47413
+ while(remove && remove !== jodit.editor && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isEmpty(remove)){
47414
+ var parent = remove.parentElement;
47415
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(remove);
47416
+ remove = parent;
47417
+ }
47418
+ return true;
47419
+ }
46960
47420
  function checkMoveListContent(jodit, mainClosestBox, sibling, backspace) {
46961
47421
  // Process UL/LI/OL cases
46962
47422
  var siblingIsList = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(sibling, _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.LIST_TAGS);
@@ -48484,6 +48944,22 @@ var cleanHtml = /*#__PURE__*/ function(Plugin) {
48484
48944
  this.currentSelectionNode = editor.s.current();
48485
48945
  }
48486
48946
  },
48947
+ {
48948
+ /**
48949
+ * Typing into an empty block (`<p><br></p>`) replaces its `<br>`, but the
48950
+ * browser keeps the `<br>` when the caret is in an invisible-space text
48951
+ * node in front of it, as Jodit leaves the caret in many of the empty
48952
+ * blocks it makes (a cleared editor, a heading in an empty table cell).
48953
+ * See #1632
48954
+ */ key: "onInputRemovePlaceholderBr",
48955
+ value: function onInputRemovePlaceholderBr(event) {
48956
+ var _a;
48957
+ if (!this.isEditMode || event.type === 'input' && (event.isComposing || !((_a = event.inputType) === null || _a === void 0 ? void 0 : _a.startsWith('insert')))) {
48958
+ return;
48959
+ }
48960
+ ;(0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_8__.removePlaceholderBr)(this.j);
48961
+ }
48962
+ },
48487
48963
  {
48488
48964
  key: "startWalker",
48489
48965
  value: function startWalker() {
@@ -48674,6 +49150,12 @@ __decorate([
48674
49150
  ':keydown'
48675
49151
  ])
48676
49152
  ], cleanHtml.prototype, "onChangeCleanHTML", null);
49153
+ __decorate([
49154
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)([
49155
+ ':input',
49156
+ 'jodit.editor:compositionend'
49157
+ ])
49158
+ ], cleanHtml.prototype, "onInputRemovePlaceholderBr", null);
48677
49159
  __decorate([
48678
49160
  (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.hook)('ready')
48679
49161
  ], cleanHtml.prototype, "startWalker", null);
@@ -48805,12 +49287,14 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.controls.eraser = {
48805
49287
  /* harmony export */ getHash: function() { return /* reexport safe */ _get_hash_js__WEBPACK_IMPORTED_MODULE_0__.getHash; },
48806
49288
  /* harmony export */ removeFormatForCollapsedSelection: function() { return /* reexport safe */ _remove_format_remove_format_for_collapsed_selection_js__WEBPACK_IMPORTED_MODULE_1__.removeFormatForCollapsedSelection; },
48807
49289
  /* 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; }
49290
+ /* harmony export */ removePlaceholderBr: function() { return /* reexport safe */ _remove_placeholder_br_js__WEBPACK_IMPORTED_MODULE_3__.removePlaceholderBr; },
49291
+ /* harmony export */ visitNodeWalker: function() { return /* reexport safe */ _visitor_visit_node_walker_js__WEBPACK_IMPORTED_MODULE_4__.visitNodeWalker; }
48809
49292
  /* harmony export */ });
48810
49293
  /* harmony import */ var _get_hash_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(83447);
48811
49294
  /* harmony import */ var _remove_format_remove_format_for_collapsed_selection_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(84272);
48812
49295
  /* 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);
49296
+ /* harmony import */ var _remove_placeholder_br_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(56385);
49297
+ /* harmony import */ var _visitor_visit_node_walker_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(39516);
48814
49298
  /*!
48815
49299
  * Jodit Editor (https://xdsoft.net/jodit/)
48816
49300
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -48824,6 +49308,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.controls.eraser = {
48824
49308
 
48825
49309
 
48826
49310
 
49311
+
48827
49312
  /***/ }),
48828
49313
 
48829
49314
  /***/ 15908:
@@ -48978,6 +49463,62 @@ var VIMEO_EMBED = /^(https?:)?\/\/player\.vimeo\.com\/video\//i;
48978
49463
  }
48979
49464
 
48980
49465
 
49466
+ /***/ }),
49467
+
49468
+ /***/ 56385:
49469
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
49470
+
49471
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
49472
+ /* harmony export */ removePlaceholderBr: function() { return /* binding */ removePlaceholderBr; }
49473
+ /* harmony export */ });
49474
+ /* harmony import */ var _core_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82758);
49475
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2748);
49476
+ /* harmony import */ var _core_helpers_string_trim_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(49055);
49477
+ /*!
49478
+ * Jodit Editor (https://xdsoft.net/jodit/)
49479
+ * Released under MIT see LICENSE.txt in the project root for license information.
49480
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
49481
+ */
49482
+
49483
+
49484
+ function lastNode(node) {
49485
+ var last = node.lastChild;
49486
+ while(_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isText(last) && !last.nodeValue){
49487
+ last = last.previousSibling;
49488
+ }
49489
+ return last;
49490
+ }
49491
+ /**
49492
+ * Remove the `<br>` that kept the block with the caret open while it was
49493
+ * empty, once text has gone into the block: when the block is one line of
49494
+ * text that ends in that `<br>`, the `<br>` adds nothing to it
49495
+ * @private
49496
+ */ function removePlaceholderBr(jodit) {
49497
+ var _a;
49498
+ 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);
49499
+ if (!block || !(0,_core_helpers_string_trim_js__WEBPACK_IMPORTED_MODULE_2__.trim)((_a = block.textContent) !== null && _a !== void 0 ? _a : '')) {
49500
+ return;
49501
+ }
49502
+ var br = lastNode(block);
49503
+ 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)){
49504
+ br = lastNode(br);
49505
+ }
49506
+ if (!_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(br, 'br')) {
49507
+ return;
49508
+ }
49509
+ // Another line break, a block, an image or an embed means the `<br>` may
49510
+ // end an empty line, or give the caret a place after the embed
49511
+ var isOneLineOfText = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.each(block, function(node) {
49512
+ 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)) {
49513
+ return false;
49514
+ }
49515
+ });
49516
+ if (isOneLineOfText) {
49517
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(br);
49518
+ }
49519
+ }
49520
+
49521
+
48981
49522
  /***/ }),
48982
49523
 
48983
49524
  /***/ 82558:
@@ -50660,6 +51201,14 @@ __webpack_require__.r(__webpack_exports__);
50660
51201
  /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(21537);
50661
51202
  /* harmony import */ var _core_helpers_string_trim_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(49055);
50662
51203
  /* harmony import */ var _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(50911);
51204
+ function _array_like_to_array(arr, len) {
51205
+ if (len == null || len > arr.length) len = arr.length;
51206
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
51207
+ return arr2;
51208
+ }
51209
+ function _array_with_holes(arr) {
51210
+ if (Array.isArray(arr)) return arr;
51211
+ }
50663
51212
  function _assert_this_initialized(self) {
50664
51213
  if (self === void 0) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
50665
51214
  return self;
@@ -50731,6 +51280,33 @@ function _is_native_reflect_construct() {
50731
51280
  return !!result;
50732
51281
  })();
50733
51282
  }
51283
+ function _iterable_to_array_limit(arr, i) {
51284
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
51285
+ if (_i == null) return;
51286
+ var _arr = [];
51287
+ var _n = true;
51288
+ var _d = false;
51289
+ var _s, _e;
51290
+ try {
51291
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
51292
+ _arr.push(_s.value);
51293
+ if (i && _arr.length === i) break;
51294
+ }
51295
+ } catch (err) {
51296
+ _d = true;
51297
+ _e = err;
51298
+ } finally{
51299
+ try {
51300
+ if (!_n && _i["return"] != null) _i["return"]();
51301
+ } finally{
51302
+ if (_d) throw _e;
51303
+ }
51304
+ }
51305
+ return _arr;
51306
+ }
51307
+ function _non_iterable_rest() {
51308
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
51309
+ }
50734
51310
  function _possible_constructor_return(self, call) {
50735
51311
  if (call && (_type_of(call) === "object" || typeof call === "function")) return call;
50736
51312
  return _assert_this_initialized(self);
@@ -50742,10 +51318,21 @@ function _set_prototype_of(o, p) {
50742
51318
  };
50743
51319
  return _set_prototype_of(o, p);
50744
51320
  }
51321
+ function _sliced_to_array(arr, i) {
51322
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
51323
+ }
50745
51324
  function _type_of(obj) {
50746
51325
  "@swc/helpers - typeof";
50747
51326
  return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
50748
51327
  }
51328
+ function _unsupported_iterable_to_array(o, minLen) {
51329
+ if (!o) return;
51330
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
51331
+ var n = Object.prototype.toString.call(o).slice(8, -1);
51332
+ if (n === "Object" && o.constructor) n = o.constructor.name;
51333
+ if (n === "Map" || n === "Set") return Array.from(n);
51334
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
51335
+ }
50749
51336
  function _wrap_native_super(Class) {
50750
51337
  var _cache = typeof Map === "function" ? new Map() : undefined;
50751
51338
  _wrap_native_super = function(Class) {
@@ -50845,6 +51432,11 @@ var deleteCommand = /*#__PURE__*/ function(Plugin) {
50845
51432
  }
50846
51433
  jodit.s.expandSelection();
50847
51434
  var range = jodit.s.range;
51435
+ var caret = this.__clearSelectedCells(range);
51436
+ if (caret && range.collapsed) {
51437
+ jodit.s.selectRange(caret);
51438
+ return false;
51439
+ }
50848
51440
  range.deleteContents();
50849
51441
  var fake = jodit.createInside.fake();
50850
51442
  range.insertNode(fake);
@@ -50854,24 +51446,109 @@ var deleteCommand = /*#__PURE__*/ function(Plugin) {
50854
51446
  range.setStartBefore(fake);
50855
51447
  range.collapse(true);
50856
51448
  this.__moveCursorInEditableSibling(jodit, leftSibling, fake, range);
50857
- this.__addBrInEmptyBlock(fake, rightSibling, range);
51449
+ this.__addBrInEmptyBlock(fake, range);
50858
51450
  _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(fake);
50859
- jodit.s.selectRange(range);
51451
+ jodit.s.selectRange(caret !== null && caret !== void 0 ? caret : range);
50860
51452
  return false;
50861
51453
  }
50862
51454
  },
51455
+ {
51456
+ /**
51457
+ * A selection that starts or ends in a table cell clears the selected part
51458
+ * of each cell it covers and keeps the cells, as the browsers do.
51459
+ * `deleteContents` would remove the cells it fully covers, and the cells
51460
+ * it cuts would then be merged as blocks. The range is moved out of those
51461
+ * tables, so only the content between them is left to delete.
51462
+ *
51463
+ * Returns where the caret goes, or null when no table is involved
51464
+ */ key: "__clearSelectedCells",
51465
+ value: function __clearSelectedCells(range) {
51466
+ var _this_j = this.j, editor = _this_j.editor, createInside = _this_j.createInside;
51467
+ 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);
51468
+ 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);
51469
+ if (startCell === endCell) {
51470
+ return null;
51471
+ }
51472
+ var startTable = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(startCell, 'table', editor);
51473
+ var endTable = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(endCell, 'table', editor);
51474
+ var caret = range.cloneRange();
51475
+ caret.collapse(true);
51476
+ var parts = [];
51477
+ var addParts = function addParts(table) {
51478
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.toArray)(table.rows).flatMap(function(row) {
51479
+ return (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.toArray)(row.cells);
51480
+ }).filter(function(cell) {
51481
+ return range.intersectsNode(cell);
51482
+ }).forEach(function(cell) {
51483
+ var part = range.cloneRange();
51484
+ if (!_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isOrContains(cell, range.startContainer)) {
51485
+ part.setStart(cell, 0);
51486
+ }
51487
+ if (!_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isOrContains(cell, range.endContainer)) {
51488
+ part.setEnd(cell, cell.childNodes.length);
51489
+ }
51490
+ parts.push([
51491
+ cell,
51492
+ part
51493
+ ]);
51494
+ });
51495
+ };
51496
+ if (startTable) {
51497
+ addParts(startTable);
51498
+ if (startTable === endTable) {
51499
+ range.collapse(true);
51500
+ } else {
51501
+ range.setStartAfter(startTable);
51502
+ }
51503
+ }
51504
+ if (endTable && endTable !== startTable) {
51505
+ addParts(endTable);
51506
+ range.setEndBefore(endTable);
51507
+ }
51508
+ parts.forEach(function(param) {
51509
+ var _param = _sliced_to_array(param, 2), cell = _param[0], part = _param[1];
51510
+ part.deleteContents();
51511
+ if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(cell)) {
51512
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.detach(cell);
51513
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.append(cell, createInside.element('br'));
51514
+ }
51515
+ });
51516
+ return startTable ? caret : null;
51517
+ }
51518
+ },
50863
51519
  {
50864
51520
  key: "__moveContentInLeftSibling",
50865
51521
  value: function __moveContentInLeftSibling(fake, leftSibling, rightSibling) {
50866
51522
  leftSibling = this.__defineRightLeftBox(leftSibling);
51523
+ // Nothing is moved into a table, and a block left empty after it goes
51524
+ if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(leftSibling, 'table')) {
51525
+ if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(rightSibling) && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(rightSibling)) {
51526
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(rightSibling);
51527
+ }
51528
+ return;
51529
+ }
50867
51530
  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
51531
  _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.append(leftSibling, fake);
50869
51532
  _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.moveContent(rightSibling, leftSibling);
50870
51533
  _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(rightSibling);
50871
51534
  }
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);
51535
+ if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isList(rightSibling) && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isLeaf(rightSibling.firstElementChild)) {
51536
+ var item = rightSibling.firstElementChild;
51537
+ // What's left of the right list's first item joins the left block,
51538
+ // up to a list nested in the item
51539
+ if (!_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(item) && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(leftSibling)) {
51540
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.append(leftSibling, fake);
51541
+ while(item.firstChild && !_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(item.firstChild)){
51542
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.append(leftSibling, item.firstChild);
51543
+ }
51544
+ }
51545
+ // Remove empty right LI
51546
+ if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(item)) {
51547
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(item);
51548
+ }
51549
+ if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(rightSibling)) {
51550
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(rightSibling);
51551
+ }
50875
51552
  }
50876
51553
  }
50877
51554
  },
@@ -50893,9 +51570,9 @@ var deleteCommand = /*#__PURE__*/ function(Plugin) {
50893
51570
  },
50894
51571
  {
50895
51572
  /**
50896
- * Add BR in empty blocks left and right(for table cell)
51573
+ * Add BR in the empty block left at the caret
50897
51574
  */ key: "__addBrInEmptyBlock",
50898
- value: function __addBrInEmptyBlock(fake, rightSibling, range) {
51575
+ value: function __addBrInEmptyBlock(fake, range) {
50899
51576
  var jodit = this.j;
50900
51577
  if (fake.isConnected && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(fake.parentNode) && !fake.nextSibling && !fake.previousSibling) {
50901
51578
  var br = jodit.createInside.element('br');
@@ -50903,13 +51580,6 @@ var deleteCommand = /*#__PURE__*/ function(Plugin) {
50903
51580
  range.setStartBefore(br);
50904
51581
  range.collapse(true);
50905
51582
  }
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
51583
  }
50914
51584
  },
50915
51585
  {
@@ -53004,7 +53674,18 @@ function focus(editor) {
53004
53674
  editor.e.on('afterInit', function() {
53005
53675
  if (editor.o.autofocus) {
53006
53676
  if (editor.defaultTimeout) {
53007
- editor.async.setTimeout(_$focus, 300);
53677
+ // A click or key in the editor during the delay has put the
53678
+ // caret where the user wants it, so autofocus leaves it there
53679
+ var userInput = 'mousedown touchstart keydown';
53680
+ var cancel = function cancel1() {
53681
+ editor.async.clearTimeout(timeout);
53682
+ editor.e.off(userInput, cancel);
53683
+ };
53684
+ var timeout = editor.async.setTimeout(function() {
53685
+ editor.e.off(userInput, cancel);
53686
+ _$focus();
53687
+ }, 300);
53688
+ editor.e.on(userInput, cancel);
53008
53689
  } else {
53009
53690
  _$focus();
53010
53691
  }
@@ -54868,7 +55549,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeBaseUrl = '';
54868
55549
  _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeTitle = 'Jodit Editor';
54869
55550
  _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeDoctype = '<!DOCTYPE html>';
54870
55551
  _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' + '}';
55552
+ _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
55553
  _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeCSSLinks = [];
54873
55554
  _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeSandbox = null;
54874
55555
 
@@ -54914,6 +55595,10 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeSandbox = null;
54914
55595
  (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(link, 'rel', 'stylesheet');
54915
55596
  (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(link, 'href', href);
54916
55597
  doc.head && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.append(doc.head, link);
55598
+ // What plugins measured in the editing document changes once it's styled
55599
+ jodit.e.on(link, 'load', function() {
55600
+ return jodit.e.fire('resize');
55601
+ });
54917
55602
  });
54918
55603
  }
54919
55604
  if (opt.iframeStyle) {
@@ -54951,6 +55636,8 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeSandbox = null;
54951
55636
  (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
55637
  };
54953
55638
  var clearMarkers = function clearMarkers(html) {
55639
+ // The plugins' own styles, from `getContainer`, aren't part of the value
55640
+ html = html.replace(/<style[^>]+jodit-box[^>]*>[\s\S]*?<\/style>/gi, '');
54954
55641
  var bodyReg = /<body.*<\/body>/im, bodyMarker = '{%%BODY%%}', body = bodyReg.exec(html);
54955
55642
  if (body) {
54956
55643
  // remove markers
@@ -54975,7 +55662,12 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeSandbox = null;
54975
55662
  */ var replaceDocument = function replaceDocument(html) {
54976
55663
  var inert = new DOMParser().parseFromString(html, 'text/html');
54977
55664
  editor.e.fire('safeHTML', inert.documentElement);
55665
+ // The plugins' own styles stay, as the value leaves them out
55666
+ var styles = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.$$)('style.jodit-box', doc.head);
54978
55667
  doc.replaceChild(doc.adoptNode(inert.documentElement), doc.documentElement);
55668
+ styles.forEach(function(style) {
55669
+ return _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.append(doc.head, style);
55670
+ });
54979
55671
  };
54980
55672
  if (docMode) {
54981
55673
  var tag = editor.element.tagName;
@@ -55367,6 +56059,9 @@ var SELECTED_TAGS = new Set([
55367
56059
  key: "afterInit",
55368
56060
  value: function afterInit(jodit) {
55369
56061
  jodit.e.on(jodit.ed, 'selectionchange', this.onSelectionChange);
56062
+ // Over the highlight in `styles/reset.less`; the image keeps its own. It goes
56063
+ // in the editing document, so iframe mode has it whatever `iframeStyle` holds
56064
+ (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
56065
  }
55371
56066
  },
55372
56067
  {
@@ -59505,10 +60200,11 @@ var align = {
59505
60200
  /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(580);
59506
60201
  /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21537);
59507
60202
  /* 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);
60203
+ /* harmony import */ var _core_selection_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(45124);
60204
+ /* harmony import */ var _core_ui_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(67510);
60205
+ /* harmony import */ var _core_ui_popup_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(61259);
60206
+ /* harmony import */ var _modules_toolbar_factory_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(21491);
60207
+ /* harmony import */ var _config_config_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(24526);
59512
60208
  function _array_like_to_array(arr, len) {
59513
60209
  if (len == null || len > arr.length) len = arr.length;
59514
60210
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
@@ -59714,6 +60410,7 @@ function _wrap_native_super(Class) {
59714
60410
 
59715
60411
 
59716
60412
 
60413
+
59717
60414
  /**
59718
60415
  * Plugin for show inline popup dialog
59719
60416
  */ var inlinePopup = /*#__PURE__*/ function(Plugin) {
@@ -59729,7 +60426,13 @@ function _wrap_native_super(Class) {
59729
60426
  * command fires `closeAllPopups`, the toolbar should be shown again
59730
60427
  * while the selection is still there. See #1238
59731
60428
  */ _this.__reopenSelectionPopup = false;
60429
+ /**
60430
+ * The alignment controls fire `recalcPositionPopup` once they have moved
60431
+ * the element, and their button then fires `closeAllPopups`. The popup
60432
+ * opens again beside the element, as the selection toolbar does
60433
+ */ _this.__reopenFor = null;
59732
60434
  _this.snapRange = null;
60435
+ _this.__keyDownElement = null;
59733
60436
  _this.elmsList = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.keys)(_this.j.o.popup, false).filter(function(s) {
59734
60437
  return !_this.isExcludedTarget(s);
59735
60438
  });
@@ -59739,13 +60442,13 @@ function _wrap_native_super(Class) {
59739
60442
  {
59740
60443
  key: "popup",
59741
60444
  get: function get() {
59742
- return new _core_ui_popup_index_js__WEBPACK_IMPORTED_MODULE_6__.Popup(this.jodit, false);
60445
+ return new _core_ui_popup_index_js__WEBPACK_IMPORTED_MODULE_7__.Popup(this.jodit, false);
59743
60446
  }
59744
60447
  },
59745
60448
  {
59746
60449
  key: "toolbar",
59747
60450
  get: function get() {
59748
- return (0,_modules_toolbar_factory_js__WEBPACK_IMPORTED_MODULE_7__.makeCollection)(this.jodit, this.popup);
60451
+ return (0,_modules_toolbar_factory_js__WEBPACK_IMPORTED_MODULE_8__.makeCollection)(this.jodit, this.popup);
59749
60452
  }
59750
60453
  },
59751
60454
  {
@@ -59839,6 +60542,42 @@ function _wrap_native_super(Class) {
59839
60542
  },
59840
60543
  {
59841
60544
  /**
60545
+ * A key that moves the caret off an element closes its popup, and one
60546
+ * that moves the caret into an element with a popup (a link) opens it,
60547
+ * as clicks do
60548
+ */ key: "onKeyUp",
60549
+ value: function onKeyUp() {
60550
+ this.__followCaret();
60551
+ }
60552
+ },
60553
+ {
60554
+ key: "__followCaret",
60555
+ value: function __followCaret() {
60556
+ if (!(0,_core_selection_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.isMoved)(this.j, this.snapRange)) {
60557
+ return;
60558
+ }
60559
+ var range = this.j.s.range;
60560
+ var target = this.previousTarget;
60561
+ if (this.popup.isOpened && this.type !== 'selection' && target && !range.intersectsNode(target)) {
60562
+ this.popup.close();
60563
+ }
60564
+ var node = range.startContainer;
60565
+ var element = this.__elementAt(node);
60566
+ if (range.collapsed && element && element !== this.__keyDownElement) {
60567
+ this.onClick(node);
60568
+ }
60569
+ }
60570
+ },
60571
+ {
60572
+ /**
60573
+ * The element with a popup that holds `node`
60574
+ */ key: "__elementAt",
60575
+ value: function __elementAt(node) {
60576
+ return _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.closest(node, this.elmsList, this.j.editor);
60577
+ }
60578
+ },
60579
+ {
60580
+ /**
59842
60581
  * Can show popup for this type
59843
60582
  */ key: "canShowPopupForType",
59844
60583
  value: function canShowPopupForType(type) {
@@ -59890,10 +60629,19 @@ function _wrap_native_super(Class) {
59890
60629
  this.addListenersForElements();
59891
60630
  }
59892
60631
  },
60632
+ {
60633
+ key: "onRecalcPositionPopup",
60634
+ value: function onRecalcPositionPopup() {
60635
+ if (this.popup.isOpened && this.type !== 'selection' && this.previousTarget) {
60636
+ this.__reopenFor = this.previousTarget;
60637
+ }
60638
+ }
60639
+ },
59893
60640
  {
59894
60641
  key: "__onDocumentMouseDown",
59895
60642
  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)) {
60643
+ this.__reopenFor = null;
60644
+ 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
60645
  this.__reopenSelectionPopup = true;
59898
60646
  }
59899
60647
  }
@@ -59902,6 +60650,16 @@ function _wrap_native_super(Class) {
59902
60650
  key: "__onCloseAllPopups",
59903
60651
  value: function __onCloseAllPopups() {
59904
60652
  var _this = this;
60653
+ var target = this.__reopenFor;
60654
+ if (target) {
60655
+ this.__reopenFor = null;
60656
+ // After the popup's own `closeAllPopups` handler, as below
60657
+ this.j.async.setTimeout(function() {
60658
+ if (_this.j.editor.contains(target)) {
60659
+ _this.onClick(target);
60660
+ }
60661
+ }, 1);
60662
+ }
59905
60663
  if (!this.__reopenSelectionPopup) {
59906
60664
  return;
59907
60665
  }
@@ -59946,14 +60704,19 @@ function _wrap_native_super(Class) {
59946
60704
  },
59947
60705
  {
59948
60706
  key: "onSelectionStart",
59949
- value: function onSelectionStart() {
60707
+ value: function onSelectionStart(event) {
60708
+ // A key held down moves the caret on every repeat, with one keyup
60709
+ if (event === null || event === void 0 ? void 0 : event.repeat) {
60710
+ this.__followCaret();
60711
+ }
59950
60712
  this.snapRange = this.j.s.range.cloneRange();
60713
+ this.__keyDownElement = this.__elementAt(this.snapRange.startContainer);
59951
60714
  }
59952
60715
  },
59953
60716
  {
59954
60717
  key: "onSelectionEnd",
59955
60718
  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)) {
60719
+ 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
60720
  return;
59958
60721
  }
59959
60722
  var snapRange = this.snapRange, range = this.j.s.range;
@@ -60091,6 +60854,12 @@ __decorate([
60091
60854
  __decorate([
60092
60855
  (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)(':outsideClick')
60093
60856
  ], inlinePopup.prototype, "onOutsideClick", null);
60857
+ __decorate([
60858
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)(':keyup')
60859
+ ], inlinePopup.prototype, "onKeyUp", null);
60860
+ __decorate([
60861
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)(':recalcPositionPopup')
60862
+ ], inlinePopup.prototype, "onRecalcPositionPopup", null);
60094
60863
  __decorate([
60095
60864
  _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.autobind
60096
60865
  ], inlinePopup.prototype, "__onDocumentMouseDown", null);
@@ -62705,21 +63474,41 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_1__.pluginSystem.add('mobile', mobile);
62705
63474
  /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6441);
62706
63475
  /* harmony import */ var _icons_ol_svg_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(13465);
62707
63476
  /* harmony import */ var _icons_ul_svg_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(50267);
63477
+ /* harmony import */ var _start_dialog_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(83086);
63478
+ function _define_property(obj, key, value) {
63479
+ if (key in obj) {
63480
+ Object.defineProperty(obj, key, {
63481
+ value: value,
63482
+ enumerable: true,
63483
+ configurable: true,
63484
+ writable: true
63485
+ });
63486
+ } else obj[key] = value;
63487
+ return obj;
63488
+ }
62708
63489
  /*!
62709
63490
  * Jodit Editor (https://xdsoft.net/jodit/)
62710
63491
  * Released under MIT see LICENSE.txt in the project root for license information.
62711
63492
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
62712
- */
63493
+ */ ;
63494
+
62713
63495
 
62714
63496
 
62715
63497
 
62716
63498
 
63499
+ /**
63500
+ * The `ol` dropdown item that asks for the list's start number
63501
+ */ var START = 'start';
62717
63502
  var memoExec = function memoExec(jodit, _, param) {
62718
63503
  var control = param.control;
62719
63504
  var _a;
62720
63505
  var key = "button".concat(control.command);
62721
63506
  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);
63507
+ if (value === START) {
63508
+ (0,_start_dialog_js__WEBPACK_IMPORTED_MODULE_5__.openStartDialog)(jodit);
63509
+ return;
63510
+ }
63511
+ ;(0,_core_helpers_utils_data_bind_js__WEBPACK_IMPORTED_MODULE_0__.dataBind)(jodit, key, value);
62723
63512
  jodit.execCommand(control.command, false, value === 'default' ? null : value);
62724
63513
  };
62725
63514
  _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 +63532,19 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.controls.ol = {
62743
63532
  'ol'
62744
63533
  ],
62745
63534
  tooltip: 'Insert Ordered List',
62746
- list: {
63535
+ list: _define_property({
62747
63536
  default: 'Default',
62748
63537
  'lower-alpha': 'Lower Alpha',
62749
63538
  'lower-greek': 'Lower Greek',
62750
63539
  'lower-roman': 'Lower Roman',
62751
63540
  'upper-alpha': 'Upper Alpha',
62752
63541
  'upper-roman': 'Upper Roman'
62753
- },
62754
- exec: memoExec
63542
+ }, START, 'Start at...'),
63543
+ exec: memoExec,
63544
+ isChildDisabled: function isChildDisabled(jodit, button) {
63545
+ var _a;
63546
+ return ((_a = button.control.args) === null || _a === void 0 ? void 0 : _a[0]) === START && !(0,_start_dialog_js__WEBPACK_IMPORTED_MODULE_5__.closestOrderedList)(jodit);
63547
+ }
62755
63548
  };
62756
63549
 
62757
63550
 
@@ -62961,6 +63754,88 @@ __decorate([
62961
63754
  _core_global_js__WEBPACK_IMPORTED_MODULE_1__.pluginSystem.add('orderedList', orderedList);
62962
63755
 
62963
63756
 
63757
+ /***/ }),
63758
+
63759
+ /***/ 83086:
63760
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
63761
+
63762
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
63763
+ /* harmony export */ closestOrderedList: function() { return /* binding */ closestOrderedList; },
63764
+ /* harmony export */ openStartDialog: function() { return /* binding */ openStartDialog; }
63765
+ /* harmony export */ });
63766
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
63767
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29960);
63768
+ /* harmony import */ var _core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(62843);
63769
+ /* harmony import */ var _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2525);
63770
+ /*!
63771
+ * Jodit Editor (https://xdsoft.net/jodit/)
63772
+ * Released under MIT see LICENSE.txt in the project root for license information.
63773
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
63774
+ */
63775
+
63776
+
63777
+
63778
+ /**
63779
+ * The numbered list the selection is in
63780
+ */ function closestOrderedList(jodit) {
63781
+ var current = jodit.s.current();
63782
+ return current ? _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(current, 'ol', jodit.editor) : null;
63783
+ }
63784
+ /**
63785
+ * Asks for the number of the first item of the list the selection is in,
63786
+ * and sets the list's `start`. The selection is put back when the dialog
63787
+ * closes, however it closes.
63788
+ */ function openStartDialog(jodit) {
63789
+ var list = closestOrderedList(jodit);
63790
+ if (!list) {
63791
+ return;
63792
+ }
63793
+ var dialog = jodit.dlg({
63794
+ resizable: false,
63795
+ closeOnClickOverlay: true
63796
+ });
63797
+ var input = new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_3__.UIInput(jodit, {
63798
+ name: 'start',
63799
+ type: 'number',
63800
+ label: 'Number for the first item',
63801
+ value: list.start
63802
+ });
63803
+ var form = new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_3__.UIForm(jodit, [
63804
+ new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_3__.UIBlock(jodit, [
63805
+ input
63806
+ ])
63807
+ ]);
63808
+ form.container.classList.add('jodit-dialog_alert');
63809
+ form.onSubmit(function(param) {
63810
+ var start = param.start;
63811
+ var value = start === '' ? 1 : parseInt(start, 10);
63812
+ if (isNaN(value)) {
63813
+ input.focus();
63814
+ return false;
63815
+ }
63816
+ dialog.close();
63817
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(list, 'start', value === 1 ? null : value);
63818
+ jodit.synchronizeValues();
63819
+ });
63820
+ jodit.s.save();
63821
+ dialog.e.on(dialog, 'afterClose', function() {
63822
+ jodit.s.focus();
63823
+ jodit.s.restore();
63824
+ });
63825
+ dialog.setFooter([
63826
+ (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_2__.Button)(jodit, 'cancel', 'Cancel').onAction(function() {
63827
+ return dialog.close();
63828
+ }),
63829
+ (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_2__.Button)(jodit, 'ok', 'Apply', 'primary').onAction(function() {
63830
+ return form.submit();
63831
+ })
63832
+ ]);
63833
+ dialog.open(form, jodit.i18n('Start numbering at'), true, true);
63834
+ input.focus();
63835
+ input.nativeInput.select();
63836
+ }
63837
+
63838
+
62964
63839
  /***/ }),
62965
63840
 
62966
63841
  /***/ 71842:
@@ -64529,6 +65404,10 @@ function _wrap_native_super(Class) {
64529
65404
  return true;
64530
65405
  }
64531
65406
  var first = root.firstChild;
65407
+ // Firefox pads an empty editable body with a bare <br>
65408
+ 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)) {
65409
+ return true;
65410
+ }
64532
65411
  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
65412
  return false;
64534
65413
  }
@@ -64560,7 +65439,7 @@ function _wrap_native_super(Class) {
64560
65439
  _this.placeholderElm.innerHTML = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_5__.attr)(editor.element, 'placeholder') || '';
64561
65440
  }
64562
65441
  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);
65442
+ 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
65443
  _this.addNativeListeners();
64565
65444
  _this.toggle();
64566
65445
  };
@@ -64609,11 +65488,13 @@ function _wrap_native_super(Class) {
64609
65488
  marginTop = parseInt(style2.getPropertyValue('margin-top'), 10);
64610
65489
  marginLeft = parseInt(style2.getPropertyValue('margin-left'), 10);
64611
65490
  (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(this.placeholderElm, {
65491
+ fontFamily: style2.getPropertyValue('font-family'),
64612
65492
  fontSize: parseInt(style2.getPropertyValue('font-size'), 10),
64613
65493
  lineHeight: style2.getPropertyValue('line-height')
64614
65494
  });
64615
65495
  } else {
64616
65496
  (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(this.placeholderElm, {
65497
+ fontFamily: style.getPropertyValue('font-family'),
64617
65498
  fontSize: parseInt(style.getPropertyValue('font-size'), 10),
64618
65499
  lineHeight: style.getPropertyValue('line-height')
64619
65500
  });
@@ -66067,7 +66948,10 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.resizer = {
66067
66948
  /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(21537);
66068
66949
  /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(41180);
66069
66950
  /* 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);
66951
+ /* harmony import */ var _core_selection_helpers_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(45124);
66952
+ /* harmony import */ var _core_ui_index_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(67510);
66953
+ /* harmony import */ var _core_ui_popup_index_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(61259);
66954
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(71675);
66071
66955
  function _assert_this_initialized(self) {
66072
66956
  if (self === void 0) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
66073
66957
  return self;
@@ -66197,6 +67081,9 @@ function _wrap_native_super(Class) {
66197
67081
 
66198
67082
 
66199
67083
 
67084
+
67085
+
67086
+
66200
67087
  var keyBInd = '__jodit-resizer_binded';
66201
67088
  /**
66202
67089
  * Reads a plain pixel value out of a `width`/`height` attribute.
@@ -66216,6 +67103,12 @@ var keyBInd = '__jodit-resizer_binded';
66216
67103
  */ function heightFollowsWidth(element) {
66217
67104
  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
67105
  }
67106
+ var IFRAME_WRAPPER = '[data-jodit_iframe_wrapper]';
67107
+ /**
67108
+ * A click on an embed lands on its wrapper, so it selects the embed, until the
67109
+ * wrapper is active. While the editor is locked, as during resizing, the
67110
+ * wrapper takes the mouse again.
67111
+ */ 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
67112
  /**
66220
67113
  * The module creates a supporting frame for resizing of the elements img and table
66221
67114
  */ var resizer = /*#__PURE__*/ function(Plugin) {
@@ -66240,6 +67133,8 @@ var keyBInd = '__jodit-resizer_binded';
66240
67133
  _this.sizeViewer = _this.rect.getElementsByTagName('span')[0];
66241
67134
  _this.pointerX = 0;
66242
67135
  _this.pointerY = 0;
67136
+ _this.__keyDownRange = null;
67137
+ _this.__keyDownTable = null;
66243
67138
  _this.isAltMode = false;
66244
67139
  _this.onClickElement = function(element) {
66245
67140
  if (_this.isResizeMode) {
@@ -66291,6 +67186,8 @@ var keyBInd = '__jodit-resizer_binded';
66291
67186
  /** @override */ key: "afterInit",
66292
67187
  value: function afterInit(editor) {
66293
67188
  var _this = this;
67189
+ // It goes in the editing document, so iframe mode has it whatever `iframeStyle` holds
67190
+ (0,_core_global_js__WEBPACK_IMPORTED_MODULE_3__.getContainer)(editor, 'resizer', 'style', true).textContent = EMBED_WRAPPER_STYLE;
66294
67191
  (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.$$)('div', this.rect).forEach(function(resizeHandle) {
66295
67192
  editor.e.on(resizeHandle, 'mousedown.resizer touchstart.resizer', _this.onStartResizing.bind(_this, resizeHandle));
66296
67193
  });
@@ -66299,7 +67196,11 @@ var keyBInd = '__jodit-resizer_binded';
66299
67196
  if (isReadOnly) {
66300
67197
  _this.hide();
66301
67198
  }
66302
- }).on('afterInit changePlace', this.addEventListeners.bind(this)).on('afterGetValueFromEditor.resizer', function(data) {
67199
+ }).on('afterInit changePlace', this.addEventListeners.bind(this))// Handlers without a namespace run first, ahead of those that
67200
+ // move the caret, as table-keyboard-navigation's do
67201
+ .on('keydown', this.onEditorKeyDown, {
67202
+ top: true
67203
+ }).on('afterGetValueFromEditor.resizer', function(data) {
66303
67204
  var rgx = /<jodit[^>]+data-jodit_iframe_wrapper[^>]+>(.*?<iframe[^>]*>.*?<\/iframe>.*?)<\/jodit>/gi;
66304
67205
  if (rgx.test(data.value)) {
66305
67206
  data.value = data.value.replace(rgx, '$1');
@@ -66467,6 +67368,50 @@ var keyBInd = '__jodit-resizer_binded';
66467
67368
  }
66468
67369
  }
66469
67370
  },
67371
+ {
67372
+ key: "onEditorKeyDown",
67373
+ value: function onEditorKeyDown(event) {
67374
+ // A key held down moves the caret on every repeat, with one keyup
67375
+ if (event === null || event === void 0 ? void 0 : event.repeat) {
67376
+ this.__followCaret();
67377
+ }
67378
+ this.__keyDownRange = this.j.s.range.cloneRange();
67379
+ this.__keyDownTable = this.__caretTable();
67380
+ }
67381
+ },
67382
+ {
67383
+ key: "__caretTable",
67384
+ value: function __caretTable() {
67385
+ return _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.closest(this.j.s.range.startContainer, 'table', this.j.editor);
67386
+ }
67387
+ },
67388
+ {
67389
+ /**
67390
+ * Hide the frame once a key has moved the caret off its element, and
67391
+ * frame a table the caret has moved into, as clicks do
67392
+ */ key: "onEditorKeyUp",
67393
+ value: function onEditorKeyUp() {
67394
+ this.__followCaret();
67395
+ }
67396
+ },
67397
+ {
67398
+ key: "__followCaret",
67399
+ value: function __followCaret() {
67400
+ var before = this.__keyDownRange;
67401
+ this.__keyDownRange = null;
67402
+ if (!(0,_core_selection_helpers_index_js__WEBPACK_IMPORTED_MODULE_7__.isMoved)(this.j, before)) {
67403
+ return;
67404
+ }
67405
+ if (this.isShown && this.element && !this.j.s.range.intersectsNode(this.element)) {
67406
+ this.hide();
67407
+ }
67408
+ var table = this.__caretTable();
67409
+ if (table && table !== this.__keyDownTable && this.j.o.allowResizeTags.has('table')) {
67410
+ this.__bind(table);
67411
+ this.onClickElement(table);
67412
+ }
67413
+ }
67414
+ },
66470
67415
  {
66471
67416
  key: "onKeyDown",
66472
67417
  value: function onKeyDown(e) {
@@ -66496,6 +67441,11 @@ var keyBInd = '__jodit-resizer_binded';
66496
67441
  return;
66497
67442
  }
66498
67443
  if (!this.isResizeMode) {
67444
+ // A click in the element's popup, or in a list it opens, works on
67445
+ // the element, so it keeps its frame
67446
+ 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)) {
67447
+ return;
67448
+ }
66499
67449
  return this.hide();
66500
67450
  }
66501
67451
  e.stopImmediatePropagation();
@@ -66695,7 +67645,7 @@ var keyBInd = '__jodit-resizer_binded';
66695
67645
  this.hide();
66696
67646
  _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove(this.layer);
66697
67647
  _core_global_js__WEBPACK_IMPORTED_MODULE_3__.eventEmitter.off('hideHelpers', this.hide);
66698
- jodit.e.off(this.j.ow, '.resizer').off('.resizer');
67648
+ jodit.e.off(this.j.ow, '.resizer').off('.resizer').off('keydown', this.onEditorKeyDown);
66699
67649
  }
66700
67650
  }
66701
67651
  ]);
@@ -66716,6 +67666,12 @@ __decorate([
66716
67666
  __decorate([
66717
67667
  _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.autobind
66718
67668
  ], resizer.prototype, "onResize", null);
67669
+ __decorate([
67670
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.autobind
67671
+ ], resizer.prototype, "onEditorKeyDown", null);
67672
+ __decorate([
67673
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.watch)(':keyup')
67674
+ ], resizer.prototype, "onEditorKeyUp", null);
66719
67675
  __decorate([
66720
67676
  _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.autobind
66721
67677
  ], resizer.prototype, "onKeyDown", null);
@@ -68576,8 +69532,9 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.tableAllowCellSelection
68576
69532
  /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(580);
68577
69533
  /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(21537);
68578
69534
  /* 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);
69535
+ /* harmony import */ var _core_selection_helpers_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(45124);
69536
+ /* harmony import */ var _modules_table_table_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(76014);
69537
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(55311);
68581
69538
  function _array_like_to_array(arr, len) {
68582
69539
  if (len == null || len > arr.length) len = arr.length;
68583
69540
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
@@ -68752,6 +69709,7 @@ function _wrap_native_super(Class) {
68752
69709
 
68753
69710
 
68754
69711
 
69712
+
68755
69713
  var key = 'table_processor_observer';
68756
69714
  var MOUSE_MOVE_LABEL = 'onMoveTableSelectCell';
68757
69715
  var selectCells = /*#__PURE__*/ function(Plugin) {
@@ -68761,6 +69719,13 @@ var selectCells = /*#__PURE__*/ function(Plugin) {
68761
69719
  _class_call_check(this, selectCells);
68762
69720
  var _this;
68763
69721
  _this = _call_super(this, selectCells, arguments);
69722
+ /**
69723
+ * The cell with the caret, and the selection, when a key went down
69724
+ */ _this.__keyDownCell = null;
69725
+ _this.__keyDownRange = null;
69726
+ /**
69727
+ * A link's popup replaces the cell's while the caret is in the link
69728
+ */ _this.__keyDownInLink = false;
68764
69729
  /**
68765
69730
  * First selected cell
68766
69731
  */ _this.__selectedCell = null;
@@ -68775,7 +69740,7 @@ var selectCells = /*#__PURE__*/ function(Plugin) {
68775
69740
  get: /**
68776
69741
  * Shortcut for Jodit.modules.Table
68777
69742
  */ function get() {
68778
- return this.j.getInstance(_modules_table_table_js__WEBPACK_IMPORTED_MODULE_6__.Table, this.j.o);
69743
+ return this.j.getInstance(_modules_table_table_js__WEBPACK_IMPORTED_MODULE_7__.Table, this.j.o);
68779
69744
  }
68780
69745
  },
68781
69746
  {
@@ -68785,7 +69750,11 @@ var selectCells = /*#__PURE__*/ function(Plugin) {
68785
69750
  if (!jodit.o.tableAllowCellSelection) {
68786
69751
  return;
68787
69752
  }
68788
- jodit.e.on('keydown.select-cells', function(event) {
69753
+ jodit.e// Handlers without a namespace run first, ahead of those that
69754
+ // move the caret, as table-keyboard-navigation's do
69755
+ .on('keydown', this.__onKeyDown, {
69756
+ top: true
69757
+ }).on('keydown.select-cells', function(event) {
68789
69758
  if (event.key === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.KEY_TAB) {
68790
69759
  _this.unselectCells();
68791
69760
  }
@@ -68812,6 +69781,77 @@ var selectCells = /*#__PURE__*/ function(Plugin) {
68812
69781
  });
68813
69782
  }
68814
69783
  },
69784
+ {
69785
+ key: "__onKeyDown",
69786
+ value: function __onKeyDown(event) {
69787
+ // A key held down moves the caret on every repeat, with one keyup
69788
+ if (event === null || event === void 0 ? void 0 : event.repeat) {
69789
+ this.__followCaret();
69790
+ }
69791
+ this.__keyDownCell = this.__caretCell();
69792
+ this.__keyDownRange = this.j.s.range.cloneRange();
69793
+ this.__keyDownInLink = this.__isInLink();
69794
+ }
69795
+ },
69796
+ {
69797
+ key: "__isInLink",
69798
+ value: function __isInLink() {
69799
+ return Boolean(_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.closest(this.j.s.range.startContainer, 'a', this.j.editor));
69800
+ }
69801
+ },
69802
+ {
69803
+ /**
69804
+ * Where the selection starts rather than `s.current()`, which finds the
69805
+ * first cell when the caret is just before the table
69806
+ */ key: "__caretCell",
69807
+ value: function __caretCell() {
69808
+ 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);
69809
+ }
69810
+ },
69811
+ {
69812
+ /**
69813
+ * A key that moves the caret into a cell, from another cell or from
69814
+ * outside the table, marks that cell and opens its popup, as a click on
69815
+ * it does. One that moves the caret out of the table unmarks the cells
69816
+ */ key: "onKeyUp",
69817
+ value: function onKeyUp() {
69818
+ this.__followCaret();
69819
+ }
69820
+ },
69821
+ {
69822
+ key: "__followCaret",
69823
+ value: function __followCaret() {
69824
+ var _this = this;
69825
+ var before = this.__keyDownRange;
69826
+ this.__keyDownRange = null;
69827
+ if (this.j.o.readonly || !(0,_core_selection_helpers_index_js__WEBPACK_IMPORTED_MODULE_6__.isMoved)(this.j, before)) {
69828
+ return;
69829
+ }
69830
+ var cell = this.__caretCell();
69831
+ var hasLeftLink = this.__keyDownInLink && !this.__isInLink();
69832
+ if (cell === this.__keyDownCell && !(cell && hasLeftLink)) {
69833
+ return;
69834
+ }
69835
+ var hadMarked = this.__tableModule.getAllSelectedCells().length > 0;
69836
+ this.unselectCells();
69837
+ if (!cell) {
69838
+ if (hadMarked) {
69839
+ this.j.e.fire('hidePopup', 'cells');
69840
+ }
69841
+ return;
69842
+ }
69843
+ var table = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.closest(cell, 'table', this.j.editor);
69844
+ if (!table) {
69845
+ return;
69846
+ }
69847
+ // As after a click, the first change to the cell keeps the mark
69848
+ this.__selectedCell = cell;
69849
+ this.__tableModule.addSelection(cell);
69850
+ this.j.e.fire('showPopup', table, function() {
69851
+ return (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.position)(cell, _this.j);
69852
+ }, 'cells');
69853
+ }
69854
+ },
68815
69855
  {
68816
69856
  /**
68817
69857
  * Mouse click inside the table
@@ -69184,7 +70224,7 @@ var selectCells = /*#__PURE__*/ function(Plugin) {
69184
70224
  /** @override */ key: "beforeDestruct",
69185
70225
  value: function beforeDestruct(jodit) {
69186
70226
  this.__onRemoveSelection();
69187
- jodit.e.off('.select-cells');
70227
+ jodit.e.off('.select-cells').off('keydown', this.__onKeyDown);
69188
70228
  }
69189
70229
  }
69190
70230
  ]);
@@ -69193,6 +70233,12 @@ var selectCells = /*#__PURE__*/ function(Plugin) {
69193
70233
  selectCells.requires = [
69194
70234
  'select'
69195
70235
  ];
70236
+ __decorate([
70237
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.autobind
70238
+ ], selectCells.prototype, "__onKeyDown", null);
70239
+ __decorate([
70240
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.watch)(':keyup')
70241
+ ], selectCells.prototype, "onKeyUp", null);
69196
70242
  __decorate([
69197
70243
  _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.autobind
69198
70244
  ], selectCells.prototype, "onStartSelection", null);
@@ -75507,7 +76553,9 @@ var WORK_KEYS = new Set([
75507
76553
  case _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.KEY_LEFT:
75508
76554
  {
75509
76555
  next = getNextCell();
75510
- if (!next) {
76556
+ // Left in the first cell leaves the table, as Up in the
76557
+ // top row does
76558
+ if (!next && key === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.KEY_TAB) {
75511
76559
  tableModule.appendRow(table, !isPrev ? false : _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.first(table, function(node) {
75512
76560
  return _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(node, 'tr');
75513
76561
  }), !isPrev);
@@ -75535,7 +76583,6 @@ var WORK_KEYS = new Set([
75535
76583
  if (!next) {
75536
76584
  return;
75537
76585
  }
75538
- editor.e.fire('hidePopup hideResizer');
75539
76586
  if (!next.firstChild) {
75540
76587
  var first = editor.createInside.element('br');
75541
76588
  _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.append(next, first);