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/es2015/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
  */
@@ -1814,7 +1814,7 @@ __webpack_require__.r(__webpack_exports__);
1814
1814
  * ```
1815
1815
  * @packageDocumentation
1816
1816
  * @module constants
1817
- */ const APP_VERSION = "4.18.9";
1817
+ */ const APP_VERSION = "4.18.12";
1818
1818
  // prettier-ignore
1819
1819
  const ES = "es2015";
1820
1820
  const IS_ES_MODERN = true;
@@ -2532,6 +2532,8 @@ function cacheHTML(target, _, descriptor) {
2532
2532
  */
2533
2533
 
2534
2534
  const componentRegistry = new Map();
2535
+ const decoratedClasses = new WeakSet();
2536
+ const warnedClasses = new WeakSet();
2535
2537
  /**
2536
2538
  * Decorate components and set status isReady after constructor
2537
2539
  * @param constructorFunction - Component constructor class
@@ -2548,9 +2550,16 @@ const componentRegistry = new Map();
2548
2550
  Object.setPrototypeOf(this, newConstructorFunction.prototype);
2549
2551
  }
2550
2552
  this.setStatus('ready');
2553
+ } else if (!_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_PROD && !decoratedClasses.has(this.constructor) && !warnedClasses.has(this.constructor)) {
2554
+ // Only the outermost class's decorator sets `ready`, so a subclass
2555
+ // without its own decorator stays in `beforeInit`. See #1685
2556
+ warnedClasses.add(this.constructor);
2557
+ 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`);
2551
2558
  }
2552
2559
  }
2553
2560
  }
2561
+ decoratedClasses.add(constructorFunction);
2562
+ decoratedClasses.add(newConstructorFunction);
2554
2563
  const name = (0,_helpers_utils_get_class_name_js__WEBPACK_IMPORTED_MODULE_1__.getClassName)(constructorFunction.prototype);
2555
2564
  if (componentRegistry.has(name) && !_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_PROD) {
2556
2565
  throw new Error(`Component with name "${name}" is already registered`);
@@ -17628,6 +17637,7 @@ function _object_spread_props(target, source) {
17628
17637
  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;
17629
17638
  return c > 3 && r && Object.defineProperty(target, key, r), r;
17630
17639
  };
17640
+ var Popup_1;
17631
17641
 
17632
17642
 
17633
17643
 
@@ -17644,7 +17654,7 @@ const EVENTS_FOR_AUTOCLOSE = [
17644
17654
  'backSpaceAfterDelete',
17645
17655
  'beforeCommandDelete'
17646
17656
  ];
17647
- class Popup extends _group_group_js__WEBPACK_IMPORTED_MODULE_8__.UIGroup {
17657
+ let Popup = Popup_1 = class Popup extends _group_group_js__WEBPACK_IMPORTED_MODULE_8__.UIGroup {
17648
17658
  className() {
17649
17659
  return 'Popup';
17650
17660
  }
@@ -17654,7 +17664,7 @@ class Popup extends _group_group_js__WEBPACK_IMPORTED_MODULE_8__.UIGroup {
17654
17664
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(content, childContainer);
17655
17665
  }
17656
17666
  updateParentElement(target) {
17657
- if (target !== this && _component_component_js__WEBPACK_IMPORTED_MODULE_0__.Component.isInstanceOf(target, Popup)) {
17667
+ if (target !== this && _component_component_js__WEBPACK_IMPORTED_MODULE_0__.Component.isInstanceOf(target, Popup_1)) {
17658
17668
  this.__childrenPopups.forEach((popup)=>{
17659
17669
  if (!target.closest(popup) && popup.isOpened) {
17660
17670
  popup.close();
@@ -17696,7 +17706,7 @@ class Popup extends _group_group_js__WEBPACK_IMPORTED_MODULE_8__.UIGroup {
17696
17706
  if (parentContainer) {
17697
17707
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(parentContainer, this.container);
17698
17708
  } else {
17699
- const popupContainer = (0,_global_js__WEBPACK_IMPORTED_MODULE_3__.getContainer)(this.jodit, Popup);
17709
+ const popupContainer = (0,_global_js__WEBPACK_IMPORTED_MODULE_3__.getContainer)(this.jodit, Popup_1);
17700
17710
  if (parentContainer !== this.container.parentElement) {
17701
17711
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(popupContainer, this.container);
17702
17712
  }
@@ -17808,11 +17818,11 @@ class Popup extends _group_group_js__WEBPACK_IMPORTED_MODULE_8__.UIGroup {
17808
17818
  };
17809
17819
  const getMatchStrategy = (inBox)=>{
17810
17820
  let strategy;
17811
- if (Popup.boxInView(getPointByStrategy(defaultStrategy), inBox)) {
17821
+ if (Popup_1.boxInView(getPointByStrategy(defaultStrategy), inBox)) {
17812
17822
  strategy = defaultStrategy;
17813
17823
  } else {
17814
17824
  strategy = list.find((key)=>{
17815
- if (Popup.boxInView(getPointByStrategy(key), inBox)) {
17825
+ if (Popup_1.boxInView(getPointByStrategy(key), inBox)) {
17816
17826
  return key;
17817
17827
  }
17818
17828
  return;
@@ -17823,7 +17833,7 @@ class Popup extends _group_group_js__WEBPACK_IMPORTED_MODULE_8__.UIGroup {
17823
17833
  // Try to find match position inside Jodit.container
17824
17834
  let strategy = getMatchStrategy((0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.position)(this.j.container, this.j));
17825
17835
  // If not found or is not inside window view
17826
- if (!strategy || !Popup.boxInView(getPointByStrategy(strategy), view)) {
17836
+ if (!strategy || !Popup_1.boxInView(getPointByStrategy(strategy), view)) {
17827
17837
  // Find match strategy inside window view
17828
17838
  strategy = getMatchStrategy(view) || strategy || defaultStrategy;
17829
17839
  }
@@ -17873,7 +17883,7 @@ class Popup extends _group_group_js__WEBPACK_IMPORTED_MODULE_8__.UIGroup {
17873
17883
  if (!e.target) {
17874
17884
  return false;
17875
17885
  }
17876
- const box = _element_js__WEBPACK_IMPORTED_MODULE_7__.UIElement.closestElement(e.target, Popup);
17886
+ const box = _element_js__WEBPACK_IMPORTED_MODULE_7__.UIElement.closestElement(e.target, Popup_1);
17877
17887
  return Boolean(box && (this === box || box.closest(this)));
17878
17888
  }
17879
17889
  __addGlobalListeners() {
@@ -17928,7 +17938,7 @@ class Popup extends _group_group_js__WEBPACK_IMPORTED_MODULE_8__.UIGroup {
17928
17938
  this.__childrenPopups = new Set();
17929
17939
  (0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(this.container, 'role', 'popup');
17930
17940
  }
17931
- }
17941
+ };
17932
17942
  __decorate([
17933
17943
  _decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.autobind
17934
17944
  ], Popup.prototype, "updatePosition", null);
@@ -17942,6 +17952,10 @@ __decorate([
17942
17952
  __decorate([
17943
17953
  _decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.autobind
17944
17954
  ], Popup.prototype, "__closeOnOutsideClick", null);
17955
+ Popup = Popup_1 = __decorate([
17956
+ _decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.component
17957
+ ], Popup);
17958
+
17945
17959
 
17946
17960
 
17947
17961
  /***/ }),
@@ -19165,7 +19179,7 @@ let Jodit = Jodit_1 = class Jodit extends _modules_index_js__WEBPACK_IMPORTED_MO
19165
19179
  commands.push(command);
19166
19180
  if (!(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.isFunction)(command)) {
19167
19181
  const hotkeys = this.o.commandToHotkeys[commandName] || this.o.commandToHotkeys[commandNameOriginal] || command.hotkeys;
19168
- if (hotkeys) {
19182
+ if (hotkeys && hotkeys.length) {
19169
19183
  this.registerHotkeyToCommand(hotkeys, commandName, options === null || options === void 0 ? void 0 : options.stopPropagation);
19170
19184
  }
19171
19185
  }
@@ -19174,6 +19188,10 @@ let Jodit = Jodit_1 = class Jodit extends _modules_index_js__WEBPACK_IMPORTED_MO
19174
19188
  /**
19175
19189
  * Register hotkey for command
19176
19190
  */ registerHotkeyToCommand(hotkeys, commandName, shouldStop = true) {
19191
+ // An empty list (e.g. `commandToHotkeys: { cmd: [] }`) turns the key off
19192
+ if (!hotkeys || !hotkeys.length) {
19193
+ return;
19194
+ }
19177
19195
  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(' ');
19178
19196
  this.e.off(shortcuts).on(shortcuts, (type, stop)=>{
19179
19197
  if (stop) {
@@ -26579,6 +26597,9 @@ var Dialog_1;
26579
26597
 
26580
26598
 
26581
26599
 
26600
+ /**
26601
+ * A position from 0 up to `max`, or 0 when the panel is larger than the window
26602
+ */ const clampToWindow = (value, max)=>Math.max(0, Math.min(value, max));
26582
26603
  _config_js__WEBPACK_IMPORTED_MODULE_13__.Config.prototype.dialog = {
26583
26604
  namespace: '',
26584
26605
  extraButtons: [],
@@ -26671,6 +26692,11 @@ _config_js__WEBPACK_IMPORTED_MODULE_13__.Config.prototype.controls.dialog = {
26671
26692
  this.startY = e.clientY;
26672
26693
  this.startPoint.x = (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_8__.css)(this.dialog, 'left');
26673
26694
  this.startPoint.y = (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_8__.css)(this.dialog, 'top');
26695
+ // Rounded up: at the right edge a fraction of a pixel less room would
26696
+ // wrap the header of a panel that has no width of its own
26697
+ const { width, height } = this.dialog.getBoundingClientRect();
26698
+ this.startPoint.w = Math.ceil(width);
26699
+ this.startPoint.h = Math.ceil(height);
26674
26700
  this.setMaxZIndex();
26675
26701
  if (e.cancelable) {
26676
26702
  e.preventDefault();
@@ -26686,7 +26712,11 @@ _config_js__WEBPACK_IMPORTED_MODULE_13__.Config.prototype.controls.dialog = {
26686
26712
  }
26687
26713
  __onMouseMove(e) {
26688
26714
  if (this.draggable && this.o.draggable) {
26689
- this.setPosition(this.startPoint.x + e.clientX - this.startX, this.startPoint.y + e.clientY - this.startY);
26715
+ const { documentElement } = this.od;
26716
+ // Keep the whole panel in the window at the size it had when the
26717
+ // drag began. A panel with no width of its own would otherwise
26718
+ // shrink as it neared the right edge, and then leave the window
26719
+ 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));
26690
26720
  if (this.e) {
26691
26721
  /**
26692
26722
  * Fired when dialog box is moved
@@ -26812,8 +26842,8 @@ _config_js__WEBPACK_IMPORTED_MODULE_13__.Config.prototype.controls.dialog = {
26812
26842
  }
26813
26843
  // strings on purpose: `css()` would truncate fractional pixels
26814
26844
  ;(0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_8__.css)(this.dialog, {
26815
- left: (x || left) + 'px',
26816
- top: (y || top) + 'px'
26845
+ left: (x !== null && x !== void 0 ? x : left) + 'px',
26846
+ top: (y !== null && y !== void 0 ? y : top) + 'px'
26817
26847
  });
26818
26848
  return this;
26819
26849
  }
@@ -29513,17 +29543,29 @@ const DEFAULT_SOURCE_NAME = 'default';
29513
29543
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
29514
29544
  /* harmony export */ FileBrowserFiles: function() { return /* binding */ FileBrowserFiles; }
29515
29545
  /* harmony export */ });
29516
- /* harmony import */ var _core_ui_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(67510);
29546
+ /* harmony import */ var _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(65478);
29547
+ /* harmony import */ var _core_ui_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(67510);
29517
29548
  /*!
29518
29549
  * Jodit Editor (https://xdsoft.net/jodit/)
29519
29550
  * Released under MIT see LICENSE.txt in the project root for license information.
29520
29551
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
29521
- */
29522
- class FileBrowserFiles extends _core_ui_index_js__WEBPACK_IMPORTED_MODULE_0__.UIGroup {
29552
+ */ var __decorate = undefined && undefined.__decorate || function(decorators, target, key, desc) {
29553
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
29554
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
29555
+ 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;
29556
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
29557
+ };
29558
+
29559
+
29560
+ let FileBrowserFiles = class FileBrowserFiles extends _core_ui_index_js__WEBPACK_IMPORTED_MODULE_1__.UIGroup {
29523
29561
  className() {
29524
29562
  return 'FileBrowserFiles';
29525
29563
  }
29526
- }
29564
+ };
29565
+ FileBrowserFiles = __decorate([
29566
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.component
29567
+ ], FileBrowserFiles);
29568
+
29527
29569
 
29528
29570
 
29529
29571
  /***/ }),
@@ -29555,17 +29597,29 @@ class FileBrowserFiles extends _core_ui_index_js__WEBPACK_IMPORTED_MODULE_0__.UI
29555
29597
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
29556
29598
  /* harmony export */ FileBrowserTree: function() { return /* binding */ FileBrowserTree; }
29557
29599
  /* harmony export */ });
29558
- /* harmony import */ var _core_ui_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(67510);
29600
+ /* harmony import */ var _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(65478);
29601
+ /* harmony import */ var _core_ui_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(67510);
29559
29602
  /*!
29560
29603
  * Jodit Editor (https://xdsoft.net/jodit/)
29561
29604
  * Released under MIT see LICENSE.txt in the project root for license information.
29562
29605
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
29563
- */
29564
- class FileBrowserTree extends _core_ui_index_js__WEBPACK_IMPORTED_MODULE_0__.UIGroup {
29606
+ */ var __decorate = undefined && undefined.__decorate || function(decorators, target, key, desc) {
29607
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
29608
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
29609
+ 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;
29610
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
29611
+ };
29612
+
29613
+
29614
+ let FileBrowserTree = class FileBrowserTree extends _core_ui_index_js__WEBPACK_IMPORTED_MODULE_1__.UIGroup {
29565
29615
  className() {
29566
29616
  return 'FileBrowserTree';
29567
29617
  }
29568
- }
29618
+ };
29619
+ FileBrowserTree = __decorate([
29620
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.component
29621
+ ], FileBrowserTree);
29622
+
29569
29623
 
29570
29624
 
29571
29625
  /***/ }),
@@ -35364,6 +35418,9 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('backspace', backs
35364
35418
  * Check if two separate elements can be connected
35365
35419
  * @private
35366
35420
  */ function checkJoinNeighbors(jodit, fakeNode, backspace) {
35421
+ if (checkJoinBareText(jodit, fakeNode, backspace)) {
35422
+ return true;
35423
+ }
35367
35424
  let nextBox = fakeNode, mainClosestBox = nextBox;
35368
35425
  // Find the main big closest element
35369
35426
  while(nextBox && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.findNotEmptySibling(nextBox, backspace) && nextBox.parentElement !== jodit.editor){
@@ -35391,7 +35448,7 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('backspace', backs
35391
35448
  return true;
35392
35449
  }
35393
35450
  const box = findCaretBox(fakeNode, mainClosestBox);
35394
- if (sibling && (checkPullNextLine(jodit, fakeNode, box, sibling, backspace) || checkMoveListContent(jodit, box, sibling, backspace) || moveContentAndRemoveEmpty(jodit, box, findEdgeBlock(resolveTableSibling(sibling, backspace), backspace, jodit.editor), backspace))) {
35451
+ 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))) {
35395
35452
  jodit.s.setCursorBefore(fakeNode);
35396
35453
  return true;
35397
35454
  }
@@ -35476,6 +35533,70 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('backspace', backs
35476
35533
  }
35477
35534
  return true;
35478
35535
  }
35536
+ /**
35537
+ * A block next to bare text in the same parent joins that text, as the
35538
+ * browsers do: `<li>one<p>|two</p></li>` gives `<li>one|two</li>`, and
35539
+ * `<li><p>one|</p>two</li>` gives `<li><p>one|two</p></li>`
35540
+ * @private
35541
+ */ function checkJoinInlineSibling(jodit, box, sibling, backspace) {
35542
+ 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>`
35543
+ box.parentNode !== sibling.parentNode || Array.from(box.childNodes).some((node)=>_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock(node))) {
35544
+ return false;
35545
+ }
35546
+ if (backspace) {
35547
+ // Text after the block keeps its own line
35548
+ const next = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.findNotEmptySibling(box, false);
35549
+ 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')) {
35550
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.after(box, jodit.createInside.element('br'));
35551
+ }
35552
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.unwrap(box);
35553
+ return true;
35554
+ }
35555
+ const filter = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_2__.getMoveFilter)(jodit);
35556
+ for(let node = sibling; node && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock(node);){
35557
+ const next = node.nextSibling;
35558
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(node, 'br')) {
35559
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(node);
35560
+ break;
35561
+ }
35562
+ 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);
35563
+ node = next;
35564
+ }
35565
+ return true;
35566
+ }
35567
+ /**
35568
+ * Bare text next to a block in the same parent, as the browsers join them:
35569
+ * Backspace in `<div><p>a</p>|b</div>` gives `<div><p>a|b</p></div>`, Delete
35570
+ * in `<div>a|<p>b</p>c</div>` gives `<div>a|b<br>c</div>`
35571
+ */ function checkJoinBareText(jodit, fakeNode, backspace) {
35572
+ const block = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.findNotEmptySibling(fakeNode, backspace);
35573
+ 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))) {
35574
+ return false;
35575
+ }
35576
+ const filter = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_2__.getMoveFilter)(jodit);
35577
+ if (backspace) {
35578
+ // The caret's line goes to the end of the block before it
35579
+ for(let node = fakeNode; node && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock(node);){
35580
+ const next = node.nextSibling;
35581
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(node, 'br')) {
35582
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(node);
35583
+ break;
35584
+ }
35585
+ 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);
35586
+ node = next;
35587
+ }
35588
+ } else {
35589
+ // The block's content joins the caret's line, and text after the
35590
+ // block keeps its own line
35591
+ const next = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.findNotEmptySibling(block, false);
35592
+ 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')) {
35593
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.after(block, jodit.createInside.element('br'));
35594
+ }
35595
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.unwrap(block);
35596
+ }
35597
+ jodit.s.setCursorBefore(fakeNode);
35598
+ return true;
35599
+ }
35479
35600
  function checkMoveListContent(jodit, mainClosestBox, sibling, backspace) {
35480
35601
  // Process UL/LI/OL cases
35481
35602
  const siblingIsList = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(sibling, _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.LIST_TAGS);
@@ -35617,9 +35738,10 @@ function moveContentAndRemoveEmpty(jodit, mainClosestBox, sibling, backspace) {
35617
35738
  * ```html
35618
35739
  * t|st
35619
35740
  * ```
35741
+ * With `stopBeforeSpace`, nothing is removed when the next char is a space.
35620
35742
  * @private
35621
35743
  */ // eslint-disable-next-line complexity
35622
- function checkRemoveChar(jodit, fakeNode, backspace, mode) {
35744
+ function checkRemoveChar(jodit, fakeNode, backspace, mode, stopBeforeSpace = false) {
35623
35745
  var _a, _b;
35624
35746
  const step = backspace ? -1 : 1;
35625
35747
  const anotherSibling = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.sibling(fakeNode, !backspace);
@@ -35638,6 +35760,9 @@ function checkRemoveChar(jodit, fakeNode, backspace, mode) {
35638
35760
  break;
35639
35761
  }
35640
35762
  if ((_a = sibling.nodeValue) === null || _a === void 0 ? void 0 : _a.length) {
35763
+ if (stopBeforeSpace && isSpace(nextChar(sibling.nodeValue, backspace))) {
35764
+ break;
35765
+ }
35641
35766
  removed = tryRemoveChar(sibling, backspace, step, anotherSibling);
35642
35767
  if (!sibling.nodeValue.length && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isInlineBlock(sibling.parentNode)) {
35643
35768
  sibling.nodeValue = _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.INVISIBLE_SPACE;
@@ -35675,10 +35800,11 @@ function getNextInlineSibling(sibling, backspace, root) {
35675
35800
  let nextSibling = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.sibling(sibling, backspace);
35676
35801
  if (!nextSibling && sibling.parentNode && sibling.parentNode !== root) {
35677
35802
  nextSibling = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.findMostNestedNeighbor)(sibling, !backspace, root, true);
35678
- // Do not cross a list-item boundary. At the start of a list item the
35679
- // neighbor can be the text of the parent/previous item; deleting a char
35680
- // there is wrong — the list cases must handle the outdent/merge (#1277).
35681
- 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)) {
35803
+ // Do not cross a block boundary. At the start of a list item the
35804
+ // neighbor can be the text of the parent/previous item (#1277), and at
35805
+ // the start of a paragraph the text before it in the same parent
35806
+ // (#1693); deleting a char there is wrong — the join cases handle them.
35807
+ 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)) {
35682
35808
  return null;
35683
35809
  }
35684
35810
  }
@@ -35745,10 +35871,26 @@ function replaceSpaceOnNBSP(anotherSibling, backspace, value) {
35745
35871
  }
35746
35872
  function checkRepeatRemoveCharAction(backspace, sibling, fakeNode, mode, removed, jodit) {
35747
35873
  ;(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);
35748
- if (mode === 'sentence' || mode === 'word' && removed !== ' ' && removed !== _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.NBSP_SPACE) {
35749
- checkRemoveChar(jodit, fakeNode, backspace, mode);
35874
+ const wordChar = mode === 'word' && !isSpace(removed);
35875
+ // Backspace by word removes the spaces before the caret, then the word, and keeps the space in front of it
35876
+ if (mode === 'sentence' || wordChar || mode === 'word' && backspace) {
35877
+ checkRemoveChar(jodit, fakeNode, backspace, mode, wordChar && backspace);
35750
35878
  }
35751
35879
  }
35880
+ /**
35881
+ * The char tryRemoveChar would remove next
35882
+ */ function nextChar(value, backspace) {
35883
+ const chars = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.toArray)(value);
35884
+ const step = backspace ? -1 : 1;
35885
+ let index = backspace ? chars.length - 1 : 0;
35886
+ while(chars[index] === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.INVISIBLE_SPACE){
35887
+ index += step;
35888
+ }
35889
+ return chars[index];
35890
+ }
35891
+ function isSpace(char) {
35892
+ return char === ' ' || char === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.NBSP_SPACE;
35893
+ }
35752
35894
 
35753
35895
 
35754
35896
  /***/ }),
@@ -36024,6 +36166,66 @@ function checkRepeatRemoveCharAction(backspace, sibling, fakeNode, mode, removed
36024
36166
  }
36025
36167
 
36026
36168
 
36169
+ /***/ }),
36170
+
36171
+ /***/ 70921:
36172
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
36173
+
36174
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
36175
+ /* harmony export */ checkUnwrapListItem: function() { return /* binding */ checkUnwrapListItem; }
36176
+ /* harmony export */ });
36177
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
36178
+ /*!
36179
+ * Jodit Editor (https://xdsoft.net/jodit/)
36180
+ * Released under MIT see LICENSE.txt in the project root for license information.
36181
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
36182
+ */
36183
+ /**
36184
+ * Backspace at the start of a later list item takes the bullet off, as Word
36185
+ * does: the item becomes a paragraph where it was, and the list is split
36186
+ * around it. A split `<ol>` carries its numbering on with `start`.
36187
+ *
36188
+ * @example
36189
+ * ```html
36190
+ * <ol><li>first</li><li>|second</li><li>third</li></ol>
36191
+ * ```
36192
+ * Result
36193
+ * ```html
36194
+ * <ol><li>first</li></ol><p>|second</p><ol start="2"><li>third</li></ol>
36195
+ * ```
36196
+ *
36197
+ * @private
36198
+ */ function checkUnwrapListItem(jodit, fakeNode, backspace) {
36199
+ if (!backspace) {
36200
+ return false;
36201
+ }
36202
+ const li = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(fakeNode, 'li', jodit.editor);
36203
+ const list = li ? li.parentElement : null;
36204
+ 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)) {
36205
+ return false;
36206
+ }
36207
+ const p = jodit.createInside.element(jodit.o.enterBlock);
36208
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.after(list, p);
36209
+ if (li.nextElementSibling) {
36210
+ const rest = list.cloneNode(false);
36211
+ // Two lists cannot share one id
36212
+ rest.removeAttribute('id');
36213
+ while(li.nextSibling){
36214
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.append(rest, li.nextSibling);
36215
+ }
36216
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(list, 'ol')) {
36217
+ const start = parseInt(list.getAttribute('start') || '1', 10) || 1;
36218
+ rest.setAttribute('start', String(start + list.children.length - 1));
36219
+ }
36220
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.after(p, rest);
36221
+ }
36222
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.moveContent(li, p);
36223
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(li);
36224
+ jodit.s.setCursorBefore(fakeNode);
36225
+ return true;
36226
+ }
36227
+
36228
+
36027
36229
  /***/ }),
36028
36230
 
36029
36231
  /***/ 14630:
@@ -36039,6 +36241,7 @@ function checkRepeatRemoveCharAction(backspace, sibling, fakeNode, mode, removed
36039
36241
  /* harmony import */ var _check_remove_unbreakable_element_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(56825);
36040
36242
  /* harmony import */ var _check_table_cell_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(90240);
36041
36243
  /* harmony import */ var _check_unwrap_first_list_item_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(68034);
36244
+ /* harmony import */ var _check_unwrap_list_item_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(70921);
36042
36245
  /*!
36043
36246
  * Jodit Editor (https://xdsoft.net/jodit/)
36044
36247
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -36052,6 +36255,7 @@ function checkRepeatRemoveCharAction(backspace, sibling, fakeNode, mode, removed
36052
36255
 
36053
36256
 
36054
36257
 
36258
+
36055
36259
  /**
36056
36260
  * Ordered delete/backspace cases with stable keys. The first one returning
36057
36261
  * `true` wins. The keys are stable across minified builds (function names are
@@ -36086,6 +36290,10 @@ function checkRepeatRemoveCharAction(backspace, sibling, fakeNode, mode, removed
36086
36290
  'join-two-lists',
36087
36291
  _check_join_two_lists_js__WEBPACK_IMPORTED_MODULE_1__.checkJoinTwoLists
36088
36292
  ],
36293
+ [
36294
+ 'unwrap-list-item',
36295
+ _check_unwrap_list_item_js__WEBPACK_IMPORTED_MODULE_9__.checkUnwrapListItem
36296
+ ],
36089
36297
  [
36090
36298
  'join-neighbors',
36091
36299
  _check_join_neighbors_js__WEBPACK_IMPORTED_MODULE_0__.checkJoinNeighbors
@@ -36110,7 +36318,8 @@ function checkRepeatRemoveCharAction(backspace, sibling, fakeNode, mode, removed
36110
36318
  /***/ 32496:
36111
36319
  /***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) {
36112
36320
 
36113
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6441);
36321
+ /* harmony import */ var _core_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82758);
36322
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6441);
36114
36323
  /*!
36115
36324
  * Jodit Editor (https://xdsoft.net/jodit/)
36116
36325
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -36118,13 +36327,18 @@ function checkRepeatRemoveCharAction(backspace, sibling, fakeNode, mode, removed
36118
36327
  */ /**
36119
36328
  * @module plugins/backspace
36120
36329
  */
36121
- _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.delete = {
36330
+
36331
+ _config_js__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.delete = {
36122
36332
  hotkeys: {
36123
- delete: [
36333
+ delete: _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_MAC ? [
36334
+ 'delete'
36335
+ ] : [
36124
36336
  'delete',
36125
36337
  'cmd+backspace'
36126
36338
  ],
36127
- deleteWord: [
36339
+ deleteWord: _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_MAC ? [
36340
+ 'ctrl+delete'
36341
+ ] : [
36128
36342
  'ctrl+delete',
36129
36343
  'cmd+alt+backspace',
36130
36344
  'ctrl+alt+backspace'
@@ -36136,7 +36350,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.delete = {
36136
36350
  backspace: [
36137
36351
  'backspace'
36138
36352
  ],
36139
- backspaceWord: [
36353
+ backspaceWord: _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_MAC ? [] : [
36140
36354
  'ctrl+backspace'
36141
36355
  ],
36142
36356
  backspaceSentence: [
@@ -39772,7 +39986,7 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_1__.pluginSystem.add('dtd', dtd);
39772
39986
  ]);
39773
39987
  let block = (0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_6__.getBlockWrapper)(fake, jodit);
39774
39988
  const isLi = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isLeaf(block);
39775
- // if use <br> defaultTag for break line or when was entered SHIFt key or in <td> or <th> or <blockquote>
39989
+ // if use <br> defaultTag for break line or when was entered SHIFt key or in <td>, <th> or <blockquote> without an inner block
39776
39990
  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)) {
39777
39991
  return false;
39778
39992
  }
@@ -39833,10 +40047,9 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_3__.pluginSystem.add('enter', enter);
39833
40047
  * Checks the possibility and necessity of inserting a BR instead of a block
39834
40048
  * @private
39835
40049
  */ function checkBR(fake, jodit, shiftKeyPressed, block) {
39836
- const isMultiLineBlock = Boolean(_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.closest(fake, [
39837
- 'pre',
39838
- 'blockquote'
39839
- ], jodit.editor));
40050
+ // Text in a <pre>, or bare text in a quote, gets a BR. A real block inside
40051
+ // a quote (<p>, <h3>, ...) is split like anywhere else, as in a cell below.
40052
+ 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)));
39840
40053
  // A cell itself can't be split into two cells, so bare cell content gets
39841
40054
  // a BR. But when the cell already holds a real block (<p>, <h3>, ...) that
39842
40055
  // block is split like anywhere else, otherwise every line of the cell
@@ -39846,7 +40059,7 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_3__.pluginSystem.add('enter', enter);
39846
40059
  'th'
39847
40060
  ], jodit.editor)));
39848
40061
  const isBRMode = jodit.o.enter.toLowerCase() === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.BR.toLowerCase();
39849
- // if you use <br> defaultTag for break line or when was entered SHIFt key or in <td> or <th> or <blockquote>
40062
+ // if you use <br> defaultTag for break line or when was entered SHIFt key or in <td>, <th> or <blockquote> without an inner block
39850
40063
  if (isBRMode || isCell || shiftKeyPressed && !isMultiLineBlock || !shiftKeyPressed && isMultiLineBlock) {
39851
40064
  // 2 BR before
39852
40065
  if (isMultiLineBlock && checkSeveralBR(fake)) {
@@ -42247,8 +42460,12 @@ function _async_to_generator(fn) {
42247
42460
  dialog.close();
42248
42461
  });
42249
42462
  buttons.remove.onAction(()=>{
42463
+ const caret = j.s.createRange();
42464
+ caret.setStartBefore(this.state.sourceImage);
42465
+ caret.collapse(true);
42250
42466
  j.s.removeNode(this.state.sourceImage);
42251
42467
  dialog.close();
42468
+ j.s.selectRange(caret);
42252
42469
  });
42253
42470
  buttons.cancel.onAction(()=>{
42254
42471
  dialog.close();
@@ -42262,10 +42479,20 @@ function _async_to_generator(fn) {
42262
42479
  ],
42263
42480
  buttons.check
42264
42481
  ]);
42265
- j.e.on(dialog, 'afterClose', ()=>{
42266
- if (this.state.image.parentNode && j.o.image.selectImageAfterClose) {
42267
- j.s.select(this.state.sourceImage);
42482
+ // The dialog fires `afterClose` on its own emitter, not the editor's
42483
+ dialog.e.on(dialog, 'afterClose', ()=>{
42484
+ const { sourceImage } = this.state;
42485
+ if (j.isInDestruct || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isOrContains(j.editor, sourceImage)) {
42486
+ return;
42487
+ }
42488
+ if (j.o.image.selectImageAfterClose) {
42489
+ j.s.select(sourceImage);
42490
+ return;
42268
42491
  }
42492
+ const caret = j.s.createRange();
42493
+ caret.setStartAfter(sourceImage);
42494
+ caret.collapse(true);
42495
+ j.s.selectRange(caret);
42269
42496
  });
42270
42497
  dialog.setSize(j.o.image.dialogWidth);
42271
42498
  (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.markOwner)(j, dialog.container);
@@ -42296,6 +42523,7 @@ function _async_to_generator(fn) {
42296
42523
  this.activeTabState.activeTab = 'Image';
42297
42524
  this.__lock();
42298
42525
  this.dialog.open().setModal(true).setPosition();
42526
+ this.__focusFirstField();
42299
42527
  this.async.promise((resolve, reject)=>(0,_readers_index_js__WEBPACK_IMPORTED_MODULE_10__.readValuesFromImage)(this.j, this.state).then(resolve, reject)).catch((e)=>{
42300
42528
  if (!(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.isAbortError)(e)) {
42301
42529
  this.dialog.message.error(e.message);
@@ -42303,6 +42531,14 @@ function _async_to_generator(fn) {
42303
42531
  }).finally(()=>this.__unlock());
42304
42532
  return false;
42305
42533
  }
42534
+ /**
42535
+ * Keys typed while the dialog is open must not reach the editor behind it,
42536
+ * so focus the active tab's first field, or else the first field shown
42537
+ */ __focusFirstField() {
42538
+ var _a;
42539
+ const fields = (box)=>(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.toArray)(box.querySelectorAll('input, select, textarea'));
42540
+ (_a = fields(this.form.getElm('tabsBox')).concat(fields(this.form.container)).find((field)=>field.offsetParent != null)) === null || _a === void 0 ? void 0 : _a.focus();
42541
+ }
42306
42542
  __lock() {
42307
42543
  this.dialog.lock();
42308
42544
  this.form.setMod('lock', true);
@@ -46903,9 +47139,11 @@ const isButtonSeparator = (item)=>item === '|' || item === '---' || item === '\n
46903
47139
  return cleaned;
46904
47140
  }
46905
47141
  /**
46906
- * The width that decides which breakpoint set the toolbar uses. A toolbar
46907
- * rendered into an external container (`toolbar` set to an element or a
46908
- * selector) lays out in that container, so its width is what matters there.
47142
+ * The width that decides which breakpoint set the toolbar uses: the editor's
47143
+ * own width, or its parent's while the editor has none yet (for example
47144
+ * while hidden at init). A toolbar rendered into an external container
47145
+ * (`toolbar` set to an element or a selector) lays out in that container, so
47146
+ * its width is what matters there.
46909
47147
  */ function adaptiveWidth(editor) {
46910
47148
  var _a;
46911
47149
  const { toolbar } = editor.o;
@@ -46915,7 +47153,7 @@ const isButtonSeparator = (item)=>item === '|' || item === '---' || item === '\n
46915
47153
  return width;
46916
47154
  }
46917
47155
  }
46918
- return ((_a = editor.container.parentElement) !== null && _a !== void 0 ? _a : editor.container).offsetWidth;
47156
+ return editor.container.offsetWidth || ((_a = editor.container.parentElement) !== null && _a !== void 0 ? _a : editor.container).offsetWidth;
46919
47157
  }
46920
47158
  /**
46921
47159
  * Rebuild toolbar in depends on editor's width