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
package/es2021/jodit.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * jodit-pro - PRO Version of Jodit Editor
3
3
  * Author: Chupurnov Valerii <chupurnov@gmail.com>
4
- * Version: v4.18.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
  /***/ }),
@@ -34358,6 +34412,9 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('backspace', backs
34358
34412
  * Check if two separate elements can be connected
34359
34413
  * @private
34360
34414
  */ function checkJoinNeighbors(jodit, fakeNode, backspace) {
34415
+ if (checkJoinBareText(jodit, fakeNode, backspace)) {
34416
+ return true;
34417
+ }
34361
34418
  let nextBox = fakeNode, mainClosestBox = nextBox;
34362
34419
  // Find the main big closest element
34363
34420
  while(nextBox && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.findNotEmptySibling(nextBox, backspace) && nextBox.parentElement !== jodit.editor){
@@ -34385,7 +34442,7 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('backspace', backs
34385
34442
  return true;
34386
34443
  }
34387
34444
  const box = findCaretBox(fakeNode, mainClosestBox);
34388
- if (sibling && (checkPullNextLine(jodit, fakeNode, box, sibling, backspace) || checkMoveListContent(jodit, box, sibling, backspace) || moveContentAndRemoveEmpty(jodit, box, findEdgeBlock(resolveTableSibling(sibling, backspace), backspace, jodit.editor), backspace))) {
34445
+ 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))) {
34389
34446
  jodit.s.setCursorBefore(fakeNode);
34390
34447
  return true;
34391
34448
  }
@@ -34470,6 +34527,70 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('backspace', backs
34470
34527
  }
34471
34528
  return true;
34472
34529
  }
34530
+ /**
34531
+ * A block next to bare text in the same parent joins that text, as the
34532
+ * browsers do: `<li>one<p>|two</p></li>` gives `<li>one|two</li>`, and
34533
+ * `<li><p>one|</p>two</li>` gives `<li><p>one|two</p></li>`
34534
+ * @private
34535
+ */ function checkJoinInlineSibling(jodit, box, sibling, backspace) {
34536
+ 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>`
34537
+ box.parentNode !== sibling.parentNode || Array.from(box.childNodes).some((node)=>_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock(node))) {
34538
+ return false;
34539
+ }
34540
+ if (backspace) {
34541
+ // Text after the block keeps its own line
34542
+ const next = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.findNotEmptySibling(box, false);
34543
+ 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')) {
34544
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.after(box, jodit.createInside.element('br'));
34545
+ }
34546
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.unwrap(box);
34547
+ return true;
34548
+ }
34549
+ const filter = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_2__.getMoveFilter)(jodit);
34550
+ for(let node = sibling; node && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock(node);){
34551
+ const next = node.nextSibling;
34552
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(node, 'br')) {
34553
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(node);
34554
+ break;
34555
+ }
34556
+ 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);
34557
+ node = next;
34558
+ }
34559
+ return true;
34560
+ }
34561
+ /**
34562
+ * Bare text next to a block in the same parent, as the browsers join them:
34563
+ * Backspace in `<div><p>a</p>|b</div>` gives `<div><p>a|b</p></div>`, Delete
34564
+ * in `<div>a|<p>b</p>c</div>` gives `<div>a|b<br>c</div>`
34565
+ */ function checkJoinBareText(jodit, fakeNode, backspace) {
34566
+ const block = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.findNotEmptySibling(fakeNode, backspace);
34567
+ 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))) {
34568
+ return false;
34569
+ }
34570
+ const filter = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_2__.getMoveFilter)(jodit);
34571
+ if (backspace) {
34572
+ // The caret's line goes to the end of the block before it
34573
+ for(let node = fakeNode; node && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock(node);){
34574
+ const next = node.nextSibling;
34575
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(node, 'br')) {
34576
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(node);
34577
+ break;
34578
+ }
34579
+ 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);
34580
+ node = next;
34581
+ }
34582
+ } else {
34583
+ // The block's content joins the caret's line, and text after the
34584
+ // block keeps its own line
34585
+ const next = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.findNotEmptySibling(block, false);
34586
+ 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')) {
34587
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.after(block, jodit.createInside.element('br'));
34588
+ }
34589
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.unwrap(block);
34590
+ }
34591
+ jodit.s.setCursorBefore(fakeNode);
34592
+ return true;
34593
+ }
34473
34594
  function checkMoveListContent(jodit, mainClosestBox, sibling, backspace) {
34474
34595
  // Process UL/LI/OL cases
34475
34596
  const siblingIsList = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(sibling, _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.LIST_TAGS);
@@ -34611,9 +34732,10 @@ function moveContentAndRemoveEmpty(jodit, mainClosestBox, sibling, backspace) {
34611
34732
  * ```html
34612
34733
  * t|st
34613
34734
  * ```
34735
+ * With `stopBeforeSpace`, nothing is removed when the next char is a space.
34614
34736
  * @private
34615
34737
  */ // eslint-disable-next-line complexity
34616
- function checkRemoveChar(jodit, fakeNode, backspace, mode) {
34738
+ function checkRemoveChar(jodit, fakeNode, backspace, mode, stopBeforeSpace = false) {
34617
34739
  var _a, _b;
34618
34740
  const step = backspace ? -1 : 1;
34619
34741
  const anotherSibling = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.sibling(fakeNode, !backspace);
@@ -34632,6 +34754,9 @@ function checkRemoveChar(jodit, fakeNode, backspace, mode) {
34632
34754
  break;
34633
34755
  }
34634
34756
  if ((_a = sibling.nodeValue) === null || _a === void 0 ? void 0 : _a.length) {
34757
+ if (stopBeforeSpace && isSpace(nextChar(sibling.nodeValue, backspace))) {
34758
+ break;
34759
+ }
34635
34760
  removed = tryRemoveChar(sibling, backspace, step, anotherSibling);
34636
34761
  if (!sibling.nodeValue.length && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isInlineBlock(sibling.parentNode)) {
34637
34762
  sibling.nodeValue = _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.INVISIBLE_SPACE;
@@ -34669,10 +34794,11 @@ function getNextInlineSibling(sibling, backspace, root) {
34669
34794
  let nextSibling = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.sibling(sibling, backspace);
34670
34795
  if (!nextSibling && sibling.parentNode && sibling.parentNode !== root) {
34671
34796
  nextSibling = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.findMostNestedNeighbor)(sibling, !backspace, root, true);
34672
- // Do not cross a list-item boundary. At the start of a list item the
34673
- // neighbor can be the text of the parent/previous item; deleting a char
34674
- // there is wrong — the list cases must handle the outdent/merge (#1277).
34675
- 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)) {
34797
+ // Do not cross a block boundary. At the start of a list item the
34798
+ // neighbor can be the text of the parent/previous item (#1277), and at
34799
+ // the start of a paragraph the text before it in the same parent
34800
+ // (#1693); deleting a char there is wrong — the join cases handle them.
34801
+ 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)) {
34676
34802
  return null;
34677
34803
  }
34678
34804
  }
@@ -34739,10 +34865,26 @@ function replaceSpaceOnNBSP(anotherSibling, backspace, value) {
34739
34865
  }
34740
34866
  function checkRepeatRemoveCharAction(backspace, sibling, fakeNode, mode, removed, jodit) {
34741
34867
  ;(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);
34742
- if (mode === 'sentence' || mode === 'word' && removed !== ' ' && removed !== _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.NBSP_SPACE) {
34743
- checkRemoveChar(jodit, fakeNode, backspace, mode);
34868
+ const wordChar = mode === 'word' && !isSpace(removed);
34869
+ // Backspace by word removes the spaces before the caret, then the word, and keeps the space in front of it
34870
+ if (mode === 'sentence' || wordChar || mode === 'word' && backspace) {
34871
+ checkRemoveChar(jodit, fakeNode, backspace, mode, wordChar && backspace);
34744
34872
  }
34745
34873
  }
34874
+ /**
34875
+ * The char tryRemoveChar would remove next
34876
+ */ function nextChar(value, backspace) {
34877
+ const chars = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.toArray)(value);
34878
+ const step = backspace ? -1 : 1;
34879
+ let index = backspace ? chars.length - 1 : 0;
34880
+ while(chars[index] === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.INVISIBLE_SPACE){
34881
+ index += step;
34882
+ }
34883
+ return chars[index];
34884
+ }
34885
+ function isSpace(char) {
34886
+ return char === ' ' || char === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.NBSP_SPACE;
34887
+ }
34746
34888
 
34747
34889
 
34748
34890
  /***/ }),
@@ -35018,6 +35160,66 @@ function checkRepeatRemoveCharAction(backspace, sibling, fakeNode, mode, removed
35018
35160
  }
35019
35161
 
35020
35162
 
35163
+ /***/ }),
35164
+
35165
+ /***/ 70921:
35166
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
35167
+
35168
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
35169
+ /* harmony export */ checkUnwrapListItem: function() { return /* binding */ checkUnwrapListItem; }
35170
+ /* harmony export */ });
35171
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
35172
+ /*!
35173
+ * Jodit Editor (https://xdsoft.net/jodit/)
35174
+ * Released under MIT see LICENSE.txt in the project root for license information.
35175
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
35176
+ */
35177
+ /**
35178
+ * Backspace at the start of a later list item takes the bullet off, as Word
35179
+ * does: the item becomes a paragraph where it was, and the list is split
35180
+ * around it. A split `<ol>` carries its numbering on with `start`.
35181
+ *
35182
+ * @example
35183
+ * ```html
35184
+ * <ol><li>first</li><li>|second</li><li>third</li></ol>
35185
+ * ```
35186
+ * Result
35187
+ * ```html
35188
+ * <ol><li>first</li></ol><p>|second</p><ol start="2"><li>third</li></ol>
35189
+ * ```
35190
+ *
35191
+ * @private
35192
+ */ function checkUnwrapListItem(jodit, fakeNode, backspace) {
35193
+ if (!backspace) {
35194
+ return false;
35195
+ }
35196
+ const li = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(fakeNode, 'li', jodit.editor);
35197
+ const list = li ? li.parentElement : null;
35198
+ 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)) {
35199
+ return false;
35200
+ }
35201
+ const p = jodit.createInside.element(jodit.o.enterBlock);
35202
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.after(list, p);
35203
+ if (li.nextElementSibling) {
35204
+ const rest = list.cloneNode(false);
35205
+ // Two lists cannot share one id
35206
+ rest.removeAttribute('id');
35207
+ while(li.nextSibling){
35208
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.append(rest, li.nextSibling);
35209
+ }
35210
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(list, 'ol')) {
35211
+ const start = parseInt(list.getAttribute('start') || '1', 10) || 1;
35212
+ rest.setAttribute('start', String(start + list.children.length - 1));
35213
+ }
35214
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.after(p, rest);
35215
+ }
35216
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.moveContent(li, p);
35217
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(li);
35218
+ jodit.s.setCursorBefore(fakeNode);
35219
+ return true;
35220
+ }
35221
+
35222
+
35021
35223
  /***/ }),
35022
35224
 
35023
35225
  /***/ 14630:
@@ -35033,6 +35235,7 @@ function checkRepeatRemoveCharAction(backspace, sibling, fakeNode, mode, removed
35033
35235
  /* harmony import */ var _check_remove_unbreakable_element_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(56825);
35034
35236
  /* harmony import */ var _check_table_cell_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(90240);
35035
35237
  /* harmony import */ var _check_unwrap_first_list_item_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(68034);
35238
+ /* harmony import */ var _check_unwrap_list_item_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(70921);
35036
35239
  /*!
35037
35240
  * Jodit Editor (https://xdsoft.net/jodit/)
35038
35241
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -35046,6 +35249,7 @@ function checkRepeatRemoveCharAction(backspace, sibling, fakeNode, mode, removed
35046
35249
 
35047
35250
 
35048
35251
 
35252
+
35049
35253
  /**
35050
35254
  * Ordered delete/backspace cases with stable keys. The first one returning
35051
35255
  * `true` wins. The keys are stable across minified builds (function names are
@@ -35080,6 +35284,10 @@ function checkRepeatRemoveCharAction(backspace, sibling, fakeNode, mode, removed
35080
35284
  'join-two-lists',
35081
35285
  _check_join_two_lists_js__WEBPACK_IMPORTED_MODULE_1__.checkJoinTwoLists
35082
35286
  ],
35287
+ [
35288
+ 'unwrap-list-item',
35289
+ _check_unwrap_list_item_js__WEBPACK_IMPORTED_MODULE_9__.checkUnwrapListItem
35290
+ ],
35083
35291
  [
35084
35292
  'join-neighbors',
35085
35293
  _check_join_neighbors_js__WEBPACK_IMPORTED_MODULE_0__.checkJoinNeighbors
@@ -35104,7 +35312,8 @@ function checkRepeatRemoveCharAction(backspace, sibling, fakeNode, mode, removed
35104
35312
  /***/ 32496:
35105
35313
  /***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) {
35106
35314
 
35107
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6441);
35315
+ /* harmony import */ var _core_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82758);
35316
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6441);
35108
35317
  /*!
35109
35318
  * Jodit Editor (https://xdsoft.net/jodit/)
35110
35319
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -35112,13 +35321,18 @@ function checkRepeatRemoveCharAction(backspace, sibling, fakeNode, mode, removed
35112
35321
  */ /**
35113
35322
  * @module plugins/backspace
35114
35323
  */
35115
- _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.delete = {
35324
+
35325
+ _config_js__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.delete = {
35116
35326
  hotkeys: {
35117
- delete: [
35327
+ delete: _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_MAC ? [
35328
+ 'delete'
35329
+ ] : [
35118
35330
  'delete',
35119
35331
  'cmd+backspace'
35120
35332
  ],
35121
- deleteWord: [
35333
+ deleteWord: _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_MAC ? [
35334
+ 'ctrl+delete'
35335
+ ] : [
35122
35336
  'ctrl+delete',
35123
35337
  'cmd+alt+backspace',
35124
35338
  'ctrl+alt+backspace'
@@ -35130,7 +35344,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.delete = {
35130
35344
  backspace: [
35131
35345
  'backspace'
35132
35346
  ],
35133
- backspaceWord: [
35347
+ backspaceWord: _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_MAC ? [] : [
35134
35348
  'ctrl+backspace'
35135
35349
  ],
35136
35350
  backspaceSentence: [
@@ -38742,7 +38956,7 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_1__.pluginSystem.add('dtd', dtd);
38742
38956
  ]);
38743
38957
  let block = (0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_6__.getBlockWrapper)(fake, jodit);
38744
38958
  const isLi = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isLeaf(block);
38745
- // if use <br> defaultTag for break line or when was entered SHIFt key or in <td> or <th> or <blockquote>
38959
+ // if use <br> defaultTag for break line or when was entered SHIFt key or in <td>, <th> or <blockquote> without an inner block
38746
38960
  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)) {
38747
38961
  return false;
38748
38962
  }
@@ -38803,10 +39017,9 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_3__.pluginSystem.add('enter', enter);
38803
39017
  * Checks the possibility and necessity of inserting a BR instead of a block
38804
39018
  * @private
38805
39019
  */ function checkBR(fake, jodit, shiftKeyPressed, block) {
38806
- const isMultiLineBlock = Boolean(_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.closest(fake, [
38807
- 'pre',
38808
- 'blockquote'
38809
- ], jodit.editor));
39020
+ // Text in a <pre>, or bare text in a quote, gets a BR. A real block inside
39021
+ // a quote (<p>, <h3>, ...) is split like anywhere else, as in a cell below.
39022
+ 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)));
38810
39023
  // A cell itself can't be split into two cells, so bare cell content gets
38811
39024
  // a BR. But when the cell already holds a real block (<p>, <h3>, ...) that
38812
39025
  // block is split like anywhere else, otherwise every line of the cell
@@ -38816,7 +39029,7 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_3__.pluginSystem.add('enter', enter);
38816
39029
  'th'
38817
39030
  ], jodit.editor)));
38818
39031
  const isBRMode = jodit.o.enter.toLowerCase() === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.BR.toLowerCase();
38819
- // if you use <br> defaultTag for break line or when was entered SHIFt key or in <td> or <th> or <blockquote>
39032
+ // if you use <br> defaultTag for break line or when was entered SHIFt key or in <td>, <th> or <blockquote> without an inner block
38820
39033
  if (isBRMode || isCell || shiftKeyPressed && !isMultiLineBlock || !shiftKeyPressed && isMultiLineBlock) {
38821
39034
  // 2 BR before
38822
39035
  if (isMultiLineBlock && checkSeveralBR(fake)) {
@@ -41115,8 +41328,12 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.image = {
41115
41328
  dialog.close();
41116
41329
  });
41117
41330
  buttons.remove.onAction(()=>{
41331
+ const caret = j.s.createRange();
41332
+ caret.setStartBefore(this.state.sourceImage);
41333
+ caret.collapse(true);
41118
41334
  j.s.removeNode(this.state.sourceImage);
41119
41335
  dialog.close();
41336
+ j.s.selectRange(caret);
41120
41337
  });
41121
41338
  buttons.cancel.onAction(()=>{
41122
41339
  dialog.close();
@@ -41130,10 +41347,20 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.image = {
41130
41347
  ],
41131
41348
  buttons.check
41132
41349
  ]);
41133
- j.e.on(dialog, 'afterClose', ()=>{
41134
- if (this.state.image.parentNode && j.o.image.selectImageAfterClose) {
41135
- j.s.select(this.state.sourceImage);
41350
+ // The dialog fires `afterClose` on its own emitter, not the editor's
41351
+ dialog.e.on(dialog, 'afterClose', ()=>{
41352
+ const { sourceImage } = this.state;
41353
+ if (j.isInDestruct || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isOrContains(j.editor, sourceImage)) {
41354
+ return;
41355
+ }
41356
+ if (j.o.image.selectImageAfterClose) {
41357
+ j.s.select(sourceImage);
41358
+ return;
41136
41359
  }
41360
+ const caret = j.s.createRange();
41361
+ caret.setStartAfter(sourceImage);
41362
+ caret.collapse(true);
41363
+ j.s.selectRange(caret);
41137
41364
  });
41138
41365
  dialog.setSize(j.o.image.dialogWidth);
41139
41366
  (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.markOwner)(j, dialog.container);
@@ -41164,6 +41391,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.image = {
41164
41391
  this.activeTabState.activeTab = 'Image';
41165
41392
  this.__lock();
41166
41393
  this.dialog.open().setModal(true).setPosition();
41394
+ this.__focusFirstField();
41167
41395
  this.async.promise((resolve, reject)=>(0,_readers_index_js__WEBPACK_IMPORTED_MODULE_10__.readValuesFromImage)(this.j, this.state).then(resolve, reject)).catch((e)=>{
41168
41396
  if (!(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.isAbortError)(e)) {
41169
41397
  this.dialog.message.error(e.message);
@@ -41171,6 +41399,14 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.image = {
41171
41399
  }).finally(()=>this.__unlock());
41172
41400
  return false;
41173
41401
  }
41402
+ /**
41403
+ * Keys typed while the dialog is open must not reach the editor behind it,
41404
+ * so focus the active tab's first field, or else the first field shown
41405
+ */ __focusFirstField() {
41406
+ var _a;
41407
+ const fields = (box)=>(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.toArray)(box.querySelectorAll('input, select, textarea'));
41408
+ (_a = fields(this.form.getElm('tabsBox')).concat(fields(this.form.container)).find((field)=>field.offsetParent != null)) === null || _a === void 0 ? void 0 : _a.focus();
41409
+ }
41174
41410
  __lock() {
41175
41411
  this.dialog.lock();
41176
41412
  this.form.setMod('lock', true);
@@ -45585,9 +45821,11 @@ const isButtonSeparator = (item)=>item === '|' || item === '---' || item === '\n
45585
45821
  return cleaned;
45586
45822
  }
45587
45823
  /**
45588
- * The width that decides which breakpoint set the toolbar uses. A toolbar
45589
- * rendered into an external container (`toolbar` set to an element or a
45590
- * selector) lays out in that container, so its width is what matters there.
45824
+ * The width that decides which breakpoint set the toolbar uses: the editor's
45825
+ * own width, or its parent's while the editor has none yet (for example
45826
+ * while hidden at init). A toolbar rendered into an external container
45827
+ * (`toolbar` set to an element or a selector) lays out in that container, so
45828
+ * its width is what matters there.
45591
45829
  */ function adaptiveWidth(editor) {
45592
45830
  var _a;
45593
45831
  const { toolbar } = editor.o;
@@ -45597,7 +45835,7 @@ const isButtonSeparator = (item)=>item === '|' || item === '---' || item === '\n
45597
45835
  return width;
45598
45836
  }
45599
45837
  }
45600
- return ((_a = editor.container.parentElement) !== null && _a !== void 0 ? _a : editor.container).offsetWidth;
45838
+ return editor.container.offsetWidth || ((_a = editor.container.parentElement) !== null && _a !== void 0 ? _a : editor.container).offsetWidth;
45601
45839
  }
45602
45840
  /**
45603
45841
  * Rebuild toolbar in depends on editor's width