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
@@ -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);
@@ -37425,6 +37442,19 @@ function brBefore(start) {
37425
37442
 
37426
37443
 
37427
37444
 
37445
+ function insertLinks(data) {
37446
+ var _a;
37447
+ (_a = data.files) === null || _a === void 0 ? void 0 : _a.forEach((file)=>{
37448
+ const link = this.createInside.element('a', {
37449
+ href: data.baseurl + file
37450
+ });
37451
+ link.textContent = this.o.uploader.getDisplayName.call(this.uploader, data.baseurl, file);
37452
+ this.s.insertNode(link);
37453
+ });
37454
+ }
37455
+ _config_js__WEBPACK_IMPORTED_MODULE_3__.Config.prototype.file = {
37456
+ defaultHandlerSuccess: insertLinks
37457
+ };
37428
37458
  _config_js__WEBPACK_IMPORTED_MODULE_3__.Config.prototype.controls.file = {
37429
37459
  popup: (editor, current, close)=>{
37430
37460
  const insert = (url, title = '')=>{
@@ -37439,7 +37469,10 @@ _config_js__WEBPACK_IMPORTED_MODULE_3__.Config.prototype.controls.file = {
37439
37469
  data.files && data.files.forEach((file)=>insert(data.baseurl + file));
37440
37470
  close();
37441
37471
  },
37442
- upload: true,
37472
+ upload: (data)=>{
37473
+ var _a, _b;
37474
+ ((_b = (_a = editor.o.file) === null || _a === void 0 ? void 0 : _a.defaultHandlerSuccess) !== null && _b !== void 0 ? _b : insertLinks).call(editor, data);
37475
+ },
37443
37476
  url: (url, text)=>{
37444
37477
  if (sourceAnchor) {
37445
37478
  (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_2__.attr)(sourceAnchor, 'href', url);
@@ -40821,6 +40854,26 @@ const cmd = (control)=>control.args && (0,_core_helpers_checker_index_js__WEBPAC
40821
40854
  // Images align with `imageAlignClasses`; the wrappers of iframes and media
40822
40855
  // keep inline styles
40823
40856
  const alignClasses = (editor, elm)=>_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(elm, 'img') ? editor.o.imageAlignClasses : null;
40857
+ // A Normal image sits where the text of its line is aligned (#1531)
40858
+ const lineAlign = (editor, elm)=>{
40859
+ 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;
40860
+ const rtl = (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_3__.css)(block, 'direction') === 'rtl';
40861
+ switch((0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_3__.css)(block, 'text-align')){
40862
+ case 'center':
40863
+ case '-webkit-center':
40864
+ return 'center';
40865
+ case 'justify':
40866
+ return 'justify';
40867
+ case 'right':
40868
+ return 'right';
40869
+ case 'end':
40870
+ return rtl ? 'left' : 'right';
40871
+ case 'start':
40872
+ return rtl ? 'right' : 'left';
40873
+ default:
40874
+ return 'left';
40875
+ }
40876
+ };
40824
40877
  const currentAlign = (editor, elm)=>elm ? (0,_core_helpers_utils_align_js__WEBPACK_IMPORTED_MODULE_2__.getHAlign)(elm, alignClasses(editor, elm)) : 'normal';
40825
40878
  const align = {
40826
40879
  name: 'left',
@@ -40833,7 +40886,7 @@ const align = {
40833
40886
  ],
40834
40887
  update: (editor, button)=>{
40835
40888
  const current = currentAlign(editor, button.target);
40836
- button.state.icon.name = current === 'normal' ? 'left' : current;
40889
+ button.state.icon.name = current === 'normal' ? lineAlign(editor, button.target) : current;
40837
40890
  },
40838
40891
  isActive: (editor, button)=>currentAlign(editor, button.target) !== 'normal',
40839
40892
  isChildActive: (editor, button)=>{
@@ -47095,7 +47148,8 @@ class AceEditor extends _sourceEditor_js__WEBPACK_IMPORTED_MODULE_3__.SourceEdit
47095
47148
  }
47096
47149
  return;
47097
47150
  }
47098
- this.fromWYSIWYG();
47151
+ // The source plugin carries the fallback editor's text over when this
47152
+ // one is ready; refilling from WYSIWYG here would drop unsynced typing
47099
47153
  tryInitAceEditor();
47100
47154
  };
47101
47155
  editor.e.on('afterSetMode', initAceEditor);
@@ -47460,6 +47514,7 @@ function createSourceEditor(type, editor, container, toWYSIWYG, fromWYSIWYG) {
47460
47514
  if (new_value !== this.getMirrorValue()) {
47461
47515
  this.setMirrorValue(new_value);
47462
47516
  }
47517
+ this.__filledValue = this.getMirrorValue();
47463
47518
  this.__lock = false;
47464
47519
  }
47465
47520
  }
@@ -47637,9 +47692,9 @@ function createSourceEditor(type, editor, container, toWYSIWYG, fromWYSIWYG) {
47637
47692
  return;
47638
47693
  }
47639
47694
  loading = true;
47640
- // It formats the source view from the next time it opens:
47641
- // filling it again now would replace what was typed there
47642
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.loadNext)(editor, editor.o.beautifyHTMLCDNUrlsJS).then(addEventListener, ()=>null);
47695
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.loadNext)(editor, editor.o.beautifyHTMLCDNUrlsJS).then(()=>{
47696
+ addEventListener() && this.beautifyUntouched();
47697
+ }, ()=>null);
47643
47698
  };
47644
47699
  editor.e.on('afterSetMode.source', loadBeautify);
47645
47700
  loadBeautify();
@@ -47659,11 +47714,9 @@ function createSourceEditor(type, editor, container, toWYSIWYG, fromWYSIWYG) {
47659
47714
  if (editor.o.sourceEditor !== 'area') {
47660
47715
  const sourceEditor = (0,_editor_factory_js__WEBPACK_IMPORTED_MODULE_7__.createSourceEditor)(editor.o.sourceEditor, editor, this.mirrorContainer, this.toWYSIWYG, this.fromWYSIWYG);
47661
47716
  sourceEditor.onReadyAlways(()=>{
47662
- var _a, _b;
47663
- (_a = this.sourceEditor) === null || _a === void 0 ? void 0 : _a.destruct();
47664
- this.sourceEditor = sourceEditor;
47665
- this.syncValueFromWYSIWYG(true);
47666
- (_b = editor.events) === null || _b === void 0 ? void 0 : _b.fire('sourceEditorReady', editor);
47717
+ var _a;
47718
+ this.takeOver(sourceEditor);
47719
+ (_a = editor.events) === null || _a === void 0 ? void 0 : _a.fire('sourceEditorReady', editor);
47667
47720
  });
47668
47721
  } else {
47669
47722
  (_a = this.sourceEditor) === null || _a === void 0 ? void 0 : _a.onReadyAlways(()=>{
@@ -47673,6 +47726,49 @@ function createSourceEditor(type, editor, container, toWYSIWYG, fromWYSIWYG) {
47673
47726
  });
47674
47727
  }
47675
47728
  }
47729
+ /**
47730
+ * Replaces the source editor (the textarea shown while ACE loads) with
47731
+ * the one that just became ready, carrying its text, selection and focus
47732
+ * over. Filling the new editor from WYSIWYG instead would drop what was
47733
+ * typed since the last, debounced, sync and normalise half-typed markup.
47734
+ */ takeOver(sourceEditor) {
47735
+ const previous = this.sourceEditor;
47736
+ if (!previous || previous === sourceEditor) {
47737
+ this.sourceEditor = sourceEditor;
47738
+ this.syncValueFromWYSIWYG(true);
47739
+ return;
47740
+ }
47741
+ const value = previous.getValue(), start = previous.getSelectionStart(), end = previous.getSelectionEnd(), focused = previous.isFocused, untouched = value === this.__filledValue;
47742
+ previous.destruct();
47743
+ this.sourceEditor = sourceEditor;
47744
+ if (untouched) {
47745
+ this.syncValueFromWYSIWYG(true);
47746
+ } else {
47747
+ sourceEditor.setValue(value);
47748
+ this.toWYSIWYG();
47749
+ }
47750
+ if (start >= 0) {
47751
+ sourceEditor.setSelectionRange(start, end);
47752
+ }
47753
+ focused && sourceEditor.focus();
47754
+ }
47755
+ /**
47756
+ * The beautifier arrived after the source view was opened: format the
47757
+ * view if nothing has been typed into it, otherwise leave the typing alone
47758
+ */ beautifyUntouched() {
47759
+ var _a, _b;
47760
+ const value = this.getMirrorValue();
47761
+ if (this.j.o.editHTMLDocumentMode || !value || value !== this.__filledValue) {
47762
+ return;
47763
+ }
47764
+ const html = this.j.e.fire('beautifyHTML', value);
47765
+ if ((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.isString)(html) && html !== value) {
47766
+ const focused = (_a = this.sourceEditor) === null || _a === void 0 ? void 0 : _a.isFocused;
47767
+ this.setMirrorValue(html);
47768
+ this.__filledValue = this.getMirrorValue();
47769
+ focused && ((_b = this.sourceEditor) === null || _b === void 0 ? void 0 : _b.focus());
47770
+ }
47771
+ }
47676
47772
  /** @override */ beforeDestruct() {
47677
47773
  if (this.sourceEditor) {
47678
47774
  this.sourceEditor.destruct();
@@ -47690,6 +47786,10 @@ function createSourceEditor(type, editor, container, toWYSIWYG, fromWYSIWYG) {
47690
47786
  ];
47691
47787
  this.__lock = false;
47692
47788
  this.__oldMirrorValue = '';
47789
+ /**
47790
+ * What the source view was last filled with from WYSIWYG, read back from
47791
+ * the editor; while the view still holds it, nothing has been typed there
47792
+ */ this.__filledValue = '';
47693
47793
  this.tempMarkerStart = '{start-jodit-selection}';
47694
47794
  this.tempMarkerStartReg = /{start-jodit-selection}/g;
47695
47795
  this.tempMarkerEnd = '{end-jodit-selection}';
@@ -49925,10 +50025,20 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_4__.pluginSystem.add('toolbarNavigation
49925
50025
 
49926
50026
 
49927
50027
 
50028
+ function insertVideos(data) {
50029
+ var _a;
50030
+ (_a = data.files) === null || _a === void 0 ? void 0 : _a.forEach((file)=>{
50031
+ this.s.insertNode(this.createInside.element('video', {
50032
+ controls: '',
50033
+ src: data.baseurl + file
50034
+ }));
50035
+ });
50036
+ }
49928
50037
  _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.video = {
49929
50038
  parseUrlToVideoEmbed: _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_0__.convertMediaUrlToVideoEmbed,
49930
50039
  defaultWidth: 400,
49931
- defaultHeight: 345
50040
+ defaultHeight: 345,
50041
+ defaultHandlerSuccess: insertVideos
49932
50042
  };
49933
50043
  _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_3__.Icon.set('video', _video_svg_js__WEBPACK_IMPORTED_MODULE_6__["default"]);
49934
50044
  _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.video = {
@@ -49965,6 +50075,18 @@ _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.video = {
49965
50075
  close();
49966
50076
  };
49967
50077
  jodit.s.save();
50078
+ const { uploader } = jodit.o;
50079
+ // Base64 alone would put whole video files into the content
50080
+ if (uploader.showTabInFileSelector !== false && (uploader.url || uploader.customUploadFunction)) {
50081
+ tabs.push((0,_modules_widget_index_js__WEBPACK_IMPORTED_MODULE_5__.UploadTab)(jodit, (data)=>{
50082
+ var _a, _b;
50083
+ jodit.s.restore();
50084
+ ((_b = (_a = jodit.o.video) === null || _a === void 0 ? void 0 : _a.defaultHandlerSuccess) !== null && _b !== void 0 ? _b : insertVideos).call(jodit, data);
50085
+ }, {
50086
+ label: 'Drop file',
50087
+ accept: 'video/*'
50088
+ }));
50089
+ }
49968
50090
  tabs.push({
49969
50091
  icon: 'link',
49970
50092
  name: 'Link',