jodit-pro 4.15.19 → 4.16.0

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 (317) hide show
  1. package/es2015/jodit.css +1 -1
  2. package/es2015/jodit.fat.min.js +12 -11
  3. package/es2015/jodit.js +255 -91
  4. package/es2015/jodit.min.js +11 -10
  5. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  6. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  7. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  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 +1 -1
  13. package/es2015/plugins/backup/backup.min.js +1 -1
  14. package/es2015/plugins/button-generator/button-generator.css +1 -1
  15. package/es2015/plugins/button-generator/button-generator.js +1 -1
  16. package/es2015/plugins/button-generator/button-generator.min.js +1 -1
  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/color-picker/color-picker.css +1 -1
  20. package/es2015/plugins/color-picker/color-picker.js +1 -1
  21. package/es2015/plugins/color-picker/color-picker.min.js +1 -1
  22. package/es2015/plugins/emoji/emoji.css +1 -1
  23. package/es2015/plugins/emoji/emoji.js +1 -1
  24. package/es2015/plugins/emoji/emoji.min.js +1 -1
  25. package/es2015/plugins/export-docs/export-docs.js +1 -1
  26. package/es2015/plugins/export-docs/export-docs.min.js +1 -1
  27. package/es2015/plugins/finder/finder.css +1 -1
  28. package/es2015/plugins/finder/finder.js +4 -1
  29. package/es2015/plugins/finder/finder.min.js +2 -2
  30. package/es2015/plugins/google-maps/google-maps.css +1 -1
  31. package/es2015/plugins/google-maps/google-maps.js +1 -1
  32. package/es2015/plugins/google-maps/google-maps.min.js +1 -1
  33. package/es2015/plugins/google-search/google-search.js +1 -1
  34. package/es2015/plugins/google-search/google-search.min.js +1 -1
  35. package/es2015/plugins/highlight-signature/highlight-signature.js +1 -1
  36. package/es2015/plugins/highlight-signature/highlight-signature.min.js +1 -1
  37. package/es2015/plugins/iframe-editor/iframe-editor.css +1 -1
  38. package/es2015/plugins/iframe-editor/iframe-editor.js +1 -1
  39. package/es2015/plugins/iframe-editor/iframe-editor.min.js +1 -1
  40. package/es2015/plugins/image-editor-pro/image-editor-pro.css +1 -1
  41. package/es2015/plugins/image-editor-pro/image-editor-pro.js +1 -1
  42. package/es2015/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  43. package/es2015/plugins/keyboard/keyboard.css +1 -1
  44. package/es2015/plugins/keyboard/keyboard.js +1 -1
  45. package/es2015/plugins/keyboard/keyboard.min.js +1 -1
  46. package/es2015/plugins/mobile-view/mobile-view.js +1 -1
  47. package/es2015/plugins/mobile-view/mobile-view.min.js +1 -1
  48. package/es2015/plugins/page-break/page-break.js +1 -1
  49. package/es2015/plugins/page-break/page-break.min.js +1 -1
  50. package/es2015/plugins/paste-code/paste-code.css +1 -1
  51. package/es2015/plugins/paste-code/paste-code.js +1 -1
  52. package/es2015/plugins/paste-code/paste-code.min.js +1 -1
  53. package/es2015/plugins/paste-from-word/paste-from-word.js +1 -1
  54. package/es2015/plugins/paste-from-word/paste-from-word.min.js +1 -1
  55. package/es2015/plugins/show-blocks/show-blocks.js +1 -1
  56. package/es2015/plugins/show-blocks/show-blocks.min.js +1 -1
  57. package/es2015/plugins/style/style.css +1 -1
  58. package/es2015/plugins/style/style.js +1 -1
  59. package/es2015/plugins/style/style.min.js +1 -1
  60. package/es2015/plugins/templates/templates.css +1 -1
  61. package/es2015/plugins/templates/templates.js +1 -1
  62. package/es2015/plugins/templates/templates.min.js +1 -1
  63. package/es2015/plugins/todo-list/todo-list.css +1 -1
  64. package/es2015/plugins/todo-list/todo-list.js +1 -1
  65. package/es2015/plugins/todo-list/todo-list.min.js +1 -1
  66. package/es2015/plugins/translate/translate.css +1 -1
  67. package/es2015/plugins/translate/translate.js +1 -1
  68. package/es2015/plugins/translate/translate.min.js +1 -1
  69. package/es2015/plugins/tune-block/tune-block.css +1 -1
  70. package/es2015/plugins/tune-block/tune-block.js +1 -1
  71. package/es2015/plugins/tune-block/tune-block.min.js +1 -1
  72. package/es2018/jodit.fat.min.js +12 -11
  73. package/es2018/jodit.min.js +11 -10
  74. package/es2018/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  75. package/es2018/plugins/autocomplete/autocomplete.min.js +1 -1
  76. package/es2018/plugins/backup/backup.min.js +1 -1
  77. package/es2018/plugins/button-generator/button-generator.min.js +1 -1
  78. package/es2018/plugins/change-case/change-case.min.js +1 -1
  79. package/es2018/plugins/color-picker/color-picker.min.js +1 -1
  80. package/es2018/plugins/emoji/emoji.min.js +1 -1
  81. package/es2018/plugins/export-docs/export-docs.min.js +1 -1
  82. package/es2018/plugins/finder/finder.min.js +13 -13
  83. package/es2018/plugins/google-maps/google-maps.min.js +1 -1
  84. package/es2018/plugins/google-search/google-search.min.js +1 -1
  85. package/es2018/plugins/highlight-signature/highlight-signature.min.js +1 -1
  86. package/es2018/plugins/iframe-editor/iframe-editor.min.js +1 -1
  87. package/es2018/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  88. package/es2018/plugins/keyboard/keyboard.min.js +1 -1
  89. package/es2018/plugins/mobile-view/mobile-view.min.js +1 -1
  90. package/es2018/plugins/page-break/page-break.min.js +1 -1
  91. package/es2018/plugins/paste-code/paste-code.min.js +1 -1
  92. package/es2018/plugins/paste-from-word/paste-from-word.min.js +1 -1
  93. package/es2018/plugins/show-blocks/show-blocks.min.js +1 -1
  94. package/es2018/plugins/style/style.min.js +1 -1
  95. package/es2018/plugins/templates/templates.min.js +1 -1
  96. package/es2018/plugins/todo-list/todo-list.min.js +1 -1
  97. package/es2018/plugins/translate/translate.min.js +1 -1
  98. package/es2018/plugins/tune-block/tune-block.min.js +1 -1
  99. package/es2021/jodit.css +1 -1
  100. package/es2021/jodit.fat.min.js +16 -15
  101. package/es2021/jodit.js +255 -91
  102. package/es2021/jodit.min.js +16 -15
  103. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  104. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  105. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  106. package/es2021/plugins/autocomplete/autocomplete.css +1 -1
  107. package/es2021/plugins/autocomplete/autocomplete.js +1 -1
  108. package/es2021/plugins/autocomplete/autocomplete.min.js +1 -1
  109. package/es2021/plugins/backup/backup.css +1 -1
  110. package/es2021/plugins/backup/backup.js +1 -1
  111. package/es2021/plugins/backup/backup.min.js +1 -1
  112. package/es2021/plugins/button-generator/button-generator.css +1 -1
  113. package/es2021/plugins/button-generator/button-generator.js +1 -1
  114. package/es2021/plugins/button-generator/button-generator.min.js +1 -1
  115. package/es2021/plugins/change-case/change-case.js +1 -1
  116. package/es2021/plugins/change-case/change-case.min.js +1 -1
  117. package/es2021/plugins/color-picker/color-picker.css +1 -1
  118. package/es2021/plugins/color-picker/color-picker.js +1 -1
  119. package/es2021/plugins/color-picker/color-picker.min.js +1 -1
  120. package/es2021/plugins/emoji/emoji.css +1 -1
  121. package/es2021/plugins/emoji/emoji.js +1 -1
  122. package/es2021/plugins/emoji/emoji.min.js +1 -1
  123. package/es2021/plugins/export-docs/export-docs.js +1 -1
  124. package/es2021/plugins/export-docs/export-docs.min.js +1 -1
  125. package/es2021/plugins/finder/finder.css +1 -1
  126. package/es2021/plugins/finder/finder.js +4 -1
  127. package/es2021/plugins/finder/finder.min.js +2 -2
  128. package/es2021/plugins/google-maps/google-maps.css +1 -1
  129. package/es2021/plugins/google-maps/google-maps.js +1 -1
  130. package/es2021/plugins/google-maps/google-maps.min.js +1 -1
  131. package/es2021/plugins/google-search/google-search.js +1 -1
  132. package/es2021/plugins/google-search/google-search.min.js +1 -1
  133. package/es2021/plugins/highlight-signature/highlight-signature.js +1 -1
  134. package/es2021/plugins/highlight-signature/highlight-signature.min.js +1 -1
  135. package/es2021/plugins/iframe-editor/iframe-editor.css +1 -1
  136. package/es2021/plugins/iframe-editor/iframe-editor.js +1 -1
  137. package/es2021/plugins/iframe-editor/iframe-editor.min.js +1 -1
  138. package/es2021/plugins/image-editor-pro/image-editor-pro.css +1 -1
  139. package/es2021/plugins/image-editor-pro/image-editor-pro.js +1 -1
  140. package/es2021/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  141. package/es2021/plugins/keyboard/keyboard.css +1 -1
  142. package/es2021/plugins/keyboard/keyboard.js +1 -1
  143. package/es2021/plugins/keyboard/keyboard.min.js +1 -1
  144. package/es2021/plugins/mobile-view/mobile-view.js +1 -1
  145. package/es2021/plugins/mobile-view/mobile-view.min.js +1 -1
  146. package/es2021/plugins/page-break/page-break.js +1 -1
  147. package/es2021/plugins/page-break/page-break.min.js +1 -1
  148. package/es2021/plugins/paste-code/paste-code.css +1 -1
  149. package/es2021/plugins/paste-code/paste-code.js +1 -1
  150. package/es2021/plugins/paste-code/paste-code.min.js +1 -1
  151. package/es2021/plugins/paste-from-word/paste-from-word.js +1 -1
  152. package/es2021/plugins/paste-from-word/paste-from-word.min.js +1 -1
  153. package/es2021/plugins/show-blocks/show-blocks.js +1 -1
  154. package/es2021/plugins/show-blocks/show-blocks.min.js +1 -1
  155. package/es2021/plugins/style/style.css +1 -1
  156. package/es2021/plugins/style/style.js +1 -1
  157. package/es2021/plugins/style/style.min.js +1 -1
  158. package/es2021/plugins/templates/templates.css +1 -1
  159. package/es2021/plugins/templates/templates.js +1 -1
  160. package/es2021/plugins/templates/templates.min.js +1 -1
  161. package/es2021/plugins/todo-list/todo-list.css +1 -1
  162. package/es2021/plugins/todo-list/todo-list.js +1 -1
  163. package/es2021/plugins/todo-list/todo-list.min.js +1 -1
  164. package/es2021/plugins/translate/translate.css +1 -1
  165. package/es2021/plugins/translate/translate.js +1 -1
  166. package/es2021/plugins/translate/translate.min.js +1 -1
  167. package/es2021/plugins/tune-block/tune-block.css +1 -1
  168. package/es2021/plugins/tune-block/tune-block.js +1 -1
  169. package/es2021/plugins/tune-block/tune-block.min.js +1 -1
  170. package/es2021.en/jodit.css +1 -1
  171. package/es2021.en/jodit.fat.min.js +16 -15
  172. package/es2021.en/jodit.js +255 -91
  173. package/es2021.en/jodit.min.js +17 -16
  174. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  175. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  176. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  177. package/es2021.en/plugins/autocomplete/autocomplete.css +1 -1
  178. package/es2021.en/plugins/autocomplete/autocomplete.js +1 -1
  179. package/es2021.en/plugins/autocomplete/autocomplete.min.js +1 -1
  180. package/es2021.en/plugins/backup/backup.css +1 -1
  181. package/es2021.en/plugins/backup/backup.js +1 -1
  182. package/es2021.en/plugins/backup/backup.min.js +1 -1
  183. package/es2021.en/plugins/button-generator/button-generator.css +1 -1
  184. package/es2021.en/plugins/button-generator/button-generator.js +1 -1
  185. package/es2021.en/plugins/button-generator/button-generator.min.js +1 -1
  186. package/es2021.en/plugins/change-case/change-case.js +1 -1
  187. package/es2021.en/plugins/change-case/change-case.min.js +1 -1
  188. package/es2021.en/plugins/color-picker/color-picker.css +1 -1
  189. package/es2021.en/plugins/color-picker/color-picker.js +1 -1
  190. package/es2021.en/plugins/color-picker/color-picker.min.js +1 -1
  191. package/es2021.en/plugins/emoji/emoji.css +1 -1
  192. package/es2021.en/plugins/emoji/emoji.js +1 -1
  193. package/es2021.en/plugins/emoji/emoji.min.js +1 -1
  194. package/es2021.en/plugins/export-docs/export-docs.js +1 -1
  195. package/es2021.en/plugins/export-docs/export-docs.min.js +1 -1
  196. package/es2021.en/plugins/finder/finder.css +1 -1
  197. package/es2021.en/plugins/finder/finder.js +4 -1
  198. package/es2021.en/plugins/finder/finder.min.js +2 -2
  199. package/es2021.en/plugins/google-maps/google-maps.css +1 -1
  200. package/es2021.en/plugins/google-maps/google-maps.js +1 -1
  201. package/es2021.en/plugins/google-maps/google-maps.min.js +1 -1
  202. package/es2021.en/plugins/google-search/google-search.js +1 -1
  203. package/es2021.en/plugins/google-search/google-search.min.js +1 -1
  204. package/es2021.en/plugins/highlight-signature/highlight-signature.js +1 -1
  205. package/es2021.en/plugins/highlight-signature/highlight-signature.min.js +1 -1
  206. package/es2021.en/plugins/iframe-editor/iframe-editor.css +1 -1
  207. package/es2021.en/plugins/iframe-editor/iframe-editor.js +1 -1
  208. package/es2021.en/plugins/iframe-editor/iframe-editor.min.js +1 -1
  209. package/es2021.en/plugins/image-editor-pro/image-editor-pro.css +1 -1
  210. package/es2021.en/plugins/image-editor-pro/image-editor-pro.js +1 -1
  211. package/es2021.en/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  212. package/es2021.en/plugins/keyboard/keyboard.css +1 -1
  213. package/es2021.en/plugins/keyboard/keyboard.js +1 -1
  214. package/es2021.en/plugins/keyboard/keyboard.min.js +1 -1
  215. package/es2021.en/plugins/mobile-view/mobile-view.js +1 -1
  216. package/es2021.en/plugins/mobile-view/mobile-view.min.js +1 -1
  217. package/es2021.en/plugins/page-break/page-break.js +1 -1
  218. package/es2021.en/plugins/page-break/page-break.min.js +1 -1
  219. package/es2021.en/plugins/paste-code/paste-code.css +1 -1
  220. package/es2021.en/plugins/paste-code/paste-code.js +1 -1
  221. package/es2021.en/plugins/paste-code/paste-code.min.js +1 -1
  222. package/es2021.en/plugins/paste-from-word/paste-from-word.js +1 -1
  223. package/es2021.en/plugins/paste-from-word/paste-from-word.min.js +1 -1
  224. package/es2021.en/plugins/show-blocks/show-blocks.js +1 -1
  225. package/es2021.en/plugins/show-blocks/show-blocks.min.js +1 -1
  226. package/es2021.en/plugins/style/style.css +1 -1
  227. package/es2021.en/plugins/style/style.js +1 -1
  228. package/es2021.en/plugins/style/style.min.js +1 -1
  229. package/es2021.en/plugins/templates/templates.css +1 -1
  230. package/es2021.en/plugins/templates/templates.js +1 -1
  231. package/es2021.en/plugins/templates/templates.min.js +1 -1
  232. package/es2021.en/plugins/todo-list/todo-list.css +1 -1
  233. package/es2021.en/plugins/todo-list/todo-list.js +1 -1
  234. package/es2021.en/plugins/todo-list/todo-list.min.js +1 -1
  235. package/es2021.en/plugins/translate/translate.css +1 -1
  236. package/es2021.en/plugins/translate/translate.js +1 -1
  237. package/es2021.en/plugins/translate/translate.min.js +1 -1
  238. package/es2021.en/plugins/tune-block/tune-block.css +1 -1
  239. package/es2021.en/plugins/tune-block/tune-block.js +1 -1
  240. package/es2021.en/plugins/tune-block/tune-block.min.js +1 -1
  241. package/es5/jodit.css +2 -2
  242. package/es5/jodit.fat.min.js +2 -2
  243. package/es5/jodit.js +357 -99
  244. package/es5/jodit.min.css +2 -2
  245. package/es5/jodit.min.js +2 -2
  246. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  247. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  248. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  249. package/es5/plugins/autocomplete/autocomplete.css +1 -1
  250. package/es5/plugins/autocomplete/autocomplete.js +1 -1
  251. package/es5/plugins/autocomplete/autocomplete.min.js +1 -1
  252. package/es5/plugins/backup/backup.css +1 -1
  253. package/es5/plugins/backup/backup.js +1 -1
  254. package/es5/plugins/backup/backup.min.js +1 -1
  255. package/es5/plugins/button-generator/button-generator.css +1 -1
  256. package/es5/plugins/button-generator/button-generator.js +1 -1
  257. package/es5/plugins/button-generator/button-generator.min.js +1 -1
  258. package/es5/plugins/change-case/change-case.js +1 -1
  259. package/es5/plugins/change-case/change-case.min.js +1 -1
  260. package/es5/plugins/color-picker/color-picker.css +1 -1
  261. package/es5/plugins/color-picker/color-picker.js +1 -1
  262. package/es5/plugins/color-picker/color-picker.min.js +1 -1
  263. package/es5/plugins/emoji/emoji.css +1 -1
  264. package/es5/plugins/emoji/emoji.js +1 -1
  265. package/es5/plugins/emoji/emoji.min.js +1 -1
  266. package/es5/plugins/export-docs/export-docs.js +1 -1
  267. package/es5/plugins/export-docs/export-docs.min.js +1 -1
  268. package/es5/plugins/finder/finder.css +1 -1
  269. package/es5/plugins/finder/finder.js +4 -1
  270. package/es5/plugins/finder/finder.min.js +2 -2
  271. package/es5/plugins/google-maps/google-maps.css +1 -1
  272. package/es5/plugins/google-maps/google-maps.js +1 -1
  273. package/es5/plugins/google-maps/google-maps.min.js +1 -1
  274. package/es5/plugins/google-search/google-search.js +1 -1
  275. package/es5/plugins/google-search/google-search.min.js +1 -1
  276. package/es5/plugins/highlight-signature/highlight-signature.js +1 -1
  277. package/es5/plugins/highlight-signature/highlight-signature.min.js +1 -1
  278. package/es5/plugins/iframe-editor/iframe-editor.css +1 -1
  279. package/es5/plugins/iframe-editor/iframe-editor.js +1 -1
  280. package/es5/plugins/iframe-editor/iframe-editor.min.js +1 -1
  281. package/es5/plugins/image-editor-pro/image-editor-pro.css +1 -1
  282. package/es5/plugins/image-editor-pro/image-editor-pro.js +1 -1
  283. package/es5/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  284. package/es5/plugins/keyboard/keyboard.css +1 -1
  285. package/es5/plugins/keyboard/keyboard.js +1 -1
  286. package/es5/plugins/keyboard/keyboard.min.js +1 -1
  287. package/es5/plugins/mobile-view/mobile-view.js +1 -1
  288. package/es5/plugins/mobile-view/mobile-view.min.js +1 -1
  289. package/es5/plugins/page-break/page-break.js +1 -1
  290. package/es5/plugins/page-break/page-break.min.js +1 -1
  291. package/es5/plugins/paste-code/paste-code.css +1 -1
  292. package/es5/plugins/paste-code/paste-code.js +1 -1
  293. package/es5/plugins/paste-code/paste-code.min.js +1 -1
  294. package/es5/plugins/paste-from-word/paste-from-word.js +1 -1
  295. package/es5/plugins/paste-from-word/paste-from-word.min.js +1 -1
  296. package/es5/plugins/show-blocks/show-blocks.js +1 -1
  297. package/es5/plugins/show-blocks/show-blocks.min.js +1 -1
  298. package/es5/plugins/style/style.css +1 -1
  299. package/es5/plugins/style/style.js +1 -1
  300. package/es5/plugins/style/style.min.js +1 -1
  301. package/es5/plugins/templates/templates.css +1 -1
  302. package/es5/plugins/templates/templates.js +1 -1
  303. package/es5/plugins/templates/templates.min.js +1 -1
  304. package/es5/plugins/todo-list/todo-list.css +1 -1
  305. package/es5/plugins/todo-list/todo-list.js +1 -1
  306. package/es5/plugins/todo-list/todo-list.min.js +1 -1
  307. package/es5/plugins/translate/translate.css +1 -1
  308. package/es5/plugins/translate/translate.js +1 -1
  309. package/es5/plugins/translate/translate.min.js +1 -1
  310. package/es5/plugins/tune-block/tune-block.css +1 -1
  311. package/es5/plugins/tune-block/tune-block.js +1 -1
  312. package/es5/plugins/tune-block/tune-block.min.js +1 -1
  313. package/es5/polyfills.fat.min.js +1 -1
  314. package/es5/polyfills.js +1 -1
  315. package/es5/polyfills.min.js +1 -1
  316. package/esm/plugins/finder/browser.js +1 -1
  317. package/package.json +1 -1
package/es5/jodit.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * jodit-pro - PRO Version of Jodit Editor
3
3
  * Author: Chupurnov Valerii <chupurnov@gmail.com>
4
- * Version: v4.15.19
4
+ * Version: v4.16.0
5
5
  * Url: https://xdsoft.net/jodit/pro/
6
6
  * License(s): SEE LICENSE IN LICENSE.md
7
7
  */
@@ -738,6 +738,25 @@ var ConfigPrototype = {};
738
738
  /**
739
739
  * Default width (in pixels) applied to images inserted into the editor
740
740
  */ this.imageDefaultWidth = 300;
741
+ /**
742
+ * Alignment given to images inserted into the editor. `'normal'` leaves
743
+ * them unaligned
744
+ */ this.imageDefaultAlign = 'normal';
745
+ /**
746
+ * Class names to align images with, instead of an inline `float` or
747
+ * `margin`. Aligning an image removes every class listed here and adds the
748
+ * chosen alignment's, which can be several separated by spaces.
749
+ *
750
+ * ```javascript
751
+ * Jodit.make('#editor', {
752
+ * imageAlignClasses: {
753
+ * left: 'align-left',
754
+ * right: 'align-right',
755
+ * center: 'align-center'
756
+ * }
757
+ * });
758
+ * ```
759
+ */ this.imageAlignClasses = null;
741
760
  /**
742
761
  * Do not display these buttons that are on the list
743
762
  *
@@ -2289,7 +2308,7 @@ function _unsupported_iterable_to_array(o, minLen) {
2289
2308
  if (n === "Map" || n === "Set") return Array.from(n);
2290
2309
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
2291
2310
  }
2292
- var APP_VERSION = "4.15.19";
2311
+ var APP_VERSION = "4.16.0";
2293
2312
  // prettier-ignore
2294
2313
  var ES = "es5";
2295
2314
  var IS_ES_MODERN = false;
@@ -8085,6 +8104,7 @@ __webpack_require__.r(__webpack_exports__);
8085
8104
  /* harmony export */ getContentWidth: function() { return /* reexport safe */ _size_index_js__WEBPACK_IMPORTED_MODULE_6__.getContentWidth; },
8086
8105
  /* harmony export */ getDataTransfer: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.getDataTransfer; },
8087
8106
  /* harmony export */ getFixedPositionOffset: function() { return /* reexport safe */ _size_index_js__WEBPACK_IMPORTED_MODULE_6__.getFixedPositionOffset; },
8107
+ /* harmony export */ getHAlign: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.getHAlign; },
8088
8108
  /* harmony export */ getPropertyDescriptor: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.getPropertyDescriptor; },
8089
8109
  /* harmony export */ getScrollParent: function() { return /* reexport safe */ _size_index_js__WEBPACK_IMPORTED_MODULE_6__.getScrollParent; },
8090
8110
  /* harmony export */ getXPathByElement: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.getXPathByElement; },
@@ -9189,21 +9209,71 @@ function trimChars(value, chars) {
9189
9209
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
9190
9210
  /* harmony export */ alignElement: function() { return /* binding */ alignElement; },
9191
9211
  /* harmony export */ clearAlign: function() { return /* binding */ clearAlign; },
9212
+ /* harmony export */ getHAlign: function() { return /* binding */ getHAlign; },
9192
9213
  /* harmony export */ hAlignElement: function() { return /* binding */ hAlignElement; }
9193
9214
  /* harmony export */ });
9194
9215
  /* harmony import */ var _dom_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(22732);
9195
9216
  /* harmony import */ var _attr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29960);
9196
9217
  /* harmony import */ var _css_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(41180);
9218
+ function _array_like_to_array(arr, len) {
9219
+ if (len == null || len > arr.length) len = arr.length;
9220
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
9221
+ return arr2;
9222
+ }
9223
+ function _array_without_holes(arr) {
9224
+ if (Array.isArray(arr)) return _array_like_to_array(arr);
9225
+ }
9226
+ function _iterable_to_array(iter) {
9227
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) {
9228
+ return Array.from(iter);
9229
+ }
9230
+ }
9231
+ function _non_iterable_spread() {
9232
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
9233
+ }
9234
+ function _to_consumable_array(arr) {
9235
+ return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
9236
+ }
9237
+ function _unsupported_iterable_to_array(o, minLen) {
9238
+ if (!o) return;
9239
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
9240
+ var n = Object.prototype.toString.call(o).slice(8, -1);
9241
+ if (n === "Object" && o.constructor) n = o.constructor.name;
9242
+ if (n === "Map" || n === "Set") return Array.from(n);
9243
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
9244
+ }
9197
9245
  /*!
9198
9246
  * Jodit Editor (https://xdsoft.net/jodit/)
9199
9247
  * Released under MIT see LICENSE.txt in the project root for license information.
9200
9248
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
9201
- */
9249
+ */ ;
9202
9250
 
9203
9251
 
9252
+ var classNames = function classNames(value) {
9253
+ return (value !== null && value !== void 0 ? value : '').split(/\s+/).filter(Boolean);
9254
+ };
9204
9255
  /**
9205
- * Align image
9206
- */ function hAlignElement(image, align) {
9256
+ * Align image, with `classes` (see `imageAlignClasses`) instead of inline
9257
+ * styles when they are given
9258
+ */ function hAlignElement(image, align, classes) {
9259
+ if (classes) {
9260
+ var _image_classList, _image_classList1;
9261
+ hAlignElement(image, 'normal');
9262
+ Object.values(classes).forEach(function(value) {
9263
+ return (_image_classList = image.classList).remove.apply(_image_classList, _to_consumable_array(classNames(value)));
9264
+ });
9265
+ (_image_classList1 = image.classList).add.apply(_image_classList1, _to_consumable_array(classNames(classes[align || 'normal'])));
9266
+ [
9267
+ 'class',
9268
+ 'style'
9269
+ ].forEach(function(name) {
9270
+ var _a;
9271
+ if (!((_a = (0,_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(image, name)) === null || _a === void 0 ? void 0 : _a.trim())) {
9272
+ (0,_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(image, name, null);
9273
+ }
9274
+ });
9275
+ return;
9276
+ }
9207
9277
  if (align && align !== 'normal') {
9208
9278
  if (align !== 'center') {
9209
9279
  (0,_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(image, 'float', align);
@@ -9226,6 +9296,34 @@ function trimChars(value, chars) {
9226
9296
  ;(0,_css_js__WEBPACK_IMPORTED_MODULE_2__.clearCenterAlign)(image);
9227
9297
  }
9228
9298
  }
9299
+ /**
9300
+ * The alignment `hAlignElement` has set on an element
9301
+ */ function getHAlign(elm, classes) {
9302
+ if (classes) {
9303
+ for(var _i = 0, _iter = [
9304
+ 'left',
9305
+ 'right',
9306
+ 'center',
9307
+ 'normal'
9308
+ ]; _i < _iter.length; _i++){
9309
+ var align = _iter[_i];
9310
+ var names = classNames(classes[align]);
9311
+ if (names.length && names.every(function(name) {
9312
+ return elm.classList.contains(name);
9313
+ })) {
9314
+ return align;
9315
+ }
9316
+ }
9317
+ }
9318
+ var float = (0,_css_js__WEBPACK_IMPORTED_MODULE_2__.cssInline)(elm, 'float').toLowerCase();
9319
+ if (float === 'left' || float === 'right') {
9320
+ return float;
9321
+ }
9322
+ if ((0,_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(elm, 'display') === 'block' && (0,_css_js__WEBPACK_IMPORTED_MODULE_2__.cssInline)(elm, 'margin-left') === 'auto' && (0,_css_js__WEBPACK_IMPORTED_MODULE_2__.cssInline)(elm, 'margin-right') === 'auto') {
9323
+ return 'center';
9324
+ }
9325
+ return 'normal';
9326
+ }
9229
9327
  /**
9230
9328
  * Remove text-align style for all selected children
9231
9329
  */ function clearAlign(node) {
@@ -10731,6 +10829,7 @@ var getClassName = function getClassName(obj) {
10731
10829
  /* harmony export */ get: function() { return /* reexport safe */ _get_js__WEBPACK_IMPORTED_MODULE_15__.get; },
10732
10830
  /* harmony export */ getClassName: function() { return /* reexport safe */ _get_class_name_js__WEBPACK_IMPORTED_MODULE_16__.getClassName; },
10733
10831
  /* harmony export */ getDataTransfer: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_27__.getDataTransfer; },
10832
+ /* harmony export */ getHAlign: function() { return /* reexport safe */ _align_js__WEBPACK_IMPORTED_MODULE_0__.getHAlign; },
10734
10833
  /* harmony export */ getPropertyDescriptor: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_27__.getPropertyDescriptor; },
10735
10834
  /* harmony export */ getXPathByElement: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_24__.getXPathByElement; },
10736
10835
  /* harmony export */ hAlignElement: function() { return /* reexport safe */ _align_js__WEBPACK_IMPORTED_MODULE_0__.hAlignElement; },
@@ -13630,10 +13729,11 @@ function findCorrectCurrentNode(node, range, rightMode, isCollapsed, checkChild,
13630
13729
  /* harmony import */ var _dom_dom_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2748);
13631
13730
  /* harmony import */ var _helpers_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21537);
13632
13731
  /* harmony import */ var _helpers_checker_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(27613);
13633
- /* harmony import */ var _helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(38837);
13634
- /* harmony import */ var _helpers_move_the_node_along_the_edge_outward_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(43463);
13635
- /* harmony import */ var _style_commit_style_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(25639);
13636
- /* harmony import */ var _helpers_index_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(45124);
13732
+ /* harmony import */ var _helpers_utils_align_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(25726);
13733
+ /* harmony import */ var _helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(38837);
13734
+ /* harmony import */ var _helpers_move_the_node_along_the_edge_outward_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(43463);
13735
+ /* harmony import */ var _style_commit_style_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(25639);
13736
+ /* harmony import */ var _helpers_index_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(45124);
13637
13737
  function _array_like_to_array(arr, len) {
13638
13738
  if (len == null || len > arr.length) len = arr.length;
13639
13739
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
@@ -13835,6 +13935,7 @@ function _unsupported_iterable_to_array(o, minLen) {
13835
13935
 
13836
13936
 
13837
13937
 
13938
+
13838
13939
  var Selection = /*#__PURE__*/ function() {
13839
13940
  "use strict";
13840
13941
  function Selection(jodit) {
@@ -14414,7 +14515,7 @@ var Selection = /*#__PURE__*/ function() {
14414
14515
  return node;
14415
14516
  }
14416
14517
  if (!_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isText(node)) {
14417
- var ret = (0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_8__.findCorrectCurrentNode)(node, range, rightMode, sel.isCollapsed, checkChild, child);
14518
+ var ret = (0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_9__.findCorrectCurrentNode)(node, range, rightMode, sel.isCollapsed, checkChild, child);
14418
14519
  node = ret.node;
14419
14520
  rightMode = ret.rightMode;
14420
14521
  }
@@ -14575,6 +14676,10 @@ var Selection = /*#__PURE__*/ function() {
14575
14676
  if (styles && (typeof styles === "undefined" ? "undefined" : _type_of(styles)) === 'object') {
14576
14677
  (0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.css)(image, styles);
14577
14678
  }
14679
+ var _this_j_o = this.j.o, imageDefaultAlign = _this_j_o.imageDefaultAlign, imageAlignClasses = _this_j_o.imageAlignClasses;
14680
+ if (imageDefaultAlign && imageDefaultAlign !== 'normal') {
14681
+ (0,_helpers_utils_align_js__WEBPACK_IMPORTED_MODULE_5__.hAlignElement)(image, imageDefaultAlign, imageAlignClasses);
14682
+ }
14578
14683
  var onload = function onload1() {
14579
14684
  if (image.naturalHeight < image.offsetHeight || image.naturalWidth < image.offsetWidth) {
14580
14685
  (0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.css)(image, {
@@ -14730,7 +14835,7 @@ var Selection = /*#__PURE__*/ function() {
14730
14835
  };
14731
14836
  // check right offset
14732
14837
  if (_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isText(container)) {
14733
- if ((0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_8__.cursorInTheEdgeOfString)(container, offset, start, end)) {
14838
+ if ((0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_9__.cursorInTheEdgeOfString)(container, offset, start, end)) {
14734
14839
  return false;
14735
14840
  }
14736
14841
  } else {
@@ -15341,8 +15446,8 @@ var Selection = /*#__PURE__*/ function() {
15341
15446
  * ```
15342
15447
  */ key: "commitStyle",
15343
15448
  value: function commitStyle(options) {
15344
- ;(0,_helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_5__.assert)((0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.size)(options) > 0, 'Need to pass at least one option');
15345
- var styleElm = new _style_commit_style_js__WEBPACK_IMPORTED_MODULE_7__.CommitStyle(options);
15449
+ ;(0,_helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_6__.assert)((0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.size)(options) > 0, 'Need to pass at least one option');
15450
+ var styleElm = new _style_commit_style_js__WEBPACK_IMPORTED_MODULE_8__.CommitStyle(options);
15346
15451
  styleElm.apply(this.j);
15347
15452
  }
15348
15453
  },
@@ -15403,7 +15508,7 @@ var Selection = /*#__PURE__*/ function() {
15403
15508
  return _dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isEmptyTextNode(node) && _dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove(node);
15404
15509
  });
15405
15510
  };
15406
- (0,_helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_5__.assert)(currentBox.parentNode, 'Splitting fails');
15511
+ (0,_helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_6__.assert)(currentBox.parentNode, 'Splitting fails');
15407
15512
  try {
15408
15513
  clearEmpties(fragment);
15409
15514
  clearEmpties(currentBox);
@@ -15466,7 +15571,7 @@ var Selection = /*#__PURE__*/ function() {
15466
15571
  var r = range.cloneRange();
15467
15572
  r.collapse(start);
15468
15573
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeInsertNode(r, fake);
15469
- (0,_helpers_move_the_node_along_the_edge_outward_js__WEBPACK_IMPORTED_MODULE_6__.moveTheNodeAlongTheEdgeOutward)(fake, start, _this.j.editor);
15574
+ (0,_helpers_move_the_node_along_the_edge_outward_js__WEBPACK_IMPORTED_MODULE_7__.moveTheNodeAlongTheEdgeOutward)(fake, start, _this.j.editor);
15470
15575
  return fake;
15471
15576
  };
15472
15577
  var leftFake = moveMaxEdgeFake(true);
@@ -19239,6 +19344,7 @@ var UIButton = /*#__PURE__*/ function(UIElement) {
19239
19344
  this.name = this.state.name;
19240
19345
  (0,_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_8__.attr)(this.container, 'data-ref', this.state.name);
19241
19346
  (0,_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_8__.attr)(this.container, 'ref', this.state.name);
19347
+ this.updateAriaLabel();
19242
19348
  }
19243
19349
  },
19244
19350
  {
@@ -19256,9 +19362,12 @@ var UIButton = /*#__PURE__*/ function(UIElement) {
19256
19362
  key: "updateAriaLabel",
19257
19363
  value: function updateAriaLabel() {
19258
19364
  var hasText = this.state.text.trim().length > 0;
19259
- var i8nTooltip = this.state.tooltip ? this.jodit.i18n(this.state.tooltip) : null;
19260
- (0,_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_8__.attr)(this.container, 'aria-label', i8nTooltip);
19261
- (0,_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_8__.attr)(this.button, 'aria-label', !hasText ? i8nTooltip : null);
19365
+ // An icon-only button without a tooltip would have no accessible
19366
+ // name at all — fall back to its raw name (not translated: control
19367
+ // names are identifiers, not i18n keys).
19368
+ var label = this.state.tooltip ? this.jodit.i18n(this.state.tooltip) : !hasText && this.state.name ? this.state.name : null;
19369
+ (0,_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_8__.attr)(this.container, 'aria-label', label);
19370
+ (0,_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_8__.attr)(this.button, 'aria-label', !hasText ? label : null);
19262
19371
  }
19263
19372
  },
19264
19373
  {
@@ -21331,7 +21440,7 @@ var UIFileInput = /*#__PURE__*/ function(UIInput1) {
21331
21440
  {
21332
21441
  key: "createNativeInput",
21333
21442
  value: function createNativeInput(options) {
21334
- return this.j.create.fromHTML('<input\n type="file"\n accept="'.concat(options.onlyImages ? 'image/*' : '*', '"\n tabindex="-1"\n dir="auto"\n multiple=""\n />'));
21443
+ return this.j.create.fromHTML('<input\n type="file"\n accept="'.concat(options.onlyImages ? 'image/*' : '*', '"\n aria-label="').concat(this.j.i18n(options.tooltip || 'Upload'), '"\n tabindex="-1"\n dir="auto"\n multiple=""\n />'));
21335
21444
  }
21336
21445
  }
21337
21446
  ]);
@@ -22294,10 +22403,13 @@ var UIGroup = UIGroup_1 = /*#__PURE__*/ function(UIElement) {
22294
22403
  }
22295
22404
  },
22296
22405
  {
22297
- key: "getRole",
22406
+ /**
22407
+ * A generic container: `group` allows any children. Toolbar button groups
22408
+ * are lists of `listitem`s and get `role="list"` explicitly from `UIList`.
22409
+ */ key: "getRole",
22298
22410
  value: function getRole() {
22299
22411
  var _a;
22300
- return ((_a = this.options) === null || _a === void 0 ? void 0 : _a.role) || 'list';
22412
+ return ((_a = this.options) === null || _a === void 0 ? void 0 : _a.role) || 'group';
22301
22413
  }
22302
22414
  },
22303
22415
  {
@@ -22624,10 +22736,11 @@ var UIList = /*#__PURE__*/ function(UIGroup1) {
22624
22736
  /**
22625
22737
  * Make new group and append it in list of elements
22626
22738
  */ key: "makeGroup",
22627
- value: function makeGroup(role) {
22628
- return new _group_js__WEBPACK_IMPORTED_MODULE_6__.UIGroup(this.jodit, [], role ? {
22739
+ value: function makeGroup() {
22740
+ var role = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 'list';
22741
+ return new _group_js__WEBPACK_IMPORTED_MODULE_6__.UIGroup(this.jodit, [], {
22629
22742
  role: role
22630
- } : undefined);
22743
+ });
22631
22744
  }
22632
22745
  },
22633
22746
  {
@@ -33301,12 +33414,13 @@ function _instanceof(left, right) {
33301
33414
  /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(580);
33302
33415
  /* harmony import */ var _core_helpers_array_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(76855);
33303
33416
  /* harmony import */ var _core_helpers_checker_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(27613);
33304
- /* harmony import */ var _core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(43555);
33305
- /* harmony import */ var _core_helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(38837);
33306
- /* harmony import */ var _core_ui_index_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(67510);
33307
- /* harmony import */ var _core_view_view_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(35608);
33308
- /* harmony import */ var _core_view_view_with_toolbar_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(84075);
33309
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(6441);
33417
+ /* harmony import */ var _core_helpers_html_strip_tags_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(91003);
33418
+ /* harmony import */ var _core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(43555);
33419
+ /* harmony import */ var _core_helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(38837);
33420
+ /* harmony import */ var _core_ui_index_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(67510);
33421
+ /* harmony import */ var _core_view_view_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(35608);
33422
+ /* harmony import */ var _core_view_view_with_toolbar_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(84075);
33423
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(6441);
33310
33424
  function _assert_this_initialized(self1) {
33311
33425
  if (self1 === void 0) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
33312
33426
  return self1;
@@ -33467,7 +33581,8 @@ var Dialog_1;
33467
33581
 
33468
33582
 
33469
33583
 
33470
- _config_js__WEBPACK_IMPORTED_MODULE_12__.Config.prototype.dialog = {
33584
+
33585
+ _config_js__WEBPACK_IMPORTED_MODULE_13__.Config.prototype.dialog = {
33471
33586
  namespace: '',
33472
33587
  extraButtons: [],
33473
33588
  /**
@@ -33483,7 +33598,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_12__.Config.prototype.dialog = {
33483
33598
  toolbarButtonSize: 'middle',
33484
33599
  zIndex: 'inherit'
33485
33600
  };
33486
- _config_js__WEBPACK_IMPORTED_MODULE_12__.Config.prototype.controls.dialog = {
33601
+ _config_js__WEBPACK_IMPORTED_MODULE_13__.Config.prototype.controls.dialog = {
33487
33602
  close: {
33488
33603
  icon: 'cancel',
33489
33604
  exec: function exec(dialog) {
@@ -33538,7 +33653,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_12__.Config.prototype.controls.dialog = {
33538
33653
  * True, if dialog was opened
33539
33654
  */ _this.isOpened = false;
33540
33655
  var self1 = _this;
33541
- self1.options = (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_7__.ConfigProto)(options, (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_7__.ConfigProto)(_config_js__WEBPACK_IMPORTED_MODULE_12__.Config.prototype.dialog, Dialog_1.defaultOptions));
33656
+ self1.options = (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_8__.ConfigProto)(options, (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_8__.ConfigProto)(_config_js__WEBPACK_IMPORTED_MODULE_13__.Config.prototype.dialog, Dialog_1.defaultOptions));
33542
33657
  // Attach event handlers passed via `options.events` to the dialog's own
33543
33658
  // emitter (as FileBrowser already does), so a consumer — e.g. a plugin
33544
33659
  // forwarding the editor's `events` config — can observe `afterOpen` /
@@ -33547,38 +33662,38 @@ _config_js__WEBPACK_IMPORTED_MODULE_12__.Config.prototype.controls.dialog = {
33547
33662
  self1.attachEvents(self1.options);
33548
33663
  _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_3__.Dom.safeRemove(self1.container);
33549
33664
  var n = _this.getFullElName.bind(_this);
33550
- self1.container = _this.c.fromHTML('<div class="jodit jodit-dialog '.concat(_this.componentName, '">\n <div class="').concat(n('overlay'), '"></div>\n <div class="').concat(_this.getFullElName('panel'), '">\n <div class="').concat(n('header'), '">\n <div class="').concat(n('header-title'), '"></div>\n <div class="').concat(n('header-toolbar'), '"></div>\n </div>\n <div class="').concat(n('content'), '"></div>\n <div class="').concat(n('footer'), '"></div>\n <div class="').concat(n('resizer'), '">').concat(_core_ui_index_js__WEBPACK_IMPORTED_MODULE_9__.Icon.get('resize_handler'), "</div>\n </div>\n </div>"));
33665
+ self1.container = _this.c.fromHTML('<div class="jodit jodit-dialog '.concat(_this.componentName, '">\n <div class="').concat(n('overlay'), '"></div>\n <div class="').concat(_this.getFullElName('panel'), '">\n <div class="').concat(n('header'), '">\n <div class="').concat(n('header-title'), '"></div>\n <div class="').concat(n('header-toolbar'), '"></div>\n </div>\n <div class="').concat(n('content'), '"></div>\n <div class="').concat(n('footer'), '"></div>\n <div class="').concat(n('resizer'), '">').concat(_core_ui_index_js__WEBPACK_IMPORTED_MODULE_10__.Icon.get('resize_handler'), "</div>\n </div>\n </div>"));
33551
33666
  if (self1.options.direction === 'rtl') {
33552
- (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_7__.css)(self1.container, 'direction', 'rtl');
33553
- (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_7__.attr)(self1.container, 'dir', 'rtl');
33667
+ (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_8__.css)(self1.container, 'direction', 'rtl');
33668
+ (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_8__.attr)(self1.container, 'dir', 'rtl');
33554
33669
  }
33555
33670
  if (_this.o.zIndex) {
33556
- (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_7__.css)(_this.container, 'zIndex', _this.o.zIndex.toString());
33671
+ (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_8__.css)(_this.container, 'zIndex', _this.o.zIndex.toString());
33557
33672
  }
33558
- ;(0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_7__.attr)(self1.container, 'role', 'dialog');
33673
+ ;(0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_8__.attr)(self1.container, 'role', 'dialog');
33559
33674
  Object.defineProperty(self1.container, 'component', {
33560
33675
  value: _this
33561
33676
  });
33562
33677
  self1.setMod('theme', self1.o.theme || 'default').setMod('resizable', Boolean(self1.o.resizable));
33563
33678
  var dialog = self1.getElm('panel');
33564
- (0,_core_helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_8__.assert)(dialog != null, 'Panel element does not exist');
33679
+ (0,_core_helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_9__.assert)(dialog != null, 'Panel element does not exist');
33565
33680
  var resizer = self1.getElm('resizer');
33566
- (0,_core_helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_8__.assert)(resizer != null, 'Resizer element does not exist');
33681
+ (0,_core_helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_9__.assert)(resizer != null, 'Resizer element does not exist');
33567
33682
  var dialogbox_header = self1.getElm('header-title');
33568
- (0,_core_helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_8__.assert)(dialogbox_header != null, 'header-title element does not exist');
33683
+ (0,_core_helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_9__.assert)(dialogbox_header != null, 'header-title element does not exist');
33569
33684
  var dialogbox_content = self1.getElm('content');
33570
- (0,_core_helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_8__.assert)(dialogbox_content != null, 'Content element does not exist');
33685
+ (0,_core_helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_9__.assert)(dialogbox_content != null, 'Content element does not exist');
33571
33686
  var dialogbox_footer = self1.getElm('footer');
33572
- (0,_core_helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_8__.assert)(dialogbox_footer != null, 'Footer element does not exist');
33687
+ (0,_core_helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_9__.assert)(dialogbox_footer != null, 'Footer element does not exist');
33573
33688
  var dialogbox_toolbar = self1.getElm('header-toolbar');
33574
- (0,_core_helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_8__.assert)(dialogbox_toolbar != null, 'header-toolbar element does not exist');
33689
+ (0,_core_helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_9__.assert)(dialogbox_toolbar != null, 'header-toolbar element does not exist');
33575
33690
  _this.dialog = dialog;
33576
33691
  _this.resizer = resizer;
33577
33692
  _this.dialogbox_header = dialogbox_header;
33578
33693
  _this.dialogbox_content = dialogbox_content;
33579
33694
  _this.dialogbox_footer = dialogbox_footer;
33580
33695
  _this.dialogbox_toolbar = dialogbox_toolbar;
33581
- (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_7__.css)(self1.dialog, {
33696
+ (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_8__.css)(self1.dialog, {
33582
33697
  maxWidth: self1.options.maxWidth,
33583
33698
  minHeight: self1.options.minHeight,
33584
33699
  minWidth: self1.options.minWidth
@@ -33591,7 +33706,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_12__.Config.prototype.controls.dialog = {
33591
33706
  _this.e.on(self1.container, 'close_dialog', self1.close).on(_this.ow, 'keydown', _this.__onEsc).on(_this.ow, 'resize', _this.__onResize);
33592
33707
  if (_this.o.closeOnClickOverlay) {
33593
33708
  var overlay = self1.getElm('overlay');
33594
- (0,_core_helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_8__.assert)(overlay != null, 'Overlay element does not exist');
33709
+ (0,_core_helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_9__.assert)(overlay != null, 'Overlay element does not exist');
33595
33710
  _this.e.on(overlay, 'click', self1.close);
33596
33711
  }
33597
33712
  return _this;
@@ -33675,8 +33790,8 @@ _config_js__WEBPACK_IMPORTED_MODULE_12__.Config.prototype.controls.dialog = {
33675
33790
  this.draggable = true;
33676
33791
  this.startX = e.clientX;
33677
33792
  this.startY = e.clientY;
33678
- this.startPoint.x = (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_7__.css)(this.dialog, 'left');
33679
- this.startPoint.y = (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_7__.css)(this.dialog, 'top');
33793
+ this.startPoint.x = (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_8__.css)(this.dialog, 'left');
33794
+ this.startPoint.y = (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_8__.css)(this.dialog, 'top');
33680
33795
  this.setMaxZIndex();
33681
33796
  if (e.cancelable) {
33682
33797
  e.preventDefault();
@@ -33784,7 +33899,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_12__.Config.prototype.controls.dialog = {
33784
33899
  if (h == null) {
33785
33900
  h = this.dialog.offsetHeight;
33786
33901
  }
33787
- ;(0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_7__.css)(this.dialog, {
33902
+ ;(0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_8__.css)(this.dialog, {
33788
33903
  width: w,
33789
33904
  height: h
33790
33905
  });
@@ -33824,7 +33939,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_12__.Config.prototype.controls.dialog = {
33824
33939
  this.moved = Math.abs(x - left) > 100 || Math.abs(y - top) > 100;
33825
33940
  }
33826
33941
  // strings on purpose: `css()` would truncate fractional pixels
33827
- ;(0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_7__.css)(this.dialog, {
33942
+ ;(0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_8__.css)(this.dialog, {
33828
33943
  left: (x || left) + 'px',
33829
33944
  top: (y || top) + 'px'
33830
33945
  });
@@ -33847,6 +33962,12 @@ _config_js__WEBPACK_IMPORTED_MODULE_12__.Config.prototype.controls.dialog = {
33847
33962
  */ key: "setHeader",
33848
33963
  value: function setHeader(content) {
33849
33964
  this.setElements(this.dialogbox_header, content);
33965
+ // `role="dialog"` needs an accessible name; a text title is the
33966
+ // natural one (element titles are left to the caller).
33967
+ if ((0,_core_helpers_checker_index_js__WEBPACK_IMPORTED_MODULE_6__.isString)(content)) {
33968
+ var name = (0,_core_helpers_html_strip_tags_js__WEBPACK_IMPORTED_MODULE_7__.stripTags)(content, this.od).trim();
33969
+ (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_8__.attr)(this.container, 'aria-label', name || null);
33970
+ }
33850
33971
  return this;
33851
33972
  }
33852
33973
  },
@@ -33913,7 +34034,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_12__.Config.prototype.controls.dialog = {
33913
34034
  * Get zIndex from dialog
33914
34035
  */ key: "getZIndex",
33915
34036
  value: function getZIndex() {
33916
- return parseInt((0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_7__.css)(this.container, 'zIndex'), 10) || 0;
34037
+ return parseInt((0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_8__.css)(this.container, 'zIndex'), 10) || 0;
33917
34038
  }
33918
34039
  },
33919
34040
  {
@@ -33942,7 +34063,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_12__.Config.prototype.controls.dialog = {
33942
34063
  this.__openedSiblings().forEach(function(dialog) {
33943
34064
  maxZIndex = Math.max(dialog.getZIndex(), maxZIndex);
33944
34065
  });
33945
- (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_7__.css)(this.container, 'zIndex', (maxZIndex + 1).toString());
34066
+ (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_8__.css)(this.container, 'zIndex', (maxZIndex + 1).toString());
33946
34067
  }
33947
34068
  },
33948
34069
  {
@@ -33998,7 +34119,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_12__.Config.prototype.controls.dialog = {
33998
34119
  this.setPosition(this.offsetX, this.offsetY);
33999
34120
  this.setMaxZIndex();
34000
34121
  } else {
34001
- (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_7__.css)(this.container, 'zIndex', null);
34122
+ (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_8__.css)(this.container, 'zIndex', null);
34002
34123
  }
34003
34124
  if (this.o.fullsize) {
34004
34125
  this.toggleFullSize(true);
@@ -34103,12 +34224,12 @@ _config_js__WEBPACK_IMPORTED_MODULE_12__.Config.prototype.controls.dialog = {
34103
34224
  }
34104
34225
  ]);
34105
34226
  return Dialog;
34106
- }(_core_view_view_with_toolbar_js__WEBPACK_IMPORTED_MODULE_11__.ViewWithToolbar);
34227
+ }(_core_view_view_with_toolbar_js__WEBPACK_IMPORTED_MODULE_12__.ViewWithToolbar);
34107
34228
  /**
34108
34229
  * Registry of the currently opened dialogs. Replaces a DOM scan of the
34109
34230
  * whole `destination` (usually `document.body`) for every z-index update.
34110
34231
  */ Dialog.__opened = new Set();
34111
- Dialog.defaultOptions = _object_spread_props(_object_spread({}, _core_view_view_js__WEBPACK_IMPORTED_MODULE_10__.View.defaultOptions), {
34232
+ Dialog.defaultOptions = _object_spread_props(_object_spread({}, _core_view_view_js__WEBPACK_IMPORTED_MODULE_11__.View.defaultOptions), {
34112
34233
  closeOnClickOverlay: false,
34113
34234
  closeOnEsc: true
34114
34235
  });
@@ -41814,7 +41935,6 @@ var ToolbarContent = /*#__PURE__*/ function(UIButton) {
41814
41935
  _this.control = control;
41815
41936
  _this.target = target;
41816
41937
  _this.container.classList.add("".concat(_this.componentName, "_").concat(_this.clearName(control.name)));
41817
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.attr)(_this.container, 'role', 'content');
41818
41938
  return _this;
41819
41939
  }
41820
41940
  _create_class(ToolbarContent, [
@@ -41824,6 +41944,19 @@ var ToolbarContent = /*#__PURE__*/ function(UIButton) {
41824
41944
  return 'ToolbarContent';
41825
41945
  }
41826
41946
  },
41947
+ {
41948
+ /** A toolbar item like `ToolbarButton`: the parent group is a `list`. */ key: "getRole",
41949
+ value: function getRole() {
41950
+ return 'listitem';
41951
+ }
41952
+ },
41953
+ {
41954
+ /**
41955
+ * Arbitrary content is not a toggle button — `aria-pressed` is not
41956
+ * allowed on a `listitem`.
41957
+ */ key: "onChangeActivated",
41958
+ value: function onChangeActivated() {}
41959
+ },
41827
41960
  {
41828
41961
  /** @override */ key: "update",
41829
41962
  value: function update() {
@@ -51836,14 +51969,28 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_1__.pluginSystem.add('file', file);
51836
51969
  */ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.saveSelectionOnBlur = true;
51837
51970
  function focus(editor) {
51838
51971
  if (editor.o.saveSelectionOnBlur) {
51972
+ // A click that brings focus back places the caret itself, and Chrome
51973
+ // has already placed it when focus fires, so restoring would move it
51974
+ // back to the old selection. The saved markers are dropped instead.
51975
+ var focusByPointer = false;
51839
51976
  editor.e.on('blur', function() {
51977
+ // A press that never brought the focus back must not decide
51978
+ // what the next focus does
51979
+ focusByPointer = false;
51840
51980
  if (editor.isEditorMode()) {
51841
51981
  editor.s.save(true);
51842
51982
  }
51983
+ }).on('mousedown touchstart', function() {
51984
+ focusByPointer = !editor.editorIsActive;
51843
51985
  }).on('focus', function() {
51844
51986
  if (editor.isEditorMode()) {
51845
- editor.s.restore();
51987
+ if (focusByPointer) {
51988
+ editor.s.removeMarkers();
51989
+ } else {
51990
+ editor.s.restore();
51991
+ }
51846
51992
  }
51993
+ focusByPointer = false;
51847
51994
  });
51848
51995
  }
51849
51996
  var _$focus = function focus() {
@@ -53105,11 +53252,12 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.imageProcessor = {
53105
53252
  /* unused harmony export imageProcessor */
53106
53253
  /* harmony import */ var _core_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82758);
53107
53254
  /* harmony import */ var _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65478);
53108
- /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(580);
53109
- /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21537);
53110
- /* harmony import */ var _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(50911);
53111
- /* harmony import */ var _modules_uploader_helpers_data_uri_to_blob_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(74569);
53112
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(85745);
53255
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2748);
53256
+ /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(580);
53257
+ /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(21537);
53258
+ /* harmony import */ var _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(50911);
53259
+ /* harmony import */ var _modules_uploader_helpers_data_uri_to_blob_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(74569);
53260
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(85745);
53113
53261
  function _assert_this_initialized(self) {
53114
53262
  if (self === void 0) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
53115
53263
  return self;
@@ -53362,6 +53510,7 @@ function _wrap_native_super(Class) {
53362
53510
 
53363
53511
 
53364
53512
 
53513
+
53365
53514
  var JODIT_IMAGE_PROCESSOR_BINDED = '__jodit_imageprocessor_binded';
53366
53515
  var JODIT_IMAGE_BLOB_ID = JODIT_IMAGE_PROCESSOR_BINDED + 'blob-id';
53367
53516
  /**
@@ -53464,9 +53613,9 @@ var JODIT_IMAGE_BLOB_ID = JODIT_IMAGE_PROCESSOR_BINDED + 'blob-id';
53464
53613
  2
53465
53614
  ];
53466
53615
  }
53467
- ;(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.$$)('img', editor.editor).forEach(function(elm) {
53468
- if (!(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.dataBind)(elm, JODIT_IMAGE_PROCESSOR_BINDED)) {
53469
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.dataBind)(elm, JODIT_IMAGE_PROCESSOR_BINDED, true);
53616
+ ;(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.$$)('img', editor.editor).forEach(function(elm) {
53617
+ if (!(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.dataBind)(elm, JODIT_IMAGE_PROCESSOR_BINDED)) {
53618
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.dataBind)(elm, JODIT_IMAGE_PROCESSOR_BINDED, true);
53470
53619
  if (!elm.complete) {
53471
53620
  editor.e.on(elm, 'load', function ElementOnLoad() {
53472
53621
  var _a;
@@ -53478,6 +53627,7 @@ var JODIT_IMAGE_BLOB_ID = JODIT_IMAGE_PROCESSOR_BINDED + 'blob-id';
53478
53627
  replaceDataURIToBlobUUID(editor, elm);
53479
53628
  }
53480
53629
  editor.e.on(elm, 'mousedown touchstart', function() {
53630
+ removeCaretText(elm);
53481
53631
  editor.s.select(elm);
53482
53632
  });
53483
53633
  }
@@ -53491,7 +53641,7 @@ var JODIT_IMAGE_BLOB_ID = JODIT_IMAGE_PROCESSOR_BINDED + 'blob-id';
53491
53641
  }
53492
53642
  ]);
53493
53643
  return imageProcessor;
53494
- }(_wrap_native_super(_core_plugin_index_js__WEBPACK_IMPORTED_MODULE_4__.Plugin));
53644
+ }(_wrap_native_super(_core_plugin_index_js__WEBPACK_IMPORTED_MODULE_5__.Plugin));
53495
53645
  __decorate([
53496
53646
  (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.watch)(':afterGetValueFromEditor')
53497
53647
  ], imageProcessor.prototype, "onAfterGetValueFromEditor", null);
@@ -53506,6 +53656,25 @@ __decorate([
53506
53656
  ]),
53507
53657
  (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.debounce)()
53508
53658
  ], imageProcessor.prototype, "afterChange", null);
53659
+ /**
53660
+ * Remove the invisible-space text beside an image, which only held a caret.
53661
+ * Selecting the image replaces the caret, and with the text still after a
53662
+ * block image, Safari highlights the rest of the image's line. See #1512
53663
+ */ function removeCaretText(elm) {
53664
+ var _a;
53665
+ for(var _i = 0, _iter = [
53666
+ 'previousSibling',
53667
+ 'nextSibling'
53668
+ ]; _i < _iter.length; _i++){
53669
+ var side = _iter[_i];
53670
+ var node = elm[side];
53671
+ while(_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isText(node) && !((_a = node.nodeValue) === null || _a === void 0 ? void 0 : _a.replace((0,_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.INVISIBLE_SPACE_REG_EXP)(), ''))){
53672
+ var next = node[side];
53673
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove(node);
53674
+ node = next;
53675
+ }
53676
+ }
53677
+ }
53509
53678
  function replaceDataURIToBlobUUID(editor, elm) {
53510
53679
  if (!editor.o.imageProcessor.replaceDataURIToBlobIdInView) {
53511
53680
  return;
@@ -53516,7 +53685,7 @@ function replaceDataURIToBlobUUID(editor, elm) {
53516
53685
  var dataUri = elm.src;
53517
53686
  var blob;
53518
53687
  try {
53519
- blob = (0,_modules_uploader_helpers_data_uri_to_blob_js__WEBPACK_IMPORTED_MODULE_5__.dataURItoBlob)(dataUri);
53688
+ blob = (0,_modules_uploader_helpers_data_uri_to_blob_js__WEBPACK_IMPORTED_MODULE_6__.dataURItoBlob)(dataUri);
53520
53689
  } catch (_a) {
53521
53690
  // A data URI the browser accepts but we cannot decode is not worth
53522
53691
  // breaking the editor over — keep the image as it is
@@ -53529,7 +53698,7 @@ function replaceDataURIToBlobUUID(editor, elm) {
53529
53698
  list[elm.src] = dataUri;
53530
53699
  editor.buffer.set(JODIT_IMAGE_BLOB_ID, list);
53531
53700
  }
53532
- _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('imageProcessor', imageProcessor);
53701
+ _core_global_js__WEBPACK_IMPORTED_MODULE_3__.pluginSystem.add('imageProcessor', imageProcessor);
53533
53702
 
53534
53703
 
53535
53704
  /***/ }),
@@ -54169,7 +54338,7 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('imageProperties',
54169
54338
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
54170
54339
  /* harmony export */ readAlign: function() { return /* binding */ readAlign; }
54171
54340
  /* harmony export */ });
54172
- /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(41180);
54341
+ /* harmony import */ var _core_helpers_utils_align_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(25726);
54173
54342
  /*!
54174
54343
  * Jodit Editor (https://xdsoft.net/jodit/)
54175
54344
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -54177,20 +54346,9 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('imageProperties',
54177
54346
  */
54178
54347
  /**
54179
54348
  * @private
54180
- */ function readAlign(image, values) {
54181
- // Align
54182
- if ((0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_0__.cssInline)(image, 'float') && [
54183
- 'left',
54184
- 'right'
54185
- ].indexOf((0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_0__.cssInline)(image, 'float').toLowerCase()) !== -1) {
54186
- values.align = (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_0__.css)(image, 'float');
54187
- } else {
54188
- if ((0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_0__.css)(image, 'display') === 'block' && (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_0__.cssInline)(image, 'margin-left') === 'auto' && (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_0__.cssInline)(image, 'margin-right') === 'auto') {
54189
- values.align = 'center';
54190
- } else {
54191
- values.align = '';
54192
- }
54193
- }
54349
+ */ function readAlign(image, values, classes) {
54350
+ var align = (0,_core_helpers_utils_align_js__WEBPACK_IMPORTED_MODULE_0__.getHAlign)(image, classes);
54351
+ values.align = align === 'normal' ? '' : align;
54194
54352
  }
54195
54353
 
54196
54354
 
@@ -54351,7 +54509,7 @@ function _ts_generator(thisArg, body) {
54351
54509
  var image, values;
54352
54510
  return _ts_generator(this, function(_state) {
54353
54511
  image = state.sourceImage, values = state.values;
54354
- (0,_align_js__WEBPACK_IMPORTED_MODULE_2__.readAlign)(image, values);
54512
+ (0,_align_js__WEBPACK_IMPORTED_MODULE_2__.readAlign)(image, values, j.o.imageAlignClasses);
54355
54513
  // Border radius
54356
54514
  values.borderRadius = parseInt((0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_1__.cssInline)(image, 'border-radius') || '0', 10) || 0;
54357
54515
  // Id
@@ -56279,7 +56437,7 @@ function _ts_generator(thisArg, body) {
56279
56437
  (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_1__.attr)(image, 'id', id || null);
56280
56438
  }
56281
56439
  if (opt.image.editAlign) {
56282
- (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_1__.hAlignElement)(image, align);
56440
+ (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_1__.hAlignElement)(image, align, j.o.imageAlignClasses);
56283
56441
  }
56284
56442
  }
56285
56443
 
@@ -56346,10 +56504,12 @@ function _ts_generator(thisArg, body) {
56346
56504
  marginBottom,
56347
56505
  marginLeft
56348
56506
  ];
56507
+ // Compared with the inline value, which is what `readMargins` showed, so a
56508
+ // margin from a stylesheet is not overwritten when the field is unchanged
56349
56509
  var applyMargin = function applyMargin(key, value) {
56350
- var oldValue = (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_0__.css)(image, key);
56510
+ var oldValue = (0,_utils_utils_js__WEBPACK_IMPORTED_MODULE_1__.normalSizeToString)((0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_0__.cssInline)(image, key) || 0);
56351
56511
  var v = (0,_utils_utils_js__WEBPACK_IMPORTED_MODULE_1__.normalSizeToString)(value);
56352
- if (oldValue.toString() !== v.toString()) {
56512
+ if (oldValue !== v) {
56353
56513
  (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_0__.css)(image, key, v);
56354
56514
  }
56355
56515
  };
@@ -57170,14 +57330,68 @@ var cmd = function cmd(control) {
57170
57330
  /* harmony import */ var _core_helpers_checker_is_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(70799);
57171
57331
  /* harmony import */ var _core_helpers_utils_align_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(25726);
57172
57332
  /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(41180);
57333
+ function _array_like_to_array(arr, len) {
57334
+ if (len == null || len > arr.length) len = arr.length;
57335
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
57336
+ return arr2;
57337
+ }
57338
+ function _array_with_holes(arr) {
57339
+ if (Array.isArray(arr)) return arr;
57340
+ }
57341
+ function _iterable_to_array_limit(arr, i) {
57342
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
57343
+ if (_i == null) return;
57344
+ var _arr = [];
57345
+ var _n = true;
57346
+ var _d = false;
57347
+ var _s, _e;
57348
+ try {
57349
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
57350
+ _arr.push(_s.value);
57351
+ if (i && _arr.length === i) break;
57352
+ }
57353
+ } catch (err) {
57354
+ _d = true;
57355
+ _e = err;
57356
+ } finally{
57357
+ try {
57358
+ if (!_n && _i["return"] != null) _i["return"]();
57359
+ } finally{
57360
+ if (_d) throw _e;
57361
+ }
57362
+ }
57363
+ return _arr;
57364
+ }
57365
+ function _non_iterable_rest() {
57366
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
57367
+ }
57368
+ function _sliced_to_array(arr, i) {
57369
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
57370
+ }
57371
+ function _unsupported_iterable_to_array(o, minLen) {
57372
+ if (!o) return;
57373
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
57374
+ var n = Object.prototype.toString.call(o).slice(8, -1);
57375
+ if (n === "Object" && o.constructor) n = o.constructor.name;
57376
+ if (n === "Map" || n === "Set") return Array.from(n);
57377
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
57378
+ }
57173
57379
  /*!
57174
57380
  * Jodit Editor (https://xdsoft.net/jodit/)
57175
57381
  * Released under MIT see LICENSE.txt in the project root for license information.
57176
57382
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
57177
- */
57383
+ */ ;
57178
57384
 
57179
57385
 
57180
57386
 
57387
+ // Images align with `imageAlignClasses`; the wrappers of iframes and media
57388
+ // keep inline styles
57389
+ var alignClasses = function alignClasses(editor, elm) {
57390
+ return _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(elm, 'img') ? editor.o.imageAlignClasses : null;
57391
+ };
57392
+ var currentAlign = function currentAlign(editor, elm) {
57393
+ return elm ? (0,_core_helpers_utils_align_js__WEBPACK_IMPORTED_MODULE_2__.getHAlign)(elm, alignClasses(editor, elm)) : 'normal';
57394
+ };
57181
57395
  var align = {
57182
57396
  name: 'left',
57183
57397
  childTemplate: function childTemplate(_, __, value) {
@@ -57189,6 +57403,18 @@ var align = {
57189
57403
  'Center',
57190
57404
  'Normal'
57191
57405
  ],
57406
+ update: function update(editor, button) {
57407
+ var current = currentAlign(editor, button.target);
57408
+ button.state.icon.name = current === 'normal' ? 'left' : current;
57409
+ },
57410
+ isActive: function isActive(editor, button) {
57411
+ return currentAlign(editor, button.target) !== 'normal';
57412
+ },
57413
+ isChildActive: function isChildActive(editor, button) {
57414
+ var _a;
57415
+ var _ref = _sliced_to_array((_a = button.control.args) !== null && _a !== void 0 ? _a : [], 1), value = _ref[0];
57416
+ return (0,_core_helpers_checker_is_string_js__WEBPACK_IMPORTED_MODULE_1__.isString)(value) && currentAlign(editor, button.target) === value.toLowerCase();
57417
+ },
57192
57418
  exec: function exec(editor, elm, param) {
57193
57419
  var control = param.control;
57194
57420
  if (!_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(elm, new Set([
@@ -57202,7 +57428,7 @@ var align = {
57202
57428
  if (!command) {
57203
57429
  return false;
57204
57430
  }
57205
- ;(0,_core_helpers_utils_align_js__WEBPACK_IMPORTED_MODULE_2__.hAlignElement)(elm, command);
57431
+ ;(0,_core_helpers_utils_align_js__WEBPACK_IMPORTED_MODULE_2__.hAlignElement)(elm, command, alignClasses(editor, elm));
57206
57432
  if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(elm, new Set([
57207
57433
  'jodit',
57208
57434
  'jodit-media'
@@ -57242,6 +57468,14 @@ var align = {
57242
57468
  'Normal'
57243
57469
  ],
57244
57470
  tooltip: 'Vertical align',
57471
+ // `vertical-align` only moves an image in the line, not a floated or block one
57472
+ isDisabled: function isDisabled(editor, button) {
57473
+ var image = button.target;
57474
+ return Boolean(image && ([
57475
+ 'left',
57476
+ 'right'
57477
+ ].includes((0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_3__.css)(image, 'float')) || (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_3__.css)(image, 'display') === 'block'));
57478
+ },
57245
57479
  exec: function exec(editor, image, param) {
57246
57480
  var control = param.control;
57247
57481
  if (!_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(image, 'img')) {
@@ -67837,21 +68071,28 @@ var AceEditor = /*#__PURE__*/ function(SourceEditor) {
67837
68071
  onResize();
67838
68072
  _this.onReady();
67839
68073
  };
67840
- var initAceEditor = function initAceEditor() {
68074
+ var loading = false;
68075
+ var initAceEditor = function initAceEditor1() {
67841
68076
  if (editor.isInDestruct || editor.getRealMode() !== _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.MODE_SOURCE && editor.getMode() !== _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.MODE_SPLIT) {
67842
68077
  return;
67843
68078
  }
68079
+ // ACE (~400 KiB from the CDN) is only needed once the source view
68080
+ // is actually shown — a page that stays in WYSIWYG must not
68081
+ // download it.
68082
+ if (!_this.aceExists()) {
68083
+ if (!loading) {
68084
+ loading = true;
68085
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.loadNext)(editor, editor.o.sourceEditorCDNUrlsJS).then(initAceEditor).catch(function() {
68086
+ return null;
68087
+ });
68088
+ }
68089
+ return;
68090
+ }
67844
68091
  _this.fromWYSIWYG();
67845
68092
  tryInitAceEditor();
67846
68093
  };
67847
68094
  editor.e.on('afterSetMode', initAceEditor);
67848
68095
  initAceEditor();
67849
- // global add ace editor in browser
67850
- if (!this.aceExists()) {
67851
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.loadNext)(editor, editor.o.sourceEditorCDNUrlsJS).then(initAceEditor).catch(function() {
67852
- return null;
67853
- });
67854
- }
67855
68096
  }
67856
68097
  },
67857
68098
  {
@@ -68752,9 +68993,26 @@ function _wrap_native_super(Class) {
68752
68993
  return false;
68753
68994
  };
68754
68995
  if (!addEventListener()) {
68755
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.loadNext)(editor, editor.o.beautifyHTMLCDNUrlsJS).then(addEventListener, function() {
68756
- return null;
68757
- });
68996
+ // js-beautify is only needed once the source view is shown —
68997
+ // do not download it for a page that stays in WYSIWYG.
68998
+ var loading = false;
68999
+ var loadBeautify = function loadBeautify() {
69000
+ if (loading || editor.getMode() !== _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.MODE_SOURCE && editor.getMode() !== _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.MODE_SPLIT) {
69001
+ return;
69002
+ }
69003
+ loading = true;
69004
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.loadNext)(editor, editor.o.beautifyHTMLCDNUrlsJS).then(function() {
69005
+ // The source view was filled before the
69006
+ // beautifier arrived — format it now.
69007
+ if (addEventListener()) {
69008
+ _this.syncValueFromWYSIWYG(true);
69009
+ }
69010
+ }, function() {
69011
+ return null;
69012
+ });
69013
+ };
69014
+ editor.e.on('afterSetMode.source', loadBeautify);
69015
+ loadBeautify();
68758
69016
  }
68759
69017
  }
68760
69018
  this.syncValueFromWYSIWYG(true);