jodit-pro 4.18.9 → 4.18.12

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 (348) hide show
  1. package/es2015/jodit.css +1 -1
  2. package/es2015/jodit.fat.min.js +13 -13
  3. package/es2015/jodit.js +286 -48
  4. package/es2015/jodit.min.js +14 -14
  5. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  6. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.js +19 -1
  7. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.min.js +3 -3
  8. package/es2015/plugins/autocomplete/autocomplete.css +1 -1
  9. package/es2015/plugins/autocomplete/autocomplete.js +1 -1
  10. package/es2015/plugins/autocomplete/autocomplete.min.js +1 -1
  11. package/es2015/plugins/backup/backup.css +1 -1
  12. package/es2015/plugins/backup/backup.js +14 -7
  13. package/es2015/plugins/backup/backup.min.js +2 -2
  14. package/es2015/plugins/button-generator/button-generator.css +1 -1
  15. package/es2015/plugins/button-generator/button-generator.js +26 -19
  16. package/es2015/plugins/button-generator/button-generator.min.js +3 -3
  17. package/es2015/plugins/change-case/change-case.js +1 -1
  18. package/es2015/plugins/change-case/change-case.min.js +1 -1
  19. package/es2015/plugins/chart/chart.css +1 -1
  20. package/es2015/plugins/chart/chart.js +1 -1
  21. package/es2015/plugins/chart/chart.min.js +1 -1
  22. package/es2015/plugins/color-picker/color-picker.css +1 -1
  23. package/es2015/plugins/color-picker/color-picker.js +1 -1
  24. package/es2015/plugins/color-picker/color-picker.min.js +1 -1
  25. package/es2015/plugins/emoji/emoji.css +1 -1
  26. package/es2015/plugins/emoji/emoji.js +1 -1
  27. package/es2015/plugins/emoji/emoji.min.js +1 -1
  28. package/es2015/plugins/export-docs/export-docs.js +1 -1
  29. package/es2015/plugins/export-docs/export-docs.min.js +1 -1
  30. package/es2015/plugins/finder/finder.css +1 -1
  31. package/es2015/plugins/finder/finder.js +1 -1
  32. package/es2015/plugins/finder/finder.min.js +1 -1
  33. package/es2015/plugins/google-maps/google-maps.css +1 -1
  34. package/es2015/plugins/google-maps/google-maps.js +1 -1
  35. package/es2015/plugins/google-maps/google-maps.min.js +1 -1
  36. package/es2015/plugins/google-search/google-search.js +1 -1
  37. package/es2015/plugins/google-search/google-search.min.js +1 -1
  38. package/es2015/plugins/highlight-signature/highlight-signature.js +1 -1
  39. package/es2015/plugins/highlight-signature/highlight-signature.min.js +1 -1
  40. package/es2015/plugins/iframe-editor/iframe-editor.css +1 -1
  41. package/es2015/plugins/iframe-editor/iframe-editor.js +1 -1
  42. package/es2015/plugins/iframe-editor/iframe-editor.min.js +1 -1
  43. package/es2015/plugins/image-editor-pro/image-editor-pro.css +1 -1
  44. package/es2015/plugins/image-editor-pro/image-editor-pro.js +1 -1
  45. package/es2015/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  46. package/es2015/plugins/keyboard/keyboard.css +1 -1
  47. package/es2015/plugins/keyboard/keyboard.js +1 -1
  48. package/es2015/plugins/keyboard/keyboard.min.js +1 -1
  49. package/es2015/plugins/math/math.css +1 -1
  50. package/es2015/plugins/math/math.js +1 -1
  51. package/es2015/plugins/math/math.min.js +1 -1
  52. package/es2015/plugins/mobile-view/mobile-view.js +1 -1
  53. package/es2015/plugins/mobile-view/mobile-view.min.js +1 -1
  54. package/es2015/plugins/page-break/page-break.js +1 -1
  55. package/es2015/plugins/page-break/page-break.min.js +1 -1
  56. package/es2015/plugins/paste-code/paste-code.css +1 -1
  57. package/es2015/plugins/paste-code/paste-code.js +1 -1
  58. package/es2015/plugins/paste-code/paste-code.min.js +1 -1
  59. package/es2015/plugins/paste-from-word/paste-from-word.js +1 -1
  60. package/es2015/plugins/paste-from-word/paste-from-word.min.js +1 -1
  61. package/es2015/plugins/show-blocks/show-blocks.js +1 -1
  62. package/es2015/plugins/show-blocks/show-blocks.min.js +1 -1
  63. package/es2015/plugins/style/style.css +1 -1
  64. package/es2015/plugins/style/style.js +1 -1
  65. package/es2015/plugins/style/style.min.js +1 -1
  66. package/es2015/plugins/templates/templates.css +1 -1
  67. package/es2015/plugins/templates/templates.js +1 -1
  68. package/es2015/plugins/templates/templates.min.js +1 -1
  69. package/es2015/plugins/todo-list/todo-list.css +1 -1
  70. package/es2015/plugins/todo-list/todo-list.js +1 -1
  71. package/es2015/plugins/todo-list/todo-list.min.js +1 -1
  72. package/es2015/plugins/translate/translate.css +1 -1
  73. package/es2015/plugins/translate/translate.js +1 -1
  74. package/es2015/plugins/translate/translate.min.js +1 -1
  75. package/es2015/plugins/tune-block/tune-block.css +1 -1
  76. package/es2015/plugins/tune-block/tune-block.js +1 -1
  77. package/es2015/plugins/tune-block/tune-block.min.js +1 -1
  78. package/es2018/jodit.fat.min.js +16 -16
  79. package/es2018/jodit.min.js +8 -8
  80. package/es2018/plugins/ai-assistant-pro/ai-assistant-pro.min.js +3 -3
  81. package/es2018/plugins/autocomplete/autocomplete.min.js +1 -1
  82. package/es2018/plugins/backup/backup.min.js +2 -2
  83. package/es2018/plugins/button-generator/button-generator.min.js +3 -3
  84. package/es2018/plugins/change-case/change-case.min.js +1 -1
  85. package/es2018/plugins/chart/chart.min.js +1 -1
  86. package/es2018/plugins/color-picker/color-picker.min.js +1 -1
  87. package/es2018/plugins/emoji/emoji.min.js +1 -1
  88. package/es2018/plugins/export-docs/export-docs.min.js +1 -1
  89. package/es2018/plugins/finder/finder.min.js +1 -1
  90. package/es2018/plugins/google-maps/google-maps.min.js +1 -1
  91. package/es2018/plugins/google-search/google-search.min.js +1 -1
  92. package/es2018/plugins/highlight-signature/highlight-signature.min.js +1 -1
  93. package/es2018/plugins/iframe-editor/iframe-editor.min.js +1 -1
  94. package/es2018/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  95. package/es2018/plugins/keyboard/keyboard.min.js +1 -1
  96. package/es2018/plugins/math/math.min.js +1 -1
  97. package/es2018/plugins/mobile-view/mobile-view.min.js +1 -1
  98. package/es2018/plugins/page-break/page-break.min.js +1 -1
  99. package/es2018/plugins/paste-code/paste-code.min.js +1 -1
  100. package/es2018/plugins/paste-from-word/paste-from-word.min.js +1 -1
  101. package/es2018/plugins/show-blocks/show-blocks.min.js +1 -1
  102. package/es2018/plugins/style/style.min.js +1 -1
  103. package/es2018/plugins/templates/templates.min.js +1 -1
  104. package/es2018/plugins/todo-list/todo-list.min.js +1 -1
  105. package/es2018/plugins/translate/translate.min.js +1 -1
  106. package/es2018/plugins/tune-block/tune-block.min.js +1 -1
  107. package/es2021/jodit.css +1 -1
  108. package/es2021/jodit.fat.min.js +19 -19
  109. package/es2021/jodit.js +286 -48
  110. package/es2021/jodit.min.js +8 -8
  111. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  112. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.js +19 -1
  113. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.min.js +3 -3
  114. package/es2021/plugins/autocomplete/autocomplete.css +1 -1
  115. package/es2021/plugins/autocomplete/autocomplete.js +1 -1
  116. package/es2021/plugins/autocomplete/autocomplete.min.js +1 -1
  117. package/es2021/plugins/backup/backup.css +1 -1
  118. package/es2021/plugins/backup/backup.js +14 -7
  119. package/es2021/plugins/backup/backup.min.js +2 -2
  120. package/es2021/plugins/button-generator/button-generator.css +1 -1
  121. package/es2021/plugins/button-generator/button-generator.js +26 -19
  122. package/es2021/plugins/button-generator/button-generator.min.js +3 -3
  123. package/es2021/plugins/change-case/change-case.js +1 -1
  124. package/es2021/plugins/change-case/change-case.min.js +1 -1
  125. package/es2021/plugins/chart/chart.css +1 -1
  126. package/es2021/plugins/chart/chart.js +1 -1
  127. package/es2021/plugins/chart/chart.min.js +1 -1
  128. package/es2021/plugins/color-picker/color-picker.css +1 -1
  129. package/es2021/plugins/color-picker/color-picker.js +1 -1
  130. package/es2021/plugins/color-picker/color-picker.min.js +1 -1
  131. package/es2021/plugins/emoji/emoji.css +1 -1
  132. package/es2021/plugins/emoji/emoji.js +1 -1
  133. package/es2021/plugins/emoji/emoji.min.js +1 -1
  134. package/es2021/plugins/export-docs/export-docs.js +1 -1
  135. package/es2021/plugins/export-docs/export-docs.min.js +1 -1
  136. package/es2021/plugins/finder/finder.css +1 -1
  137. package/es2021/plugins/finder/finder.js +1 -1
  138. package/es2021/plugins/finder/finder.min.js +1 -1
  139. package/es2021/plugins/google-maps/google-maps.css +1 -1
  140. package/es2021/plugins/google-maps/google-maps.js +1 -1
  141. package/es2021/plugins/google-maps/google-maps.min.js +1 -1
  142. package/es2021/plugins/google-search/google-search.js +1 -1
  143. package/es2021/plugins/google-search/google-search.min.js +1 -1
  144. package/es2021/plugins/highlight-signature/highlight-signature.js +1 -1
  145. package/es2021/plugins/highlight-signature/highlight-signature.min.js +1 -1
  146. package/es2021/plugins/iframe-editor/iframe-editor.css +1 -1
  147. package/es2021/plugins/iframe-editor/iframe-editor.js +1 -1
  148. package/es2021/plugins/iframe-editor/iframe-editor.min.js +1 -1
  149. package/es2021/plugins/image-editor-pro/image-editor-pro.css +1 -1
  150. package/es2021/plugins/image-editor-pro/image-editor-pro.js +1 -1
  151. package/es2021/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  152. package/es2021/plugins/keyboard/keyboard.css +1 -1
  153. package/es2021/plugins/keyboard/keyboard.js +1 -1
  154. package/es2021/plugins/keyboard/keyboard.min.js +1 -1
  155. package/es2021/plugins/math/math.css +1 -1
  156. package/es2021/plugins/math/math.js +1 -1
  157. package/es2021/plugins/math/math.min.js +1 -1
  158. package/es2021/plugins/mobile-view/mobile-view.js +1 -1
  159. package/es2021/plugins/mobile-view/mobile-view.min.js +1 -1
  160. package/es2021/plugins/page-break/page-break.js +1 -1
  161. package/es2021/plugins/page-break/page-break.min.js +1 -1
  162. package/es2021/plugins/paste-code/paste-code.css +1 -1
  163. package/es2021/plugins/paste-code/paste-code.js +1 -1
  164. package/es2021/plugins/paste-code/paste-code.min.js +1 -1
  165. package/es2021/plugins/paste-from-word/paste-from-word.js +1 -1
  166. package/es2021/plugins/paste-from-word/paste-from-word.min.js +1 -1
  167. package/es2021/plugins/show-blocks/show-blocks.js +1 -1
  168. package/es2021/plugins/show-blocks/show-blocks.min.js +1 -1
  169. package/es2021/plugins/style/style.css +1 -1
  170. package/es2021/plugins/style/style.js +1 -1
  171. package/es2021/plugins/style/style.min.js +1 -1
  172. package/es2021/plugins/templates/templates.css +1 -1
  173. package/es2021/plugins/templates/templates.js +1 -1
  174. package/es2021/plugins/templates/templates.min.js +1 -1
  175. package/es2021/plugins/todo-list/todo-list.css +1 -1
  176. package/es2021/plugins/todo-list/todo-list.js +1 -1
  177. package/es2021/plugins/todo-list/todo-list.min.js +1 -1
  178. package/es2021/plugins/translate/translate.css +1 -1
  179. package/es2021/plugins/translate/translate.js +1 -1
  180. package/es2021/plugins/translate/translate.min.js +1 -1
  181. package/es2021/plugins/tune-block/tune-block.css +1 -1
  182. package/es2021/plugins/tune-block/tune-block.js +1 -1
  183. package/es2021/plugins/tune-block/tune-block.min.js +1 -1
  184. package/es2021.en/jodit.css +1 -1
  185. package/es2021.en/jodit.fat.min.js +17 -17
  186. package/es2021.en/jodit.js +286 -48
  187. package/es2021.en/jodit.min.js +8 -8
  188. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  189. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.js +19 -1
  190. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.min.js +26 -26
  191. package/es2021.en/plugins/autocomplete/autocomplete.css +1 -1
  192. package/es2021.en/plugins/autocomplete/autocomplete.js +1 -1
  193. package/es2021.en/plugins/autocomplete/autocomplete.min.js +1 -1
  194. package/es2021.en/plugins/backup/backup.css +1 -1
  195. package/es2021.en/plugins/backup/backup.js +14 -7
  196. package/es2021.en/plugins/backup/backup.min.js +2 -2
  197. package/es2021.en/plugins/button-generator/button-generator.css +1 -1
  198. package/es2021.en/plugins/button-generator/button-generator.js +26 -19
  199. package/es2021.en/plugins/button-generator/button-generator.min.js +3 -3
  200. package/es2021.en/plugins/change-case/change-case.js +1 -1
  201. package/es2021.en/plugins/change-case/change-case.min.js +1 -1
  202. package/es2021.en/plugins/chart/chart.css +1 -1
  203. package/es2021.en/plugins/chart/chart.js +1 -1
  204. package/es2021.en/plugins/chart/chart.min.js +1 -1
  205. package/es2021.en/plugins/color-picker/color-picker.css +1 -1
  206. package/es2021.en/plugins/color-picker/color-picker.js +1 -1
  207. package/es2021.en/plugins/color-picker/color-picker.min.js +1 -1
  208. package/es2021.en/plugins/emoji/emoji.css +1 -1
  209. package/es2021.en/plugins/emoji/emoji.js +1 -1
  210. package/es2021.en/plugins/emoji/emoji.min.js +1 -1
  211. package/es2021.en/plugins/export-docs/export-docs.js +1 -1
  212. package/es2021.en/plugins/export-docs/export-docs.min.js +1 -1
  213. package/es2021.en/plugins/finder/finder.css +1 -1
  214. package/es2021.en/plugins/finder/finder.js +1 -1
  215. package/es2021.en/plugins/finder/finder.min.js +1 -1
  216. package/es2021.en/plugins/google-maps/google-maps.css +1 -1
  217. package/es2021.en/plugins/google-maps/google-maps.js +1 -1
  218. package/es2021.en/plugins/google-maps/google-maps.min.js +1 -1
  219. package/es2021.en/plugins/google-search/google-search.js +1 -1
  220. package/es2021.en/plugins/google-search/google-search.min.js +1 -1
  221. package/es2021.en/plugins/highlight-signature/highlight-signature.js +1 -1
  222. package/es2021.en/plugins/highlight-signature/highlight-signature.min.js +1 -1
  223. package/es2021.en/plugins/iframe-editor/iframe-editor.css +1 -1
  224. package/es2021.en/plugins/iframe-editor/iframe-editor.js +1 -1
  225. package/es2021.en/plugins/iframe-editor/iframe-editor.min.js +1 -1
  226. package/es2021.en/plugins/image-editor-pro/image-editor-pro.css +1 -1
  227. package/es2021.en/plugins/image-editor-pro/image-editor-pro.js +1 -1
  228. package/es2021.en/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  229. package/es2021.en/plugins/keyboard/keyboard.css +1 -1
  230. package/es2021.en/plugins/keyboard/keyboard.js +1 -1
  231. package/es2021.en/plugins/keyboard/keyboard.min.js +1 -1
  232. package/es2021.en/plugins/math/math.css +1 -1
  233. package/es2021.en/plugins/math/math.js +1 -1
  234. package/es2021.en/plugins/math/math.min.js +1 -1
  235. package/es2021.en/plugins/mobile-view/mobile-view.js +1 -1
  236. package/es2021.en/plugins/mobile-view/mobile-view.min.js +1 -1
  237. package/es2021.en/plugins/page-break/page-break.js +1 -1
  238. package/es2021.en/plugins/page-break/page-break.min.js +1 -1
  239. package/es2021.en/plugins/paste-code/paste-code.css +1 -1
  240. package/es2021.en/plugins/paste-code/paste-code.js +1 -1
  241. package/es2021.en/plugins/paste-code/paste-code.min.js +1 -1
  242. package/es2021.en/plugins/paste-from-word/paste-from-word.js +1 -1
  243. package/es2021.en/plugins/paste-from-word/paste-from-word.min.js +1 -1
  244. package/es2021.en/plugins/show-blocks/show-blocks.js +1 -1
  245. package/es2021.en/plugins/show-blocks/show-blocks.min.js +1 -1
  246. package/es2021.en/plugins/style/style.css +1 -1
  247. package/es2021.en/plugins/style/style.js +1 -1
  248. package/es2021.en/plugins/style/style.min.js +1 -1
  249. package/es2021.en/plugins/templates/templates.css +1 -1
  250. package/es2021.en/plugins/templates/templates.js +1 -1
  251. package/es2021.en/plugins/templates/templates.min.js +1 -1
  252. package/es2021.en/plugins/todo-list/todo-list.css +1 -1
  253. package/es2021.en/plugins/todo-list/todo-list.js +1 -1
  254. package/es2021.en/plugins/todo-list/todo-list.min.js +1 -1
  255. package/es2021.en/plugins/translate/translate.css +1 -1
  256. package/es2021.en/plugins/translate/translate.js +1 -1
  257. package/es2021.en/plugins/translate/translate.min.js +1 -1
  258. package/es2021.en/plugins/tune-block/tune-block.css +1 -1
  259. package/es2021.en/plugins/tune-block/tune-block.js +1 -1
  260. package/es2021.en/plugins/tune-block/tune-block.min.js +1 -1
  261. package/es5/jodit.css +2 -2
  262. package/es5/jodit.fat.min.js +2 -2
  263. package/es5/jodit.js +298 -44
  264. package/es5/jodit.min.css +2 -2
  265. package/es5/jodit.min.js +2 -2
  266. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  267. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.js +19 -1
  268. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.min.js +2 -2
  269. package/es5/plugins/autocomplete/autocomplete.css +1 -1
  270. package/es5/plugins/autocomplete/autocomplete.js +1 -1
  271. package/es5/plugins/autocomplete/autocomplete.min.js +1 -1
  272. package/es5/plugins/backup/backup.css +1 -1
  273. package/es5/plugins/backup/backup.js +14 -7
  274. package/es5/plugins/backup/backup.min.js +2 -2
  275. package/es5/plugins/button-generator/button-generator.css +1 -1
  276. package/es5/plugins/button-generator/button-generator.js +26 -19
  277. package/es5/plugins/button-generator/button-generator.min.js +2 -2
  278. package/es5/plugins/change-case/change-case.js +1 -1
  279. package/es5/plugins/change-case/change-case.min.js +1 -1
  280. package/es5/plugins/chart/chart.css +1 -1
  281. package/es5/plugins/chart/chart.js +1 -1
  282. package/es5/plugins/chart/chart.min.js +1 -1
  283. package/es5/plugins/color-picker/color-picker.css +1 -1
  284. package/es5/plugins/color-picker/color-picker.js +1 -1
  285. package/es5/plugins/color-picker/color-picker.min.js +1 -1
  286. package/es5/plugins/emoji/emoji.css +1 -1
  287. package/es5/plugins/emoji/emoji.js +1 -1
  288. package/es5/plugins/emoji/emoji.min.js +1 -1
  289. package/es5/plugins/export-docs/export-docs.js +1 -1
  290. package/es5/plugins/export-docs/export-docs.min.js +1 -1
  291. package/es5/plugins/finder/finder.css +1 -1
  292. package/es5/plugins/finder/finder.js +1 -1
  293. package/es5/plugins/finder/finder.min.js +1 -1
  294. package/es5/plugins/google-maps/google-maps.css +1 -1
  295. package/es5/plugins/google-maps/google-maps.js +1 -1
  296. package/es5/plugins/google-maps/google-maps.min.js +1 -1
  297. package/es5/plugins/google-search/google-search.js +1 -1
  298. package/es5/plugins/google-search/google-search.min.js +1 -1
  299. package/es5/plugins/highlight-signature/highlight-signature.js +1 -1
  300. package/es5/plugins/highlight-signature/highlight-signature.min.js +1 -1
  301. package/es5/plugins/iframe-editor/iframe-editor.css +1 -1
  302. package/es5/plugins/iframe-editor/iframe-editor.js +1 -1
  303. package/es5/plugins/iframe-editor/iframe-editor.min.js +1 -1
  304. package/es5/plugins/image-editor-pro/image-editor-pro.css +1 -1
  305. package/es5/plugins/image-editor-pro/image-editor-pro.js +1 -1
  306. package/es5/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  307. package/es5/plugins/keyboard/keyboard.css +1 -1
  308. package/es5/plugins/keyboard/keyboard.js +1 -1
  309. package/es5/plugins/keyboard/keyboard.min.js +1 -1
  310. package/es5/plugins/math/math.css +1 -1
  311. package/es5/plugins/math/math.js +1 -1
  312. package/es5/plugins/math/math.min.js +1 -1
  313. package/es5/plugins/mobile-view/mobile-view.js +1 -1
  314. package/es5/plugins/mobile-view/mobile-view.min.js +1 -1
  315. package/es5/plugins/page-break/page-break.js +1 -1
  316. package/es5/plugins/page-break/page-break.min.js +1 -1
  317. package/es5/plugins/paste-code/paste-code.css +1 -1
  318. package/es5/plugins/paste-code/paste-code.js +1 -1
  319. package/es5/plugins/paste-code/paste-code.min.js +1 -1
  320. package/es5/plugins/paste-from-word/paste-from-word.js +1 -1
  321. package/es5/plugins/paste-from-word/paste-from-word.min.js +1 -1
  322. package/es5/plugins/show-blocks/show-blocks.js +1 -1
  323. package/es5/plugins/show-blocks/show-blocks.min.js +1 -1
  324. package/es5/plugins/style/style.css +1 -1
  325. package/es5/plugins/style/style.js +1 -1
  326. package/es5/plugins/style/style.min.js +1 -1
  327. package/es5/plugins/templates/templates.css +1 -1
  328. package/es5/plugins/templates/templates.js +1 -1
  329. package/es5/plugins/templates/templates.min.js +1 -1
  330. package/es5/plugins/todo-list/todo-list.css +1 -1
  331. package/es5/plugins/todo-list/todo-list.js +1 -1
  332. package/es5/plugins/todo-list/todo-list.min.js +1 -1
  333. package/es5/plugins/translate/translate.css +1 -1
  334. package/es5/plugins/translate/translate.js +1 -1
  335. package/es5/plugins/translate/translate.min.js +1 -1
  336. package/es5/plugins/tune-block/tune-block.css +1 -1
  337. package/es5/plugins/tune-block/tune-block.js +1 -1
  338. package/es5/plugins/tune-block/tune-block.min.js +1 -1
  339. package/es5/polyfills.fat.min.js +1 -1
  340. package/es5/polyfills.js +1 -1
  341. package/es5/polyfills.min.js +1 -1
  342. package/esm/plugins/ai-assistant-pro/ai-assistant-pro.js +2 -2
  343. package/esm/plugins/ai-assistant-pro/core/panel-resize.d.ts +4 -0
  344. package/esm/plugins/ai-assistant-pro/core/panel-resize.js +1 -1
  345. package/esm/plugins/backup/ui/item.js +1 -1
  346. package/esm/plugins/button-generator/ui/form/form.js +2 -2
  347. package/package.json +1 -1
  348. package/types/plugins/ai-assistant-pro/core/panel-resize.d.ts +4 -0
@@ -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.9
4
+ * Version: v4.18.12
5
5
  * Url: https://xdsoft.net/jodit/pro/
6
6
  * License(s): SEE LICENSE IN LICENSE.md
7
7
  */
@@ -1766,7 +1766,7 @@ __webpack_require__.r(__webpack_exports__);
1766
1766
  * ```
1767
1767
  * @packageDocumentation
1768
1768
  * @module constants
1769
- */ const APP_VERSION = "4.18.9";
1769
+ */ const APP_VERSION = "4.18.12";
1770
1770
  // prettier-ignore
1771
1771
  const ES = "es2021";
1772
1772
  const IS_ES_MODERN = true;
@@ -2484,6 +2484,8 @@ function cacheHTML(target, _, descriptor) {
2484
2484
  */
2485
2485
 
2486
2486
  const componentRegistry = new Map();
2487
+ const decoratedClasses = new WeakSet();
2488
+ const warnedClasses = new WeakSet();
2487
2489
  /**
2488
2490
  * Decorate components and set status isReady after constructor
2489
2491
  * @param constructorFunction - Component constructor class
@@ -2500,9 +2502,16 @@ const componentRegistry = new Map();
2500
2502
  Object.setPrototypeOf(this, newConstructorFunction.prototype);
2501
2503
  }
2502
2504
  this.setStatus('ready');
2505
+ } else if (!_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_PROD && !decoratedClasses.has(this.constructor) && !warnedClasses.has(this.constructor)) {
2506
+ // Only the outermost class's decorator sets `ready`, so a subclass
2507
+ // without its own decorator stays in `beforeInit`. See #1685
2508
+ warnedClasses.add(this.constructor);
2509
+ console.warn(`Component "${this.constructor.name || (0,_helpers_utils_get_class_name_js__WEBPACK_IMPORTED_MODULE_1__.getClassName)(this)}" extends a @component class without being decorated itself, so it never becomes ready and its @watch, @debounce, @throttle and @hook handlers never run`);
2503
2510
  }
2504
2511
  }
2505
2512
  }
2513
+ decoratedClasses.add(constructorFunction);
2514
+ decoratedClasses.add(newConstructorFunction);
2506
2515
  const name = (0,_helpers_utils_get_class_name_js__WEBPACK_IMPORTED_MODULE_1__.getClassName)(constructorFunction.prototype);
2507
2516
  if (componentRegistry.has(name) && !_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_PROD) {
2508
2517
  throw new Error(`Component with name "${name}" is already registered`);
@@ -16944,6 +16953,7 @@ Icon.__cache = new Map();
16944
16953
  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;
16945
16954
  return c > 3 && r && Object.defineProperty(target, key, r), r;
16946
16955
  };
16956
+ var Popup_1;
16947
16957
 
16948
16958
 
16949
16959
 
@@ -16960,7 +16970,7 @@ const EVENTS_FOR_AUTOCLOSE = [
16960
16970
  'backSpaceAfterDelete',
16961
16971
  'beforeCommandDelete'
16962
16972
  ];
16963
- class Popup extends _group_group_js__WEBPACK_IMPORTED_MODULE_8__.UIGroup {
16973
+ let Popup = Popup_1 = class Popup extends _group_group_js__WEBPACK_IMPORTED_MODULE_8__.UIGroup {
16964
16974
  className() {
16965
16975
  return 'Popup';
16966
16976
  }
@@ -16970,7 +16980,7 @@ class Popup extends _group_group_js__WEBPACK_IMPORTED_MODULE_8__.UIGroup {
16970
16980
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(content, childContainer);
16971
16981
  }
16972
16982
  updateParentElement(target) {
16973
- if (target !== this && _component_component_js__WEBPACK_IMPORTED_MODULE_0__.Component.isInstanceOf(target, Popup)) {
16983
+ if (target !== this && _component_component_js__WEBPACK_IMPORTED_MODULE_0__.Component.isInstanceOf(target, Popup_1)) {
16974
16984
  this.__childrenPopups.forEach((popup)=>{
16975
16985
  if (!target.closest(popup) && popup.isOpened) {
16976
16986
  popup.close();
@@ -17012,7 +17022,7 @@ class Popup extends _group_group_js__WEBPACK_IMPORTED_MODULE_8__.UIGroup {
17012
17022
  if (parentContainer) {
17013
17023
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(parentContainer, this.container);
17014
17024
  } else {
17015
- const popupContainer = (0,_global_js__WEBPACK_IMPORTED_MODULE_3__.getContainer)(this.jodit, Popup);
17025
+ const popupContainer = (0,_global_js__WEBPACK_IMPORTED_MODULE_3__.getContainer)(this.jodit, Popup_1);
17016
17026
  if (parentContainer !== this.container.parentElement) {
17017
17027
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(popupContainer, this.container);
17018
17028
  }
@@ -17125,11 +17135,11 @@ class Popup extends _group_group_js__WEBPACK_IMPORTED_MODULE_8__.UIGroup {
17125
17135
  };
17126
17136
  const getMatchStrategy = (inBox)=>{
17127
17137
  let strategy;
17128
- if (Popup.boxInView(getPointByStrategy(defaultStrategy), inBox)) {
17138
+ if (Popup_1.boxInView(getPointByStrategy(defaultStrategy), inBox)) {
17129
17139
  strategy = defaultStrategy;
17130
17140
  } else {
17131
17141
  strategy = list.find((key)=>{
17132
- if (Popup.boxInView(getPointByStrategy(key), inBox)) {
17142
+ if (Popup_1.boxInView(getPointByStrategy(key), inBox)) {
17133
17143
  return key;
17134
17144
  }
17135
17145
  return;
@@ -17140,7 +17150,7 @@ class Popup extends _group_group_js__WEBPACK_IMPORTED_MODULE_8__.UIGroup {
17140
17150
  // Try to find match position inside Jodit.container
17141
17151
  let strategy = getMatchStrategy((0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.position)(this.j.container, this.j));
17142
17152
  // If not found or is not inside window view
17143
- if (!strategy || !Popup.boxInView(getPointByStrategy(strategy), view)) {
17153
+ if (!strategy || !Popup_1.boxInView(getPointByStrategy(strategy), view)) {
17144
17154
  // Find match strategy inside window view
17145
17155
  strategy = getMatchStrategy(view) || strategy || defaultStrategy;
17146
17156
  }
@@ -17190,7 +17200,7 @@ class Popup extends _group_group_js__WEBPACK_IMPORTED_MODULE_8__.UIGroup {
17190
17200
  if (!e.target) {
17191
17201
  return false;
17192
17202
  }
17193
- const box = _element_js__WEBPACK_IMPORTED_MODULE_7__.UIElement.closestElement(e.target, Popup);
17203
+ const box = _element_js__WEBPACK_IMPORTED_MODULE_7__.UIElement.closestElement(e.target, Popup_1);
17194
17204
  return Boolean(box && (this === box || box.closest(this)));
17195
17205
  }
17196
17206
  __addGlobalListeners() {
@@ -17245,7 +17255,7 @@ class Popup extends _group_group_js__WEBPACK_IMPORTED_MODULE_8__.UIGroup {
17245
17255
  this.__childrenPopups = new Set();
17246
17256
  (0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(this.container, 'role', 'popup');
17247
17257
  }
17248
- }
17258
+ };
17249
17259
  __decorate([
17250
17260
  _decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.autobind
17251
17261
  ], Popup.prototype, "updatePosition", null);
@@ -17259,6 +17269,10 @@ __decorate([
17259
17269
  __decorate([
17260
17270
  _decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.autobind
17261
17271
  ], Popup.prototype, "__closeOnOutsideClick", null);
17272
+ Popup = Popup_1 = __decorate([
17273
+ _decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.component
17274
+ ], Popup);
17275
+
17262
17276
 
17263
17277
 
17264
17278
  /***/ }),
@@ -18456,7 +18470,7 @@ let Jodit = Jodit_1 = class Jodit extends _modules_index_js__WEBPACK_IMPORTED_MO
18456
18470
  commands.push(command);
18457
18471
  if (!(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.isFunction)(command)) {
18458
18472
  const hotkeys = this.o.commandToHotkeys[commandName] || this.o.commandToHotkeys[commandNameOriginal] || command.hotkeys;
18459
- if (hotkeys) {
18473
+ if (hotkeys && hotkeys.length) {
18460
18474
  this.registerHotkeyToCommand(hotkeys, commandName, options === null || options === void 0 ? void 0 : options.stopPropagation);
18461
18475
  }
18462
18476
  }
@@ -18465,6 +18479,10 @@ let Jodit = Jodit_1 = class Jodit extends _modules_index_js__WEBPACK_IMPORTED_MO
18465
18479
  /**
18466
18480
  * Register hotkey for command
18467
18481
  */ registerHotkeyToCommand(hotkeys, commandName, shouldStop = true) {
18482
+ // An empty list (e.g. `commandToHotkeys: { cmd: [] }`) turns the key off
18483
+ if (!hotkeys || !hotkeys.length) {
18484
+ return;
18485
+ }
18468
18486
  const shortcuts = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.asArray)(hotkeys).map(_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.normalizeKeyAliases).map((hotkey)=>hotkey + '.hotkey').join(' ');
18469
18487
  this.e.off(shortcuts).on(shortcuts, (type, stop)=>{
18470
18488
  if (stop) {
@@ -25822,6 +25840,9 @@ var Dialog_1;
25822
25840
 
25823
25841
 
25824
25842
 
25843
+ /**
25844
+ * A position from 0 up to `max`, or 0 when the panel is larger than the window
25845
+ */ const clampToWindow = (value, max)=>Math.max(0, Math.min(value, max));
25825
25846
  _config_js__WEBPACK_IMPORTED_MODULE_13__.Config.prototype.dialog = {
25826
25847
  namespace: '',
25827
25848
  extraButtons: [],
@@ -25914,6 +25935,11 @@ _config_js__WEBPACK_IMPORTED_MODULE_13__.Config.prototype.controls.dialog = {
25914
25935
  this.startY = e.clientY;
25915
25936
  this.startPoint.x = (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_8__.css)(this.dialog, 'left');
25916
25937
  this.startPoint.y = (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_8__.css)(this.dialog, 'top');
25938
+ // Rounded up: at the right edge a fraction of a pixel less room would
25939
+ // wrap the header of a panel that has no width of its own
25940
+ const { width, height } = this.dialog.getBoundingClientRect();
25941
+ this.startPoint.w = Math.ceil(width);
25942
+ this.startPoint.h = Math.ceil(height);
25917
25943
  this.setMaxZIndex();
25918
25944
  if (e.cancelable) {
25919
25945
  e.preventDefault();
@@ -25929,7 +25955,11 @@ _config_js__WEBPACK_IMPORTED_MODULE_13__.Config.prototype.controls.dialog = {
25929
25955
  }
25930
25956
  __onMouseMove(e) {
25931
25957
  if (this.draggable && this.o.draggable) {
25932
- this.setPosition(this.startPoint.x + e.clientX - this.startX, this.startPoint.y + e.clientY - this.startY);
25958
+ const { documentElement } = this.od;
25959
+ // Keep the whole panel in the window at the size it had when the
25960
+ // drag began. A panel with no width of its own would otherwise
25961
+ // shrink as it neared the right edge, and then leave the window
25962
+ this.setPosition(clampToWindow(this.startPoint.x + e.clientX - this.startX, (documentElement.clientWidth || this.ow.innerWidth) - this.startPoint.w), clampToWindow(this.startPoint.y + e.clientY - this.startY, (documentElement.clientHeight || this.ow.innerHeight) - this.startPoint.h));
25933
25963
  if (this.e) {
25934
25964
  /**
25935
25965
  * Fired when dialog box is moved
@@ -26055,8 +26085,8 @@ _config_js__WEBPACK_IMPORTED_MODULE_13__.Config.prototype.controls.dialog = {
26055
26085
  }
26056
26086
  // strings on purpose: `css()` would truncate fractional pixels
26057
26087
  ;(0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_8__.css)(this.dialog, {
26058
- left: (x || left) + 'px',
26059
- top: (y || top) + 'px'
26088
+ left: (x !== null && x !== void 0 ? x : left) + 'px',
26089
+ top: (y !== null && y !== void 0 ? y : top) + 'px'
26060
26090
  });
26061
26091
  return this;
26062
26092
  }
@@ -28577,17 +28607,29 @@ const DEFAULT_SOURCE_NAME = 'default';
28577
28607
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
28578
28608
  /* harmony export */ FileBrowserFiles: function() { return /* binding */ FileBrowserFiles; }
28579
28609
  /* harmony export */ });
28580
- /* harmony import */ var _core_ui_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(67510);
28610
+ /* harmony import */ var _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(65478);
28611
+ /* harmony import */ var _core_ui_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(67510);
28581
28612
  /*!
28582
28613
  * Jodit Editor (https://xdsoft.net/jodit/)
28583
28614
  * Released under MIT see LICENSE.txt in the project root for license information.
28584
28615
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
28585
- */
28586
- class FileBrowserFiles extends _core_ui_index_js__WEBPACK_IMPORTED_MODULE_0__.UIGroup {
28616
+ */ var __decorate = undefined && undefined.__decorate || function(decorators, target, key, desc) {
28617
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
28618
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
28619
+ 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;
28620
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
28621
+ };
28622
+
28623
+
28624
+ let FileBrowserFiles = class FileBrowserFiles extends _core_ui_index_js__WEBPACK_IMPORTED_MODULE_1__.UIGroup {
28587
28625
  className() {
28588
28626
  return 'FileBrowserFiles';
28589
28627
  }
28590
- }
28628
+ };
28629
+ FileBrowserFiles = __decorate([
28630
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.component
28631
+ ], FileBrowserFiles);
28632
+
28591
28633
 
28592
28634
 
28593
28635
  /***/ }),
@@ -28619,17 +28661,29 @@ class FileBrowserFiles extends _core_ui_index_js__WEBPACK_IMPORTED_MODULE_0__.UI
28619
28661
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
28620
28662
  /* harmony export */ FileBrowserTree: function() { return /* binding */ FileBrowserTree; }
28621
28663
  /* harmony export */ });
28622
- /* harmony import */ var _core_ui_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(67510);
28664
+ /* harmony import */ var _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(65478);
28665
+ /* harmony import */ var _core_ui_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(67510);
28623
28666
  /*!
28624
28667
  * Jodit Editor (https://xdsoft.net/jodit/)
28625
28668
  * Released under MIT see LICENSE.txt in the project root for license information.
28626
28669
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
28627
- */
28628
- class FileBrowserTree extends _core_ui_index_js__WEBPACK_IMPORTED_MODULE_0__.UIGroup {
28670
+ */ var __decorate = undefined && undefined.__decorate || function(decorators, target, key, desc) {
28671
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
28672
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
28673
+ 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;
28674
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
28675
+ };
28676
+
28677
+
28678
+ let FileBrowserTree = class FileBrowserTree extends _core_ui_index_js__WEBPACK_IMPORTED_MODULE_1__.UIGroup {
28629
28679
  className() {
28630
28680
  return 'FileBrowserTree';
28631
28681
  }
28632
- }
28682
+ };
28683
+ FileBrowserTree = __decorate([
28684
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.component
28685
+ ], FileBrowserTree);
28686
+
28633
28687
 
28634
28688
 
28635
28689
  /***/ }),
@@ -34307,6 +34361,9 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('backspace', backs
34307
34361
  * Check if two separate elements can be connected
34308
34362
  * @private
34309
34363
  */ function checkJoinNeighbors(jodit, fakeNode, backspace) {
34364
+ if (checkJoinBareText(jodit, fakeNode, backspace)) {
34365
+ return true;
34366
+ }
34310
34367
  let nextBox = fakeNode, mainClosestBox = nextBox;
34311
34368
  // Find the main big closest element
34312
34369
  while(nextBox && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.findNotEmptySibling(nextBox, backspace) && nextBox.parentElement !== jodit.editor){
@@ -34334,7 +34391,7 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('backspace', backs
34334
34391
  return true;
34335
34392
  }
34336
34393
  const box = findCaretBox(fakeNode, mainClosestBox);
34337
- if (sibling && (checkPullNextLine(jodit, fakeNode, box, sibling, backspace) || checkMoveListContent(jodit, box, sibling, backspace) || moveContentAndRemoveEmpty(jodit, box, findEdgeBlock(resolveTableSibling(sibling, backspace), backspace, jodit.editor), backspace))) {
34394
+ if (sibling && (checkPullNextLine(jodit, fakeNode, box, sibling, backspace) || checkMoveListContent(jodit, box, sibling, backspace) || checkJoinInlineSibling(jodit, box, sibling, backspace) || moveContentAndRemoveEmpty(jodit, box, findEdgeBlock(resolveTableSibling(sibling, backspace), backspace, jodit.editor), backspace))) {
34338
34395
  jodit.s.setCursorBefore(fakeNode);
34339
34396
  return true;
34340
34397
  }
@@ -34419,6 +34476,70 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('backspace', backs
34419
34476
  }
34420
34477
  return true;
34421
34478
  }
34479
+ /**
34480
+ * A block next to bare text in the same parent joins that text, as the
34481
+ * browsers do: `<li>one<p>|two</p></li>` gives `<li>one|two</li>`, and
34482
+ * `<li><p>one|</p>two</li>` gives `<li><p>one|two</p></li>`
34483
+ * @private
34484
+ */ function checkJoinInlineSibling(jodit, box, sibling, backspace) {
34485
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock(sibling) || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock(box) || _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isList(box) || // The caret's block is nested deeper than the text: `text<div><p>|x</p></div>`
34486
+ box.parentNode !== sibling.parentNode || Array.from(box.childNodes).some((node)=>_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock(node))) {
34487
+ return false;
34488
+ }
34489
+ if (backspace) {
34490
+ // Text after the block keeps its own line
34491
+ const next = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.findNotEmptySibling(box, false);
34492
+ if (next && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock(next) && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(next, 'br')) {
34493
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.after(box, jodit.createInside.element('br'));
34494
+ }
34495
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.unwrap(box);
34496
+ return true;
34497
+ }
34498
+ const filter = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_2__.getMoveFilter)(jodit);
34499
+ for(let node = sibling; node && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock(node);){
34500
+ const next = node.nextSibling;
34501
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(node, 'br')) {
34502
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(node);
34503
+ break;
34504
+ }
34505
+ filter(node) ? _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.append(box, node) : _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(node);
34506
+ node = next;
34507
+ }
34508
+ return true;
34509
+ }
34510
+ /**
34511
+ * Bare text next to a block in the same parent, as the browsers join them:
34512
+ * Backspace in `<div><p>a</p>|b</div>` gives `<div><p>a|b</p></div>`, Delete
34513
+ * in `<div>a|<p>b</p>c</div>` gives `<div>a|b<br>c</div>`
34514
+ */ function checkJoinBareText(jodit, fakeNode, backspace) {
34515
+ const block = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.findNotEmptySibling(fakeNode, backspace);
34516
+ if (!_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isElement(block) || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock(block) || _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isList(block) || _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(block, 'table') || _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isCell(block) || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isContentEditable(block, jodit.editor) || Array.from(block.childNodes).some((node)=>_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock(node))) {
34517
+ return false;
34518
+ }
34519
+ const filter = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_2__.getMoveFilter)(jodit);
34520
+ if (backspace) {
34521
+ // The caret's line goes to the end of the block before it
34522
+ for(let node = fakeNode; node && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock(node);){
34523
+ const next = node.nextSibling;
34524
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(node, 'br')) {
34525
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(node);
34526
+ break;
34527
+ }
34528
+ filter(node) ? _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.append(block, node) : _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(node);
34529
+ node = next;
34530
+ }
34531
+ } else {
34532
+ // The block's content joins the caret's line, and text after the
34533
+ // block keeps its own line
34534
+ const next = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.findNotEmptySibling(block, false);
34535
+ if (next && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock(next) && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(next, 'br')) {
34536
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.after(block, jodit.createInside.element('br'));
34537
+ }
34538
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.unwrap(block);
34539
+ }
34540
+ jodit.s.setCursorBefore(fakeNode);
34541
+ return true;
34542
+ }
34422
34543
  function checkMoveListContent(jodit, mainClosestBox, sibling, backspace) {
34423
34544
  // Process UL/LI/OL cases
34424
34545
  const siblingIsList = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(sibling, _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.LIST_TAGS);
@@ -34560,9 +34681,10 @@ function moveContentAndRemoveEmpty(jodit, mainClosestBox, sibling, backspace) {
34560
34681
  * ```html
34561
34682
  * t|st
34562
34683
  * ```
34684
+ * With `stopBeforeSpace`, nothing is removed when the next char is a space.
34563
34685
  * @private
34564
34686
  */ // eslint-disable-next-line complexity
34565
- function checkRemoveChar(jodit, fakeNode, backspace, mode) {
34687
+ function checkRemoveChar(jodit, fakeNode, backspace, mode, stopBeforeSpace = false) {
34566
34688
  var _a, _b;
34567
34689
  const step = backspace ? -1 : 1;
34568
34690
  const anotherSibling = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.sibling(fakeNode, !backspace);
@@ -34581,6 +34703,9 @@ function checkRemoveChar(jodit, fakeNode, backspace, mode) {
34581
34703
  break;
34582
34704
  }
34583
34705
  if ((_a = sibling.nodeValue) === null || _a === void 0 ? void 0 : _a.length) {
34706
+ if (stopBeforeSpace && isSpace(nextChar(sibling.nodeValue, backspace))) {
34707
+ break;
34708
+ }
34584
34709
  removed = tryRemoveChar(sibling, backspace, step, anotherSibling);
34585
34710
  if (!sibling.nodeValue.length && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isInlineBlock(sibling.parentNode)) {
34586
34711
  sibling.nodeValue = _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.INVISIBLE_SPACE;
@@ -34618,10 +34743,11 @@ function getNextInlineSibling(sibling, backspace, root) {
34618
34743
  let nextSibling = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.sibling(sibling, backspace);
34619
34744
  if (!nextSibling && sibling.parentNode && sibling.parentNode !== root) {
34620
34745
  nextSibling = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.findMostNestedNeighbor)(sibling, !backspace, root, true);
34621
- // Do not cross a list-item boundary. At the start of a list item the
34622
- // neighbor can be the text of the parent/previous item; deleting a char
34623
- // there is wrong — the list cases must handle the outdent/merge (#1277).
34624
- if (nextSibling && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.closest(sibling, 'li', root) !== _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.closest(nextSibling, 'li', root)) {
34746
+ // Do not cross a block boundary. At the start of a list item the
34747
+ // neighbor can be the text of the parent/previous item (#1277), and at
34748
+ // the start of a paragraph the text before it in the same parent
34749
+ // (#1693); deleting a char there is wrong — the join cases handle them.
34750
+ if (nextSibling && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.closest(sibling, _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock, root) !== _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.closest(nextSibling, _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock, root)) {
34625
34751
  return null;
34626
34752
  }
34627
34753
  }
@@ -34688,10 +34814,26 @@ function replaceSpaceOnNBSP(anotherSibling, backspace, value) {
34688
34814
  }
34689
34815
  function checkRepeatRemoveCharAction(backspace, sibling, fakeNode, mode, removed, jodit) {
34690
34816
  ;(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.call)(backspace ? _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.after : _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.before, sibling, fakeNode);
34691
- if (mode === 'sentence' || mode === 'word' && removed !== ' ' && removed !== _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.NBSP_SPACE) {
34692
- checkRemoveChar(jodit, fakeNode, backspace, mode);
34817
+ const wordChar = mode === 'word' && !isSpace(removed);
34818
+ // Backspace by word removes the spaces before the caret, then the word, and keeps the space in front of it
34819
+ if (mode === 'sentence' || wordChar || mode === 'word' && backspace) {
34820
+ checkRemoveChar(jodit, fakeNode, backspace, mode, wordChar && backspace);
34693
34821
  }
34694
34822
  }
34823
+ /**
34824
+ * The char tryRemoveChar would remove next
34825
+ */ function nextChar(value, backspace) {
34826
+ const chars = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.toArray)(value);
34827
+ const step = backspace ? -1 : 1;
34828
+ let index = backspace ? chars.length - 1 : 0;
34829
+ while(chars[index] === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.INVISIBLE_SPACE){
34830
+ index += step;
34831
+ }
34832
+ return chars[index];
34833
+ }
34834
+ function isSpace(char) {
34835
+ return char === ' ' || char === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.NBSP_SPACE;
34836
+ }
34695
34837
 
34696
34838
 
34697
34839
  /***/ }),
@@ -34967,6 +35109,66 @@ function checkRepeatRemoveCharAction(backspace, sibling, fakeNode, mode, removed
34967
35109
  }
34968
35110
 
34969
35111
 
35112
+ /***/ }),
35113
+
35114
+ /***/ 70921:
35115
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
35116
+
35117
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
35118
+ /* harmony export */ checkUnwrapListItem: function() { return /* binding */ checkUnwrapListItem; }
35119
+ /* harmony export */ });
35120
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
35121
+ /*!
35122
+ * Jodit Editor (https://xdsoft.net/jodit/)
35123
+ * Released under MIT see LICENSE.txt in the project root for license information.
35124
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
35125
+ */
35126
+ /**
35127
+ * Backspace at the start of a later list item takes the bullet off, as Word
35128
+ * does: the item becomes a paragraph where it was, and the list is split
35129
+ * around it. A split `<ol>` carries its numbering on with `start`.
35130
+ *
35131
+ * @example
35132
+ * ```html
35133
+ * <ol><li>first</li><li>|second</li><li>third</li></ol>
35134
+ * ```
35135
+ * Result
35136
+ * ```html
35137
+ * <ol><li>first</li></ol><p>|second</p><ol start="2"><li>third</li></ol>
35138
+ * ```
35139
+ *
35140
+ * @private
35141
+ */ function checkUnwrapListItem(jodit, fakeNode, backspace) {
35142
+ if (!backspace) {
35143
+ return false;
35144
+ }
35145
+ const li = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(fakeNode, 'li', jodit.editor);
35146
+ const list = li ? li.parentElement : null;
35147
+ if (!li || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isList(list) || !li.previousElementSibling || _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(li) || Array.from(li.childNodes).some((node)=>_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(node)) || !jodit.s.cursorInTheEdge(true, li)) {
35148
+ return false;
35149
+ }
35150
+ const p = jodit.createInside.element(jodit.o.enterBlock);
35151
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.after(list, p);
35152
+ if (li.nextElementSibling) {
35153
+ const rest = list.cloneNode(false);
35154
+ // Two lists cannot share one id
35155
+ rest.removeAttribute('id');
35156
+ while(li.nextSibling){
35157
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.append(rest, li.nextSibling);
35158
+ }
35159
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(list, 'ol')) {
35160
+ const start = parseInt(list.getAttribute('start') || '1', 10) || 1;
35161
+ rest.setAttribute('start', String(start + list.children.length - 1));
35162
+ }
35163
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.after(p, rest);
35164
+ }
35165
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.moveContent(li, p);
35166
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(li);
35167
+ jodit.s.setCursorBefore(fakeNode);
35168
+ return true;
35169
+ }
35170
+
35171
+
34970
35172
  /***/ }),
34971
35173
 
34972
35174
  /***/ 14630:
@@ -34982,6 +35184,7 @@ function checkRepeatRemoveCharAction(backspace, sibling, fakeNode, mode, removed
34982
35184
  /* harmony import */ var _check_remove_unbreakable_element_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(56825);
34983
35185
  /* harmony import */ var _check_table_cell_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(90240);
34984
35186
  /* harmony import */ var _check_unwrap_first_list_item_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(68034);
35187
+ /* harmony import */ var _check_unwrap_list_item_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(70921);
34985
35188
  /*!
34986
35189
  * Jodit Editor (https://xdsoft.net/jodit/)
34987
35190
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -34995,6 +35198,7 @@ function checkRepeatRemoveCharAction(backspace, sibling, fakeNode, mode, removed
34995
35198
 
34996
35199
 
34997
35200
 
35201
+
34998
35202
  /**
34999
35203
  * Ordered delete/backspace cases with stable keys. The first one returning
35000
35204
  * `true` wins. The keys are stable across minified builds (function names are
@@ -35029,6 +35233,10 @@ function checkRepeatRemoveCharAction(backspace, sibling, fakeNode, mode, removed
35029
35233
  'join-two-lists',
35030
35234
  _check_join_two_lists_js__WEBPACK_IMPORTED_MODULE_1__.checkJoinTwoLists
35031
35235
  ],
35236
+ [
35237
+ 'unwrap-list-item',
35238
+ _check_unwrap_list_item_js__WEBPACK_IMPORTED_MODULE_9__.checkUnwrapListItem
35239
+ ],
35032
35240
  [
35033
35241
  'join-neighbors',
35034
35242
  _check_join_neighbors_js__WEBPACK_IMPORTED_MODULE_0__.checkJoinNeighbors
@@ -35053,7 +35261,8 @@ function checkRepeatRemoveCharAction(backspace, sibling, fakeNode, mode, removed
35053
35261
  /***/ 32496:
35054
35262
  /***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) {
35055
35263
 
35056
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6441);
35264
+ /* harmony import */ var _core_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82758);
35265
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6441);
35057
35266
  /*!
35058
35267
  * Jodit Editor (https://xdsoft.net/jodit/)
35059
35268
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -35061,13 +35270,18 @@ function checkRepeatRemoveCharAction(backspace, sibling, fakeNode, mode, removed
35061
35270
  */ /**
35062
35271
  * @module plugins/backspace
35063
35272
  */
35064
- _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.delete = {
35273
+
35274
+ _config_js__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.delete = {
35065
35275
  hotkeys: {
35066
- delete: [
35276
+ delete: _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_MAC ? [
35277
+ 'delete'
35278
+ ] : [
35067
35279
  'delete',
35068
35280
  'cmd+backspace'
35069
35281
  ],
35070
- deleteWord: [
35282
+ deleteWord: _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_MAC ? [
35283
+ 'ctrl+delete'
35284
+ ] : [
35071
35285
  'ctrl+delete',
35072
35286
  'cmd+alt+backspace',
35073
35287
  'ctrl+alt+backspace'
@@ -35079,7 +35293,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.delete = {
35079
35293
  backspace: [
35080
35294
  'backspace'
35081
35295
  ],
35082
- backspaceWord: [
35296
+ backspaceWord: _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_MAC ? [] : [
35083
35297
  'ctrl+backspace'
35084
35298
  ],
35085
35299
  backspaceSentence: [
@@ -38357,7 +38571,7 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_1__.pluginSystem.add('dtd', dtd);
38357
38571
  ]);
38358
38572
  let block = (0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_6__.getBlockWrapper)(fake, jodit);
38359
38573
  const isLi = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isLeaf(block);
38360
- // if use <br> defaultTag for break line or when was entered SHIFt key or in <td> or <th> or <blockquote>
38574
+ // if use <br> defaultTag for break line or when was entered SHIFt key or in <td>, <th> or <blockquote> without an inner block
38361
38575
  if ((!isLi || (event === null || event === void 0 ? void 0 : event.shiftKey)) && (0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_6__.checkBR)(fake, jodit, event === null || event === void 0 ? void 0 : event.shiftKey, block)) {
38362
38576
  return false;
38363
38577
  }
@@ -38418,10 +38632,9 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_3__.pluginSystem.add('enter', enter);
38418
38632
  * Checks the possibility and necessity of inserting a BR instead of a block
38419
38633
  * @private
38420
38634
  */ function checkBR(fake, jodit, shiftKeyPressed, block) {
38421
- const isMultiLineBlock = Boolean(_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.closest(fake, [
38422
- 'pre',
38423
- 'blockquote'
38424
- ], jodit.editor));
38635
+ // Text in a <pre>, or bare text in a quote, gets a BR. A real block inside
38636
+ // a quote (<p>, <h3>, ...) is split like anywhere else, as in a cell below.
38637
+ const isMultiLineBlock = Boolean(_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.closest(fake, 'pre', jodit.editor)) || (block ? _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(block, 'blockquote') : Boolean(_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.closest(fake, 'blockquote', jodit.editor)));
38425
38638
  // A cell itself can't be split into two cells, so bare cell content gets
38426
38639
  // a BR. But when the cell already holds a real block (<p>, <h3>, ...) that
38427
38640
  // block is split like anywhere else, otherwise every line of the cell
@@ -38431,7 +38644,7 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_3__.pluginSystem.add('enter', enter);
38431
38644
  'th'
38432
38645
  ], jodit.editor)));
38433
38646
  const isBRMode = jodit.o.enter.toLowerCase() === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.BR.toLowerCase();
38434
- // if you use <br> defaultTag for break line or when was entered SHIFt key or in <td> or <th> or <blockquote>
38647
+ // if you use <br> defaultTag for break line or when was entered SHIFt key or in <td>, <th> or <blockquote> without an inner block
38435
38648
  if (isBRMode || isCell || shiftKeyPressed && !isMultiLineBlock || !shiftKeyPressed && isMultiLineBlock) {
38436
38649
  // 2 BR before
38437
38650
  if (isMultiLineBlock && checkSeveralBR(fake)) {
@@ -40730,8 +40943,12 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.image = {
40730
40943
  dialog.close();
40731
40944
  });
40732
40945
  buttons.remove.onAction(()=>{
40946
+ const caret = j.s.createRange();
40947
+ caret.setStartBefore(this.state.sourceImage);
40948
+ caret.collapse(true);
40733
40949
  j.s.removeNode(this.state.sourceImage);
40734
40950
  dialog.close();
40951
+ j.s.selectRange(caret);
40735
40952
  });
40736
40953
  buttons.cancel.onAction(()=>{
40737
40954
  dialog.close();
@@ -40745,10 +40962,20 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.image = {
40745
40962
  ],
40746
40963
  buttons.check
40747
40964
  ]);
40748
- j.e.on(dialog, 'afterClose', ()=>{
40749
- if (this.state.image.parentNode && j.o.image.selectImageAfterClose) {
40750
- j.s.select(this.state.sourceImage);
40965
+ // The dialog fires `afterClose` on its own emitter, not the editor's
40966
+ dialog.e.on(dialog, 'afterClose', ()=>{
40967
+ const { sourceImage } = this.state;
40968
+ if (j.isInDestruct || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isOrContains(j.editor, sourceImage)) {
40969
+ return;
40970
+ }
40971
+ if (j.o.image.selectImageAfterClose) {
40972
+ j.s.select(sourceImage);
40973
+ return;
40751
40974
  }
40975
+ const caret = j.s.createRange();
40976
+ caret.setStartAfter(sourceImage);
40977
+ caret.collapse(true);
40978
+ j.s.selectRange(caret);
40752
40979
  });
40753
40980
  dialog.setSize(j.o.image.dialogWidth);
40754
40981
  (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.markOwner)(j, dialog.container);
@@ -40779,6 +41006,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.image = {
40779
41006
  this.activeTabState.activeTab = 'Image';
40780
41007
  this.__lock();
40781
41008
  this.dialog.open().setModal(true).setPosition();
41009
+ this.__focusFirstField();
40782
41010
  this.async.promise((resolve, reject)=>(0,_readers_index_js__WEBPACK_IMPORTED_MODULE_10__.readValuesFromImage)(this.j, this.state).then(resolve, reject)).catch((e)=>{
40783
41011
  if (!(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.isAbortError)(e)) {
40784
41012
  this.dialog.message.error(e.message);
@@ -40786,6 +41014,14 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.image = {
40786
41014
  }).finally(()=>this.__unlock());
40787
41015
  return false;
40788
41016
  }
41017
+ /**
41018
+ * Keys typed while the dialog is open must not reach the editor behind it,
41019
+ * so focus the active tab's first field, or else the first field shown
41020
+ */ __focusFirstField() {
41021
+ var _a;
41022
+ const fields = (box)=>(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.toArray)(box.querySelectorAll('input, select, textarea'));
41023
+ (_a = fields(this.form.getElm('tabsBox')).concat(fields(this.form.container)).find((field)=>field.offsetParent != null)) === null || _a === void 0 ? void 0 : _a.focus();
41024
+ }
40789
41025
  __lock() {
40790
41026
  this.dialog.lock();
40791
41027
  this.form.setMod('lock', true);
@@ -44811,9 +45047,11 @@ const isButtonSeparator = (item)=>item === '|' || item === '---' || item === '\n
44811
45047
  return cleaned;
44812
45048
  }
44813
45049
  /**
44814
- * The width that decides which breakpoint set the toolbar uses. A toolbar
44815
- * rendered into an external container (`toolbar` set to an element or a
44816
- * selector) lays out in that container, so its width is what matters there.
45050
+ * The width that decides which breakpoint set the toolbar uses: the editor's
45051
+ * own width, or its parent's while the editor has none yet (for example
45052
+ * while hidden at init). A toolbar rendered into an external container
45053
+ * (`toolbar` set to an element or a selector) lays out in that container, so
45054
+ * its width is what matters there.
44817
45055
  */ function adaptiveWidth(editor) {
44818
45056
  var _a;
44819
45057
  const { toolbar } = editor.o;
@@ -44823,7 +45061,7 @@ const isButtonSeparator = (item)=>item === '|' || item === '---' || item === '\n
44823
45061
  return width;
44824
45062
  }
44825
45063
  }
44826
- return ((_a = editor.container.parentElement) !== null && _a !== void 0 ? _a : editor.container).offsetWidth;
45064
+ return editor.container.offsetWidth || ((_a = editor.container.parentElement) !== null && _a !== void 0 ? _a : editor.container).offsetWidth;
44827
45065
  }
44828
45066
  /**
44829
45067
  * Rebuild toolbar in depends on editor's width