jodit-pro 4.18.6 → 4.18.7

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 (338) hide show
  1. package/es2015/jodit.css +2 -2
  2. package/es2015/jodit.fat.min.css +1 -1
  3. package/es2015/jodit.fat.min.js +41 -16
  4. package/es2015/jodit.js +1139 -150
  5. package/es2015/jodit.min.css +1 -1
  6. package/es2015/jodit.min.js +34 -9
  7. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  8. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  9. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  10. package/es2015/plugins/autocomplete/autocomplete.css +1 -1
  11. package/es2015/plugins/autocomplete/autocomplete.js +1 -1
  12. package/es2015/plugins/autocomplete/autocomplete.min.js +1 -1
  13. package/es2015/plugins/backup/backup.css +1 -1
  14. package/es2015/plugins/backup/backup.js +1 -1
  15. package/es2015/plugins/backup/backup.min.js +1 -1
  16. package/es2015/plugins/button-generator/button-generator.css +1 -1
  17. package/es2015/plugins/button-generator/button-generator.js +1 -1
  18. package/es2015/plugins/button-generator/button-generator.min.js +1 -1
  19. package/es2015/plugins/change-case/change-case.js +1 -1
  20. package/es2015/plugins/change-case/change-case.min.js +1 -1
  21. package/es2015/plugins/chart/chart.css +1 -1
  22. package/es2015/plugins/chart/chart.js +1 -1
  23. package/es2015/plugins/chart/chart.min.js +1 -1
  24. package/es2015/plugins/color-picker/color-picker.css +1 -1
  25. package/es2015/plugins/color-picker/color-picker.js +1 -1
  26. package/es2015/plugins/color-picker/color-picker.min.js +1 -1
  27. package/es2015/plugins/emoji/emoji.css +1 -1
  28. package/es2015/plugins/emoji/emoji.js +1 -1
  29. package/es2015/plugins/emoji/emoji.min.js +1 -1
  30. package/es2015/plugins/export-docs/export-docs.js +1 -1
  31. package/es2015/plugins/export-docs/export-docs.min.js +1 -1
  32. package/es2015/plugins/finder/finder.css +1 -1
  33. package/es2015/plugins/finder/finder.js +1 -1
  34. package/es2015/plugins/finder/finder.min.js +1 -1
  35. package/es2015/plugins/google-maps/google-maps.css +1 -1
  36. package/es2015/plugins/google-maps/google-maps.js +1 -1
  37. package/es2015/plugins/google-maps/google-maps.min.js +1 -1
  38. package/es2015/plugins/google-search/google-search.js +1 -1
  39. package/es2015/plugins/google-search/google-search.min.js +1 -1
  40. package/es2015/plugins/highlight-signature/highlight-signature.js +1 -1
  41. package/es2015/plugins/highlight-signature/highlight-signature.min.js +1 -1
  42. package/es2015/plugins/iframe-editor/iframe-editor.css +1 -1
  43. package/es2015/plugins/iframe-editor/iframe-editor.js +1 -1
  44. package/es2015/plugins/iframe-editor/iframe-editor.min.js +1 -1
  45. package/es2015/plugins/image-editor-pro/image-editor-pro.css +1 -1
  46. package/es2015/plugins/image-editor-pro/image-editor-pro.js +1 -1
  47. package/es2015/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  48. package/es2015/plugins/keyboard/keyboard.css +1 -1
  49. package/es2015/plugins/keyboard/keyboard.js +1 -1
  50. package/es2015/plugins/keyboard/keyboard.min.js +1 -1
  51. package/es2015/plugins/mobile-view/mobile-view.js +1 -1
  52. package/es2015/plugins/mobile-view/mobile-view.min.js +1 -1
  53. package/es2015/plugins/page-break/page-break.js +1 -1
  54. package/es2015/plugins/page-break/page-break.min.js +1 -1
  55. package/es2015/plugins/paste-code/paste-code.css +1 -1
  56. package/es2015/plugins/paste-code/paste-code.js +1 -1
  57. package/es2015/plugins/paste-code/paste-code.min.js +1 -1
  58. package/es2015/plugins/paste-from-word/paste-from-word.js +1 -1
  59. package/es2015/plugins/paste-from-word/paste-from-word.min.js +1 -1
  60. package/es2015/plugins/show-blocks/show-blocks.js +1 -1
  61. package/es2015/plugins/show-blocks/show-blocks.min.js +1 -1
  62. package/es2015/plugins/style/style.css +1 -1
  63. package/es2015/plugins/style/style.js +1 -1
  64. package/es2015/plugins/style/style.min.js +1 -1
  65. package/es2015/plugins/templates/templates.css +1 -1
  66. package/es2015/plugins/templates/templates.js +1 -1
  67. package/es2015/plugins/templates/templates.min.js +1 -1
  68. package/es2015/plugins/todo-list/todo-list.css +1 -1
  69. package/es2015/plugins/todo-list/todo-list.js +1 -1
  70. package/es2015/plugins/todo-list/todo-list.min.js +1 -1
  71. package/es2015/plugins/translate/translate.css +1 -1
  72. package/es2015/plugins/translate/translate.js +1 -1
  73. package/es2015/plugins/translate/translate.min.js +1 -1
  74. package/es2015/plugins/tune-block/tune-block.css +1 -1
  75. package/es2015/plugins/tune-block/tune-block.js +1 -1
  76. package/es2015/plugins/tune-block/tune-block.min.js +1 -1
  77. package/es2018/jodit.fat.min.css +1 -1
  78. package/es2018/jodit.fat.min.js +33 -8
  79. package/es2018/jodit.min.css +1 -1
  80. package/es2018/jodit.min.js +64 -39
  81. package/es2018/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  82. package/es2018/plugins/autocomplete/autocomplete.min.js +1 -1
  83. package/es2018/plugins/backup/backup.min.js +1 -1
  84. package/es2018/plugins/button-generator/button-generator.min.js +1 -1
  85. package/es2018/plugins/change-case/change-case.min.js +1 -1
  86. package/es2018/plugins/chart/chart.min.js +1 -1
  87. package/es2018/plugins/color-picker/color-picker.min.js +1 -1
  88. package/es2018/plugins/emoji/emoji.min.js +1 -1
  89. package/es2018/plugins/export-docs/export-docs.min.js +1 -1
  90. package/es2018/plugins/finder/finder.min.js +1 -1
  91. package/es2018/plugins/google-maps/google-maps.min.js +1 -1
  92. package/es2018/plugins/google-search/google-search.min.js +1 -1
  93. package/es2018/plugins/highlight-signature/highlight-signature.min.js +1 -1
  94. package/es2018/plugins/iframe-editor/iframe-editor.min.js +1 -1
  95. package/es2018/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  96. package/es2018/plugins/keyboard/keyboard.min.js +1 -1
  97. package/es2018/plugins/mobile-view/mobile-view.min.js +1 -1
  98. package/es2018/plugins/page-break/page-break.min.js +1 -1
  99. package/es2018/plugins/paste-code/paste-code.min.js +1 -1
  100. package/es2018/plugins/paste-from-word/paste-from-word.min.js +1 -1
  101. package/es2018/plugins/show-blocks/show-blocks.min.js +1 -1
  102. package/es2018/plugins/style/style.min.js +1 -1
  103. package/es2018/plugins/templates/templates.min.js +1 -1
  104. package/es2018/plugins/todo-list/todo-list.min.js +1 -1
  105. package/es2018/plugins/translate/translate.min.js +1 -1
  106. package/es2018/plugins/tune-block/tune-block.min.js +1 -1
  107. package/es2021/jodit.css +2 -2
  108. package/es2021/jodit.fat.min.css +1 -1
  109. package/es2021/jodit.fat.min.js +35 -10
  110. package/es2021/jodit.js +1139 -150
  111. package/es2021/jodit.min.css +1 -1
  112. package/es2021/jodit.min.js +78 -53
  113. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  114. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  115. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  116. package/es2021/plugins/autocomplete/autocomplete.css +1 -1
  117. package/es2021/plugins/autocomplete/autocomplete.js +1 -1
  118. package/es2021/plugins/autocomplete/autocomplete.min.js +1 -1
  119. package/es2021/plugins/backup/backup.css +1 -1
  120. package/es2021/plugins/backup/backup.js +1 -1
  121. package/es2021/plugins/backup/backup.min.js +1 -1
  122. package/es2021/plugins/button-generator/button-generator.css +1 -1
  123. package/es2021/plugins/button-generator/button-generator.js +1 -1
  124. package/es2021/plugins/button-generator/button-generator.min.js +1 -1
  125. package/es2021/plugins/change-case/change-case.js +1 -1
  126. package/es2021/plugins/change-case/change-case.min.js +1 -1
  127. package/es2021/plugins/chart/chart.css +1 -1
  128. package/es2021/plugins/chart/chart.js +1 -1
  129. package/es2021/plugins/chart/chart.min.js +1 -1
  130. package/es2021/plugins/color-picker/color-picker.css +1 -1
  131. package/es2021/plugins/color-picker/color-picker.js +1 -1
  132. package/es2021/plugins/color-picker/color-picker.min.js +1 -1
  133. package/es2021/plugins/emoji/emoji.css +1 -1
  134. package/es2021/plugins/emoji/emoji.js +1 -1
  135. package/es2021/plugins/emoji/emoji.min.js +1 -1
  136. package/es2021/plugins/export-docs/export-docs.js +1 -1
  137. package/es2021/plugins/export-docs/export-docs.min.js +1 -1
  138. package/es2021/plugins/finder/finder.css +1 -1
  139. package/es2021/plugins/finder/finder.js +1 -1
  140. package/es2021/plugins/finder/finder.min.js +1 -1
  141. package/es2021/plugins/google-maps/google-maps.css +1 -1
  142. package/es2021/plugins/google-maps/google-maps.js +1 -1
  143. package/es2021/plugins/google-maps/google-maps.min.js +1 -1
  144. package/es2021/plugins/google-search/google-search.js +1 -1
  145. package/es2021/plugins/google-search/google-search.min.js +1 -1
  146. package/es2021/plugins/highlight-signature/highlight-signature.js +1 -1
  147. package/es2021/plugins/highlight-signature/highlight-signature.min.js +1 -1
  148. package/es2021/plugins/iframe-editor/iframe-editor.css +1 -1
  149. package/es2021/plugins/iframe-editor/iframe-editor.js +1 -1
  150. package/es2021/plugins/iframe-editor/iframe-editor.min.js +1 -1
  151. package/es2021/plugins/image-editor-pro/image-editor-pro.css +1 -1
  152. package/es2021/plugins/image-editor-pro/image-editor-pro.js +1 -1
  153. package/es2021/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  154. package/es2021/plugins/keyboard/keyboard.css +1 -1
  155. package/es2021/plugins/keyboard/keyboard.js +1 -1
  156. package/es2021/plugins/keyboard/keyboard.min.js +1 -1
  157. package/es2021/plugins/mobile-view/mobile-view.js +1 -1
  158. package/es2021/plugins/mobile-view/mobile-view.min.js +1 -1
  159. package/es2021/plugins/page-break/page-break.js +1 -1
  160. package/es2021/plugins/page-break/page-break.min.js +1 -1
  161. package/es2021/plugins/paste-code/paste-code.css +1 -1
  162. package/es2021/plugins/paste-code/paste-code.js +1 -1
  163. package/es2021/plugins/paste-code/paste-code.min.js +1 -1
  164. package/es2021/plugins/paste-from-word/paste-from-word.js +1 -1
  165. package/es2021/plugins/paste-from-word/paste-from-word.min.js +1 -1
  166. package/es2021/plugins/show-blocks/show-blocks.js +1 -1
  167. package/es2021/plugins/show-blocks/show-blocks.min.js +1 -1
  168. package/es2021/plugins/style/style.css +1 -1
  169. package/es2021/plugins/style/style.js +1 -1
  170. package/es2021/plugins/style/style.min.js +1 -1
  171. package/es2021/plugins/templates/templates.css +1 -1
  172. package/es2021/plugins/templates/templates.js +1 -1
  173. package/es2021/plugins/templates/templates.min.js +1 -1
  174. package/es2021/plugins/todo-list/todo-list.css +1 -1
  175. package/es2021/plugins/todo-list/todo-list.js +1 -1
  176. package/es2021/plugins/todo-list/todo-list.min.js +1 -1
  177. package/es2021/plugins/translate/translate.css +1 -1
  178. package/es2021/plugins/translate/translate.js +1 -1
  179. package/es2021/plugins/translate/translate.min.js +1 -1
  180. package/es2021/plugins/tune-block/tune-block.css +1 -1
  181. package/es2021/plugins/tune-block/tune-block.js +1 -1
  182. package/es2021/plugins/tune-block/tune-block.min.js +1 -1
  183. package/es2021.en/jodit.css +2 -2
  184. package/es2021.en/jodit.fat.min.css +1 -1
  185. package/es2021.en/jodit.fat.min.js +35 -10
  186. package/es2021.en/jodit.js +1139 -150
  187. package/es2021.en/jodit.min.css +1 -1
  188. package/es2021.en/jodit.min.js +78 -53
  189. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  190. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  191. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  192. package/es2021.en/plugins/autocomplete/autocomplete.css +1 -1
  193. package/es2021.en/plugins/autocomplete/autocomplete.js +1 -1
  194. package/es2021.en/plugins/autocomplete/autocomplete.min.js +1 -1
  195. package/es2021.en/plugins/backup/backup.css +1 -1
  196. package/es2021.en/plugins/backup/backup.js +1 -1
  197. package/es2021.en/plugins/backup/backup.min.js +1 -1
  198. package/es2021.en/plugins/button-generator/button-generator.css +1 -1
  199. package/es2021.en/plugins/button-generator/button-generator.js +1 -1
  200. package/es2021.en/plugins/button-generator/button-generator.min.js +1 -1
  201. package/es2021.en/plugins/change-case/change-case.js +1 -1
  202. package/es2021.en/plugins/change-case/change-case.min.js +1 -1
  203. package/es2021.en/plugins/chart/chart.css +1 -1
  204. package/es2021.en/plugins/chart/chart.js +1 -1
  205. package/es2021.en/plugins/chart/chart.min.js +1 -1
  206. package/es2021.en/plugins/color-picker/color-picker.css +1 -1
  207. package/es2021.en/plugins/color-picker/color-picker.js +1 -1
  208. package/es2021.en/plugins/color-picker/color-picker.min.js +1 -1
  209. package/es2021.en/plugins/emoji/emoji.css +1 -1
  210. package/es2021.en/plugins/emoji/emoji.js +1 -1
  211. package/es2021.en/plugins/emoji/emoji.min.js +1 -1
  212. package/es2021.en/plugins/export-docs/export-docs.js +1 -1
  213. package/es2021.en/plugins/export-docs/export-docs.min.js +1 -1
  214. package/es2021.en/plugins/finder/finder.css +1 -1
  215. package/es2021.en/plugins/finder/finder.js +1 -1
  216. package/es2021.en/plugins/finder/finder.min.js +1 -1
  217. package/es2021.en/plugins/google-maps/google-maps.css +1 -1
  218. package/es2021.en/plugins/google-maps/google-maps.js +1 -1
  219. package/es2021.en/plugins/google-maps/google-maps.min.js +1 -1
  220. package/es2021.en/plugins/google-search/google-search.js +1 -1
  221. package/es2021.en/plugins/google-search/google-search.min.js +1 -1
  222. package/es2021.en/plugins/highlight-signature/highlight-signature.js +1 -1
  223. package/es2021.en/plugins/highlight-signature/highlight-signature.min.js +1 -1
  224. package/es2021.en/plugins/iframe-editor/iframe-editor.css +1 -1
  225. package/es2021.en/plugins/iframe-editor/iframe-editor.js +1 -1
  226. package/es2021.en/plugins/iframe-editor/iframe-editor.min.js +1 -1
  227. package/es2021.en/plugins/image-editor-pro/image-editor-pro.css +1 -1
  228. package/es2021.en/plugins/image-editor-pro/image-editor-pro.js +1 -1
  229. package/es2021.en/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  230. package/es2021.en/plugins/keyboard/keyboard.css +1 -1
  231. package/es2021.en/plugins/keyboard/keyboard.js +1 -1
  232. package/es2021.en/plugins/keyboard/keyboard.min.js +1 -1
  233. package/es2021.en/plugins/mobile-view/mobile-view.js +1 -1
  234. package/es2021.en/plugins/mobile-view/mobile-view.min.js +1 -1
  235. package/es2021.en/plugins/page-break/page-break.js +1 -1
  236. package/es2021.en/plugins/page-break/page-break.min.js +1 -1
  237. package/es2021.en/plugins/paste-code/paste-code.css +1 -1
  238. package/es2021.en/plugins/paste-code/paste-code.js +1 -1
  239. package/es2021.en/plugins/paste-code/paste-code.min.js +1 -1
  240. package/es2021.en/plugins/paste-from-word/paste-from-word.js +1 -1
  241. package/es2021.en/plugins/paste-from-word/paste-from-word.min.js +1 -1
  242. package/es2021.en/plugins/show-blocks/show-blocks.js +1 -1
  243. package/es2021.en/plugins/show-blocks/show-blocks.min.js +1 -1
  244. package/es2021.en/plugins/style/style.css +1 -1
  245. package/es2021.en/plugins/style/style.js +1 -1
  246. package/es2021.en/plugins/style/style.min.js +1 -1
  247. package/es2021.en/plugins/templates/templates.css +1 -1
  248. package/es2021.en/plugins/templates/templates.js +1 -1
  249. package/es2021.en/plugins/templates/templates.min.js +1 -1
  250. package/es2021.en/plugins/todo-list/todo-list.css +1 -1
  251. package/es2021.en/plugins/todo-list/todo-list.js +1 -1
  252. package/es2021.en/plugins/todo-list/todo-list.min.js +1 -1
  253. package/es2021.en/plugins/translate/translate.css +1 -1
  254. package/es2021.en/plugins/translate/translate.js +1 -1
  255. package/es2021.en/plugins/translate/translate.min.js +1 -1
  256. package/es2021.en/plugins/tune-block/tune-block.css +1 -1
  257. package/es2021.en/plugins/tune-block/tune-block.js +1 -1
  258. package/es2021.en/plugins/tune-block/tune-block.min.js +1 -1
  259. package/es5/jodit.css +3 -3
  260. package/es5/jodit.fat.min.css +1 -1
  261. package/es5/jodit.fat.min.js +2 -2
  262. package/es5/jodit.js +1521 -153
  263. package/es5/jodit.min.css +3 -3
  264. package/es5/jodit.min.js +2 -2
  265. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  266. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  267. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  268. package/es5/plugins/autocomplete/autocomplete.css +1 -1
  269. package/es5/plugins/autocomplete/autocomplete.js +1 -1
  270. package/es5/plugins/autocomplete/autocomplete.min.js +1 -1
  271. package/es5/plugins/backup/backup.css +1 -1
  272. package/es5/plugins/backup/backup.js +1 -1
  273. package/es5/plugins/backup/backup.min.js +1 -1
  274. package/es5/plugins/button-generator/button-generator.css +1 -1
  275. package/es5/plugins/button-generator/button-generator.js +1 -1
  276. package/es5/plugins/button-generator/button-generator.min.js +1 -1
  277. package/es5/plugins/change-case/change-case.js +1 -1
  278. package/es5/plugins/change-case/change-case.min.js +1 -1
  279. package/es5/plugins/chart/chart.css +1 -1
  280. package/es5/plugins/chart/chart.js +1 -1
  281. package/es5/plugins/chart/chart.min.js +1 -1
  282. package/es5/plugins/color-picker/color-picker.css +1 -1
  283. package/es5/plugins/color-picker/color-picker.js +1 -1
  284. package/es5/plugins/color-picker/color-picker.min.js +1 -1
  285. package/es5/plugins/emoji/emoji.css +1 -1
  286. package/es5/plugins/emoji/emoji.js +1 -1
  287. package/es5/plugins/emoji/emoji.min.js +1 -1
  288. package/es5/plugins/export-docs/export-docs.js +1 -1
  289. package/es5/plugins/export-docs/export-docs.min.js +1 -1
  290. package/es5/plugins/finder/finder.css +1 -1
  291. package/es5/plugins/finder/finder.js +1 -1
  292. package/es5/plugins/finder/finder.min.js +1 -1
  293. package/es5/plugins/google-maps/google-maps.css +1 -1
  294. package/es5/plugins/google-maps/google-maps.js +1 -1
  295. package/es5/plugins/google-maps/google-maps.min.js +1 -1
  296. package/es5/plugins/google-search/google-search.js +1 -1
  297. package/es5/plugins/google-search/google-search.min.js +1 -1
  298. package/es5/plugins/highlight-signature/highlight-signature.js +1 -1
  299. package/es5/plugins/highlight-signature/highlight-signature.min.js +1 -1
  300. package/es5/plugins/iframe-editor/iframe-editor.css +1 -1
  301. package/es5/plugins/iframe-editor/iframe-editor.js +1 -1
  302. package/es5/plugins/iframe-editor/iframe-editor.min.js +1 -1
  303. package/es5/plugins/image-editor-pro/image-editor-pro.css +1 -1
  304. package/es5/plugins/image-editor-pro/image-editor-pro.js +1 -1
  305. package/es5/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  306. package/es5/plugins/keyboard/keyboard.css +1 -1
  307. package/es5/plugins/keyboard/keyboard.js +1 -1
  308. package/es5/plugins/keyboard/keyboard.min.js +1 -1
  309. package/es5/plugins/mobile-view/mobile-view.js +1 -1
  310. package/es5/plugins/mobile-view/mobile-view.min.js +1 -1
  311. package/es5/plugins/page-break/page-break.js +1 -1
  312. package/es5/plugins/page-break/page-break.min.js +1 -1
  313. package/es5/plugins/paste-code/paste-code.css +1 -1
  314. package/es5/plugins/paste-code/paste-code.js +1 -1
  315. package/es5/plugins/paste-code/paste-code.min.js +1 -1
  316. package/es5/plugins/paste-from-word/paste-from-word.js +1 -1
  317. package/es5/plugins/paste-from-word/paste-from-word.min.js +1 -1
  318. package/es5/plugins/show-blocks/show-blocks.js +1 -1
  319. package/es5/plugins/show-blocks/show-blocks.min.js +1 -1
  320. package/es5/plugins/style/style.css +1 -1
  321. package/es5/plugins/style/style.js +1 -1
  322. package/es5/plugins/style/style.min.js +1 -1
  323. package/es5/plugins/templates/templates.css +1 -1
  324. package/es5/plugins/templates/templates.js +1 -1
  325. package/es5/plugins/templates/templates.min.js +1 -1
  326. package/es5/plugins/todo-list/todo-list.css +1 -1
  327. package/es5/plugins/todo-list/todo-list.js +1 -1
  328. package/es5/plugins/todo-list/todo-list.min.js +1 -1
  329. package/es5/plugins/translate/translate.css +1 -1
  330. package/es5/plugins/translate/translate.js +1 -1
  331. package/es5/plugins/translate/translate.min.js +1 -1
  332. package/es5/plugins/tune-block/tune-block.css +1 -1
  333. package/es5/plugins/tune-block/tune-block.js +1 -1
  334. package/es5/plugins/tune-block/tune-block.min.js +1 -1
  335. package/es5/polyfills.fat.min.js +1 -1
  336. package/es5/polyfills.js +1 -1
  337. package/es5/polyfills.min.js +1 -1
  338. 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.18.6
4
+ * Version: v4.18.7
5
5
  * Url: https://xdsoft.net/jodit/pro/
6
6
  * License(s): SEE LICENSE IN LICENSE.md
7
7
  */
@@ -730,28 +730,18 @@ let ConfigPrototype = {};
730
730
  * them unaligned
731
731
  */ this.imageDefaultAlign = 'normal';
732
732
  /**
733
- * Class names to align images with, instead of an inline `float` or
734
- * `margin`. Aligning an image removes every class listed here and adds the
735
- * chosen alignment's, which can be several separated by spaces. An
736
- * alignment can also list several such sets, to recognise each of them;
737
- * aligning writes the first. `alignClasses.img` takes its place when set.
738
- *
739
- * ```javascript
740
- * Jodit.make('#editor', {
741
- * imageAlignClasses: {
742
- * left: 'align-left',
743
- * right: 'align-right',
744
- * center: ['align-center', 'centered']
745
- * }
746
- * });
747
- * ```
733
+ * @deprecated Use `alignClasses.img`, which takes the same value. When
734
+ * `alignClasses.img` isn't set, the editor copies this into it.
748
735
  */ this.imageAlignClasses = null;
749
736
  /**
750
- * Class names to align elements with, by tag name, as `imageAlignClasses`
751
- * does for images: `img`, and `video`, `audio` and `iframe` in the media
752
- * popup. A media wrapper (see `mediaWrappers`), and Jodit's own `jodit` and
753
- * `jodit-media` wrappers, are aligned with the classes for the media in
754
- * them.
737
+ * Class names to align elements with, by tag name, instead of an inline
738
+ * `float` or `margin`: `img`, and `video`, `audio` and `iframe` in the
739
+ * media popup. Aligning an element removes every class listed for its tag
740
+ * and adds the chosen alignment's, which can be several separated by
741
+ * spaces. An alignment can also list several such sets, to recognise each
742
+ * of them; aligning writes the first. A media wrapper (see
743
+ * `mediaWrappers`), and Jodit's own `jodit` and `jodit-media` wrappers,
744
+ * are aligned with the classes for the media in them.
755
745
  *
756
746
  * ```javascript
757
747
  * const media = {
@@ -761,7 +751,15 @@ let ConfigPrototype = {};
761
751
  * };
762
752
  *
763
753
  * Jodit.make('#editor', {
764
- * alignClasses: { video: media, iframe: media }
754
+ * alignClasses: {
755
+ * img: {
756
+ * left: 'align-left',
757
+ * right: 'align-right',
758
+ * center: ['align-center', 'centered']
759
+ * },
760
+ * video: media,
761
+ * iframe: media
762
+ * }
765
763
  * });
766
764
  * ```
767
765
  */ this.alignClasses = {};
@@ -1816,7 +1814,7 @@ __webpack_require__.r(__webpack_exports__);
1816
1814
  * ```
1817
1815
  * @packageDocumentation
1818
1816
  * @module constants
1819
- */ const APP_VERSION = "4.18.6";
1817
+ */ const APP_VERSION = "4.18.7";
1820
1818
  // prettier-ignore
1821
1819
  const ES = "es2015";
1822
1820
  const IS_ES_MODERN = true;
@@ -7520,7 +7518,7 @@ const classSets = (value)=>((0,_checker_is_array_js__WEBPACK_IMPORTED_MODULE_1__
7520
7518
  /**
7521
7519
  * The class names to align `elm` with: `alignClasses` for its tag, or for the
7522
7520
  * media in it when it wraps media (a `mediaWrappers` wrapper, `jodit` or
7523
- * `jodit-media`), falling back to `imageAlignClasses` for an image
7521
+ * `jodit-media`)
7524
7522
  */ function getAlignClasses(jodit, elm) {
7525
7523
  var _a, _b;
7526
7524
  if (!elm) {
@@ -7530,8 +7528,7 @@ const classSets = (value)=>((0,_checker_is_array_js__WEBPACK_IMPORTED_MODULE_1__
7530
7528
  'jodit',
7531
7529
  'jodit-media'
7532
7530
  ])) ? elm.firstElementChild : (0,_media_wrapper_js__WEBPACK_IMPORTED_MODULE_4__.getWrappedMedia)(jodit, elm);
7533
- const tag = (media !== null && media !== void 0 ? media : elm).nodeName.toLowerCase();
7534
- return (_b = (_a = jodit.o.alignClasses) === null || _a === void 0 ? void 0 : _a[tag]) !== null && _b !== void 0 ? _b : tag === 'img' ? jodit.o.imageAlignClasses : null;
7531
+ return (_b = (_a = jodit.o.alignClasses) === null || _a === void 0 ? void 0 : _a[(media !== null && media !== void 0 ? media : elm).nodeName.toLowerCase()]) !== null && _b !== void 0 ? _b : null;
7535
7532
  }
7536
7533
  /**
7537
7534
  * Align image, with `classes` (see `alignClasses`) instead of inline styles
@@ -18395,6 +18392,19 @@ const __defaultClassesKey = 'data-jodit-default-classes';
18395
18392
  const NOEDIT = {
18396
18393
  contenteditable: false
18397
18394
  };
18395
+ /**
18396
+ * The editor's options, with the deprecated `imageAlignClasses` copied into
18397
+ * `alignClasses.img` when that isn't set
18398
+ */ function makeOptions(options) {
18399
+ var _a;
18400
+ const opt = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.ConfigProto)(options || {}, _config_js__WEBPACK_IMPORTED_MODULE_7__.Config.defaultOptions);
18401
+ if (opt.imageAlignClasses && !((_a = opt.alignClasses) === null || _a === void 0 ? void 0 : _a.img)) {
18402
+ opt.alignClasses = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.ConfigProto)({
18403
+ img: opt.imageAlignClasses
18404
+ }, opt.alignClasses);
18405
+ }
18406
+ return opt;
18407
+ }
18398
18408
  let Jodit = Jodit_1 = class Jodit extends _modules_index_js__WEBPACK_IMPORTED_MODULE_8__.ViewWithToolbar {
18399
18409
  /** @override */ className() {
18400
18410
  return 'Jodit';
@@ -19163,7 +19173,7 @@ let Jodit = Jodit_1 = class Jodit extends _modules_index_js__WEBPACK_IMPORTED_MO
19163
19173
  // do nothing
19164
19174
  }
19165
19175
  /** @override **/ initOptions(options) {
19166
- this.options = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.ConfigProto)(options || {}, _config_js__WEBPACK_IMPORTED_MODULE_7__.Config.defaultOptions);
19176
+ this.options = makeOptions(options);
19167
19177
  }
19168
19178
  /** @override **/ initOwners() {
19169
19179
  // in iframe, it can be changed
@@ -19277,7 +19287,7 @@ let Jodit = Jodit_1 = class Jodit extends _modules_index_js__WEBPACK_IMPORTED_MO
19277
19287
  right: rightSlot
19278
19288
  },
19279
19289
  statusbar: new _modules_index_js__WEBPACK_IMPORTED_MODULE_8__.StatusBar(this, container),
19280
- options: this.isReady ? (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.ConfigProto)(options || {}, _config_js__WEBPACK_IMPORTED_MODULE_7__.Config.defaultOptions) : this.options,
19290
+ options: this.isReady ? makeOptions(options) : this.options,
19281
19291
  history: new _modules_index_js__WEBPACK_IMPORTED_MODULE_8__.History(this),
19282
19292
  editorWindow: this.ow
19283
19293
  };
@@ -19878,7 +19888,14 @@ function addClassNames(className, elm) {
19878
19888
  'Line height': 'ارتفاع الخط',
19879
19889
  spellcheck: 'التدقيق الإملائي',
19880
19890
  'Speech Recognize': 'التعرف على الكلام',
19881
- All: 'تحديد الكل'
19891
+ All: 'تحديد الكل',
19892
+ 'Video properties': 'خصائص الفيديو',
19893
+ 'Audio properties': 'خصائص الصوت',
19894
+ Poster: 'صورة الغلاف',
19895
+ Autoplay: 'تشغيل تلقائي',
19896
+ Loop: 'تكرار',
19897
+ Muted: 'مكتوم الصوت',
19898
+ Controls: 'عناصر التحكم'
19882
19899
  });
19883
19900
 
19884
19901
 
@@ -20112,7 +20129,14 @@ function addClassNames(className, elm) {
20112
20129
  'Find Next': 'Növbətini tap',
20113
20130
  'Insert className': 'className (CSS) əlavə et',
20114
20131
  'Press Alt for custom resizing': 'Fərdi ölçüləndirmə üçün Alt düyməsini basın',
20115
- 'License: %s': 'Lisenziya: %s'
20132
+ 'License: %s': 'Lisenziya: %s',
20133
+ 'Video properties': 'Video xassələri',
20134
+ 'Audio properties': 'Audio xassələri',
20135
+ Poster: 'Örtük şəkli',
20136
+ Autoplay: 'Avtomatik oynatma',
20137
+ Loop: 'Təkrarla',
20138
+ Muted: 'Səssiz',
20139
+ Controls: 'İdarəetmə elementləri'
20116
20140
  });
20117
20141
 
20118
20142
 
@@ -20338,7 +20362,14 @@ function addClassNames(className, elm) {
20338
20362
  'Find Previous': 'Najít Předchozí',
20339
20363
  'Find Next': 'Najít Další',
20340
20364
  'Insert className': 'Vložte název třídy',
20341
- 'Press Alt for custom resizing': 'Stiskněte Alt pro vlastní změnu velikosti'
20365
+ 'Press Alt for custom resizing': 'Stiskněte Alt pro vlastní změnu velikosti',
20366
+ 'Video properties': 'Vlastnosti videa',
20367
+ 'Audio properties': 'Vlastnosti zvuku',
20368
+ Poster: 'Náhledový obrázek',
20369
+ Autoplay: 'Automatické přehrávání',
20370
+ Loop: 'Opakovat',
20371
+ Muted: 'Ztlumeno',
20372
+ Controls: 'Ovládací prvky'
20342
20373
  });
20343
20374
 
20344
20375
 
@@ -20568,7 +20599,14 @@ function addClassNames(className, elm) {
20568
20599
  'Find Next': 'Weitersuchen',
20569
20600
  'Insert className': 'className (CSS) einfügen',
20570
20601
  'Press Alt for custom resizing': 'Drücken Sie Alt für benutzerdefinierte Größenanpassung',
20571
- 'License: %s': 'Lizenz: %s'
20602
+ 'License: %s': 'Lizenz: %s',
20603
+ 'Video properties': 'Videoeigenschaften',
20604
+ 'Audio properties': 'Audioeigenschaften',
20605
+ Poster: 'Vorschaubild',
20606
+ Autoplay: 'Automatische Wiedergabe',
20607
+ Loop: 'Wiederholen',
20608
+ Muted: 'Stumm',
20609
+ Controls: 'Steuerelemente'
20572
20610
  });
20573
20611
 
20574
20612
 
@@ -20815,7 +20853,14 @@ function addClassNames(className, elm) {
20815
20853
  'Find Next': 'Buscar Siguiente',
20816
20854
  'Insert className': 'Insertar nombre de clase',
20817
20855
  'Press Alt for custom resizing': 'Presione Alt para cambiar el tamaño personalizado',
20818
- 'License: %s': 'Licencia: %s'
20856
+ 'License: %s': 'Licencia: %s',
20857
+ 'Video properties': 'Propiedades del video',
20858
+ 'Audio properties': 'Propiedades del audio',
20859
+ Poster: 'Imagen de portada',
20860
+ Autoplay: 'Reproducción automática',
20861
+ Loop: 'Repetir',
20862
+ Muted: 'Silenciado',
20863
+ Controls: 'Controles'
20819
20864
  });
20820
20865
 
20821
20866
 
@@ -21040,7 +21085,14 @@ function addClassNames(className, elm) {
21040
21085
  'Find Next': 'پیدا کردن بعدی',
21041
21086
  'Insert className': 'Insertar nombre de clase',
21042
21087
  'Press Alt for custom resizing': 'برای تغییر اندازه سفارشی فشار دهید',
21043
- 'License: %s': 'مجوز: %s'
21088
+ 'License: %s': 'مجوز: %s',
21089
+ 'Video properties': 'ویژگی‌های ویدیو',
21090
+ 'Audio properties': 'ویژگی‌های صدا',
21091
+ Poster: 'تصویر پیش‌نمایش',
21092
+ Autoplay: 'پخش خودکار',
21093
+ Loop: 'تکرار',
21094
+ Muted: 'بی‌صدا',
21095
+ Controls: 'کنترل‌ها'
21044
21096
  });
21045
21097
 
21046
21098
 
@@ -21271,7 +21323,14 @@ function addClassNames(className, elm) {
21271
21323
  'Insert className': 'Lisää luokkanimi',
21272
21324
  'Press Alt for custom resizing': 'Paina Alt muokattuun koon muuttamiseen',
21273
21325
  'Class name': 'Luokan nimi',
21274
- 'License: %s': 'Lisenssi: %s'
21326
+ 'License: %s': 'Lisenssi: %s',
21327
+ 'Video properties': 'Videon ominaisuudet',
21328
+ 'Audio properties': 'Äänen ominaisuudet',
21329
+ Poster: 'Kansikuva',
21330
+ Autoplay: 'Automaattinen toisto',
21331
+ Loop: 'Toista uudelleen',
21332
+ Muted: 'Mykistetty',
21333
+ Controls: 'Säätimet'
21275
21334
  });
21276
21335
 
21277
21336
 
@@ -21496,7 +21555,14 @@ function addClassNames(className, elm) {
21496
21555
  'Embed code': "Code d'intégration",
21497
21556
  Edit: 'Modifier',
21498
21557
  All: 'Tout sélectionner',
21499
- 'License: %s': 'Licence: %s'
21558
+ 'License: %s': 'Licence: %s',
21559
+ 'Video properties': 'Propriétés de la vidéo',
21560
+ 'Audio properties': "Propriétés de l'audio",
21561
+ Poster: "Image d'aperçu",
21562
+ Autoplay: 'Lecture automatique',
21563
+ Loop: 'Lecture en boucle',
21564
+ Muted: 'Muet',
21565
+ Controls: 'Commandes'
21500
21566
  });
21501
21567
 
21502
21568
 
@@ -21721,7 +21787,14 @@ function addClassNames(className, elm) {
21721
21787
  'Find Next': 'חפש את הבא',
21722
21788
  'Insert className': 'הכנס את שם הכיתה',
21723
21789
  'Press Alt for custom resizing': 'לחץ על אלט לשינוי גודל מותאם אישית',
21724
- 'License: %s': 'רישיון: %s'
21790
+ 'License: %s': 'רישיון: %s',
21791
+ 'Video properties': 'מאפייני וידאו',
21792
+ 'Audio properties': 'מאפייני שמע',
21793
+ Poster: 'תמונת תצוגה מקדימה',
21794
+ Autoplay: 'ניגון אוטומטי',
21795
+ Loop: 'הפעלה חוזרת',
21796
+ Muted: 'מושתק',
21797
+ Controls: 'פקדים'
21725
21798
  });
21726
21799
 
21727
21800
 
@@ -21948,7 +22021,14 @@ function addClassNames(className, elm) {
21948
22021
  'Find Next': 'Következő Keresése',
21949
22022
  'Insert className': 'Helyezze be az osztály nevét',
21950
22023
  'Press Alt for custom resizing': 'Nyomja meg az Alt egyéni átméretezés',
21951
- 'License: %s': 'Licenc: %s'
22024
+ 'License: %s': 'Licenc: %s',
22025
+ 'Video properties': 'Videó tulajdonságai',
22026
+ 'Audio properties': 'Hang tulajdonságai',
22027
+ Poster: 'Előnézeti kép',
22028
+ Autoplay: 'Automatikus lejátszás',
22029
+ Loop: 'Ismétlés',
22030
+ Muted: 'Némítva',
22031
+ Controls: 'Vezérlők'
21952
22032
  });
21953
22033
 
21954
22034
 
@@ -22174,7 +22254,14 @@ function addClassNames(className, elm) {
22174
22254
  'Find Previous': 'Menemukan Sebelumnya',
22175
22255
  'Find Next': 'Menemukan Berikutnya',
22176
22256
  'Insert className': 'Masukkan nama kelas',
22177
- 'Press Alt for custom resizing': 'Tekan Alt untuk mengubah ukuran kustom'
22257
+ 'Press Alt for custom resizing': 'Tekan Alt untuk mengubah ukuran kustom',
22258
+ 'Video properties': 'Properti video',
22259
+ 'Audio properties': 'Properti audio',
22260
+ Poster: 'Gambar sampul',
22261
+ Autoplay: 'Putar otomatis',
22262
+ Loop: 'Ulangi',
22263
+ Muted: 'Dibisukan',
22264
+ Controls: 'Kontrol'
22178
22265
  });
22179
22266
 
22180
22267
 
@@ -22404,7 +22491,14 @@ function addClassNames(className, elm) {
22404
22491
  'Find Next': 'Trova Successivo',
22405
22492
  'Insert className': 'Inserisci il nome della classe',
22406
22493
  'Press Alt for custom resizing': 'Premere Alt per il ridimensionamento personalizzato',
22407
- 'License: %s': 'Licenza: %s'
22494
+ 'License: %s': 'Licenza: %s',
22495
+ 'Video properties': 'Proprietà del video',
22496
+ 'Audio properties': "Proprietà dell'audio",
22497
+ Poster: 'Immagine di anteprima',
22498
+ Autoplay: 'Riproduzione automatica',
22499
+ Loop: 'Ripeti',
22500
+ Muted: 'Muto',
22501
+ Controls: 'Controlli'
22408
22502
  });
22409
22503
 
22410
22504
 
@@ -22634,7 +22728,14 @@ function addClassNames(className, elm) {
22634
22728
  'Upper Roman': 'ローマ数字大文字',
22635
22729
  'Insert className': 'クラス名を挿入',
22636
22730
  'Press Alt for custom resizing': 'カスタムサイズ変更のためのAltキーを押します',
22637
- 'License: %s': 'ライセンス: %s'
22731
+ 'License: %s': 'ライセンス: %s',
22732
+ 'Video properties': '動画のプロパティー',
22733
+ 'Audio properties': '音声のプロパティー',
22734
+ Poster: 'ポスター画像',
22735
+ Autoplay: '自動再生',
22736
+ Loop: 'ループ再生',
22737
+ Muted: 'ミュート',
22738
+ Controls: 'コントロール'
22638
22739
  });
22639
22740
 
22640
22741
 
@@ -22870,7 +22971,14 @@ function addClassNames(className, elm) {
22870
22971
  'Find Previous': '이전 찾기',
22871
22972
  'Find Next': '다음 찾기',
22872
22973
  'Insert className': 'className 입력',
22873
- 'Press Alt for custom resizing': '사용자 지정 크기 조정에 대 한 고도 누르십시오'
22974
+ 'Press Alt for custom resizing': '사용자 지정 크기 조정에 대 한 고도 누르십시오',
22975
+ 'Video properties': '동영상 속성',
22976
+ 'Audio properties': '오디오 속성',
22977
+ Poster: '포스터 이미지',
22978
+ Autoplay: '자동 재생',
22979
+ Loop: '반복 재생',
22980
+ Muted: '음소거',
22981
+ Controls: '컨트롤'
22874
22982
  });
22875
22983
 
22876
22984
 
@@ -23095,7 +23203,14 @@ function addClassNames(className, elm) {
23095
23203
  'Find Next': 'Дараагийнхийг ол',
23096
23204
  'Insert className': 'Бүлгийн нэрээ оруулна уу',
23097
23205
  'Press Alt for custom resizing': 'Хэмжээсийг шинээр өөчрлөхийн тулд Alt товчин дээр дарна уу',
23098
- 'License: %s': 'Лиценз: %s'
23206
+ 'License: %s': 'Лиценз: %s',
23207
+ 'Video properties': 'Видеоны үзүүлэлт',
23208
+ 'Audio properties': 'Аудионы үзүүлэлт',
23209
+ Poster: 'Нүүр зураг',
23210
+ Autoplay: 'Автоматаар тоглуулах',
23211
+ Loop: 'Давтах',
23212
+ Muted: 'Дуугүй',
23213
+ Controls: 'Удирдлага'
23099
23214
  });
23100
23215
 
23101
23216
 
@@ -23321,7 +23436,14 @@ function addClassNames(className, elm) {
23321
23436
  'Find Next': 'Volgende Zoeken',
23322
23437
  'Insert className': 'Voeg de klassenaam in',
23323
23438
  'Press Alt for custom resizing': 'Druk op Alt voor aangepaste grootte',
23324
- 'License: %s': 'Licentie: %s'
23439
+ 'License: %s': 'Licentie: %s',
23440
+ 'Video properties': 'Video-eigenschappen',
23441
+ 'Audio properties': 'Audio-eigenschappen',
23442
+ Poster: 'Voorbeeldafbeelding',
23443
+ Autoplay: 'Automatisch afspelen',
23444
+ Loop: 'Herhalen',
23445
+ Muted: 'Gedempt',
23446
+ Controls: 'Bedieningselementen'
23325
23447
  });
23326
23448
 
23327
23449
 
@@ -23555,7 +23677,14 @@ function addClassNames(className, elm) {
23555
23677
  Dot: 'Prikk',
23556
23678
  Quadrate: 'Firkant',
23557
23679
  'Find Previous': 'Finn forrige',
23558
- 'Find Next': 'Finn neste'
23680
+ 'Find Next': 'Finn neste',
23681
+ 'Video properties': 'Videoegenskaper',
23682
+ 'Audio properties': 'Lydegenskaper',
23683
+ Poster: 'Forsidebilde',
23684
+ Autoplay: 'Automatisk avspilling',
23685
+ Loop: 'Gjenta',
23686
+ Muted: 'Dempet',
23687
+ Controls: 'Kontroller'
23559
23688
  });
23560
23689
 
23561
23690
 
@@ -23780,7 +23909,14 @@ function addClassNames(className, elm) {
23780
23909
  'Find Next': 'Znajdź Dalej',
23781
23910
  'Insert className': 'Wstaw nazwę zajęć',
23782
23911
  'Press Alt for custom resizing': 'Naciśnij Alt, aby zmienić rozmiar',
23783
- 'License: %s': 'Licencja: %s'
23912
+ 'License: %s': 'Licencja: %s',
23913
+ 'Video properties': 'Właściwości filmu',
23914
+ 'Audio properties': 'Właściwości dźwięku',
23915
+ Poster: 'Obraz podglądu',
23916
+ Autoplay: 'Autoodtwarzanie',
23917
+ Loop: 'Zapętlenie',
23918
+ Muted: 'Wyciszony',
23919
+ Controls: 'Elementy sterujące'
23784
23920
  });
23785
23921
 
23786
23922
 
@@ -24010,7 +24146,14 @@ function addClassNames(className, elm) {
24010
24146
  'Find Next': 'Localizar Próxima',
24011
24147
  'Insert className': 'Insira o nome da classe',
24012
24148
  'Press Alt for custom resizing': 'Pressione Alt para redimensionamento personalizado',
24013
- 'License: %s': 'Licença: %s'
24149
+ 'License: %s': 'Licença: %s',
24150
+ 'Video properties': 'Propriedades do vídeo',
24151
+ 'Audio properties': 'Propriedades do áudio',
24152
+ Poster: 'Imagem de capa',
24153
+ Autoplay: 'Reprodução automática',
24154
+ Loop: 'Repetir',
24155
+ Muted: 'Sem som',
24156
+ Controls: 'Controles'
24014
24157
  });
24015
24158
 
24016
24159
 
@@ -24234,7 +24377,14 @@ function addClassNames(className, elm) {
24234
24377
  'Find Previous': 'Найти Предыдущие',
24235
24378
  'Find Next': 'Найти Далее',
24236
24379
  'Insert className': 'Вставить название класса',
24237
- 'Press Alt for custom resizing': 'Нажмите Alt для изменения пользовательского размера'
24380
+ 'Press Alt for custom resizing': 'Нажмите Alt для изменения пользовательского размера',
24381
+ 'Video properties': 'Свойства видео',
24382
+ 'Audio properties': 'Свойства аудио',
24383
+ Poster: 'Обложка',
24384
+ Autoplay: 'Автовоспроизведение',
24385
+ Loop: 'Повтор',
24386
+ Muted: 'Без звука',
24387
+ Controls: 'Элементы управления'
24238
24388
  });
24239
24389
 
24240
24390
 
@@ -24466,7 +24616,14 @@ function addClassNames(className, elm) {
24466
24616
  'Select file': 'Vybrať súbor',
24467
24617
  'Edit image': 'Upraviť obrázok',
24468
24618
  'Tiles view': 'Zobrazenie dlaždíc',
24469
- 'List view': 'Zobrazenie zoznamu'
24619
+ 'List view': 'Zobrazenie zoznamu',
24620
+ 'Video properties': 'Vlastnosti videa',
24621
+ 'Audio properties': 'Vlastnosti zvuku',
24622
+ Poster: 'Náhľadový obrázok',
24623
+ Autoplay: 'Automatické prehrávanie',
24624
+ Loop: 'Opakovať',
24625
+ Muted: 'Stlmené',
24626
+ Controls: 'Ovládacie prvky'
24470
24627
  });
24471
24628
 
24472
24629
 
@@ -24699,7 +24856,14 @@ function addClassNames(className, elm) {
24699
24856
  space: 'mellanslag',
24700
24857
  'Embed code': 'Bädda in kod',
24701
24858
  All: 'Välj alla',
24702
- 'License: %s': 'Licens: %s'
24859
+ 'License: %s': 'Licens: %s',
24860
+ 'Video properties': 'Videoegenskaper',
24861
+ 'Audio properties': 'Ljudegenskaper',
24862
+ Poster: 'Affischbild',
24863
+ Autoplay: 'Automatisk uppspelning',
24864
+ Loop: 'Upprepa',
24865
+ Muted: 'Ljudlös',
24866
+ Controls: 'Kontroller'
24703
24867
  });
24704
24868
 
24705
24869
 
@@ -24924,7 +25088,14 @@ function addClassNames(className, elm) {
24924
25088
  'Find Next': 'Sonrakini Bul',
24925
25089
  'Insert className': 'Sınıf adı girin',
24926
25090
  'Press Alt for custom resizing': 'Özel yeniden boyutlandırma için Alt tuşuna basın',
24927
- 'License: %s': 'Lisans: %s'
25091
+ 'License: %s': 'Lisans: %s',
25092
+ 'Video properties': 'Video özellikleri',
25093
+ 'Audio properties': 'Ses özellikleri',
25094
+ Poster: 'Kapak resmi',
25095
+ Autoplay: 'Otomatik oynat',
25096
+ Loop: 'Döngü',
25097
+ Muted: 'Sessiz',
25098
+ Controls: 'Kontroller'
24928
25099
  });
24929
25100
 
24930
25101
 
@@ -25148,7 +25319,14 @@ function addClassNames(className, elm) {
25148
25319
  'Find Previous': 'Знайти попередні',
25149
25320
  'Find Next': 'Знайти наступні',
25150
25321
  'Insert className': 'Вставити клас',
25151
- 'Press Alt for custom resizing': 'Натисніть Alt для зміни розміру'
25322
+ 'Press Alt for custom resizing': 'Натисніть Alt для зміни розміру',
25323
+ 'Video properties': 'Властивості відео',
25324
+ 'Audio properties': 'Властивості аудіо',
25325
+ Poster: 'Обкладинка',
25326
+ Autoplay: 'Автовідтворення',
25327
+ Loop: 'Повтор',
25328
+ Muted: 'Без звуку',
25329
+ Controls: 'Елементи керування'
25152
25330
  });
25153
25331
 
25154
25332
 
@@ -25374,7 +25552,14 @@ function addClassNames(className, elm) {
25374
25552
  'Find Next': '查找下一个',
25375
25553
  'Insert className': '插入班级名称',
25376
25554
  'Press Alt for custom resizing': '按Alt自定义调整大小',
25377
- 'License: %s': '许可证: %s'
25555
+ 'License: %s': '许可证: %s',
25556
+ 'Video properties': '视频属性',
25557
+ 'Audio properties': '音频属性',
25558
+ Poster: '封面图',
25559
+ Autoplay: '自动播放',
25560
+ Loop: '循环播放',
25561
+ Muted: '静音',
25562
+ Controls: '播放控件'
25378
25563
  });
25379
25564
 
25380
25565
 
@@ -25599,7 +25784,14 @@ function addClassNames(className, elm) {
25599
25784
  'Insert className': '插入 class 名稱',
25600
25785
  'Press Alt for custom resizing': '按住 Alt 以調整自訂大小',
25601
25786
  Edit: '編輯',
25602
- 'License: %s': '許可證: %s'
25787
+ 'License: %s': '許可證: %s',
25788
+ 'Video properties': '影片屬性',
25789
+ 'Audio properties': '音訊屬性',
25790
+ Poster: '封面圖片',
25791
+ Autoplay: '自動播放',
25792
+ Loop: '循環播放',
25793
+ Muted: '靜音',
25794
+ Controls: '播放控制項'
25603
25795
  });
25604
25796
 
25605
25797
 
@@ -34550,10 +34742,11 @@ UiAiAssistant = __decorate([
34550
34742
  /* harmony import */ var _table_keyboard_navigation_table_keyboard_navigation_js__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(72439);
34551
34743
  /* harmony import */ var _toolbar_navigation_toolbar_navigation_js__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(94529);
34552
34744
  /* harmony import */ var _video_video_js__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(26551);
34553
- /* harmony import */ var _wrap_nodes_wrap_nodes_js__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(72253);
34554
- /* harmony import */ var _dtd_dtd_js__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(65735);
34555
- /* harmony import */ var _xpath_xpath_js__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(83671);
34556
- /* harmony import */ var _speech_recognize_speech_recognize_js__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(3115);
34745
+ /* harmony import */ var _video_properties_video_properties_js__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(96139);
34746
+ /* harmony import */ var _wrap_nodes_wrap_nodes_js__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(72253);
34747
+ /* harmony import */ var _dtd_dtd_js__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(65735);
34748
+ /* harmony import */ var _xpath_xpath_js__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(83671);
34749
+ /* harmony import */ var _speech_recognize_speech_recognize_js__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(3115);
34557
34750
  /*!
34558
34751
  * Jodit Editor (https://xdsoft.net/jodit/)
34559
34752
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -34624,6 +34817,7 @@ UiAiAssistant = __decorate([
34624
34817
 
34625
34818
 
34626
34819
 
34820
+
34627
34821
 
34628
34822
 
34629
34823
  // JODIT-START:FAT
@@ -41138,6 +41332,11 @@ function _async_to_generator(fn) {
41138
41332
  const JODIT_IMAGE_PROCESSOR_BINDED = '__jodit_imageprocessor_binded';
41139
41333
  const JODIT_IMAGE_BLOB_ID = JODIT_IMAGE_PROCESSOR_BINDED + 'blob-id';
41140
41334
  const IMAGE_SELECTED = 'jodit-wysiwyg_image-selected';
41335
+ const SELECTED_TAGS = new Set([
41336
+ 'img',
41337
+ 'jodit',
41338
+ 'jodit-media'
41339
+ ]);
41141
41340
  /**
41142
41341
  * Change editor's size after load all images
41143
41342
  */ class imageProcessor extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_5__.Plugin {
@@ -41179,7 +41378,10 @@ const IMAGE_SELECTED = 'jodit-wysiwyg_image-selected';
41179
41378
  }
41180
41379
  /**
41181
41380
  * While the selection is an image, only the image is highlighted: Safari
41182
- * paints the rest of a block image's line with its parent's highlight. See #1528
41381
+ * paints the rest of a block image's line with its parent's highlight. See #1528.
41382
+ * Media in a wrapper (`jodit-media`, the resizer's `jodit` for an embed, or
41383
+ * one from `mediaWrappers`) isn't highlighted either, as Safari paints its
41384
+ * wrapper's whole line, and its resize frame shows it's selected
41183
41385
  */ onSelectionChange() {
41184
41386
  const { jodit } = this;
41185
41387
  jodit.editor.classList.toggle(IMAGE_SELECTED, isImageSelected(jodit));
@@ -41235,7 +41437,8 @@ function isImageSelected(jodit) {
41235
41437
  return false;
41236
41438
  }
41237
41439
  const { startContainer, startOffset, endContainer, endOffset } = sel.getRangeAt(0);
41238
- return startContainer === endContainer && endOffset === startOffset + 1 && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(startContainer.childNodes[startOffset], 'img') && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isOrContains(jodit.editor, startContainer);
41440
+ const node = startContainer.childNodes[startOffset];
41441
+ return startContainer === endContainer && endOffset === startOffset + 1 && (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(node, SELECTED_TAGS) || Boolean((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.getWrappedMedia)(jodit, node))) && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isOrContains(jodit.editor, startContainer);
41239
41442
  }
41240
41443
  /**
41241
41444
  * Remove the invisible-space text beside an image, which only held a caret.
@@ -43529,6 +43732,12 @@ const cmd = (control)=>control.args && (0,_core_helpers_checker_index_js__WEBPAC
43529
43732
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
43530
43733
  */
43531
43734
  /* harmony default export */ __webpack_exports__["default"] = ([
43735
+ {
43736
+ name: 'replace',
43737
+ icon: 'video',
43738
+ tooltip: 'Replace',
43739
+ popup: (editor, target, close)=>target ? editor.e.fire('generateReplaceVideoTabs', target, close) : undefined
43740
+ },
43532
43741
  {
43533
43742
  name: 'bin',
43534
43743
  tooltip: 'Delete',
@@ -43536,6 +43745,13 @@ const cmd = (control)=>control.args && (0,_core_helpers_checker_index_js__WEBPAC
43536
43745
  image && editor.s.removeNode(image);
43537
43746
  }
43538
43747
  },
43748
+ {
43749
+ name: 'pencil',
43750
+ tooltip: 'Edit',
43751
+ exec: (editor, target)=>{
43752
+ target && editor.e.fire('openVideoProperties', target);
43753
+ }
43754
+ },
43539
43755
  _img_js__WEBPACK_IMPORTED_MODULE_0__.align
43540
43756
  ]);
43541
43757
 
@@ -45690,6 +45906,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.mediaWrappers = {};
45690
45906
  } else if (mediaWrappers[element.nodeName.toLowerCase()]) {
45691
45907
  element = (_a = (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_3__.getMediaWrapper)(editor, element)) !== null && _a !== void 0 ? _a : (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_3__.wrapMedia)(editor, element);
45692
45908
  } else if (mediaInFakeBlock) {
45909
+ const media = element;
45693
45910
  const wrapper = editor.createInside.element(mediaFakeTag, {
45694
45911
  'data-jodit-temp': 1,
45695
45912
  contenteditable: false,
@@ -45697,11 +45914,17 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.mediaWrappers = {};
45697
45914
  [`data-${keyFake}`]: 1
45698
45915
  });
45699
45916
  (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(wrapper, 'style', (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(element, 'style'));
45700
- (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_4__.css)(wrapper, {
45701
- display: (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_4__.cssInline)(element, 'display') === 'inline-block' ? 'inline-block' : 'block',
45702
- width: element.offsetWidth,
45703
- height: element.offsetHeight
45704
- });
45917
+ // The wrapper fits the media, whose size changes as its metadata loads
45918
+ // and as it's resized. A percentage width is of the line, so it takes that
45919
+ const fit = ()=>{
45920
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_4__.css)(wrapper, {
45921
+ display: (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_4__.cssInline)(media, 'display') === 'inline-block' ? 'inline-block' : 'block',
45922
+ width: (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_4__.cssInline)(media, 'width').endsWith('%') ? '' : 'fit-content',
45923
+ height: ''
45924
+ });
45925
+ };
45926
+ fit();
45927
+ editor.e.on(media, 'changesize', fit);
45705
45928
  if (element.parentNode) {
45706
45929
  _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.before(element, wrapper);
45707
45930
  }
@@ -47952,7 +48175,8 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.allowResizeTags = new S
47952
48175
  'img',
47953
48176
  'iframe',
47954
48177
  'table',
47955
- 'jodit'
48178
+ 'jodit',
48179
+ 'video'
47956
48180
  ]);
47957
48181
  _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.resizer = {
47958
48182
  showSize: true,
@@ -47961,7 +48185,8 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.resizer = {
47961
48185
  min_width: 10,
47962
48186
  min_height: 10,
47963
48187
  useAspectRatio: new Set([
47964
- 'img'
48188
+ 'img',
48189
+ 'video'
47965
48190
  ])
47966
48191
  };
47967
48192
 
@@ -48012,6 +48237,12 @@ const keyBInd = '__jodit-resizer_binded';
48012
48237
  }
48013
48238
  return parseFloat(value);
48014
48239
  }
48240
+ /**
48241
+ * A video with no height of its own takes it from its width and its ratio,
48242
+ * so resizing it keeps the ratio without setting a height.
48243
+ */ function heightFollowsWidth(element) {
48244
+ return _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(element, 'video') && !(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(element, 'height') && !(0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_5__.cssInline)(element, 'height');
48245
+ }
48015
48246
  /**
48016
48247
  * The module creates a supporting frame for resizing of the elements img and table
48017
48248
  */ class resizer extends _core_plugin_plugin_js__WEBPACK_IMPORTED_MODULE_6__.Plugin {
@@ -48039,14 +48270,27 @@ const keyBInd = '__jodit-resizer_binded';
48039
48270
  let node = e.target;
48040
48271
  const { editor, options: { allowResizeTags } } = this.j;
48041
48272
  while(node && node !== editor){
48042
- if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(node, allowResizeTags)) {
48043
- this.__bind(node);
48044
- this.onClickElement(node);
48273
+ const element = this.__resizable(node);
48274
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(element, allowResizeTags)) {
48275
+ this.__bind(element);
48276
+ this.onClickElement(element);
48045
48277
  return;
48046
48278
  }
48047
48279
  node = node.parentNode;
48048
48280
  }
48049
48281
  }
48282
+ /**
48283
+ * What a click on `node` resizes: the media in it when it's a media
48284
+ * wrapper (`jodit-media`, or one from `mediaWrappers`), or `node` itself
48285
+ */ __resizable(node) {
48286
+ var _a;
48287
+ const media = (_a = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.getWrappedMedia)(this.j, node)) !== null && _a !== void 0 ? _a : _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isHTMLElement(node) && (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(node, 'data-jodit_fake_wrapper') ? node.firstElementChild : null;
48288
+ if (!media) {
48289
+ return node;
48290
+ }
48291
+ // An embed is resized through its own wrapper
48292
+ return _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isHTMLElement(media.parentNode) && (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.attr)(media.parentNode, 'data-jodit_iframe_wrapper') ? media.parentNode : media;
48293
+ }
48050
48294
  __afterInsertImage(image) {
48051
48295
  if (this.j.o.resizer.forImageChangeAttributes) {
48052
48296
  return;
@@ -48063,17 +48307,15 @@ const keyBInd = '__jodit-resizer_binded';
48063
48307
  if (this.isShown && (e.key === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.KEY_DELETE || e.key === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.KEY_BACKSPACE) && this.element && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(this.element, 'table')) {
48064
48308
  this.onDelete(e);
48065
48309
  }
48066
- }).on(editor.ow, 'resize.resizer', this.updateSize).on('resize.resizer', this.updateSize).on([
48310
+ }).on(editor.ow, 'resize.resizer', this.updateSize).on('resize.resizer', this.updateSize)// The frame is outside the content, so it's moved to follow the
48311
+ // element as the content scrolls
48312
+ .on([
48067
48313
  editor.ow,
48068
48314
  editor.editor
48069
- ], 'scroll.resizer', ()=>{
48070
- if (this.isShown && !this.isResizeMode) {
48071
- this.hide();
48072
- }
48073
- }).on(editor.ow, 'keydown.resizer', this.onKeyDown).on(editor.ow, 'keyup.resizer', this.onKeyUp).on(editor.ow, 'mouseup.resizer touchend.resizer', this.onClickOutside);
48315
+ ], 'scroll.resizer', this.updateSize).on(editor.ow, 'keydown.resizer', this.onKeyDown).on(editor.ow, 'keyup.resizer', this.onKeyUp).on(editor.ow, 'mouseup.resizer touchend.resizer', this.onClickOutside);
48074
48316
  }
48075
48317
  onStartResizing(resizeHandle, e) {
48076
- if (!this.element || !this.element.parentNode) {
48318
+ if (!this.element || !this.isElementInEditor) {
48077
48319
  this.hide();
48078
48320
  return false;
48079
48321
  }
@@ -48126,7 +48368,8 @@ const keyBInd = '__jodit-resizer_binded';
48126
48368
  const className = this.handle.className;
48127
48369
  let new_w, new_h;
48128
48370
  const uar = this.j.o.resizer.useAspectRatio;
48129
- if (!this.isAltMode && (uar === true || uar && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(this.element, uar))) {
48371
+ const keepRatio = !this.isAltMode && (uar === true || Boolean(uar && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(this.element, uar)));
48372
+ if (keepRatio) {
48130
48373
  if (diff_x) {
48131
48374
  new_w = this.width + (className.match(/left/) ? -1 : 1) * diff_x;
48132
48375
  new_h = Math.round(new_w / this.ratio);
@@ -48149,7 +48392,7 @@ const keyBInd = '__jodit-resizer_binded';
48149
48392
  this.applySize(this.element, 'width', '100%');
48150
48393
  }
48151
48394
  }
48152
- if (new_h > this.j.o.resizer.min_height) {
48395
+ if (new_h > this.j.o.resizer.min_height && !(keepRatio && heightFollowsWidth(this.element))) {
48153
48396
  this.applySize(this.element, 'height', new_h);
48154
48397
  }
48155
48398
  this.updateSize();
@@ -48195,10 +48438,19 @@ const keyBInd = '__jodit-resizer_binded';
48195
48438
  (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.css)(element, key, value);
48196
48439
  }
48197
48440
  }
48441
+ /**
48442
+ * The framed element can go with a wrapper round it, keeping its parent
48443
+ */ get isElementInEditor() {
48444
+ return Boolean(this.element && this.j.editor.contains(this.element));
48445
+ }
48198
48446
  onDelete(e) {
48199
48447
  if (!this.element) {
48200
48448
  return;
48201
48449
  }
48450
+ if (!this.isElementInEditor) {
48451
+ this.hide();
48452
+ return;
48453
+ }
48202
48454
  if (this.element.tagName !== 'JODIT') {
48203
48455
  this.j.s.select(this.element);
48204
48456
  } else {
@@ -48209,7 +48461,7 @@ const keyBInd = '__jodit-resizer_binded';
48209
48461
  }
48210
48462
  __onChangeEditor() {
48211
48463
  if (this.isShown) {
48212
- if (!this.element || !this.element.parentNode) {
48464
+ if (!this.isElementInEditor) {
48213
48465
  this.hide();
48214
48466
  } else {
48215
48467
  this.updateSize();
@@ -48307,9 +48559,13 @@ const keyBInd = '__jodit-resizer_binded';
48307
48559
  return;
48308
48560
  }
48309
48561
  this.isShown = true;
48562
+ if (this.layer.parentNode !== this.j.workplace) {
48563
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.markOwner)(this.j, this.layer);
48564
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(this.j.workplace, this.layer);
48565
+ }
48310
48566
  if (!this.rect.parentNode) {
48311
48567
  (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.markOwner)(this.j, this.rect);
48312
- _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(this.j.workplace, this.rect);
48568
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(this.layer, this.rect);
48313
48569
  }
48314
48570
  if (this.j.isFullSize) {
48315
48571
  (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.css)(this.rect, 'zIndex', (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.css)(this.j.container, 'zIndex').toString());
@@ -48329,6 +48585,7 @@ const keyBInd = '__jodit-resizer_binded';
48329
48585
  }
48330
48586
  beforeDestruct(jodit) {
48331
48587
  this.hide();
48588
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove(this.layer);
48332
48589
  _core_global_js__WEBPACK_IMPORTED_MODULE_3__.eventEmitter.off('hideHelpers', this.hide);
48333
48590
  jodit.e.off(this.j.ow, '.resizer').off('.resizer');
48334
48591
  }
@@ -48350,6 +48607,8 @@ const keyBInd = '__jodit-resizer_binded';
48350
48607
  <div class="jodit-resizer__bottom-left"></div>
48351
48608
  <span>100x100</span>
48352
48609
  </div>`);
48610
+ // Clips the frame to the workplace, without the frame making it scroll
48611
+ this.layer = this.j.c.div('jodit-resizer-layer');
48353
48612
  this.sizeViewer = this.rect.getElementsByTagName('span')[0];
48354
48613
  this.pointerX = 0;
48355
48614
  this.pointerY = 0;
@@ -48364,6 +48623,9 @@ const keyBInd = '__jodit-resizer_binded';
48364
48623
  if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(this.element, 'img') && !this.element.complete) {
48365
48624
  this.j.e.one(this.element, 'load', this.updateSize);
48366
48625
  }
48626
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(this.element, 'video') && this.element.readyState < HTMLMediaElement.HAVE_METADATA) {
48627
+ this.j.e.one(this.element, 'loadedmetadata', this.updateSize);
48628
+ }
48367
48629
  }
48368
48630
  };
48369
48631
  this.updateSize = ()=>{
@@ -54748,9 +55010,725 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_4__.pluginSystem.add('toolbarNavigation
54748
55010
 
54749
55011
  /***/ }),
54750
55012
 
54751
- /***/ 14984:
55013
+ /***/ 54426:
55014
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
55015
+
55016
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
55017
+ /* harmony export */ editedMedia: function() { return /* binding */ editedMedia; },
55018
+ /* harmony export */ ownSize: function() { return /* binding */ ownSize; },
55019
+ /* harmony export */ readValues: function() { return /* binding */ readValues; }
55020
+ /* harmony export */ });
55021
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
55022
+ /* harmony import */ var _core_helpers_checker_is_numeric_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29807);
55023
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29960);
55024
+ /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(41180);
55025
+ /* harmony import */ var _image_properties_utils_utils_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(14415);
55026
+ /*!
55027
+ * Jodit Editor (https://xdsoft.net/jodit/)
55028
+ * Released under MIT see LICENSE.txt in the project root for license information.
55029
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
55030
+ */
55031
+
55032
+
55033
+
55034
+
55035
+ const mediaSelector = 'video, audio, iframe';
55036
+ /**
55037
+ * The media `target` is, or holds as its wrapper (`jodit-media`, the resizer's
55038
+ * `jodit` for an embed, or one from `mediaWrappers`)
55039
+ * @private
55040
+ */ function editedMedia(target) {
55041
+ return target.matches(mediaSelector) ? target : target.querySelector(mediaSelector);
55042
+ }
55043
+ /**
55044
+ * The size `media` is given, inline or by its attribute
55045
+ * @private
55046
+ */ function ownSize(media, key) {
55047
+ return (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_3__.cssInline)(media, key) || (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_2__.attr)(media, key) || '';
55048
+ }
55049
+ const toNumber = (value)=>parseFloat(value.toString());
55050
+ /**
55051
+ * Read the media's values into the state
55052
+ * @private
55053
+ */ function readValues(state) {
55054
+ const { media, values } = state;
55055
+ const width = ownSize(media, 'width');
55056
+ const height = ownSize(media, 'height');
55057
+ values.width = width ? (0,_image_properties_utils_utils_js__WEBPACK_IMPORTED_MODULE_4__.normalSizeFromString)(width) : media.offsetWidth;
55058
+ values.height = height ? (0,_image_properties_utils_utils_js__WEBPACK_IMPORTED_MODULE_4__.normalSizeFromString)(height) : '';
55059
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(media, 'video') && media.videoWidth) {
55060
+ state.ratio = media.videoWidth / media.videoHeight;
55061
+ } else if ((0,_core_helpers_checker_is_numeric_js__WEBPACK_IMPORTED_MODULE_1__.isNumeric)(values.width) && (0,_core_helpers_checker_is_numeric_js__WEBPACK_IMPORTED_MODULE_1__.isNumeric)(values.height)) {
55062
+ state.ratio = toNumber(values.width) / toNumber(values.height);
55063
+ } else {
55064
+ state.ratio = media.offsetWidth / media.offsetHeight || 1;
55065
+ }
55066
+ // One with no height takes it from its width
55067
+ if (!height && (0,_core_helpers_checker_is_numeric_js__WEBPACK_IMPORTED_MODULE_1__.isNumeric)(values.width)) {
55068
+ values.height = Math.round(toNumber(values.width) / state.ratio);
55069
+ }
55070
+ state.sizeIsLocked = (0,_core_helpers_checker_is_numeric_js__WEBPACK_IMPORTED_MODULE_1__.isNumeric)(values.width) && (0,_core_helpers_checker_is_numeric_js__WEBPACK_IMPORTED_MODULE_1__.isNumeric)(values.height) && (!height || Math.abs(toNumber(values.width) - toNumber(values.height) * state.ratio) < 1);
55071
+ values.poster = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_2__.attr)(media, 'poster') || '';
55072
+ values.autoplay = media.hasAttribute('autoplay');
55073
+ values.loop = media.hasAttribute('loop');
55074
+ // Autoplay's own: turning it off gives the sound back
55075
+ values.muted = media.hasAttribute('muted') && !values.autoplay;
55076
+ // Without Autoplay it keeps its controls, or it could never be played
55077
+ values.controls = media.hasAttribute('controls') || !values.autoplay;
55078
+ }
55079
+
55080
+
55081
+ /***/ }),
55082
+
55083
+ /***/ 96170:
55084
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
55085
+
55086
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
55087
+ /* harmony export */ replaceMedia: function() { return /* binding */ replaceMedia; }
55088
+ /* harmony export */ });
55089
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
55090
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29960);
55091
+ /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(41180);
55092
+ /* harmony import */ var _readers_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(54426);
55093
+ /* harmony import */ var _writers_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(44909);
55094
+ /*!
55095
+ * Jodit Editor (https://xdsoft.net/jodit/)
55096
+ * Released under MIT see LICENSE.txt in the project root for license information.
55097
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
55098
+ */
55099
+
55100
+
55101
+
55102
+
55103
+ /**
55104
+ * Give `media`, in `outer`, the classes, inline styles, size and playback
55105
+ * settings of `old`, in `oldOuter`. It keeps its own source and poster.
55106
+ */ function takeOver(j, oldOuter, old, outer, media) {
55107
+ var _a;
55108
+ const state = {
55109
+ target: oldOuter,
55110
+ media: old,
55111
+ ratio: 1,
55112
+ sizeIsLocked: true,
55113
+ values: {
55114
+ width: '',
55115
+ height: '',
55116
+ poster: '',
55117
+ autoplay: false,
55118
+ loop: false,
55119
+ muted: false,
55120
+ controls: true
55121
+ }
55122
+ };
55123
+ (0,_readers_js__WEBPACK_IMPORTED_MODULE_3__.readValues)(state);
55124
+ const pairs = [
55125
+ [
55126
+ old,
55127
+ media
55128
+ ]
55129
+ ];
55130
+ // A wrapper kept in the content, which holds the alignment
55131
+ if (oldOuter !== old && outer !== media && oldOuter.nodeName === outer.nodeName) {
55132
+ pairs.push([
55133
+ oldOuter,
55134
+ outer
55135
+ ]);
55136
+ }
55137
+ pairs.forEach(([from, to])=>{
55138
+ [
55139
+ 'class',
55140
+ 'style'
55141
+ ].forEach((name)=>(0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(to, name, (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(from, name)));
55142
+ });
55143
+ // A video's size is CSS and an embed's its attributes, so the writer sizes
55144
+ // one that's a different element
55145
+ if (old.nodeName !== media.nodeName) {
55146
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(media, {
55147
+ width: null,
55148
+ height: null
55149
+ });
55150
+ if (!((_a = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(media, 'style')) === null || _a === void 0 ? void 0 : _a.trim())) {
55151
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(media, 'style', null);
55152
+ }
55153
+ }
55154
+ state.media = media;
55155
+ state.values.poster = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(media, 'poster') || '';
55156
+ (0,_writers_js__WEBPACK_IMPORTED_MODULE_4__.applyValues)(j, state, Boolean((0,_readers_js__WEBPACK_IMPORTED_MODULE_3__.ownSize)(old, 'width') || (0,_readers_js__WEBPACK_IMPORTED_MODULE_3__.ownSize)(old, 'height')));
55157
+ }
55158
+ /**
55159
+ * Run `insert`, which inserts media at the cursor, with the cursor after
55160
+ * `replaced`, and put what it inserts in place of `replaced`
55161
+ * @private
55162
+ */ function replaceMedia(j, replaced, insert) {
55163
+ const inserted = [];
55164
+ const collect = (node)=>{
55165
+ inserted.push(node);
55166
+ };
55167
+ j.history.snapshot.transaction(()=>{
55168
+ j.s.focus();
55169
+ j.s.setCursorAfter(replaced);
55170
+ j.e.on('afterInsertNode', collect);
55171
+ try {
55172
+ insert();
55173
+ } finally{
55174
+ j.e.off('afterInsertNode', collect);
55175
+ }
55176
+ const [outer] = inserted;
55177
+ if (!_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isHTMLElement(outer)) {
55178
+ return;
55179
+ }
55180
+ const old = (0,_readers_js__WEBPACK_IMPORTED_MODULE_3__.editedMedia)(replaced);
55181
+ const media = (0,_readers_js__WEBPACK_IMPORTED_MODULE_3__.editedMedia)(outer);
55182
+ if (old && media) {
55183
+ takeOver(j, replaced, old, outer, media);
55184
+ }
55185
+ // The resizer can have put an embed in its own wrapper already
55186
+ const placed = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isHTMLElement(outer.parentElement) && (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(outer.parentElement, 'data-jodit-temp') ? outer.parentElement : outer;
55187
+ // Where the old one was, since media Jodit counts as blocks can be put
55188
+ // after the paragraph
55189
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.before(replaced, placed);
55190
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(replaced);
55191
+ j.s.setCursorAfter(placed);
55192
+ });
55193
+ j.synchronizeValues();
55194
+ j.e.fire('closeAllPopups');
55195
+ }
55196
+
55197
+
55198
+ /***/ }),
55199
+
55200
+ /***/ 27828:
55201
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
55202
+
55203
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
55204
+ /* harmony export */ UIVideoPropertiesForm: function() { return /* binding */ UIVideoPropertiesForm; }
55205
+ /* harmony export */ });
55206
+ /* harmony import */ var _core_decorators_component_component_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(87325);
55207
+ /* harmony import */ var _core_decorators_hook_hook_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(97357);
55208
+ /* harmony import */ var _core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(37133);
55209
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2748);
55210
+ /* harmony import */ var _core_helpers_checker_is_numeric_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(29807);
55211
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(29960);
55212
+ /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(41180);
55213
+ /* harmony import */ var _core_ui_element_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(48538);
55214
+ /* harmony import */ var _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(12153);
55215
+ /*!
55216
+ * Jodit Editor (https://xdsoft.net/jodit/)
55217
+ * Released under MIT see LICENSE.txt in the project root for license information.
55218
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
55219
+ */ var __decorate = undefined && undefined.__decorate || function(decorators, target, key, desc) {
55220
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
55221
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
55222
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
55223
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
55224
+ };
55225
+
55226
+
55227
+
55228
+
55229
+
55230
+
55231
+
55232
+
55233
+
55234
+ const flags = {
55235
+ autoplay: 'Autoplay',
55236
+ loop: 'Loop',
55237
+ muted: 'Muted',
55238
+ controls: 'Controls'
55239
+ };
55240
+ const checkbox = ([flag, label])=>`<label class="jodit_vertical_middle">
55241
+ <input type="checkbox" class="jodit-checkbox &__${flag}"/>
55242
+ <span>~${label}~</span>
55243
+ </label>`;
55244
+ /** @private */ let UIVideoPropertiesForm = class UIVideoPropertiesForm extends _core_ui_element_js__WEBPACK_IMPORTED_MODULE_7__.UIElement {
55245
+ className() {
55246
+ return 'UIVideoPropertiesForm';
55247
+ }
55248
+ render() {
55249
+ return `<form>
55250
+ <div class="jodit-form__group &__previewBox">
55251
+ <img class="&__preview" alt=""/>
55252
+ </div>
55253
+ <div class="jodit-form__group &__sizes">
55254
+ <input type="text" class="jodit-input &__width" placeholder="~Width~" aria-label="~Width~"/>
55255
+ <a class="&__lockSize">*lock*</a>
55256
+ <input type="text" class="jodit-input &__height" placeholder="~Height~" aria-label="~Height~"/>
55257
+ </div>
55258
+ <div class="jodit-form__group &__editPoster">
55259
+ <label>~Poster~</label>
55260
+ <div class="jodit-input_group">
55261
+ <input type="text" class="jodit-input &__poster" placeholder="https://"/>
55262
+ <div class="jodit-input_group-buttons">
55263
+ <a class="jodit-button &__changePoster" title="~Upload~">*image*</a>
55264
+ <a class="jodit-button &__removePoster" title="~Remove~">*bin*</a>
55265
+ </div>
55266
+ </div>
55267
+ </div>
55268
+ <div class="jodit-form__group &__playback">
55269
+ ${Object.entries(flags).map(checkbox).join('')}
55270
+ </div>
55271
+ </form>`;
55272
+ }
55273
+ input(name) {
55274
+ return this.getElm(name);
55275
+ }
55276
+ show(name, shown) {
55277
+ ;(0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(this.getElm(name), 'display', shown ? null : 'none');
55278
+ }
55279
+ /**
55280
+ * A video has every field, an embed only its size, and audio only its
55281
+ * playback settings
55282
+ */ onStateMediaChange() {
55283
+ const { media } = this.state;
55284
+ this.show('editPoster', _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_3__.Dom.isTag(media, 'video'));
55285
+ this.show('sizes', !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_3__.Dom.isTag(media, 'audio'));
55286
+ this.show('playback', !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_3__.Dom.isTag(media, 'iframe'));
55287
+ this.showPreview();
55288
+ }
55289
+ // A video's poster, when it has one
55290
+ showPreview() {
55291
+ const { media, values } = this.state;
55292
+ const shown = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_3__.Dom.isTag(media, 'video') && Boolean(values.poster);
55293
+ this.show('previewBox', shown);
55294
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_5__.attr)(this.getElm('preview'), 'src', shown ? values.poster : null);
55295
+ }
55296
+ hideChangePoster() {
55297
+ const { uploader, filebrowser } = this.j.o;
55298
+ // What FileSelectorWidget offers
55299
+ const canUpload = uploader.showTabInFileSelector !== false && Boolean(uploader.url || uploader.insertImageAsBase64URI || uploader.customUploadFunction);
55300
+ const canBrowse = Boolean(filebrowser.ajax.url || filebrowser.items.url);
55301
+ this.show('changePoster', canUpload || canBrowse);
55302
+ }
55303
+ onStatePosterChange() {
55304
+ const { poster } = this.state.values;
55305
+ this.input('poster').value = poster;
55306
+ this.show('removePoster', Boolean(poster));
55307
+ this.showPreview();
55308
+ }
55309
+ onPosterChange() {
55310
+ this.state.values.poster = this.input('poster').value;
55311
+ }
55312
+ onChangePosterClick(e) {
55313
+ this.handlers.openPosterPopup(this.getElm('changePoster'));
55314
+ e.stopPropagation();
55315
+ }
55316
+ onRemovePosterClick() {
55317
+ this.state.values.poster = '';
55318
+ }
55319
+ onStateSizeIsLockedChange() {
55320
+ this.getElm('lockSize').innerHTML = _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_8__.Icon.get(this.state.sizeIsLocked ? 'lock' : 'unlock');
55321
+ }
55322
+ onLockSizeClick() {
55323
+ const { state } = this;
55324
+ const { values } = state;
55325
+ state.sizeIsLocked = !state.sizeIsLocked;
55326
+ if (state.sizeIsLocked && (0,_core_helpers_checker_is_numeric_js__WEBPACK_IMPORTED_MODULE_4__.isNumeric)(values.width)) {
55327
+ values.height = Math.round(parseFloat(values.width.toString()) / state.ratio);
55328
+ }
55329
+ }
55330
+ onStateSizeChange() {
55331
+ const { values } = this.state;
55332
+ // Not the field being typed in
55333
+ [
55334
+ 'width',
55335
+ 'height'
55336
+ ].forEach((key)=>{
55337
+ const input = this.input(key);
55338
+ if (input !== this.j.od.activeElement) {
55339
+ input.value = values[key].toString();
55340
+ }
55341
+ });
55342
+ }
55343
+ onSizeInput(e) {
55344
+ const { state } = this;
55345
+ const { values } = state;
55346
+ // Both read first, since setting one rewrites the other's field
55347
+ const width = this.input('width').value;
55348
+ const height = this.input('height').value;
55349
+ if (!state.sizeIsLocked || !(0,_core_helpers_checker_is_numeric_js__WEBPACK_IMPORTED_MODULE_4__.isNumeric)(width) || !(0,_core_helpers_checker_is_numeric_js__WEBPACK_IMPORTED_MODULE_4__.isNumeric)(height)) {
55350
+ values.width = width;
55351
+ values.height = height;
55352
+ return;
55353
+ }
55354
+ const w = parseFloat(width);
55355
+ const h = parseFloat(height);
55356
+ if (e.target === this.input('width')) {
55357
+ values.width = w;
55358
+ values.height = Math.round(w / state.ratio);
55359
+ } else {
55360
+ values.width = Math.round(h * state.ratio);
55361
+ values.height = h;
55362
+ }
55363
+ }
55364
+ /**
55365
+ * Autoplay mutes it, and it keeps its controls unless it autoplays
55366
+ */ onStateFlagsChange() {
55367
+ const { values } = this.state;
55368
+ this.input('autoplay').checked = values.autoplay;
55369
+ this.input('loop').checked = values.loop;
55370
+ this.input('muted').checked = values.muted || values.autoplay;
55371
+ this.input('muted').disabled = values.autoplay;
55372
+ this.input('controls').checked = values.controls || !values.autoplay;
55373
+ this.input('controls').disabled = !values.autoplay;
55374
+ }
55375
+ onFlagChange(e) {
55376
+ Object.keys(flags).forEach((flag)=>{
55377
+ const input = this.input(flag);
55378
+ if (e.target === input) {
55379
+ this.state.values[flag] = input.checked;
55380
+ }
55381
+ });
55382
+ }
55383
+ constructor(jodit, state, handlers){
55384
+ super(jodit);
55385
+ this.state = state;
55386
+ this.handlers = handlers;
55387
+ }
55388
+ };
55389
+ __decorate([
55390
+ (0,_core_decorators_hook_hook_js__WEBPACK_IMPORTED_MODULE_1__.hook)('ready'),
55391
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)('state.media')
55392
+ ], UIVideoPropertiesForm.prototype, "onStateMediaChange", null);
55393
+ __decorate([
55394
+ (0,_core_decorators_hook_hook_js__WEBPACK_IMPORTED_MODULE_1__.hook)('ready')
55395
+ ], UIVideoPropertiesForm.prototype, "hideChangePoster", null);
55396
+ __decorate([
55397
+ (0,_core_decorators_hook_hook_js__WEBPACK_IMPORTED_MODULE_1__.hook)('ready'),
55398
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)('state.values.poster')
55399
+ ], UIVideoPropertiesForm.prototype, "onStatePosterChange", null);
55400
+ __decorate([
55401
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)('poster:change')
55402
+ ], UIVideoPropertiesForm.prototype, "onPosterChange", null);
55403
+ __decorate([
55404
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)('changePoster:click')
55405
+ ], UIVideoPropertiesForm.prototype, "onChangePosterClick", null);
55406
+ __decorate([
55407
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)('removePoster:click')
55408
+ ], UIVideoPropertiesForm.prototype, "onRemovePosterClick", null);
55409
+ __decorate([
55410
+ (0,_core_decorators_hook_hook_js__WEBPACK_IMPORTED_MODULE_1__.hook)('ready'),
55411
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)('state.sizeIsLocked')
55412
+ ], UIVideoPropertiesForm.prototype, "onStateSizeIsLockedChange", null);
55413
+ __decorate([
55414
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)('lockSize:click')
55415
+ ], UIVideoPropertiesForm.prototype, "onLockSizeClick", null);
55416
+ __decorate([
55417
+ (0,_core_decorators_hook_hook_js__WEBPACK_IMPORTED_MODULE_1__.hook)('ready'),
55418
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)([
55419
+ 'state.values.width',
55420
+ 'state.values.height'
55421
+ ])
55422
+ ], UIVideoPropertiesForm.prototype, "onStateSizeChange", null);
55423
+ __decorate([
55424
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)([
55425
+ 'width:input',
55426
+ 'height:input',
55427
+ 'width:change',
55428
+ 'height:change'
55429
+ ])
55430
+ ], UIVideoPropertiesForm.prototype, "onSizeInput", null);
55431
+ __decorate([
55432
+ (0,_core_decorators_hook_hook_js__WEBPACK_IMPORTED_MODULE_1__.hook)('ready'),
55433
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)(Object.keys(flags).map((flag)=>`state.values.${flag}`))
55434
+ ], UIVideoPropertiesForm.prototype, "onStateFlagsChange", null);
55435
+ __decorate([
55436
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)(Object.keys(flags).map((flag)=>`${flag}:change`))
55437
+ ], UIVideoPropertiesForm.prototype, "onFlagChange", null);
55438
+ UIVideoPropertiesForm = __decorate([
55439
+ _core_decorators_component_component_js__WEBPACK_IMPORTED_MODULE_0__.component
55440
+ ], UIVideoPropertiesForm);
55441
+
55442
+
55443
+
55444
+ /***/ }),
55445
+
55446
+ /***/ 96139:
54752
55447
  /***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) {
54753
55448
 
55449
+ /* unused harmony export videoProperties */
55450
+ /* harmony import */ var _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(65478);
55451
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2748);
55452
+ /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(580);
55453
+ /* harmony import */ var _core_helpers_checker_is_array_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(68345);
55454
+ /* harmony import */ var _core_helpers_size_position_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5700);
55455
+ /* harmony import */ var _core_helpers_utils_utils_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(37790);
55456
+ /* harmony import */ var _core_plugin_plugin_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(20356);
55457
+ /* harmony import */ var _core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(62843);
55458
+ /* harmony import */ var _core_ui_popup_popup_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(56917);
55459
+ /* harmony import */ var _modules_widget_file_selector_file_selector_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(34793);
55460
+ /* harmony import */ var _ui_ui_video_form_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(27828);
55461
+ /* harmony import */ var _readers_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(54426);
55462
+ /* harmony import */ var _replace_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(96170);
55463
+ /* harmony import */ var _writers_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(44909);
55464
+ /* harmony import */ var _video_config_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(14984);
55465
+ /*!
55466
+ * Jodit Editor (https://xdsoft.net/jodit/)
55467
+ * Released under MIT see LICENSE.txt in the project root for license information.
55468
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
55469
+ */ var __decorate = undefined && undefined.__decorate || function(decorators, target, key, desc) {
55470
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
55471
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
55472
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
55473
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
55474
+ };
55475
+
55476
+
55477
+
55478
+
55479
+
55480
+
55481
+
55482
+
55483
+
55484
+
55485
+
55486
+
55487
+
55488
+
55489
+
55490
+ /**
55491
+ * Show a dialog with the size, poster and playback settings of a video, an
55492
+ * embed or audio. The media popup's Edit button opens it:
55493
+ *
55494
+ * ```javascript
55495
+ * editor.events.fire('openVideoProperties', video);
55496
+ * ```
55497
+ */ class videoProperties extends _core_plugin_plugin_js__WEBPACK_IMPORTED_MODULE_6__.Plugin {
55498
+ get __size() {
55499
+ const { width, height } = this.state.values;
55500
+ return `${width}x${height}`;
55501
+ }
55502
+ get form() {
55503
+ return new _ui_ui_video_form_js__WEBPACK_IMPORTED_MODULE_10__.UIVideoPropertiesForm(this.j, this.state, {
55504
+ openPosterPopup: (target)=>this.__openPosterPopup(target)
55505
+ });
55506
+ }
55507
+ get dialog() {
55508
+ const { j } = this;
55509
+ const dialog = j.dlg({
55510
+ minWidth: Math.min(400, screen.width),
55511
+ buttons: [
55512
+ 'dialog.close'
55513
+ ]
55514
+ });
55515
+ const buttons = this.__buttons;
55516
+ buttons.check.onAction(()=>{
55517
+ (0,_writers_js__WEBPACK_IMPORTED_MODULE_13__.applyValues)(j, this.state, this.__size !== this.__readSize);
55518
+ j.synchronizeValues();
55519
+ dialog.close();
55520
+ });
55521
+ buttons.remove.onAction(()=>{
55522
+ j.s.removeNode(this.state.target);
55523
+ dialog.close();
55524
+ });
55525
+ buttons.cancel.onAction(()=>{
55526
+ dialog.close();
55527
+ });
55528
+ dialog.setContent(this.form);
55529
+ dialog.setFooter([
55530
+ [
55531
+ buttons.cancel,
55532
+ buttons.remove
55533
+ ],
55534
+ buttons.check
55535
+ ]);
55536
+ (0,_core_helpers_utils_utils_js__WEBPACK_IMPORTED_MODULE_5__.markOwner)(j, dialog.container);
55537
+ return dialog;
55538
+ }
55539
+ get __buttons() {
55540
+ const { j } = this;
55541
+ return {
55542
+ check: (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_7__.Button)(j, 'ok', 'Apply', 'primary'),
55543
+ remove: (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_7__.Button)(j, 'bin', 'Delete'),
55544
+ cancel: (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_7__.Button)(j, 'cancel', 'Cancel')
55545
+ };
55546
+ }
55547
+ /**
55548
+ * Open the dialog for the media `target` is, or is the wrapper of
55549
+ */ open(target) {
55550
+ const media = (0,_readers_js__WEBPACK_IMPORTED_MODULE_11__.editedMedia)(target);
55551
+ if (!media) {
55552
+ return;
55553
+ }
55554
+ this.state.target = target;
55555
+ this.state.media = media;
55556
+ (0,_readers_js__WEBPACK_IMPORTED_MODULE_11__.readValues)(this.state);
55557
+ this.__readSize = this.__size;
55558
+ this.dialog.setHeader(this.j.i18n(_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(media, 'audio') ? 'Audio properties' : 'Video properties'));
55559
+ this.dialog.open().setModal(true).setPosition();
55560
+ }
55561
+ /**
55562
+ * The video popup's tabs for the media popup's Replace: what they insert
55563
+ * takes the place of the media `target` is, or is the wrapper of
55564
+ */ onGenerateReplaceVideoTabs(target, close) {
55565
+ return (0,_video_config_js__WEBPACK_IMPORTED_MODULE_14__.videoTabs)(this.j, close, (insert)=>(0,_replace_js__WEBPACK_IMPORTED_MODULE_12__.replaceMedia)(this.j, target, insert));
55566
+ }
55567
+ __openPosterPopup(button) {
55568
+ const { j, state } = this;
55569
+ const popup = new _core_ui_popup_popup_js__WEBPACK_IMPORTED_MODULE_8__.Popup(this.dialog);
55570
+ const close = ()=>{
55571
+ popup.close();
55572
+ popup.destruct();
55573
+ };
55574
+ popup.setContent((0,_modules_widget_file_selector_file_selector_js__WEBPACK_IMPORTED_MODULE_9__.FileSelectorWidget)(j, {
55575
+ upload: (data)=>{
55576
+ if (data.files && data.files.length) {
55577
+ state.values.poster = data.baseurl + data.files[0];
55578
+ }
55579
+ close();
55580
+ },
55581
+ filebrowser: (data)=>{
55582
+ if ((0,_core_helpers_checker_is_array_js__WEBPACK_IMPORTED_MODULE_3__.isArray)(data.files) && data.files.length) {
55583
+ state.values.poster = data.files[0];
55584
+ close();
55585
+ }
55586
+ }
55587
+ }, null, close)).open(()=>(0,_core_helpers_size_position_js__WEBPACK_IMPORTED_MODULE_4__.position)(button));
55588
+ }
55589
+ /** @override */ afterInit() {}
55590
+ /** @override */ beforeDestruct() {
55591
+ var _a, _b, _c;
55592
+ Object.values((_a = (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.cached)(this, '__buttons')) !== null && _a !== void 0 ? _a : {}).forEach((b)=>b.destruct());
55593
+ (_b = (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.cached)(this, 'dialog')) === null || _b === void 0 ? void 0 : _b.destruct();
55594
+ (_c = (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.cached)(this, 'form')) === null || _c === void 0 ? void 0 : _c.destruct();
55595
+ }
55596
+ constructor(){
55597
+ super(...arguments);
55598
+ this.state = {
55599
+ target: this.j.c.element('video'),
55600
+ media: this.j.c.element('video'),
55601
+ ratio: 1,
55602
+ sizeIsLocked: true,
55603
+ values: {
55604
+ width: '',
55605
+ height: '',
55606
+ poster: '',
55607
+ autoplay: false,
55608
+ loop: false,
55609
+ muted: false,
55610
+ controls: true
55611
+ }
55612
+ };
55613
+ // The size as it was read, so an unchanged one isn't written
55614
+ this.__readSize = '';
55615
+ }
55616
+ }
55617
+ __decorate([
55618
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.cache
55619
+ ], videoProperties.prototype, "form", null);
55620
+ __decorate([
55621
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.cache
55622
+ ], videoProperties.prototype, "dialog", null);
55623
+ __decorate([
55624
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.cache
55625
+ ], videoProperties.prototype, "__buttons", null);
55626
+ __decorate([
55627
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)(':openVideoProperties')
55628
+ ], videoProperties.prototype, "open", null);
55629
+ __decorate([
55630
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)(':generateReplaceVideoTabs')
55631
+ ], videoProperties.prototype, "onGenerateReplaceVideoTabs", null);
55632
+ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('videoProperties', videoProperties);
55633
+
55634
+
55635
+ /***/ }),
55636
+
55637
+ /***/ 44909:
55638
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
55639
+
55640
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
55641
+ /* harmony export */ applyValues: function() { return /* binding */ applyValues; }
55642
+ /* harmony export */ });
55643
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
55644
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29960);
55645
+ /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(41180);
55646
+ /* harmony import */ var _readers_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(54426);
55647
+ /* harmony import */ var _image_properties_utils_utils_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(14415);
55648
+ /*!
55649
+ * Jodit Editor (https://xdsoft.net/jodit/)
55650
+ * Released under MIT see LICENSE.txt in the project root for license information.
55651
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
55652
+ */
55653
+
55654
+
55655
+
55656
+
55657
+ const cssSize = (value)=>value === '' ? null : (0,_image_properties_utils_utils_js__WEBPACK_IMPORTED_MODULE_4__.normalSizeToString)(value);
55658
+ // Sizes go on as the resizer writes them: an embed takes them as attributes,
55659
+ // and a video as CSS, without a height while its ratio is kept, if it had none
55660
+ function applySize(j, state) {
55661
+ var _a;
55662
+ const { media, values } = state;
55663
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(media, 'iframe')) {
55664
+ [
55665
+ 'width',
55666
+ 'height'
55667
+ ].forEach((key)=>{
55668
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(media, key, values[key] === '' ? null : values[key]);
55669
+ if ((0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__.cssInline)(media, key)) {
55670
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(media, key, cssSize(values[key]));
55671
+ }
55672
+ });
55673
+ // The resizer's frame for an embed
55674
+ const wrapper = media.parentElement;
55675
+ if (wrapper && (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(wrapper, 'data-jodit_iframe_wrapper')) {
55676
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(wrapper, {
55677
+ width: media.offsetWidth,
55678
+ height: media.offsetHeight
55679
+ });
55680
+ }
55681
+ return;
55682
+ }
55683
+ const heightFollowsWidth = state.sizeIsLocked && !(0,_readers_js__WEBPACK_IMPORTED_MODULE_3__.ownSize)(media, 'height');
55684
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(media, {
55685
+ width: cssSize(values.width),
55686
+ height: heightFollowsWidth ? null : cssSize(values.height)
55687
+ });
55688
+ if (!((_a = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(media, 'style')) === null || _a === void 0 ? void 0 : _a.trim())) {
55689
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(media, 'style', null);
55690
+ }
55691
+ j.e.fire(media, 'changesize');
55692
+ }
55693
+ function setFlag(media, name, on) {
55694
+ if (media.hasAttribute(name) !== on) {
55695
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(media, name, on ? '' : null);
55696
+ }
55697
+ }
55698
+ /**
55699
+ * Apply the dialog's values to the media
55700
+ * @private
55701
+ */ function applyValues(j, state, sizeChanged) {
55702
+ const { media, values } = state;
55703
+ if (sizeChanged && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(media, 'audio')) {
55704
+ applySize(j, state);
55705
+ }
55706
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(media, 'iframe')) {
55707
+ return;
55708
+ }
55709
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(media, 'video')) {
55710
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(media, 'poster', values.poster || null);
55711
+ }
55712
+ // Browsers only autoplay muted media, and playsinline keeps an iPhone from
55713
+ // playing it full screen
55714
+ setFlag(media, 'autoplay', values.autoplay);
55715
+ setFlag(media, 'muted', values.autoplay || values.muted);
55716
+ setFlag(media, 'loop', values.loop);
55717
+ setFlag(media, 'controls', values.controls || !values.autoplay);
55718
+ if (values.autoplay && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(media, 'video')) {
55719
+ setFlag(media, 'playsinline', true);
55720
+ }
55721
+ }
55722
+
55723
+
55724
+ /***/ }),
55725
+
55726
+ /***/ 14984:
55727
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
55728
+
55729
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
55730
+ /* harmony export */ videoTabs: function() { return /* binding */ videoTabs; }
55731
+ /* harmony export */ });
54754
55732
  /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(21537);
54755
55733
  /* harmony import */ var _core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(62843);
54756
55734
  /* harmony import */ var _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2525);
@@ -54785,77 +55763,88 @@ _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.video = {
54785
55763
  defaultHandlerSuccess: insertVideos
54786
55764
  };
54787
55765
  _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_3__.Icon.set('video', _video_svg_js__WEBPACK_IMPORTED_MODULE_6__["default"]);
54788
- _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.video = {
54789
- popup: (jodit, current, close)=>{
54790
- const formLink = new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIForm(jodit, [
54791
- new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIBlock(jodit, [
54792
- new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIInput(jodit, {
54793
- name: 'url',
54794
- required: true,
54795
- label: 'URL',
54796
- placeholder: 'https://',
54797
- validators: [
54798
- 'url'
54799
- ]
54800
- })
54801
- ]),
54802
- new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIBlock(jodit, [
54803
- (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_1__.Button)(jodit, '', 'Insert', 'primary').onAction(()=>formLink.submit())
54804
- ])
54805
- ]), formCode = new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIForm(jodit, [
54806
- new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIBlock(jodit, [
54807
- new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UITextArea(jodit, {
54808
- name: 'code',
54809
- required: true,
54810
- label: 'Embed code'
54811
- })
54812
- ]),
54813
- new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIBlock(jodit, [
54814
- (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_1__.Button)(jodit, '', 'Insert', 'primary').onAction(()=>formCode.submit())
54815
- ])
54816
- ]), tabs = [], insertCode = (code)=>{
54817
- jodit.s.restore();
54818
- jodit.s.insertHTML((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_0__.prepareEmbedCode)(jodit, code));
54819
- close();
54820
- };
55766
+ /**
55767
+ * The video popup's tabs: Upload, when the uploader is configured, then Link
55768
+ * and Code. `insert` runs what a tab inserts, which by default goes in at the
55769
+ * selection the popup was opened with.
55770
+ */ function videoTabs(jodit, close, insert) {
55771
+ const run = insert !== null && insert !== void 0 ? insert : (fn)=>{
55772
+ jodit.s.restore();
55773
+ fn();
55774
+ };
55775
+ const formLink = new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIForm(jodit, [
55776
+ new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIBlock(jodit, [
55777
+ new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIInput(jodit, {
55778
+ name: 'url',
55779
+ required: true,
55780
+ label: 'URL',
55781
+ placeholder: 'https://',
55782
+ validators: [
55783
+ 'url'
55784
+ ]
55785
+ })
55786
+ ]),
55787
+ new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIBlock(jodit, [
55788
+ (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_1__.Button)(jodit, '', 'Insert', 'primary').onAction(()=>formLink.submit())
55789
+ ])
55790
+ ]), formCode = new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIForm(jodit, [
55791
+ new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIBlock(jodit, [
55792
+ new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UITextArea(jodit, {
55793
+ name: 'code',
55794
+ required: true,
55795
+ label: 'Embed code'
55796
+ })
55797
+ ]),
55798
+ new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIBlock(jodit, [
55799
+ (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_1__.Button)(jodit, '', 'Insert', 'primary').onAction(()=>formCode.submit())
55800
+ ])
55801
+ ]), tabs = [], insertCode = (code)=>{
55802
+ run(()=>jodit.s.insertHTML((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_0__.prepareEmbedCode)(jodit, code)));
55803
+ close();
55804
+ };
55805
+ if (!insert) {
54821
55806
  jodit.s.save();
54822
- const { uploader } = jodit.o;
54823
- // Base64 alone would put whole video files into the content
54824
- if (uploader.showTabInFileSelector !== false && (uploader.url || uploader.customUploadFunction)) {
54825
- tabs.push((0,_modules_widget_index_js__WEBPACK_IMPORTED_MODULE_5__.UploadTab)(jodit, (data)=>{
55807
+ }
55808
+ const { uploader } = jodit.o;
55809
+ // Base64 alone would put whole video files into the content
55810
+ if (uploader.showTabInFileSelector !== false && (uploader.url || uploader.customUploadFunction)) {
55811
+ tabs.push((0,_modules_widget_index_js__WEBPACK_IMPORTED_MODULE_5__.UploadTab)(jodit, (data)=>{
55812
+ run(()=>{
54826
55813
  var _a, _b;
54827
- jodit.s.restore();
54828
- ((_b = (_a = jodit.o.video) === null || _a === void 0 ? void 0 : _a.defaultHandlerSuccess) !== null && _b !== void 0 ? _b : insertVideos).call(jodit, data);
54829
- }, {
54830
- label: 'Drop file',
54831
- accept: 'video/*'
54832
- }));
54833
- }
54834
- tabs.push({
54835
- icon: 'link',
54836
- name: 'Link',
54837
- content: formLink.container
55814
+ return ((_b = (_a = jodit.o.video) === null || _a === void 0 ? void 0 : _a.defaultHandlerSuccess) !== null && _b !== void 0 ? _b : insertVideos).call(jodit, data);
55815
+ });
54838
55816
  }, {
54839
- icon: 'source',
54840
- name: 'Code',
54841
- content: formCode.container
54842
- });
54843
- formLink.onSubmit((data)=>{
54844
- var _a, _b, _c, _d;
54845
- insertCode((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_0__.call)((_b = (_a = jodit.o.video) === null || _a === void 0 ? void 0 : _a.parseUrlToVideoEmbed) !== null && _b !== void 0 ? _b : _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_0__.convertMediaUrlToVideoEmbed, data.url, {
54846
- width: (_c = jodit.o.video) === null || _c === void 0 ? void 0 : _c.defaultWidth,
54847
- height: (_d = jodit.o.video) === null || _d === void 0 ? void 0 : _d.defaultHeight
54848
- }));
54849
- });
54850
- formCode.onSubmit((data)=>{
54851
- insertCode(data.code);
54852
- });
54853
- const box = (0,_modules_widget_index_js__WEBPACK_IMPORTED_MODULE_5__.TabsWidget)(jodit, tabs);
54854
- // Its tabs are sized to their labels, as the file selector's are, since
54855
- // "Upload" doesn't fit a third of the popup
54856
- box.classList.add('jodit-file-selector');
54857
- return box;
54858
- },
55817
+ label: 'Drop file',
55818
+ accept: 'video/*'
55819
+ }));
55820
+ }
55821
+ tabs.push({
55822
+ icon: 'link',
55823
+ name: 'Link',
55824
+ content: formLink.container
55825
+ }, {
55826
+ icon: 'source',
55827
+ name: 'Code',
55828
+ content: formCode.container
55829
+ });
55830
+ formLink.onSubmit((data)=>{
55831
+ var _a, _b, _c, _d;
55832
+ insertCode((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_0__.call)((_b = (_a = jodit.o.video) === null || _a === void 0 ? void 0 : _a.parseUrlToVideoEmbed) !== null && _b !== void 0 ? _b : _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_0__.convertMediaUrlToVideoEmbed, data.url, {
55833
+ width: (_c = jodit.o.video) === null || _c === void 0 ? void 0 : _c.defaultWidth,
55834
+ height: (_d = jodit.o.video) === null || _d === void 0 ? void 0 : _d.defaultHeight
55835
+ }));
55836
+ });
55837
+ formCode.onSubmit((data)=>{
55838
+ insertCode(data.code);
55839
+ });
55840
+ const box = (0,_modules_widget_index_js__WEBPACK_IMPORTED_MODULE_5__.TabsWidget)(jodit, tabs);
55841
+ // Its tabs are sized to their labels, as the file selector's are, since
55842
+ // "Upload" doesn't fit a third of the popup
55843
+ box.classList.add('jodit-file-selector');
55844
+ return box;
55845
+ }
55846
+ _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.video = {
55847
+ popup: (jodit, current, close)=>videoTabs(jodit, close),
54859
55848
  tags: [
54860
55849
  'iframe'
54861
55850
  ],