jodit-pro 4.16.3 → 4.17.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 (316) hide show
  1. package/es2015/jodit.css +1 -1
  2. package/es2015/jodit.fat.min.js +7 -7
  3. package/es2015/jodit.js +151 -29
  4. package/es2015/jodit.min.js +7 -7
  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 +1 -1
  29. package/es2015/plugins/finder/finder.min.js +1 -1
  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 +7 -7
  73. package/es2018/jodit.min.js +7 -7
  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 +1 -1
  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 +7 -7
  101. package/es2021/jodit.js +151 -29
  102. package/es2021/jodit.min.js +7 -7
  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 +1 -1
  127. package/es2021/plugins/finder/finder.min.js +1 -1
  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 +7 -7
  172. package/es2021.en/jodit.js +151 -29
  173. package/es2021.en/jodit.min.js +7 -7
  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 +1 -1
  198. package/es2021.en/plugins/finder/finder.min.js +1 -1
  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 +160 -29
  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 +1 -1
  270. package/es5/plugins/finder/finder.min.js +1 -1
  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/package.json +1 -1
package/es2021/jodit.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * jodit-pro - PRO Version of Jodit Editor
3
3
  * Author: Chupurnov Valerii <chupurnov@gmail.com>
4
- * Version: v4.16.3
4
+ * Version: v4.17.0
5
5
  * Url: https://xdsoft.net/jodit/pro/
6
6
  * License(s): SEE LICENSE IN LICENSE.md
7
7
  */
@@ -1743,7 +1743,7 @@ __webpack_require__.r(__webpack_exports__);
1743
1743
  * ```
1744
1744
  * @packageDocumentation
1745
1745
  * @module constants
1746
- */ const APP_VERSION = "4.16.3";
1746
+ */ const APP_VERSION = "4.17.0";
1747
1747
  // prettier-ignore
1748
1748
  const ES = "es2021";
1749
1749
  const IS_ES_MODERN = true;
@@ -31902,22 +31902,19 @@ _core_ui_index_js__WEBPACK_IMPORTED_MODULE_2__.Icon.set('palette', _palette_svg_
31902
31902
  const tabs = [];
31903
31903
  const options = editor.o.uploader;
31904
31904
  if (callbacks.upload && options.showTabInFileSelector !== false && (options.url || options.insertImageAsBase64URI || options.customUploadFunction)) {
31905
- const dragBox = editor.c.fromHTML('<div class="jodit-drag-and-drop__file-box">' + `<strong>${editor.i18n(isImage ? 'Drop image' : 'Drop file')}</strong>` + `<span><br>${editor.i18n('or click')}</span>` + `<input type="file" accept="${isImage ? 'image/*' : '*'}" tabindex="-1" dir="auto" multiple=""/>` + '</div>');
31906
- editor.uploader.bind(dragBox, (resp)=>{
31907
- const handler = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.isFunction)(callbacks.upload) ? callbacks.upload : options.defaultHandlerSuccess;
31905
+ const { upload } = callbacks;
31906
+ tabs.push(UploadTab(editor, (resp)=>{
31907
+ const handler = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.isFunction)(upload) ? upload : options.defaultHandlerSuccess;
31908
31908
  if ((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.isFunction)(handler)) {
31909
31909
  handler.call(editor, resp);
31910
31910
  }
31911
- editor.e.fire('closeAllPopups');
31912
- }, (error)=>{
31913
- editor.message.error(error.message);
31914
- editor.e.fire('closeAllPopups');
31915
- });
31916
- tabs.push({
31917
- icon: 'upload',
31918
- name: 'Upload',
31919
- content: dragBox
31920
- });
31911
+ }, isImage ? {
31912
+ label: 'Drop image',
31913
+ accept: 'image/*'
31914
+ } : {
31915
+ label: 'Drop file',
31916
+ accept: '*'
31917
+ }));
31921
31918
  }
31922
31919
  if (callbacks.filebrowser) {
31923
31920
  if (editor.o.filebrowser.ajax.url || editor.o.filebrowser.items.url) {
@@ -31985,6 +31982,24 @@ _core_ui_index_js__WEBPACK_IMPORTED_MODULE_2__.Icon.set('palette', _palette_svg_
31985
31982
  box.classList.add('jodit-file-selector');
31986
31983
  return box;
31987
31984
  };
31985
+ /**
31986
+ * The Upload tab: a box that uploads the files dropped on it or chosen in its
31987
+ * file input, then passes the uploader's answer to `onSuccess` and closes the popup
31988
+ */ const UploadTab = (editor, onSuccess, { label, accept })=>{
31989
+ const dragBox = editor.c.fromHTML('<div class="jodit-drag-and-drop__file-box">' + `<strong>${editor.i18n(label)}</strong>` + `<span><br>${editor.i18n('or click')}</span>` + `<input type="file" accept="${accept}" tabindex="-1" dir="auto" multiple=""/>` + '</div>');
31990
+ editor.uploader.bind(dragBox, (resp)=>{
31991
+ onSuccess.call(editor, resp);
31992
+ editor.e.fire('closeAllPopups');
31993
+ }, (error)=>{
31994
+ editor.message.error(error.message);
31995
+ editor.e.fire('closeAllPopups');
31996
+ });
31997
+ return {
31998
+ icon: 'upload',
31999
+ name: 'Upload',
32000
+ content: dragBox
32001
+ };
32002
+ };
31988
32003
  function val(elm, name, value) {
31989
32004
  const child = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.first(elm, (node)=>_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(node, 'input') && (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.attr)(node, 'name') === name);
31990
32005
  if (!child) {
@@ -31997,7 +32012,8 @@ function val(elm, name, value) {
31997
32012
  }
31998
32013
 
31999
32014
  /* harmony export */ __webpack_require__.d(__webpack_exports__, [
32000
- /* harmony export */ "FileSelectorWidget", 0, /* binding */ FileSelectorWidget
32015
+ /* harmony export */ "FileSelectorWidget", 0, /* binding */ FileSelectorWidget,
32016
+ /* harmony export */ "UploadTab", 0, /* binding */ UploadTab
32001
32017
  /* harmony export */ ]);
32002
32018
 
32003
32019
 
@@ -32009,7 +32025,8 @@ function val(elm, name, value) {
32009
32025
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
32010
32026
  /* harmony export */ ColorPickerWidget: function() { return /* reexport safe */ _color_picker_color_picker_js__WEBPACK_IMPORTED_MODULE_0__.ColorPickerWidget; },
32011
32027
  /* harmony export */ FileSelectorWidget: function() { return /* reexport safe */ _file_selector_file_selector_js__WEBPACK_IMPORTED_MODULE_1__.FileSelectorWidget; },
32012
- /* harmony export */ TabsWidget: function() { return /* reexport safe */ _tabs_tabs_js__WEBPACK_IMPORTED_MODULE_2__.TabsWidget; }
32028
+ /* harmony export */ TabsWidget: function() { return /* reexport safe */ _tabs_tabs_js__WEBPACK_IMPORTED_MODULE_2__.TabsWidget; },
32029
+ /* harmony export */ UploadTab: function() { return /* reexport safe */ _file_selector_file_selector_js__WEBPACK_IMPORTED_MODULE_1__.UploadTab; }
32013
32030
  /* harmony export */ });
32014
32031
  /* harmony import */ var _color_picker_color_picker_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(22859);
32015
32032
  /* harmony import */ var _file_selector_file_selector_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(34793);
@@ -37810,6 +37827,19 @@ function brBefore(start) {
37810
37827
 
37811
37828
 
37812
37829
 
37830
+ function insertLinks(data) {
37831
+ var _a;
37832
+ (_a = data.files) === null || _a === void 0 ? void 0 : _a.forEach((file)=>{
37833
+ const link = this.createInside.element('a', {
37834
+ href: data.baseurl + file
37835
+ });
37836
+ link.textContent = this.o.uploader.getDisplayName.call(this.uploader, data.baseurl, file);
37837
+ this.s.insertNode(link);
37838
+ });
37839
+ }
37840
+ _config_js__WEBPACK_IMPORTED_MODULE_3__.Config.prototype.file = {
37841
+ defaultHandlerSuccess: insertLinks
37842
+ };
37813
37843
  _config_js__WEBPACK_IMPORTED_MODULE_3__.Config.prototype.controls.file = {
37814
37844
  popup: (editor, current, close)=>{
37815
37845
  const insert = (url, title = '')=>{
@@ -37824,7 +37854,10 @@ _config_js__WEBPACK_IMPORTED_MODULE_3__.Config.prototype.controls.file = {
37824
37854
  data.files && data.files.forEach((file)=>insert(data.baseurl + file));
37825
37855
  close();
37826
37856
  },
37827
- upload: true,
37857
+ upload: (data)=>{
37858
+ var _a, _b;
37859
+ ((_b = (_a = editor.o.file) === null || _a === void 0 ? void 0 : _a.defaultHandlerSuccess) !== null && _b !== void 0 ? _b : insertLinks).call(editor, data);
37860
+ },
37828
37861
  url: (url, text)=>{
37829
37862
  if (sourceAnchor) {
37830
37863
  (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_2__.attr)(sourceAnchor, 'href', url);
@@ -41206,6 +41239,26 @@ const cmd = (control)=>control.args && (0,_core_helpers_checker_index_js__WEBPAC
41206
41239
  // Images align with `imageAlignClasses`; the wrappers of iframes and media
41207
41240
  // keep inline styles
41208
41241
  const alignClasses = (editor, elm)=>_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(elm, 'img') ? editor.o.imageAlignClasses : null;
41242
+ // A Normal image sits where the text of its line is aligned (#1531)
41243
+ const lineAlign = (editor, elm)=>{
41244
+ const block = elm && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(elm, _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock, editor.editor) || editor.editor;
41245
+ const rtl = (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_3__.css)(block, 'direction') === 'rtl';
41246
+ switch((0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_3__.css)(block, 'text-align')){
41247
+ case 'center':
41248
+ case '-webkit-center':
41249
+ return 'center';
41250
+ case 'justify':
41251
+ return 'justify';
41252
+ case 'right':
41253
+ return 'right';
41254
+ case 'end':
41255
+ return rtl ? 'left' : 'right';
41256
+ case 'start':
41257
+ return rtl ? 'right' : 'left';
41258
+ default:
41259
+ return 'left';
41260
+ }
41261
+ };
41209
41262
  const currentAlign = (editor, elm)=>elm ? (0,_core_helpers_utils_align_js__WEBPACK_IMPORTED_MODULE_2__.getHAlign)(elm, alignClasses(editor, elm)) : 'normal';
41210
41263
  const align = {
41211
41264
  name: 'left',
@@ -41218,7 +41271,7 @@ const align = {
41218
41271
  ],
41219
41272
  update: (editor, button)=>{
41220
41273
  const current = currentAlign(editor, button.target);
41221
- button.state.icon.name = current === 'normal' ? 'left' : current;
41274
+ button.state.icon.name = current === 'normal' ? lineAlign(editor, button.target) : current;
41222
41275
  },
41223
41276
  isActive: (editor, button)=>currentAlign(editor, button.target) !== 'normal',
41224
41277
  isChildActive: (editor, button)=>{
@@ -47869,7 +47922,8 @@ class AceEditor extends _sourceEditor_js__WEBPACK_IMPORTED_MODULE_3__.SourceEdit
47869
47922
  }
47870
47923
  return;
47871
47924
  }
47872
- this.fromWYSIWYG();
47925
+ // The source plugin carries the fallback editor's text over when this
47926
+ // one is ready; refilling from WYSIWYG here would drop unsynced typing
47873
47927
  tryInitAceEditor();
47874
47928
  };
47875
47929
  editor.e.on('afterSetMode', initAceEditor);
@@ -48234,6 +48288,7 @@ function createSourceEditor(type, editor, container, toWYSIWYG, fromWYSIWYG) {
48234
48288
  if (new_value !== this.getMirrorValue()) {
48235
48289
  this.setMirrorValue(new_value);
48236
48290
  }
48291
+ this.__filledValue = this.getMirrorValue();
48237
48292
  this.__lock = false;
48238
48293
  }
48239
48294
  }
@@ -48411,9 +48466,9 @@ function createSourceEditor(type, editor, container, toWYSIWYG, fromWYSIWYG) {
48411
48466
  return;
48412
48467
  }
48413
48468
  loading = true;
48414
- // It formats the source view from the next time it opens:
48415
- // filling it again now would replace what was typed there
48416
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.loadNext)(editor, editor.o.beautifyHTMLCDNUrlsJS).then(addEventListener, ()=>null);
48469
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.loadNext)(editor, editor.o.beautifyHTMLCDNUrlsJS).then(()=>{
48470
+ addEventListener() && this.beautifyUntouched();
48471
+ }, ()=>null);
48417
48472
  };
48418
48473
  editor.e.on('afterSetMode.source', loadBeautify);
48419
48474
  loadBeautify();
@@ -48433,11 +48488,9 @@ function createSourceEditor(type, editor, container, toWYSIWYG, fromWYSIWYG) {
48433
48488
  if (editor.o.sourceEditor !== 'area') {
48434
48489
  const sourceEditor = (0,_editor_factory_js__WEBPACK_IMPORTED_MODULE_7__.createSourceEditor)(editor.o.sourceEditor, editor, this.mirrorContainer, this.toWYSIWYG, this.fromWYSIWYG);
48435
48490
  sourceEditor.onReadyAlways(()=>{
48436
- var _a, _b;
48437
- (_a = this.sourceEditor) === null || _a === void 0 ? void 0 : _a.destruct();
48438
- this.sourceEditor = sourceEditor;
48439
- this.syncValueFromWYSIWYG(true);
48440
- (_b = editor.events) === null || _b === void 0 ? void 0 : _b.fire('sourceEditorReady', editor);
48491
+ var _a;
48492
+ this.takeOver(sourceEditor);
48493
+ (_a = editor.events) === null || _a === void 0 ? void 0 : _a.fire('sourceEditorReady', editor);
48441
48494
  });
48442
48495
  } else {
48443
48496
  (_a = this.sourceEditor) === null || _a === void 0 ? void 0 : _a.onReadyAlways(()=>{
@@ -48447,6 +48500,49 @@ function createSourceEditor(type, editor, container, toWYSIWYG, fromWYSIWYG) {
48447
48500
  });
48448
48501
  }
48449
48502
  }
48503
+ /**
48504
+ * Replaces the source editor (the textarea shown while ACE loads) with
48505
+ * the one that just became ready, carrying its text, selection and focus
48506
+ * over. Filling the new editor from WYSIWYG instead would drop what was
48507
+ * typed since the last, debounced, sync and normalise half-typed markup.
48508
+ */ takeOver(sourceEditor) {
48509
+ const previous = this.sourceEditor;
48510
+ if (!previous || previous === sourceEditor) {
48511
+ this.sourceEditor = sourceEditor;
48512
+ this.syncValueFromWYSIWYG(true);
48513
+ return;
48514
+ }
48515
+ const value = previous.getValue(), start = previous.getSelectionStart(), end = previous.getSelectionEnd(), focused = previous.isFocused, untouched = value === this.__filledValue;
48516
+ previous.destruct();
48517
+ this.sourceEditor = sourceEditor;
48518
+ if (untouched) {
48519
+ this.syncValueFromWYSIWYG(true);
48520
+ } else {
48521
+ sourceEditor.setValue(value);
48522
+ this.toWYSIWYG();
48523
+ }
48524
+ if (start >= 0) {
48525
+ sourceEditor.setSelectionRange(start, end);
48526
+ }
48527
+ focused && sourceEditor.focus();
48528
+ }
48529
+ /**
48530
+ * The beautifier arrived after the source view was opened: format the
48531
+ * view if nothing has been typed into it, otherwise leave the typing alone
48532
+ */ beautifyUntouched() {
48533
+ var _a, _b;
48534
+ const value = this.getMirrorValue();
48535
+ if (this.j.o.editHTMLDocumentMode || !value || value !== this.__filledValue) {
48536
+ return;
48537
+ }
48538
+ const html = this.j.e.fire('beautifyHTML', value);
48539
+ if ((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.isString)(html) && html !== value) {
48540
+ const focused = (_a = this.sourceEditor) === null || _a === void 0 ? void 0 : _a.isFocused;
48541
+ this.setMirrorValue(html);
48542
+ this.__filledValue = this.getMirrorValue();
48543
+ focused && ((_b = this.sourceEditor) === null || _b === void 0 ? void 0 : _b.focus());
48544
+ }
48545
+ }
48450
48546
  /** @override */ beforeDestruct() {
48451
48547
  if (this.sourceEditor) {
48452
48548
  this.sourceEditor.destruct();
@@ -48464,6 +48560,10 @@ function createSourceEditor(type, editor, container, toWYSIWYG, fromWYSIWYG) {
48464
48560
  ];
48465
48561
  this.__lock = false;
48466
48562
  this.__oldMirrorValue = '';
48563
+ /**
48564
+ * What the source view was last filled with from WYSIWYG, read back from
48565
+ * the editor; while the view still holds it, nothing has been typed there
48566
+ */ this.__filledValue = '';
48467
48567
  this.tempMarkerStart = '{start-jodit-selection}';
48468
48568
  this.tempMarkerStartReg = /{start-jodit-selection}/g;
48469
48569
  this.tempMarkerEnd = '{end-jodit-selection}';
@@ -52003,10 +52103,20 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_4__.pluginSystem.add('toolbarNavigation
52003
52103
 
52004
52104
 
52005
52105
 
52106
+ function insertVideos(data) {
52107
+ var _a;
52108
+ (_a = data.files) === null || _a === void 0 ? void 0 : _a.forEach((file)=>{
52109
+ this.s.insertNode(this.createInside.element('video', {
52110
+ controls: '',
52111
+ src: data.baseurl + file
52112
+ }));
52113
+ });
52114
+ }
52006
52115
  _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.video = {
52007
52116
  parseUrlToVideoEmbed: _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_0__.convertMediaUrlToVideoEmbed,
52008
52117
  defaultWidth: 400,
52009
- defaultHeight: 345
52118
+ defaultHeight: 345,
52119
+ defaultHandlerSuccess: insertVideos
52010
52120
  };
52011
52121
  _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_3__.Icon.set('video', _video_svg_js__WEBPACK_IMPORTED_MODULE_6__["default"]);
52012
52122
  _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.video = {
@@ -52043,6 +52153,18 @@ _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.video = {
52043
52153
  close();
52044
52154
  };
52045
52155
  jodit.s.save();
52156
+ const { uploader } = jodit.o;
52157
+ // Base64 alone would put whole video files into the content
52158
+ if (uploader.showTabInFileSelector !== false && (uploader.url || uploader.customUploadFunction)) {
52159
+ tabs.push((0,_modules_widget_index_js__WEBPACK_IMPORTED_MODULE_5__.UploadTab)(jodit, (data)=>{
52160
+ var _a, _b;
52161
+ jodit.s.restore();
52162
+ ((_b = (_a = jodit.o.video) === null || _a === void 0 ? void 0 : _a.defaultHandlerSuccess) !== null && _b !== void 0 ? _b : insertVideos).call(jodit, data);
52163
+ }, {
52164
+ label: 'Drop file',
52165
+ accept: 'video/*'
52166
+ }));
52167
+ }
52046
52168
  tabs.push({
52047
52169
  icon: 'link',
52048
52170
  name: 'Link',