jodit-pro 4.16.2 → 4.16.4

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/es2015/jodit.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * jodit-pro - PRO Version of Jodit Editor
3
3
  * Author: Chupurnov Valerii <chupurnov@gmail.com>
4
- * Version: v4.16.2
4
+ * Version: v4.16.4
5
5
  * Url: https://xdsoft.net/jodit/pro/
6
6
  * License(s): SEE LICENSE IN LICENSE.md
7
7
  */
@@ -1791,7 +1791,7 @@ __webpack_require__.r(__webpack_exports__);
1791
1791
  * ```
1792
1792
  * @packageDocumentation
1793
1793
  * @module constants
1794
- */ const APP_VERSION = "4.16.2";
1794
+ */ const APP_VERSION = "4.16.4";
1795
1795
  // prettier-ignore
1796
1796
  const ES = "es2015";
1797
1797
  const IS_ES_MODERN = true;
@@ -32857,22 +32857,19 @@ _core_ui_index_js__WEBPACK_IMPORTED_MODULE_2__.Icon.set('palette', _palette_svg_
32857
32857
  const tabs = [];
32858
32858
  const options = editor.o.uploader;
32859
32859
  if (callbacks.upload && options.showTabInFileSelector !== false && (options.url || options.insertImageAsBase64URI || options.customUploadFunction)) {
32860
- 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>');
32861
- editor.uploader.bind(dragBox, (resp)=>{
32862
- const handler = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.isFunction)(callbacks.upload) ? callbacks.upload : options.defaultHandlerSuccess;
32860
+ const { upload } = callbacks;
32861
+ tabs.push(UploadTab(editor, (resp)=>{
32862
+ const handler = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.isFunction)(upload) ? upload : options.defaultHandlerSuccess;
32863
32863
  if ((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.isFunction)(handler)) {
32864
32864
  handler.call(editor, resp);
32865
32865
  }
32866
- editor.e.fire('closeAllPopups');
32867
- }, (error)=>{
32868
- editor.message.error(error.message);
32869
- editor.e.fire('closeAllPopups');
32870
- });
32871
- tabs.push({
32872
- icon: 'upload',
32873
- name: 'Upload',
32874
- content: dragBox
32875
- });
32866
+ }, isImage ? {
32867
+ label: 'Drop image',
32868
+ accept: 'image/*'
32869
+ } : {
32870
+ label: 'Drop file',
32871
+ accept: '*'
32872
+ }));
32876
32873
  }
32877
32874
  if (callbacks.filebrowser) {
32878
32875
  if (editor.o.filebrowser.ajax.url || editor.o.filebrowser.items.url) {
@@ -32940,6 +32937,24 @@ _core_ui_index_js__WEBPACK_IMPORTED_MODULE_2__.Icon.set('palette', _palette_svg_
32940
32937
  box.classList.add('jodit-file-selector');
32941
32938
  return box;
32942
32939
  };
32940
+ /**
32941
+ * The Upload tab: a box that uploads the files dropped on it or chosen in its
32942
+ * file input, then passes the uploader's answer to `onSuccess` and closes the popup
32943
+ */ const UploadTab = (editor, onSuccess, { label, accept })=>{
32944
+ 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>');
32945
+ editor.uploader.bind(dragBox, (resp)=>{
32946
+ onSuccess.call(editor, resp);
32947
+ editor.e.fire('closeAllPopups');
32948
+ }, (error)=>{
32949
+ editor.message.error(error.message);
32950
+ editor.e.fire('closeAllPopups');
32951
+ });
32952
+ return {
32953
+ icon: 'upload',
32954
+ name: 'Upload',
32955
+ content: dragBox
32956
+ };
32957
+ };
32943
32958
  function val(elm, name, value) {
32944
32959
  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);
32945
32960
  if (!child) {
@@ -32952,7 +32967,8 @@ function val(elm, name, value) {
32952
32967
  }
32953
32968
 
32954
32969
  /* harmony export */ __webpack_require__.d(__webpack_exports__, [
32955
- /* harmony export */ "FileSelectorWidget", 0, /* binding */ FileSelectorWidget
32970
+ /* harmony export */ "FileSelectorWidget", 0, /* binding */ FileSelectorWidget,
32971
+ /* harmony export */ "UploadTab", 0, /* binding */ UploadTab
32956
32972
  /* harmony export */ ]);
32957
32973
 
32958
32974
 
@@ -32964,7 +32980,8 @@ function val(elm, name, value) {
32964
32980
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
32965
32981
  /* harmony export */ ColorPickerWidget: function() { return /* reexport safe */ _color_picker_color_picker_js__WEBPACK_IMPORTED_MODULE_0__.ColorPickerWidget; },
32966
32982
  /* harmony export */ FileSelectorWidget: function() { return /* reexport safe */ _file_selector_file_selector_js__WEBPACK_IMPORTED_MODULE_1__.FileSelectorWidget; },
32967
- /* harmony export */ TabsWidget: function() { return /* reexport safe */ _tabs_tabs_js__WEBPACK_IMPORTED_MODULE_2__.TabsWidget; }
32983
+ /* harmony export */ TabsWidget: function() { return /* reexport safe */ _tabs_tabs_js__WEBPACK_IMPORTED_MODULE_2__.TabsWidget; },
32984
+ /* harmony export */ UploadTab: function() { return /* reexport safe */ _file_selector_file_selector_js__WEBPACK_IMPORTED_MODULE_1__.UploadTab; }
32968
32985
  /* harmony export */ });
32969
32986
  /* harmony import */ var _color_picker_color_picker_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(22859);
32970
32987
  /* harmony import */ var _file_selector_file_selector_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(34793);
@@ -38815,6 +38832,19 @@ function brBefore(start) {
38815
38832
 
38816
38833
 
38817
38834
 
38835
+ function insertLinks(data) {
38836
+ var _a;
38837
+ (_a = data.files) === null || _a === void 0 ? void 0 : _a.forEach((file)=>{
38838
+ const link = this.createInside.element('a', {
38839
+ href: data.baseurl + file
38840
+ });
38841
+ link.textContent = this.o.uploader.getDisplayName.call(this.uploader, data.baseurl, file);
38842
+ this.s.insertNode(link);
38843
+ });
38844
+ }
38845
+ _config_js__WEBPACK_IMPORTED_MODULE_3__.Config.prototype.file = {
38846
+ defaultHandlerSuccess: insertLinks
38847
+ };
38818
38848
  _config_js__WEBPACK_IMPORTED_MODULE_3__.Config.prototype.controls.file = {
38819
38849
  popup: (editor, current, close)=>{
38820
38850
  const insert = (url, title = '')=>{
@@ -38829,7 +38859,10 @@ _config_js__WEBPACK_IMPORTED_MODULE_3__.Config.prototype.controls.file = {
38829
38859
  data.files && data.files.forEach((file)=>insert(data.baseurl + file));
38830
38860
  close();
38831
38861
  },
38832
- upload: true,
38862
+ upload: (data)=>{
38863
+ var _a, _b;
38864
+ ((_b = (_a = editor.o.file) === null || _a === void 0 ? void 0 : _a.defaultHandlerSuccess) !== null && _b !== void 0 ? _b : insertLinks).call(editor, data);
38865
+ },
38833
38866
  url: (url, text)=>{
38834
38867
  if (sourceAnchor) {
38835
38868
  (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_2__.attr)(sourceAnchor, 'href', url);
@@ -42451,6 +42484,26 @@ const cmd = (control)=>control.args && (0,_core_helpers_checker_index_js__WEBPAC
42451
42484
  // Images align with `imageAlignClasses`; the wrappers of iframes and media
42452
42485
  // keep inline styles
42453
42486
  const alignClasses = (editor, elm)=>_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(elm, 'img') ? editor.o.imageAlignClasses : null;
42487
+ // A Normal image sits where the text of its line is aligned (#1531)
42488
+ const lineAlign = (editor, elm)=>{
42489
+ 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;
42490
+ const rtl = (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_3__.css)(block, 'direction') === 'rtl';
42491
+ switch((0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_3__.css)(block, 'text-align')){
42492
+ case 'center':
42493
+ case '-webkit-center':
42494
+ return 'center';
42495
+ case 'justify':
42496
+ return 'justify';
42497
+ case 'right':
42498
+ return 'right';
42499
+ case 'end':
42500
+ return rtl ? 'left' : 'right';
42501
+ case 'start':
42502
+ return rtl ? 'right' : 'left';
42503
+ default:
42504
+ return 'left';
42505
+ }
42506
+ };
42454
42507
  const currentAlign = (editor, elm)=>elm ? (0,_core_helpers_utils_align_js__WEBPACK_IMPORTED_MODULE_2__.getHAlign)(elm, alignClasses(editor, elm)) : 'normal';
42455
42508
  const align = {
42456
42509
  name: 'left',
@@ -42463,7 +42516,7 @@ const align = {
42463
42516
  ],
42464
42517
  update: (editor, button)=>{
42465
42518
  const current = currentAlign(editor, button.target);
42466
- button.state.icon.name = current === 'normal' ? 'left' : current;
42519
+ button.state.icon.name = current === 'normal' ? lineAlign(editor, button.target) : current;
42467
42520
  },
42468
42521
  isActive: (editor, button)=>currentAlign(editor, button.target) !== 'normal',
42469
42522
  isChildActive: (editor, button)=>{
@@ -49209,7 +49262,8 @@ class AceEditor extends _sourceEditor_js__WEBPACK_IMPORTED_MODULE_3__.SourceEdit
49209
49262
  }
49210
49263
  return;
49211
49264
  }
49212
- this.fromWYSIWYG();
49265
+ // The source plugin carries the fallback editor's text over when this
49266
+ // one is ready; refilling from WYSIWYG here would drop unsynced typing
49213
49267
  tryInitAceEditor();
49214
49268
  };
49215
49269
  editor.e.on('afterSetMode', initAceEditor);
@@ -49574,6 +49628,7 @@ function createSourceEditor(type, editor, container, toWYSIWYG, fromWYSIWYG) {
49574
49628
  if (new_value !== this.getMirrorValue()) {
49575
49629
  this.setMirrorValue(new_value);
49576
49630
  }
49631
+ this.__filledValue = this.getMirrorValue();
49577
49632
  this.__lock = false;
49578
49633
  }
49579
49634
  }
@@ -49751,9 +49806,9 @@ function createSourceEditor(type, editor, container, toWYSIWYG, fromWYSIWYG) {
49751
49806
  return;
49752
49807
  }
49753
49808
  loading = true;
49754
- // It formats the source view from the next time it opens:
49755
- // filling it again now would replace what was typed there
49756
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.loadNext)(editor, editor.o.beautifyHTMLCDNUrlsJS).then(addEventListener, ()=>null);
49809
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.loadNext)(editor, editor.o.beautifyHTMLCDNUrlsJS).then(()=>{
49810
+ addEventListener() && this.beautifyUntouched();
49811
+ }, ()=>null);
49757
49812
  };
49758
49813
  editor.e.on('afterSetMode.source', loadBeautify);
49759
49814
  loadBeautify();
@@ -49773,11 +49828,9 @@ function createSourceEditor(type, editor, container, toWYSIWYG, fromWYSIWYG) {
49773
49828
  if (editor.o.sourceEditor !== 'area') {
49774
49829
  const sourceEditor = (0,_editor_factory_js__WEBPACK_IMPORTED_MODULE_7__.createSourceEditor)(editor.o.sourceEditor, editor, this.mirrorContainer, this.toWYSIWYG, this.fromWYSIWYG);
49775
49830
  sourceEditor.onReadyAlways(()=>{
49776
- var _a, _b;
49777
- (_a = this.sourceEditor) === null || _a === void 0 ? void 0 : _a.destruct();
49778
- this.sourceEditor = sourceEditor;
49779
- this.syncValueFromWYSIWYG(true);
49780
- (_b = editor.events) === null || _b === void 0 ? void 0 : _b.fire('sourceEditorReady', editor);
49831
+ var _a;
49832
+ this.takeOver(sourceEditor);
49833
+ (_a = editor.events) === null || _a === void 0 ? void 0 : _a.fire('sourceEditorReady', editor);
49781
49834
  });
49782
49835
  } else {
49783
49836
  (_a = this.sourceEditor) === null || _a === void 0 ? void 0 : _a.onReadyAlways(()=>{
@@ -49787,6 +49840,49 @@ function createSourceEditor(type, editor, container, toWYSIWYG, fromWYSIWYG) {
49787
49840
  });
49788
49841
  }
49789
49842
  }
49843
+ /**
49844
+ * Replaces the source editor (the textarea shown while ACE loads) with
49845
+ * the one that just became ready, carrying its text, selection and focus
49846
+ * over. Filling the new editor from WYSIWYG instead would drop what was
49847
+ * typed since the last, debounced, sync and normalise half-typed markup.
49848
+ */ takeOver(sourceEditor) {
49849
+ const previous = this.sourceEditor;
49850
+ if (!previous || previous === sourceEditor) {
49851
+ this.sourceEditor = sourceEditor;
49852
+ this.syncValueFromWYSIWYG(true);
49853
+ return;
49854
+ }
49855
+ const value = previous.getValue(), start = previous.getSelectionStart(), end = previous.getSelectionEnd(), focused = previous.isFocused, untouched = value === this.__filledValue;
49856
+ previous.destruct();
49857
+ this.sourceEditor = sourceEditor;
49858
+ if (untouched) {
49859
+ this.syncValueFromWYSIWYG(true);
49860
+ } else {
49861
+ sourceEditor.setValue(value);
49862
+ this.toWYSIWYG();
49863
+ }
49864
+ if (start >= 0) {
49865
+ sourceEditor.setSelectionRange(start, end);
49866
+ }
49867
+ focused && sourceEditor.focus();
49868
+ }
49869
+ /**
49870
+ * The beautifier arrived after the source view was opened: format the
49871
+ * view if nothing has been typed into it, otherwise leave the typing alone
49872
+ */ beautifyUntouched() {
49873
+ var _a, _b;
49874
+ const value = this.getMirrorValue();
49875
+ if (this.j.o.editHTMLDocumentMode || !value || value !== this.__filledValue) {
49876
+ return;
49877
+ }
49878
+ const html = this.j.e.fire('beautifyHTML', value);
49879
+ if ((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.isString)(html) && html !== value) {
49880
+ const focused = (_a = this.sourceEditor) === null || _a === void 0 ? void 0 : _a.isFocused;
49881
+ this.setMirrorValue(html);
49882
+ this.__filledValue = this.getMirrorValue();
49883
+ focused && ((_b = this.sourceEditor) === null || _b === void 0 ? void 0 : _b.focus());
49884
+ }
49885
+ }
49790
49886
  /** @override */ beforeDestruct() {
49791
49887
  if (this.sourceEditor) {
49792
49888
  this.sourceEditor.destruct();
@@ -49804,6 +49900,10 @@ function createSourceEditor(type, editor, container, toWYSIWYG, fromWYSIWYG) {
49804
49900
  ];
49805
49901
  this.__lock = false;
49806
49902
  this.__oldMirrorValue = '';
49903
+ /**
49904
+ * What the source view was last filled with from WYSIWYG, read back from
49905
+ * the editor; while the view still holds it, nothing has been typed there
49906
+ */ this.__filledValue = '';
49807
49907
  this.tempMarkerStart = '{start-jodit-selection}';
49808
49908
  this.tempMarkerStartReg = /{start-jodit-selection}/g;
49809
49909
  this.tempMarkerEnd = '{end-jodit-selection}';
@@ -53343,10 +53443,20 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_4__.pluginSystem.add('toolbarNavigation
53343
53443
 
53344
53444
 
53345
53445
 
53446
+ function insertVideos(data) {
53447
+ var _a;
53448
+ (_a = data.files) === null || _a === void 0 ? void 0 : _a.forEach((file)=>{
53449
+ this.s.insertNode(this.createInside.element('video', {
53450
+ controls: '',
53451
+ src: data.baseurl + file
53452
+ }));
53453
+ });
53454
+ }
53346
53455
  _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.video = {
53347
53456
  parseUrlToVideoEmbed: _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_0__.convertMediaUrlToVideoEmbed,
53348
53457
  defaultWidth: 400,
53349
- defaultHeight: 345
53458
+ defaultHeight: 345,
53459
+ defaultHandlerSuccess: insertVideos
53350
53460
  };
53351
53461
  _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_3__.Icon.set('video', _video_svg_js__WEBPACK_IMPORTED_MODULE_6__["default"]);
53352
53462
  _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.video = {
@@ -53383,6 +53493,18 @@ _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.video = {
53383
53493
  close();
53384
53494
  };
53385
53495
  jodit.s.save();
53496
+ const { uploader } = jodit.o;
53497
+ // Base64 alone would put whole video files into the content
53498
+ if (uploader.showTabInFileSelector !== false && (uploader.url || uploader.customUploadFunction)) {
53499
+ tabs.push((0,_modules_widget_index_js__WEBPACK_IMPORTED_MODULE_5__.UploadTab)(jodit, (data)=>{
53500
+ var _a, _b;
53501
+ jodit.s.restore();
53502
+ ((_b = (_a = jodit.o.video) === null || _a === void 0 ? void 0 : _a.defaultHandlerSuccess) !== null && _b !== void 0 ? _b : insertVideos).call(jodit, data);
53503
+ }, {
53504
+ label: 'Drop file',
53505
+ accept: 'video/*'
53506
+ }));
53507
+ }
53386
53508
  tabs.push({
53387
53509
  icon: 'link',
53388
53510
  name: 'Link',