jodit-pro 4.18.3 → 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 (384) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +2 -0
  3. package/config.js +1 -0
  4. package/es2015/jodit.css +2 -2
  5. package/es2015/jodit.fat.min.css +1 -1
  6. package/es2015/jodit.fat.min.js +55 -18
  7. package/es2015/jodit.js +1139 -150
  8. package/es2015/jodit.min.css +1 -1
  9. package/es2015/jodit.min.js +34 -9
  10. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  11. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  12. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  13. package/es2015/plugins/autocomplete/autocomplete.css +1 -1
  14. package/es2015/plugins/autocomplete/autocomplete.js +1 -1
  15. package/es2015/plugins/autocomplete/autocomplete.min.js +1 -1
  16. package/es2015/plugins/backup/backup.css +1 -1
  17. package/es2015/plugins/backup/backup.js +1 -1
  18. package/es2015/plugins/backup/backup.min.js +1 -1
  19. package/es2015/plugins/button-generator/button-generator.css +1 -1
  20. package/es2015/plugins/button-generator/button-generator.js +1 -1
  21. package/es2015/plugins/button-generator/button-generator.min.js +1 -1
  22. package/es2015/plugins/change-case/change-case.js +1 -1
  23. package/es2015/plugins/change-case/change-case.min.js +1 -1
  24. package/es2015/plugins/chart/chart.css +173 -0
  25. package/es2015/plugins/chart/chart.js +1479 -0
  26. package/es2015/plugins/chart/chart.min.css +1 -0
  27. package/es2015/plugins/chart/chart.min.js +20 -0
  28. package/es2015/plugins/color-picker/color-picker.css +1 -1
  29. package/es2015/plugins/color-picker/color-picker.js +1 -1
  30. package/es2015/plugins/color-picker/color-picker.min.js +1 -1
  31. package/es2015/plugins/emoji/emoji.css +1 -1
  32. package/es2015/plugins/emoji/emoji.js +1 -1
  33. package/es2015/plugins/emoji/emoji.min.js +1 -1
  34. package/es2015/plugins/export-docs/export-docs.js +1 -1
  35. package/es2015/plugins/export-docs/export-docs.min.js +1 -1
  36. package/es2015/plugins/finder/finder.css +1 -1
  37. package/es2015/plugins/finder/finder.js +1 -1
  38. package/es2015/plugins/finder/finder.min.js +1 -1
  39. package/es2015/plugins/google-maps/google-maps.css +1 -1
  40. package/es2015/plugins/google-maps/google-maps.js +1 -1
  41. package/es2015/plugins/google-maps/google-maps.min.js +1 -1
  42. package/es2015/plugins/google-search/google-search.js +1 -1
  43. package/es2015/plugins/google-search/google-search.min.js +1 -1
  44. package/es2015/plugins/highlight-signature/highlight-signature.js +1 -1
  45. package/es2015/plugins/highlight-signature/highlight-signature.min.js +1 -1
  46. package/es2015/plugins/iframe-editor/iframe-editor.css +1 -1
  47. package/es2015/plugins/iframe-editor/iframe-editor.js +1 -1
  48. package/es2015/plugins/iframe-editor/iframe-editor.min.js +1 -1
  49. package/es2015/plugins/image-editor-pro/image-editor-pro.css +1 -1
  50. package/es2015/plugins/image-editor-pro/image-editor-pro.js +1 -1
  51. package/es2015/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  52. package/es2015/plugins/keyboard/keyboard.css +1 -1
  53. package/es2015/plugins/keyboard/keyboard.js +1 -1
  54. package/es2015/plugins/keyboard/keyboard.min.js +1 -1
  55. package/es2015/plugins/mobile-view/mobile-view.js +1 -1
  56. package/es2015/plugins/mobile-view/mobile-view.min.js +1 -1
  57. package/es2015/plugins/page-break/page-break.js +1 -1
  58. package/es2015/plugins/page-break/page-break.min.js +1 -1
  59. package/es2015/plugins/paste-code/paste-code.css +1 -1
  60. package/es2015/plugins/paste-code/paste-code.js +1 -1
  61. package/es2015/plugins/paste-code/paste-code.min.js +1 -1
  62. package/es2015/plugins/paste-from-word/paste-from-word.js +1 -1
  63. package/es2015/plugins/paste-from-word/paste-from-word.min.js +1 -1
  64. package/es2015/plugins/show-blocks/show-blocks.js +1 -1
  65. package/es2015/plugins/show-blocks/show-blocks.min.js +1 -1
  66. package/es2015/plugins/style/style.css +1 -1
  67. package/es2015/plugins/style/style.js +1 -1
  68. package/es2015/plugins/style/style.min.js +1 -1
  69. package/es2015/plugins/templates/templates.css +1 -1
  70. package/es2015/plugins/templates/templates.js +1 -1
  71. package/es2015/plugins/templates/templates.min.js +1 -1
  72. package/es2015/plugins/todo-list/todo-list.css +1 -1
  73. package/es2015/plugins/todo-list/todo-list.js +1 -1
  74. package/es2015/plugins/todo-list/todo-list.min.js +1 -1
  75. package/es2015/plugins/translate/translate.css +1 -1
  76. package/es2015/plugins/translate/translate.js +1 -1
  77. package/es2015/plugins/translate/translate.min.js +1 -1
  78. package/es2015/plugins/tune-block/tune-block.css +1 -1
  79. package/es2015/plugins/tune-block/tune-block.js +2 -1
  80. package/es2015/plugins/tune-block/tune-block.min.js +2 -2
  81. package/es2018/jodit.fat.min.css +1 -1
  82. package/es2018/jodit.fat.min.js +100 -63
  83. package/es2018/jodit.min.css +1 -1
  84. package/es2018/jodit.min.js +64 -39
  85. package/es2018/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  86. package/es2018/plugins/autocomplete/autocomplete.min.js +1 -1
  87. package/es2018/plugins/backup/backup.min.js +1 -1
  88. package/es2018/plugins/button-generator/button-generator.min.js +1 -1
  89. package/es2018/plugins/change-case/change-case.min.js +1 -1
  90. package/es2018/plugins/chart/chart.min.css +1 -0
  91. package/es2018/plugins/chart/chart.min.js +20 -0
  92. package/es2018/plugins/color-picker/color-picker.min.js +1 -1
  93. package/es2018/plugins/emoji/emoji.min.js +1 -1
  94. package/es2018/plugins/export-docs/export-docs.min.js +1 -1
  95. package/es2018/plugins/finder/finder.min.js +1 -1
  96. package/es2018/plugins/google-maps/google-maps.min.js +1 -1
  97. package/es2018/plugins/google-search/google-search.min.js +1 -1
  98. package/es2018/plugins/highlight-signature/highlight-signature.min.js +1 -1
  99. package/es2018/plugins/iframe-editor/iframe-editor.min.js +1 -1
  100. package/es2018/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  101. package/es2018/plugins/keyboard/keyboard.min.js +1 -1
  102. package/es2018/plugins/mobile-view/mobile-view.min.js +1 -1
  103. package/es2018/plugins/page-break/page-break.min.js +1 -1
  104. package/es2018/plugins/paste-code/paste-code.min.js +1 -1
  105. package/es2018/plugins/paste-from-word/paste-from-word.min.js +1 -1
  106. package/es2018/plugins/show-blocks/show-blocks.min.js +1 -1
  107. package/es2018/plugins/style/style.min.js +1 -1
  108. package/es2018/plugins/templates/templates.min.js +1 -1
  109. package/es2018/plugins/todo-list/todo-list.min.js +1 -1
  110. package/es2018/plugins/translate/translate.min.js +1 -1
  111. package/es2018/plugins/tune-block/tune-block.min.js +2 -2
  112. package/es2021/jodit.css +2 -2
  113. package/es2021/jodit.fat.min.css +1 -1
  114. package/es2021/jodit.fat.min.js +51 -14
  115. package/es2021/jodit.js +1139 -150
  116. package/es2021/jodit.min.css +1 -1
  117. package/es2021/jodit.min.js +78 -53
  118. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  119. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  120. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  121. package/es2021/plugins/autocomplete/autocomplete.css +1 -1
  122. package/es2021/plugins/autocomplete/autocomplete.js +1 -1
  123. package/es2021/plugins/autocomplete/autocomplete.min.js +1 -1
  124. package/es2021/plugins/backup/backup.css +1 -1
  125. package/es2021/plugins/backup/backup.js +1 -1
  126. package/es2021/plugins/backup/backup.min.js +1 -1
  127. package/es2021/plugins/button-generator/button-generator.css +1 -1
  128. package/es2021/plugins/button-generator/button-generator.js +1 -1
  129. package/es2021/plugins/button-generator/button-generator.min.js +1 -1
  130. package/es2021/plugins/change-case/change-case.js +1 -1
  131. package/es2021/plugins/change-case/change-case.min.js +1 -1
  132. package/es2021/plugins/chart/chart.css +173 -0
  133. package/es2021/plugins/chart/chart.js +1424 -0
  134. package/es2021/plugins/chart/chart.min.css +1 -0
  135. package/es2021/plugins/chart/chart.min.js +20 -0
  136. package/es2021/plugins/color-picker/color-picker.css +1 -1
  137. package/es2021/plugins/color-picker/color-picker.js +1 -1
  138. package/es2021/plugins/color-picker/color-picker.min.js +1 -1
  139. package/es2021/plugins/emoji/emoji.css +1 -1
  140. package/es2021/plugins/emoji/emoji.js +1 -1
  141. package/es2021/plugins/emoji/emoji.min.js +1 -1
  142. package/es2021/plugins/export-docs/export-docs.js +1 -1
  143. package/es2021/plugins/export-docs/export-docs.min.js +1 -1
  144. package/es2021/plugins/finder/finder.css +1 -1
  145. package/es2021/plugins/finder/finder.js +1 -1
  146. package/es2021/plugins/finder/finder.min.js +1 -1
  147. package/es2021/plugins/google-maps/google-maps.css +1 -1
  148. package/es2021/plugins/google-maps/google-maps.js +1 -1
  149. package/es2021/plugins/google-maps/google-maps.min.js +1 -1
  150. package/es2021/plugins/google-search/google-search.js +1 -1
  151. package/es2021/plugins/google-search/google-search.min.js +1 -1
  152. package/es2021/plugins/highlight-signature/highlight-signature.js +1 -1
  153. package/es2021/plugins/highlight-signature/highlight-signature.min.js +1 -1
  154. package/es2021/plugins/iframe-editor/iframe-editor.css +1 -1
  155. package/es2021/plugins/iframe-editor/iframe-editor.js +1 -1
  156. package/es2021/plugins/iframe-editor/iframe-editor.min.js +1 -1
  157. package/es2021/plugins/image-editor-pro/image-editor-pro.css +1 -1
  158. package/es2021/plugins/image-editor-pro/image-editor-pro.js +1 -1
  159. package/es2021/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  160. package/es2021/plugins/keyboard/keyboard.css +1 -1
  161. package/es2021/plugins/keyboard/keyboard.js +1 -1
  162. package/es2021/plugins/keyboard/keyboard.min.js +1 -1
  163. package/es2021/plugins/mobile-view/mobile-view.js +1 -1
  164. package/es2021/plugins/mobile-view/mobile-view.min.js +1 -1
  165. package/es2021/plugins/page-break/page-break.js +1 -1
  166. package/es2021/plugins/page-break/page-break.min.js +1 -1
  167. package/es2021/plugins/paste-code/paste-code.css +1 -1
  168. package/es2021/plugins/paste-code/paste-code.js +1 -1
  169. package/es2021/plugins/paste-code/paste-code.min.js +1 -1
  170. package/es2021/plugins/paste-from-word/paste-from-word.js +1 -1
  171. package/es2021/plugins/paste-from-word/paste-from-word.min.js +1 -1
  172. package/es2021/plugins/show-blocks/show-blocks.js +1 -1
  173. package/es2021/plugins/show-blocks/show-blocks.min.js +1 -1
  174. package/es2021/plugins/style/style.css +1 -1
  175. package/es2021/plugins/style/style.js +1 -1
  176. package/es2021/plugins/style/style.min.js +1 -1
  177. package/es2021/plugins/templates/templates.css +1 -1
  178. package/es2021/plugins/templates/templates.js +1 -1
  179. package/es2021/plugins/templates/templates.min.js +1 -1
  180. package/es2021/plugins/todo-list/todo-list.css +1 -1
  181. package/es2021/plugins/todo-list/todo-list.js +1 -1
  182. package/es2021/plugins/todo-list/todo-list.min.js +1 -1
  183. package/es2021/plugins/translate/translate.css +1 -1
  184. package/es2021/plugins/translate/translate.js +1 -1
  185. package/es2021/plugins/translate/translate.min.js +1 -1
  186. package/es2021/plugins/tune-block/tune-block.css +1 -1
  187. package/es2021/plugins/tune-block/tune-block.js +2 -1
  188. package/es2021/plugins/tune-block/tune-block.min.js +2 -2
  189. package/es2021.en/jodit.css +2 -2
  190. package/es2021.en/jodit.fat.min.css +1 -1
  191. package/es2021.en/jodit.fat.min.js +54 -17
  192. package/es2021.en/jodit.js +1139 -150
  193. package/es2021.en/jodit.min.css +1 -1
  194. package/es2021.en/jodit.min.js +78 -53
  195. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  196. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  197. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  198. package/es2021.en/plugins/autocomplete/autocomplete.css +1 -1
  199. package/es2021.en/plugins/autocomplete/autocomplete.js +1 -1
  200. package/es2021.en/plugins/autocomplete/autocomplete.min.js +1 -1
  201. package/es2021.en/plugins/backup/backup.css +1 -1
  202. package/es2021.en/plugins/backup/backup.js +1 -1
  203. package/es2021.en/plugins/backup/backup.min.js +1 -1
  204. package/es2021.en/plugins/button-generator/button-generator.css +1 -1
  205. package/es2021.en/plugins/button-generator/button-generator.js +1 -1
  206. package/es2021.en/plugins/button-generator/button-generator.min.js +1 -1
  207. package/es2021.en/plugins/change-case/change-case.js +1 -1
  208. package/es2021.en/plugins/change-case/change-case.min.js +1 -1
  209. package/es2021.en/plugins/chart/chart.css +173 -0
  210. package/es2021.en/plugins/chart/chart.js +1424 -0
  211. package/es2021.en/plugins/chart/chart.min.css +1 -0
  212. package/es2021.en/plugins/chart/chart.min.js +20 -0
  213. package/es2021.en/plugins/color-picker/color-picker.css +1 -1
  214. package/es2021.en/plugins/color-picker/color-picker.js +1 -1
  215. package/es2021.en/plugins/color-picker/color-picker.min.js +1 -1
  216. package/es2021.en/plugins/emoji/emoji.css +1 -1
  217. package/es2021.en/plugins/emoji/emoji.js +1 -1
  218. package/es2021.en/plugins/emoji/emoji.min.js +1 -1
  219. package/es2021.en/plugins/export-docs/export-docs.js +1 -1
  220. package/es2021.en/plugins/export-docs/export-docs.min.js +1 -1
  221. package/es2021.en/plugins/finder/finder.css +1 -1
  222. package/es2021.en/plugins/finder/finder.js +1 -1
  223. package/es2021.en/plugins/finder/finder.min.js +1 -1
  224. package/es2021.en/plugins/google-maps/google-maps.css +1 -1
  225. package/es2021.en/plugins/google-maps/google-maps.js +1 -1
  226. package/es2021.en/plugins/google-maps/google-maps.min.js +1 -1
  227. package/es2021.en/plugins/google-search/google-search.js +1 -1
  228. package/es2021.en/plugins/google-search/google-search.min.js +1 -1
  229. package/es2021.en/plugins/highlight-signature/highlight-signature.js +1 -1
  230. package/es2021.en/plugins/highlight-signature/highlight-signature.min.js +1 -1
  231. package/es2021.en/plugins/iframe-editor/iframe-editor.css +1 -1
  232. package/es2021.en/plugins/iframe-editor/iframe-editor.js +1 -1
  233. package/es2021.en/plugins/iframe-editor/iframe-editor.min.js +1 -1
  234. package/es2021.en/plugins/image-editor-pro/image-editor-pro.css +1 -1
  235. package/es2021.en/plugins/image-editor-pro/image-editor-pro.js +1 -1
  236. package/es2021.en/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  237. package/es2021.en/plugins/keyboard/keyboard.css +1 -1
  238. package/es2021.en/plugins/keyboard/keyboard.js +1 -1
  239. package/es2021.en/plugins/keyboard/keyboard.min.js +1 -1
  240. package/es2021.en/plugins/mobile-view/mobile-view.js +1 -1
  241. package/es2021.en/plugins/mobile-view/mobile-view.min.js +1 -1
  242. package/es2021.en/plugins/page-break/page-break.js +1 -1
  243. package/es2021.en/plugins/page-break/page-break.min.js +1 -1
  244. package/es2021.en/plugins/paste-code/paste-code.css +1 -1
  245. package/es2021.en/plugins/paste-code/paste-code.js +1 -1
  246. package/es2021.en/plugins/paste-code/paste-code.min.js +1 -1
  247. package/es2021.en/plugins/paste-from-word/paste-from-word.js +1 -1
  248. package/es2021.en/plugins/paste-from-word/paste-from-word.min.js +1 -1
  249. package/es2021.en/plugins/show-blocks/show-blocks.js +1 -1
  250. package/es2021.en/plugins/show-blocks/show-blocks.min.js +1 -1
  251. package/es2021.en/plugins/style/style.css +1 -1
  252. package/es2021.en/plugins/style/style.js +1 -1
  253. package/es2021.en/plugins/style/style.min.js +1 -1
  254. package/es2021.en/plugins/templates/templates.css +1 -1
  255. package/es2021.en/plugins/templates/templates.js +1 -1
  256. package/es2021.en/plugins/templates/templates.min.js +1 -1
  257. package/es2021.en/plugins/todo-list/todo-list.css +1 -1
  258. package/es2021.en/plugins/todo-list/todo-list.js +1 -1
  259. package/es2021.en/plugins/todo-list/todo-list.min.js +1 -1
  260. package/es2021.en/plugins/translate/translate.css +1 -1
  261. package/es2021.en/plugins/translate/translate.js +1 -1
  262. package/es2021.en/plugins/translate/translate.min.js +1 -1
  263. package/es2021.en/plugins/tune-block/tune-block.css +1 -1
  264. package/es2021.en/plugins/tune-block/tune-block.js +2 -1
  265. package/es2021.en/plugins/tune-block/tune-block.min.js +2 -2
  266. package/es5/jodit.css +3 -3
  267. package/es5/jodit.fat.min.css +1 -1
  268. package/es5/jodit.fat.min.js +2 -2
  269. package/es5/jodit.js +1521 -153
  270. package/es5/jodit.min.css +3 -3
  271. package/es5/jodit.min.js +2 -2
  272. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  273. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  274. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  275. package/es5/plugins/autocomplete/autocomplete.css +1 -1
  276. package/es5/plugins/autocomplete/autocomplete.js +1 -1
  277. package/es5/plugins/autocomplete/autocomplete.min.js +1 -1
  278. package/es5/plugins/backup/backup.css +1 -1
  279. package/es5/plugins/backup/backup.js +1 -1
  280. package/es5/plugins/backup/backup.min.js +1 -1
  281. package/es5/plugins/button-generator/button-generator.css +1 -1
  282. package/es5/plugins/button-generator/button-generator.js +1 -1
  283. package/es5/plugins/button-generator/button-generator.min.js +1 -1
  284. package/es5/plugins/change-case/change-case.js +1 -1
  285. package/es5/plugins/change-case/change-case.min.js +1 -1
  286. package/es5/plugins/chart/chart.css +173 -0
  287. package/es5/plugins/chart/chart.js +1661 -0
  288. package/es5/plugins/chart/chart.min.css +1 -0
  289. package/es5/plugins/chart/chart.min.js +8 -0
  290. package/es5/plugins/color-picker/color-picker.css +1 -1
  291. package/es5/plugins/color-picker/color-picker.js +1 -1
  292. package/es5/plugins/color-picker/color-picker.min.js +1 -1
  293. package/es5/plugins/emoji/emoji.css +1 -1
  294. package/es5/plugins/emoji/emoji.js +1 -1
  295. package/es5/plugins/emoji/emoji.min.js +1 -1
  296. package/es5/plugins/export-docs/export-docs.js +1 -1
  297. package/es5/plugins/export-docs/export-docs.min.js +1 -1
  298. package/es5/plugins/finder/finder.css +1 -1
  299. package/es5/plugins/finder/finder.js +1 -1
  300. package/es5/plugins/finder/finder.min.js +1 -1
  301. package/es5/plugins/google-maps/google-maps.css +1 -1
  302. package/es5/plugins/google-maps/google-maps.js +1 -1
  303. package/es5/plugins/google-maps/google-maps.min.js +1 -1
  304. package/es5/plugins/google-search/google-search.js +1 -1
  305. package/es5/plugins/google-search/google-search.min.js +1 -1
  306. package/es5/plugins/highlight-signature/highlight-signature.js +1 -1
  307. package/es5/plugins/highlight-signature/highlight-signature.min.js +1 -1
  308. package/es5/plugins/iframe-editor/iframe-editor.css +1 -1
  309. package/es5/plugins/iframe-editor/iframe-editor.js +1 -1
  310. package/es5/plugins/iframe-editor/iframe-editor.min.js +1 -1
  311. package/es5/plugins/image-editor-pro/image-editor-pro.css +1 -1
  312. package/es5/plugins/image-editor-pro/image-editor-pro.js +1 -1
  313. package/es5/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  314. package/es5/plugins/keyboard/keyboard.css +1 -1
  315. package/es5/plugins/keyboard/keyboard.js +1 -1
  316. package/es5/plugins/keyboard/keyboard.min.js +1 -1
  317. package/es5/plugins/mobile-view/mobile-view.js +1 -1
  318. package/es5/plugins/mobile-view/mobile-view.min.js +1 -1
  319. package/es5/plugins/page-break/page-break.js +1 -1
  320. package/es5/plugins/page-break/page-break.min.js +1 -1
  321. package/es5/plugins/paste-code/paste-code.css +1 -1
  322. package/es5/plugins/paste-code/paste-code.js +1 -1
  323. package/es5/plugins/paste-code/paste-code.min.js +1 -1
  324. package/es5/plugins/paste-from-word/paste-from-word.js +1 -1
  325. package/es5/plugins/paste-from-word/paste-from-word.min.js +1 -1
  326. package/es5/plugins/show-blocks/show-blocks.js +1 -1
  327. package/es5/plugins/show-blocks/show-blocks.min.js +1 -1
  328. package/es5/plugins/style/style.css +1 -1
  329. package/es5/plugins/style/style.js +1 -1
  330. package/es5/plugins/style/style.min.js +1 -1
  331. package/es5/plugins/templates/templates.css +1 -1
  332. package/es5/plugins/templates/templates.js +1 -1
  333. package/es5/plugins/templates/templates.min.js +1 -1
  334. package/es5/plugins/todo-list/todo-list.css +1 -1
  335. package/es5/plugins/todo-list/todo-list.js +1 -1
  336. package/es5/plugins/todo-list/todo-list.min.js +1 -1
  337. package/es5/plugins/translate/translate.css +1 -1
  338. package/es5/plugins/translate/translate.js +1 -1
  339. package/es5/plugins/translate/translate.min.js +1 -1
  340. package/es5/plugins/tune-block/tune-block.css +1 -1
  341. package/es5/plugins/tune-block/tune-block.js +2 -1
  342. package/es5/plugins/tune-block/tune-block.min.js +2 -2
  343. package/es5/polyfills.fat.min.js +1 -1
  344. package/es5/polyfills.js +1 -1
  345. package/es5/polyfills.min.js +1 -1
  346. package/esm/config.d.ts +27 -1
  347. package/esm/plugins/all.js +1 -1
  348. package/esm/plugins/chart/assets/chart.svg.js +1 -0
  349. package/esm/plugins/chart/chart.d.ts +56 -0
  350. package/esm/plugins/chart/chart.js +1 -0
  351. package/esm/plugins/chart/config.d.ts +33 -0
  352. package/esm/plugins/chart/config.js +1 -0
  353. package/esm/plugins/chart/helpers.d.ts +22 -0
  354. package/esm/plugins/chart/helpers.js +1 -0
  355. package/esm/plugins/chart/interface.d.ts +34 -0
  356. package/esm/plugins/chart/interface.js +0 -0
  357. package/esm/plugins/chart/render/bar.d.ts +8 -0
  358. package/esm/plugins/chart/render/bar.js +1 -0
  359. package/esm/plugins/chart/render/common.d.ts +40 -0
  360. package/esm/plugins/chart/render/common.js +1 -0
  361. package/esm/plugins/chart/render/index.d.ts +7 -0
  362. package/esm/plugins/chart/render/index.js +1 -0
  363. package/esm/plugins/chart/render/line.d.ts +7 -0
  364. package/esm/plugins/chart/render/line.js +1 -0
  365. package/esm/plugins/chart/render/pie.d.ts +7 -0
  366. package/esm/plugins/chart/render/pie.js +1 -0
  367. package/esm/plugins/chart/render/radar.d.ts +7 -0
  368. package/esm/plugins/chart/render/radar.js +1 -0
  369. package/esm/plugins/chart/ui/editor/editor.d.ts +52 -0
  370. package/esm/plugins/chart/ui/editor/editor.js +13 -0
  371. package/esm/plugins/tune-block/config.js +1 -1
  372. package/package.json +1 -1
  373. package/types/config.d.ts +27 -1
  374. package/types/plugins/chart/chart.d.ts +56 -0
  375. package/types/plugins/chart/config.d.ts +33 -0
  376. package/types/plugins/chart/helpers.d.ts +22 -0
  377. package/types/plugins/chart/interface.d.ts +34 -0
  378. package/types/plugins/chart/render/bar.d.ts +8 -0
  379. package/types/plugins/chart/render/common.d.ts +40 -0
  380. package/types/plugins/chart/render/index.d.ts +7 -0
  381. package/types/plugins/chart/render/line.d.ts +7 -0
  382. package/types/plugins/chart/render/pie.d.ts +7 -0
  383. package/types/plugins/chart/render/radar.d.ts +7 -0
  384. package/types/plugins/chart/ui/editor/editor.d.ts +52 -0
@@ -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.3
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 = {};
@@ -1768,7 +1766,7 @@ __webpack_require__.r(__webpack_exports__);
1768
1766
  * ```
1769
1767
  * @packageDocumentation
1770
1768
  * @module constants
1771
- */ const APP_VERSION = "4.18.3";
1769
+ */ const APP_VERSION = "4.18.7";
1772
1770
  // prettier-ignore
1773
1771
  const ES = "es2021";
1774
1772
  const IS_ES_MODERN = true;
@@ -7472,7 +7470,7 @@ const classSets = (value)=>((0,_checker_is_array_js__WEBPACK_IMPORTED_MODULE_1__
7472
7470
  /**
7473
7471
  * The class names to align `elm` with: `alignClasses` for its tag, or for the
7474
7472
  * media in it when it wraps media (a `mediaWrappers` wrapper, `jodit` or
7475
- * `jodit-media`), falling back to `imageAlignClasses` for an image
7473
+ * `jodit-media`)
7476
7474
  */ function getAlignClasses(jodit, elm) {
7477
7475
  var _a, _b;
7478
7476
  if (!elm) {
@@ -7482,8 +7480,7 @@ const classSets = (value)=>((0,_checker_is_array_js__WEBPACK_IMPORTED_MODULE_1__
7482
7480
  'jodit',
7483
7481
  'jodit-media'
7484
7482
  ])) ? elm.firstElementChild : (0,_media_wrapper_js__WEBPACK_IMPORTED_MODULE_4__.getWrappedMedia)(jodit, elm);
7485
- const tag = (media !== null && media !== void 0 ? media : elm).nodeName.toLowerCase();
7486
- 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;
7483
+ 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;
7487
7484
  }
7488
7485
  /**
7489
7486
  * Align image, with `classes` (see `alignClasses`) instead of inline styles
@@ -17711,6 +17708,19 @@ const __defaultClassesKey = 'data-jodit-default-classes';
17711
17708
  const NOEDIT = {
17712
17709
  contenteditable: false
17713
17710
  };
17711
+ /**
17712
+ * The editor's options, with the deprecated `imageAlignClasses` copied into
17713
+ * `alignClasses.img` when that isn't set
17714
+ */ function makeOptions(options) {
17715
+ var _a;
17716
+ const opt = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.ConfigProto)(options || {}, _config_js__WEBPACK_IMPORTED_MODULE_7__.Config.defaultOptions);
17717
+ if (opt.imageAlignClasses && !((_a = opt.alignClasses) === null || _a === void 0 ? void 0 : _a.img)) {
17718
+ opt.alignClasses = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.ConfigProto)({
17719
+ img: opt.imageAlignClasses
17720
+ }, opt.alignClasses);
17721
+ }
17722
+ return opt;
17723
+ }
17714
17724
  let Jodit = Jodit_1 = class Jodit extends _modules_index_js__WEBPACK_IMPORTED_MODULE_8__.ViewWithToolbar {
17715
17725
  /** @override */ className() {
17716
17726
  return 'Jodit';
@@ -18479,7 +18489,7 @@ let Jodit = Jodit_1 = class Jodit extends _modules_index_js__WEBPACK_IMPORTED_MO
18479
18489
  // do nothing
18480
18490
  }
18481
18491
  /** @override **/ initOptions(options) {
18482
- this.options = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.ConfigProto)(options || {}, _config_js__WEBPACK_IMPORTED_MODULE_7__.Config.defaultOptions);
18492
+ this.options = makeOptions(options);
18483
18493
  }
18484
18494
  /** @override **/ initOwners() {
18485
18495
  // in iframe, it can be changed
@@ -18593,7 +18603,7 @@ let Jodit = Jodit_1 = class Jodit extends _modules_index_js__WEBPACK_IMPORTED_MO
18593
18603
  right: rightSlot
18594
18604
  },
18595
18605
  statusbar: new _modules_index_js__WEBPACK_IMPORTED_MODULE_8__.StatusBar(this, container),
18596
- options: this.isReady ? (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.ConfigProto)(options || {}, _config_js__WEBPACK_IMPORTED_MODULE_7__.Config.defaultOptions) : this.options,
18606
+ options: this.isReady ? makeOptions(options) : this.options,
18597
18607
  history: new _modules_index_js__WEBPACK_IMPORTED_MODULE_8__.History(this),
18598
18608
  editorWindow: this.ow
18599
18609
  };
@@ -19195,7 +19205,14 @@ function addClassNames(className, elm) {
19195
19205
  'Line height': 'ارتفاع الخط',
19196
19206
  spellcheck: 'التدقيق الإملائي',
19197
19207
  'Speech Recognize': 'التعرف على الكلام',
19198
- All: 'تحديد الكل'
19208
+ All: 'تحديد الكل',
19209
+ 'Video properties': 'خصائص الفيديو',
19210
+ 'Audio properties': 'خصائص الصوت',
19211
+ Poster: 'صورة الغلاف',
19212
+ Autoplay: 'تشغيل تلقائي',
19213
+ Loop: 'تكرار',
19214
+ Muted: 'مكتوم الصوت',
19215
+ Controls: 'عناصر التحكم'
19199
19216
  });
19200
19217
 
19201
19218
 
@@ -19429,7 +19446,14 @@ function addClassNames(className, elm) {
19429
19446
  'Find Next': 'Növbətini tap',
19430
19447
  'Insert className': 'className (CSS) əlavə et',
19431
19448
  'Press Alt for custom resizing': 'Fərdi ölçüləndirmə üçün Alt düyməsini basın',
19432
- 'License: %s': 'Lisenziya: %s'
19449
+ 'License: %s': 'Lisenziya: %s',
19450
+ 'Video properties': 'Video xassələri',
19451
+ 'Audio properties': 'Audio xassələri',
19452
+ Poster: 'Örtük şəkli',
19453
+ Autoplay: 'Avtomatik oynatma',
19454
+ Loop: 'Təkrarla',
19455
+ Muted: 'Səssiz',
19456
+ Controls: 'İdarəetmə elementləri'
19433
19457
  });
19434
19458
 
19435
19459
 
@@ -19655,7 +19679,14 @@ function addClassNames(className, elm) {
19655
19679
  'Find Previous': 'Najít Předchozí',
19656
19680
  'Find Next': 'Najít Další',
19657
19681
  'Insert className': 'Vložte název třídy',
19658
- 'Press Alt for custom resizing': 'Stiskněte Alt pro vlastní změnu velikosti'
19682
+ 'Press Alt for custom resizing': 'Stiskněte Alt pro vlastní změnu velikosti',
19683
+ 'Video properties': 'Vlastnosti videa',
19684
+ 'Audio properties': 'Vlastnosti zvuku',
19685
+ Poster: 'Náhledový obrázek',
19686
+ Autoplay: 'Automatické přehrávání',
19687
+ Loop: 'Opakovat',
19688
+ Muted: 'Ztlumeno',
19689
+ Controls: 'Ovládací prvky'
19659
19690
  });
19660
19691
 
19661
19692
 
@@ -19885,7 +19916,14 @@ function addClassNames(className, elm) {
19885
19916
  'Find Next': 'Weitersuchen',
19886
19917
  'Insert className': 'className (CSS) einfügen',
19887
19918
  'Press Alt for custom resizing': 'Drücken Sie Alt für benutzerdefinierte Größenanpassung',
19888
- 'License: %s': 'Lizenz: %s'
19919
+ 'License: %s': 'Lizenz: %s',
19920
+ 'Video properties': 'Videoeigenschaften',
19921
+ 'Audio properties': 'Audioeigenschaften',
19922
+ Poster: 'Vorschaubild',
19923
+ Autoplay: 'Automatische Wiedergabe',
19924
+ Loop: 'Wiederholen',
19925
+ Muted: 'Stumm',
19926
+ Controls: 'Steuerelemente'
19889
19927
  });
19890
19928
 
19891
19929
 
@@ -20132,7 +20170,14 @@ function addClassNames(className, elm) {
20132
20170
  'Find Next': 'Buscar Siguiente',
20133
20171
  'Insert className': 'Insertar nombre de clase',
20134
20172
  'Press Alt for custom resizing': 'Presione Alt para cambiar el tamaño personalizado',
20135
- 'License: %s': 'Licencia: %s'
20173
+ 'License: %s': 'Licencia: %s',
20174
+ 'Video properties': 'Propiedades del video',
20175
+ 'Audio properties': 'Propiedades del audio',
20176
+ Poster: 'Imagen de portada',
20177
+ Autoplay: 'Reproducción automática',
20178
+ Loop: 'Repetir',
20179
+ Muted: 'Silenciado',
20180
+ Controls: 'Controles'
20136
20181
  });
20137
20182
 
20138
20183
 
@@ -20357,7 +20402,14 @@ function addClassNames(className, elm) {
20357
20402
  'Find Next': 'پیدا کردن بعدی',
20358
20403
  'Insert className': 'Insertar nombre de clase',
20359
20404
  'Press Alt for custom resizing': 'برای تغییر اندازه سفارشی فشار دهید',
20360
- 'License: %s': 'مجوز: %s'
20405
+ 'License: %s': 'مجوز: %s',
20406
+ 'Video properties': 'ویژگی‌های ویدیو',
20407
+ 'Audio properties': 'ویژگی‌های صدا',
20408
+ Poster: 'تصویر پیش‌نمایش',
20409
+ Autoplay: 'پخش خودکار',
20410
+ Loop: 'تکرار',
20411
+ Muted: 'بی‌صدا',
20412
+ Controls: 'کنترل‌ها'
20361
20413
  });
20362
20414
 
20363
20415
 
@@ -20588,7 +20640,14 @@ function addClassNames(className, elm) {
20588
20640
  'Insert className': 'Lisää luokkanimi',
20589
20641
  'Press Alt for custom resizing': 'Paina Alt muokattuun koon muuttamiseen',
20590
20642
  'Class name': 'Luokan nimi',
20591
- 'License: %s': 'Lisenssi: %s'
20643
+ 'License: %s': 'Lisenssi: %s',
20644
+ 'Video properties': 'Videon ominaisuudet',
20645
+ 'Audio properties': 'Äänen ominaisuudet',
20646
+ Poster: 'Kansikuva',
20647
+ Autoplay: 'Automaattinen toisto',
20648
+ Loop: 'Toista uudelleen',
20649
+ Muted: 'Mykistetty',
20650
+ Controls: 'Säätimet'
20592
20651
  });
20593
20652
 
20594
20653
 
@@ -20813,7 +20872,14 @@ function addClassNames(className, elm) {
20813
20872
  'Embed code': "Code d'intégration",
20814
20873
  Edit: 'Modifier',
20815
20874
  All: 'Tout sélectionner',
20816
- 'License: %s': 'Licence: %s'
20875
+ 'License: %s': 'Licence: %s',
20876
+ 'Video properties': 'Propriétés de la vidéo',
20877
+ 'Audio properties': "Propriétés de l'audio",
20878
+ Poster: "Image d'aperçu",
20879
+ Autoplay: 'Lecture automatique',
20880
+ Loop: 'Lecture en boucle',
20881
+ Muted: 'Muet',
20882
+ Controls: 'Commandes'
20817
20883
  });
20818
20884
 
20819
20885
 
@@ -21038,7 +21104,14 @@ function addClassNames(className, elm) {
21038
21104
  'Find Next': 'חפש את הבא',
21039
21105
  'Insert className': 'הכנס את שם הכיתה',
21040
21106
  'Press Alt for custom resizing': 'לחץ על אלט לשינוי גודל מותאם אישית',
21041
- 'License: %s': 'רישיון: %s'
21107
+ 'License: %s': 'רישיון: %s',
21108
+ 'Video properties': 'מאפייני וידאו',
21109
+ 'Audio properties': 'מאפייני שמע',
21110
+ Poster: 'תמונת תצוגה מקדימה',
21111
+ Autoplay: 'ניגון אוטומטי',
21112
+ Loop: 'הפעלה חוזרת',
21113
+ Muted: 'מושתק',
21114
+ Controls: 'פקדים'
21042
21115
  });
21043
21116
 
21044
21117
 
@@ -21265,7 +21338,14 @@ function addClassNames(className, elm) {
21265
21338
  'Find Next': 'Következő Keresése',
21266
21339
  'Insert className': 'Helyezze be az osztály nevét',
21267
21340
  'Press Alt for custom resizing': 'Nyomja meg az Alt egyéni átméretezés',
21268
- 'License: %s': 'Licenc: %s'
21341
+ 'License: %s': 'Licenc: %s',
21342
+ 'Video properties': 'Videó tulajdonságai',
21343
+ 'Audio properties': 'Hang tulajdonságai',
21344
+ Poster: 'Előnézeti kép',
21345
+ Autoplay: 'Automatikus lejátszás',
21346
+ Loop: 'Ismétlés',
21347
+ Muted: 'Némítva',
21348
+ Controls: 'Vezérlők'
21269
21349
  });
21270
21350
 
21271
21351
 
@@ -21491,7 +21571,14 @@ function addClassNames(className, elm) {
21491
21571
  'Find Previous': 'Menemukan Sebelumnya',
21492
21572
  'Find Next': 'Menemukan Berikutnya',
21493
21573
  'Insert className': 'Masukkan nama kelas',
21494
- 'Press Alt for custom resizing': 'Tekan Alt untuk mengubah ukuran kustom'
21574
+ 'Press Alt for custom resizing': 'Tekan Alt untuk mengubah ukuran kustom',
21575
+ 'Video properties': 'Properti video',
21576
+ 'Audio properties': 'Properti audio',
21577
+ Poster: 'Gambar sampul',
21578
+ Autoplay: 'Putar otomatis',
21579
+ Loop: 'Ulangi',
21580
+ Muted: 'Dibisukan',
21581
+ Controls: 'Kontrol'
21495
21582
  });
21496
21583
 
21497
21584
 
@@ -21721,7 +21808,14 @@ function addClassNames(className, elm) {
21721
21808
  'Find Next': 'Trova Successivo',
21722
21809
  'Insert className': 'Inserisci il nome della classe',
21723
21810
  'Press Alt for custom resizing': 'Premere Alt per il ridimensionamento personalizzato',
21724
- 'License: %s': 'Licenza: %s'
21811
+ 'License: %s': 'Licenza: %s',
21812
+ 'Video properties': 'Proprietà del video',
21813
+ 'Audio properties': "Proprietà dell'audio",
21814
+ Poster: 'Immagine di anteprima',
21815
+ Autoplay: 'Riproduzione automatica',
21816
+ Loop: 'Ripeti',
21817
+ Muted: 'Muto',
21818
+ Controls: 'Controlli'
21725
21819
  });
21726
21820
 
21727
21821
 
@@ -21951,7 +22045,14 @@ function addClassNames(className, elm) {
21951
22045
  'Upper Roman': 'ローマ数字大文字',
21952
22046
  'Insert className': 'クラス名を挿入',
21953
22047
  'Press Alt for custom resizing': 'カスタムサイズ変更のためのAltキーを押します',
21954
- 'License: %s': 'ライセンス: %s'
22048
+ 'License: %s': 'ライセンス: %s',
22049
+ 'Video properties': '動画のプロパティー',
22050
+ 'Audio properties': '音声のプロパティー',
22051
+ Poster: 'ポスター画像',
22052
+ Autoplay: '自動再生',
22053
+ Loop: 'ループ再生',
22054
+ Muted: 'ミュート',
22055
+ Controls: 'コントロール'
21955
22056
  });
21956
22057
 
21957
22058
 
@@ -22187,7 +22288,14 @@ function addClassNames(className, elm) {
22187
22288
  'Find Previous': '이전 찾기',
22188
22289
  'Find Next': '다음 찾기',
22189
22290
  'Insert className': 'className 입력',
22190
- 'Press Alt for custom resizing': '사용자 지정 크기 조정에 대 한 고도 누르십시오'
22291
+ 'Press Alt for custom resizing': '사용자 지정 크기 조정에 대 한 고도 누르십시오',
22292
+ 'Video properties': '동영상 속성',
22293
+ 'Audio properties': '오디오 속성',
22294
+ Poster: '포스터 이미지',
22295
+ Autoplay: '자동 재생',
22296
+ Loop: '반복 재생',
22297
+ Muted: '음소거',
22298
+ Controls: '컨트롤'
22191
22299
  });
22192
22300
 
22193
22301
 
@@ -22412,7 +22520,14 @@ function addClassNames(className, elm) {
22412
22520
  'Find Next': 'Дараагийнхийг ол',
22413
22521
  'Insert className': 'Бүлгийн нэрээ оруулна уу',
22414
22522
  'Press Alt for custom resizing': 'Хэмжээсийг шинээр өөчрлөхийн тулд Alt товчин дээр дарна уу',
22415
- 'License: %s': 'Лиценз: %s'
22523
+ 'License: %s': 'Лиценз: %s',
22524
+ 'Video properties': 'Видеоны үзүүлэлт',
22525
+ 'Audio properties': 'Аудионы үзүүлэлт',
22526
+ Poster: 'Нүүр зураг',
22527
+ Autoplay: 'Автоматаар тоглуулах',
22528
+ Loop: 'Давтах',
22529
+ Muted: 'Дуугүй',
22530
+ Controls: 'Удирдлага'
22416
22531
  });
22417
22532
 
22418
22533
 
@@ -22638,7 +22753,14 @@ function addClassNames(className, elm) {
22638
22753
  'Find Next': 'Volgende Zoeken',
22639
22754
  'Insert className': 'Voeg de klassenaam in',
22640
22755
  'Press Alt for custom resizing': 'Druk op Alt voor aangepaste grootte',
22641
- 'License: %s': 'Licentie: %s'
22756
+ 'License: %s': 'Licentie: %s',
22757
+ 'Video properties': 'Video-eigenschappen',
22758
+ 'Audio properties': 'Audio-eigenschappen',
22759
+ Poster: 'Voorbeeldafbeelding',
22760
+ Autoplay: 'Automatisch afspelen',
22761
+ Loop: 'Herhalen',
22762
+ Muted: 'Gedempt',
22763
+ Controls: 'Bedieningselementen'
22642
22764
  });
22643
22765
 
22644
22766
 
@@ -22872,7 +22994,14 @@ function addClassNames(className, elm) {
22872
22994
  Dot: 'Prikk',
22873
22995
  Quadrate: 'Firkant',
22874
22996
  'Find Previous': 'Finn forrige',
22875
- 'Find Next': 'Finn neste'
22997
+ 'Find Next': 'Finn neste',
22998
+ 'Video properties': 'Videoegenskaper',
22999
+ 'Audio properties': 'Lydegenskaper',
23000
+ Poster: 'Forsidebilde',
23001
+ Autoplay: 'Automatisk avspilling',
23002
+ Loop: 'Gjenta',
23003
+ Muted: 'Dempet',
23004
+ Controls: 'Kontroller'
22876
23005
  });
22877
23006
 
22878
23007
 
@@ -23097,7 +23226,14 @@ function addClassNames(className, elm) {
23097
23226
  'Find Next': 'Znajdź Dalej',
23098
23227
  'Insert className': 'Wstaw nazwę zajęć',
23099
23228
  'Press Alt for custom resizing': 'Naciśnij Alt, aby zmienić rozmiar',
23100
- 'License: %s': 'Licencja: %s'
23229
+ 'License: %s': 'Licencja: %s',
23230
+ 'Video properties': 'Właściwości filmu',
23231
+ 'Audio properties': 'Właściwości dźwięku',
23232
+ Poster: 'Obraz podglądu',
23233
+ Autoplay: 'Autoodtwarzanie',
23234
+ Loop: 'Zapętlenie',
23235
+ Muted: 'Wyciszony',
23236
+ Controls: 'Elementy sterujące'
23101
23237
  });
23102
23238
 
23103
23239
 
@@ -23327,7 +23463,14 @@ function addClassNames(className, elm) {
23327
23463
  'Find Next': 'Localizar Próxima',
23328
23464
  'Insert className': 'Insira o nome da classe',
23329
23465
  'Press Alt for custom resizing': 'Pressione Alt para redimensionamento personalizado',
23330
- 'License: %s': 'Licença: %s'
23466
+ 'License: %s': 'Licença: %s',
23467
+ 'Video properties': 'Propriedades do vídeo',
23468
+ 'Audio properties': 'Propriedades do áudio',
23469
+ Poster: 'Imagem de capa',
23470
+ Autoplay: 'Reprodução automática',
23471
+ Loop: 'Repetir',
23472
+ Muted: 'Sem som',
23473
+ Controls: 'Controles'
23331
23474
  });
23332
23475
 
23333
23476
 
@@ -23551,7 +23694,14 @@ function addClassNames(className, elm) {
23551
23694
  'Find Previous': 'Найти Предыдущие',
23552
23695
  'Find Next': 'Найти Далее',
23553
23696
  'Insert className': 'Вставить название класса',
23554
- 'Press Alt for custom resizing': 'Нажмите Alt для изменения пользовательского размера'
23697
+ 'Press Alt for custom resizing': 'Нажмите Alt для изменения пользовательского размера',
23698
+ 'Video properties': 'Свойства видео',
23699
+ 'Audio properties': 'Свойства аудио',
23700
+ Poster: 'Обложка',
23701
+ Autoplay: 'Автовоспроизведение',
23702
+ Loop: 'Повтор',
23703
+ Muted: 'Без звука',
23704
+ Controls: 'Элементы управления'
23555
23705
  });
23556
23706
 
23557
23707
 
@@ -23783,7 +23933,14 @@ function addClassNames(className, elm) {
23783
23933
  'Select file': 'Vybrať súbor',
23784
23934
  'Edit image': 'Upraviť obrázok',
23785
23935
  'Tiles view': 'Zobrazenie dlaždíc',
23786
- 'List view': 'Zobrazenie zoznamu'
23936
+ 'List view': 'Zobrazenie zoznamu',
23937
+ 'Video properties': 'Vlastnosti videa',
23938
+ 'Audio properties': 'Vlastnosti zvuku',
23939
+ Poster: 'Náhľadový obrázok',
23940
+ Autoplay: 'Automatické prehrávanie',
23941
+ Loop: 'Opakovať',
23942
+ Muted: 'Stlmené',
23943
+ Controls: 'Ovládacie prvky'
23787
23944
  });
23788
23945
 
23789
23946
 
@@ -24016,7 +24173,14 @@ function addClassNames(className, elm) {
24016
24173
  space: 'mellanslag',
24017
24174
  'Embed code': 'Bädda in kod',
24018
24175
  All: 'Välj alla',
24019
- 'License: %s': 'Licens: %s'
24176
+ 'License: %s': 'Licens: %s',
24177
+ 'Video properties': 'Videoegenskaper',
24178
+ 'Audio properties': 'Ljudegenskaper',
24179
+ Poster: 'Affischbild',
24180
+ Autoplay: 'Automatisk uppspelning',
24181
+ Loop: 'Upprepa',
24182
+ Muted: 'Ljudlös',
24183
+ Controls: 'Kontroller'
24020
24184
  });
24021
24185
 
24022
24186
 
@@ -24241,7 +24405,14 @@ function addClassNames(className, elm) {
24241
24405
  'Find Next': 'Sonrakini Bul',
24242
24406
  'Insert className': 'Sınıf adı girin',
24243
24407
  'Press Alt for custom resizing': 'Özel yeniden boyutlandırma için Alt tuşuna basın',
24244
- 'License: %s': 'Lisans: %s'
24408
+ 'License: %s': 'Lisans: %s',
24409
+ 'Video properties': 'Video özellikleri',
24410
+ 'Audio properties': 'Ses özellikleri',
24411
+ Poster: 'Kapak resmi',
24412
+ Autoplay: 'Otomatik oynat',
24413
+ Loop: 'Döngü',
24414
+ Muted: 'Sessiz',
24415
+ Controls: 'Kontroller'
24245
24416
  });
24246
24417
 
24247
24418
 
@@ -24465,7 +24636,14 @@ function addClassNames(className, elm) {
24465
24636
  'Find Previous': 'Знайти попередні',
24466
24637
  'Find Next': 'Знайти наступні',
24467
24638
  'Insert className': 'Вставити клас',
24468
- 'Press Alt for custom resizing': 'Натисніть Alt для зміни розміру'
24639
+ 'Press Alt for custom resizing': 'Натисніть Alt для зміни розміру',
24640
+ 'Video properties': 'Властивості відео',
24641
+ 'Audio properties': 'Властивості аудіо',
24642
+ Poster: 'Обкладинка',
24643
+ Autoplay: 'Автовідтворення',
24644
+ Loop: 'Повтор',
24645
+ Muted: 'Без звуку',
24646
+ Controls: 'Елементи керування'
24469
24647
  });
24470
24648
 
24471
24649
 
@@ -24691,7 +24869,14 @@ function addClassNames(className, elm) {
24691
24869
  'Find Next': '查找下一个',
24692
24870
  'Insert className': '插入班级名称',
24693
24871
  'Press Alt for custom resizing': '按Alt自定义调整大小',
24694
- 'License: %s': '许可证: %s'
24872
+ 'License: %s': '许可证: %s',
24873
+ 'Video properties': '视频属性',
24874
+ 'Audio properties': '音频属性',
24875
+ Poster: '封面图',
24876
+ Autoplay: '自动播放',
24877
+ Loop: '循环播放',
24878
+ Muted: '静音',
24879
+ Controls: '播放控件'
24695
24880
  });
24696
24881
 
24697
24882
 
@@ -24916,7 +25101,14 @@ function addClassNames(className, elm) {
24916
25101
  'Insert className': '插入 class 名稱',
24917
25102
  'Press Alt for custom resizing': '按住 Alt 以調整自訂大小',
24918
25103
  Edit: '編輯',
24919
- 'License: %s': '許可證: %s'
25104
+ 'License: %s': '許可證: %s',
25105
+ 'Video properties': '影片屬性',
25106
+ 'Audio properties': '音訊屬性',
25107
+ Poster: '封面圖片',
25108
+ Autoplay: '自動播放',
25109
+ Loop: '循環播放',
25110
+ Muted: '靜音',
25111
+ Controls: '播放控制項'
24920
25112
  });
24921
25113
 
24922
25114
 
@@ -33518,10 +33710,11 @@ UiAiAssistant = __decorate([
33518
33710
  /* harmony import */ var _table_keyboard_navigation_table_keyboard_navigation_js__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(72439);
33519
33711
  /* harmony import */ var _toolbar_navigation_toolbar_navigation_js__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(94529);
33520
33712
  /* harmony import */ var _video_video_js__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(26551);
33521
- /* harmony import */ var _wrap_nodes_wrap_nodes_js__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(72253);
33522
- /* harmony import */ var _dtd_dtd_js__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(65735);
33523
- /* harmony import */ var _xpath_xpath_js__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(83671);
33524
- /* harmony import */ var _speech_recognize_speech_recognize_js__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(3115);
33713
+ /* harmony import */ var _video_properties_video_properties_js__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(96139);
33714
+ /* harmony import */ var _wrap_nodes_wrap_nodes_js__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(72253);
33715
+ /* harmony import */ var _dtd_dtd_js__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(65735);
33716
+ /* harmony import */ var _xpath_xpath_js__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(83671);
33717
+ /* harmony import */ var _speech_recognize_speech_recognize_js__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(3115);
33525
33718
  /*!
33526
33719
  * Jodit Editor (https://xdsoft.net/jodit/)
33527
33720
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -33592,6 +33785,7 @@ UiAiAssistant = __decorate([
33592
33785
 
33593
33786
 
33594
33787
 
33788
+
33595
33789
 
33596
33790
 
33597
33791
  // JODIT-START:FAT
@@ -39674,6 +39868,11 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.imageProcessor = {
39674
39868
  const JODIT_IMAGE_PROCESSOR_BINDED = '__jodit_imageprocessor_binded';
39675
39869
  const JODIT_IMAGE_BLOB_ID = JODIT_IMAGE_PROCESSOR_BINDED + 'blob-id';
39676
39870
  const IMAGE_SELECTED = 'jodit-wysiwyg_image-selected';
39871
+ const SELECTED_TAGS = new Set([
39872
+ 'img',
39873
+ 'jodit',
39874
+ 'jodit-media'
39875
+ ]);
39677
39876
  /**
39678
39877
  * Change editor's size after load all images
39679
39878
  */ class imageProcessor extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_5__.Plugin {
@@ -39715,7 +39914,10 @@ const IMAGE_SELECTED = 'jodit-wysiwyg_image-selected';
39715
39914
  }
39716
39915
  /**
39717
39916
  * While the selection is an image, only the image is highlighted: Safari
39718
- * paints the rest of a block image's line with its parent's highlight. See #1528
39917
+ * paints the rest of a block image's line with its parent's highlight. See #1528.
39918
+ * Media in a wrapper (`jodit-media`, the resizer's `jodit` for an embed, or
39919
+ * one from `mediaWrappers`) isn't highlighted either, as Safari paints its
39920
+ * wrapper's whole line, and its resize frame shows it's selected
39719
39921
  */ onSelectionChange() {
39720
39922
  const { jodit } = this;
39721
39923
  jodit.editor.classList.toggle(IMAGE_SELECTED, isImageSelected(jodit));
@@ -39769,7 +39971,8 @@ function isImageSelected(jodit) {
39769
39971
  return false;
39770
39972
  }
39771
39973
  const { startContainer, startOffset, endContainer, endOffset } = sel.getRangeAt(0);
39772
- 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);
39974
+ const node = startContainer.childNodes[startOffset];
39975
+ 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);
39773
39976
  }
39774
39977
  /**
39775
39978
  * Remove the invisible-space text beside an image, which only held a caret.
@@ -41899,6 +42102,12 @@ const cmd = (control)=>control.args && (0,_core_helpers_checker_index_js__WEBPAC
41899
42102
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
41900
42103
  */
41901
42104
  /* harmony default export */ __webpack_exports__["default"] = ([
42105
+ {
42106
+ name: 'replace',
42107
+ icon: 'video',
42108
+ tooltip: 'Replace',
42109
+ popup: (editor, target, close)=>target ? editor.e.fire('generateReplaceVideoTabs', target, close) : undefined
42110
+ },
41902
42111
  {
41903
42112
  name: 'bin',
41904
42113
  tooltip: 'Delete',
@@ -41906,6 +42115,13 @@ const cmd = (control)=>control.args && (0,_core_helpers_checker_index_js__WEBPAC
41906
42115
  image && editor.s.removeNode(image);
41907
42116
  }
41908
42117
  },
42118
+ {
42119
+ name: 'pencil',
42120
+ tooltip: 'Edit',
42121
+ exec: (editor, target)=>{
42122
+ target && editor.e.fire('openVideoProperties', target);
42123
+ }
42124
+ },
41909
42125
  _img_js__WEBPACK_IMPORTED_MODULE_0__.align
41910
42126
  ]);
41911
42127
 
@@ -43623,6 +43839,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.mediaWrappers = {};
43623
43839
  } else if (mediaWrappers[element.nodeName.toLowerCase()]) {
43624
43840
  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);
43625
43841
  } else if (mediaInFakeBlock) {
43842
+ const media = element;
43626
43843
  const wrapper = editor.createInside.element(mediaFakeTag, {
43627
43844
  'data-jodit-temp': 1,
43628
43845
  contenteditable: false,
@@ -43630,11 +43847,17 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.mediaWrappers = {};
43630
43847
  [`data-${keyFake}`]: 1
43631
43848
  });
43632
43849
  (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'));
43633
- (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_4__.css)(wrapper, {
43634
- display: (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_4__.cssInline)(element, 'display') === 'inline-block' ? 'inline-block' : 'block',
43635
- width: element.offsetWidth,
43636
- height: element.offsetHeight
43637
- });
43850
+ // The wrapper fits the media, whose size changes as its metadata loads
43851
+ // and as it's resized. A percentage width is of the line, so it takes that
43852
+ const fit = ()=>{
43853
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_4__.css)(wrapper, {
43854
+ display: (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_4__.cssInline)(media, 'display') === 'inline-block' ? 'inline-block' : 'block',
43855
+ width: (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_4__.cssInline)(media, 'width').endsWith('%') ? '' : 'fit-content',
43856
+ height: ''
43857
+ });
43858
+ };
43859
+ fit();
43860
+ editor.e.on(media, 'changesize', fit);
43638
43861
  if (element.parentNode) {
43639
43862
  _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.before(element, wrapper);
43640
43863
  }
@@ -45857,7 +46080,8 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.allowResizeTags = new S
45857
46080
  'img',
45858
46081
  'iframe',
45859
46082
  'table',
45860
- 'jodit'
46083
+ 'jodit',
46084
+ 'video'
45861
46085
  ]);
45862
46086
  _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.resizer = {
45863
46087
  showSize: true,
@@ -45866,7 +46090,8 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.resizer = {
45866
46090
  min_width: 10,
45867
46091
  min_height: 10,
45868
46092
  useAspectRatio: new Set([
45869
- 'img'
46093
+ 'img',
46094
+ 'video'
45870
46095
  ])
45871
46096
  };
45872
46097
 
@@ -45917,6 +46142,12 @@ const keyBInd = '__jodit-resizer_binded';
45917
46142
  }
45918
46143
  return parseFloat(value);
45919
46144
  }
46145
+ /**
46146
+ * A video with no height of its own takes it from its width and its ratio,
46147
+ * so resizing it keeps the ratio without setting a height.
46148
+ */ function heightFollowsWidth(element) {
46149
+ 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');
46150
+ }
45920
46151
  /**
45921
46152
  * The module creates a supporting frame for resizing of the elements img and table
45922
46153
  */ class resizer extends _core_plugin_plugin_js__WEBPACK_IMPORTED_MODULE_6__.Plugin {
@@ -45944,14 +46175,27 @@ const keyBInd = '__jodit-resizer_binded';
45944
46175
  let node = e.target;
45945
46176
  const { editor, options: { allowResizeTags } } = this.j;
45946
46177
  while(node && node !== editor){
45947
- if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(node, allowResizeTags)) {
45948
- this.__bind(node);
45949
- this.onClickElement(node);
46178
+ const element = this.__resizable(node);
46179
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(element, allowResizeTags)) {
46180
+ this.__bind(element);
46181
+ this.onClickElement(element);
45950
46182
  return;
45951
46183
  }
45952
46184
  node = node.parentNode;
45953
46185
  }
45954
46186
  }
46187
+ /**
46188
+ * What a click on `node` resizes: the media in it when it's a media
46189
+ * wrapper (`jodit-media`, or one from `mediaWrappers`), or `node` itself
46190
+ */ __resizable(node) {
46191
+ var _a;
46192
+ 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;
46193
+ if (!media) {
46194
+ return node;
46195
+ }
46196
+ // An embed is resized through its own wrapper
46197
+ 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;
46198
+ }
45955
46199
  __afterInsertImage(image) {
45956
46200
  if (this.j.o.resizer.forImageChangeAttributes) {
45957
46201
  return;
@@ -45968,17 +46212,15 @@ const keyBInd = '__jodit-resizer_binded';
45968
46212
  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')) {
45969
46213
  this.onDelete(e);
45970
46214
  }
45971
- }).on(editor.ow, 'resize.resizer', this.updateSize).on('resize.resizer', this.updateSize).on([
46215
+ }).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
46216
+ // element as the content scrolls
46217
+ .on([
45972
46218
  editor.ow,
45973
46219
  editor.editor
45974
- ], 'scroll.resizer', ()=>{
45975
- if (this.isShown && !this.isResizeMode) {
45976
- this.hide();
45977
- }
45978
- }).on(editor.ow, 'keydown.resizer', this.onKeyDown).on(editor.ow, 'keyup.resizer', this.onKeyUp).on(editor.ow, 'mouseup.resizer touchend.resizer', this.onClickOutside);
46220
+ ], '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);
45979
46221
  }
45980
46222
  onStartResizing(resizeHandle, e) {
45981
- if (!this.element || !this.element.parentNode) {
46223
+ if (!this.element || !this.isElementInEditor) {
45982
46224
  this.hide();
45983
46225
  return false;
45984
46226
  }
@@ -46031,7 +46273,8 @@ const keyBInd = '__jodit-resizer_binded';
46031
46273
  const className = this.handle.className;
46032
46274
  let new_w, new_h;
46033
46275
  const uar = this.j.o.resizer.useAspectRatio;
46034
- if (!this.isAltMode && (uar === true || uar && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(this.element, uar))) {
46276
+ const keepRatio = !this.isAltMode && (uar === true || Boolean(uar && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(this.element, uar)));
46277
+ if (keepRatio) {
46035
46278
  if (diff_x) {
46036
46279
  new_w = this.width + (className.match(/left/) ? -1 : 1) * diff_x;
46037
46280
  new_h = Math.round(new_w / this.ratio);
@@ -46054,7 +46297,7 @@ const keyBInd = '__jodit-resizer_binded';
46054
46297
  this.applySize(this.element, 'width', '100%');
46055
46298
  }
46056
46299
  }
46057
- if (new_h > this.j.o.resizer.min_height) {
46300
+ if (new_h > this.j.o.resizer.min_height && !(keepRatio && heightFollowsWidth(this.element))) {
46058
46301
  this.applySize(this.element, 'height', new_h);
46059
46302
  }
46060
46303
  this.updateSize();
@@ -46100,10 +46343,19 @@ const keyBInd = '__jodit-resizer_binded';
46100
46343
  (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.css)(element, key, value);
46101
46344
  }
46102
46345
  }
46346
+ /**
46347
+ * The framed element can go with a wrapper round it, keeping its parent
46348
+ */ get isElementInEditor() {
46349
+ return Boolean(this.element && this.j.editor.contains(this.element));
46350
+ }
46103
46351
  onDelete(e) {
46104
46352
  if (!this.element) {
46105
46353
  return;
46106
46354
  }
46355
+ if (!this.isElementInEditor) {
46356
+ this.hide();
46357
+ return;
46358
+ }
46107
46359
  if (this.element.tagName !== 'JODIT') {
46108
46360
  this.j.s.select(this.element);
46109
46361
  } else {
@@ -46114,7 +46366,7 @@ const keyBInd = '__jodit-resizer_binded';
46114
46366
  }
46115
46367
  __onChangeEditor() {
46116
46368
  if (this.isShown) {
46117
- if (!this.element || !this.element.parentNode) {
46369
+ if (!this.isElementInEditor) {
46118
46370
  this.hide();
46119
46371
  } else {
46120
46372
  this.updateSize();
@@ -46212,9 +46464,13 @@ const keyBInd = '__jodit-resizer_binded';
46212
46464
  return;
46213
46465
  }
46214
46466
  this.isShown = true;
46467
+ if (this.layer.parentNode !== this.j.workplace) {
46468
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.markOwner)(this.j, this.layer);
46469
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(this.j.workplace, this.layer);
46470
+ }
46215
46471
  if (!this.rect.parentNode) {
46216
46472
  (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.markOwner)(this.j, this.rect);
46217
- _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(this.j.workplace, this.rect);
46473
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(this.layer, this.rect);
46218
46474
  }
46219
46475
  if (this.j.isFullSize) {
46220
46476
  (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());
@@ -46234,6 +46490,7 @@ const keyBInd = '__jodit-resizer_binded';
46234
46490
  }
46235
46491
  beforeDestruct(jodit) {
46236
46492
  this.hide();
46493
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove(this.layer);
46237
46494
  _core_global_js__WEBPACK_IMPORTED_MODULE_3__.eventEmitter.off('hideHelpers', this.hide);
46238
46495
  jodit.e.off(this.j.ow, '.resizer').off('.resizer');
46239
46496
  }
@@ -46255,6 +46512,8 @@ const keyBInd = '__jodit-resizer_binded';
46255
46512
  <div class="jodit-resizer__bottom-left"></div>
46256
46513
  <span>100x100</span>
46257
46514
  </div>`);
46515
+ // Clips the frame to the workplace, without the frame making it scroll
46516
+ this.layer = this.j.c.div('jodit-resizer-layer');
46258
46517
  this.sizeViewer = this.rect.getElementsByTagName('span')[0];
46259
46518
  this.pointerX = 0;
46260
46519
  this.pointerY = 0;
@@ -46269,6 +46528,9 @@ const keyBInd = '__jodit-resizer_binded';
46269
46528
  if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(this.element, 'img') && !this.element.complete) {
46270
46529
  this.j.e.one(this.element, 'load', this.updateSize);
46271
46530
  }
46531
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(this.element, 'video') && this.element.readyState < HTMLMediaElement.HAVE_METADATA) {
46532
+ this.j.e.one(this.element, 'loadedmetadata', this.updateSize);
46533
+ }
46272
46534
  }
46273
46535
  };
46274
46536
  this.updateSize = ()=>{
@@ -51282,9 +51544,725 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_4__.pluginSystem.add('toolbarNavigation
51282
51544
 
51283
51545
  /***/ }),
51284
51546
 
51285
- /***/ 14984:
51547
+ /***/ 54426:
51548
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
51549
+
51550
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
51551
+ /* harmony export */ editedMedia: function() { return /* binding */ editedMedia; },
51552
+ /* harmony export */ ownSize: function() { return /* binding */ ownSize; },
51553
+ /* harmony export */ readValues: function() { return /* binding */ readValues; }
51554
+ /* harmony export */ });
51555
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
51556
+ /* harmony import */ var _core_helpers_checker_is_numeric_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29807);
51557
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29960);
51558
+ /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(41180);
51559
+ /* harmony import */ var _image_properties_utils_utils_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(14415);
51560
+ /*!
51561
+ * Jodit Editor (https://xdsoft.net/jodit/)
51562
+ * Released under MIT see LICENSE.txt in the project root for license information.
51563
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
51564
+ */
51565
+
51566
+
51567
+
51568
+
51569
+ const mediaSelector = 'video, audio, iframe';
51570
+ /**
51571
+ * The media `target` is, or holds as its wrapper (`jodit-media`, the resizer's
51572
+ * `jodit` for an embed, or one from `mediaWrappers`)
51573
+ * @private
51574
+ */ function editedMedia(target) {
51575
+ return target.matches(mediaSelector) ? target : target.querySelector(mediaSelector);
51576
+ }
51577
+ /**
51578
+ * The size `media` is given, inline or by its attribute
51579
+ * @private
51580
+ */ function ownSize(media, key) {
51581
+ 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) || '';
51582
+ }
51583
+ const toNumber = (value)=>parseFloat(value.toString());
51584
+ /**
51585
+ * Read the media's values into the state
51586
+ * @private
51587
+ */ function readValues(state) {
51588
+ const { media, values } = state;
51589
+ const width = ownSize(media, 'width');
51590
+ const height = ownSize(media, 'height');
51591
+ values.width = width ? (0,_image_properties_utils_utils_js__WEBPACK_IMPORTED_MODULE_4__.normalSizeFromString)(width) : media.offsetWidth;
51592
+ values.height = height ? (0,_image_properties_utils_utils_js__WEBPACK_IMPORTED_MODULE_4__.normalSizeFromString)(height) : '';
51593
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(media, 'video') && media.videoWidth) {
51594
+ state.ratio = media.videoWidth / media.videoHeight;
51595
+ } 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)) {
51596
+ state.ratio = toNumber(values.width) / toNumber(values.height);
51597
+ } else {
51598
+ state.ratio = media.offsetWidth / media.offsetHeight || 1;
51599
+ }
51600
+ // One with no height takes it from its width
51601
+ if (!height && (0,_core_helpers_checker_is_numeric_js__WEBPACK_IMPORTED_MODULE_1__.isNumeric)(values.width)) {
51602
+ values.height = Math.round(toNumber(values.width) / state.ratio);
51603
+ }
51604
+ 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);
51605
+ values.poster = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_2__.attr)(media, 'poster') || '';
51606
+ values.autoplay = media.hasAttribute('autoplay');
51607
+ values.loop = media.hasAttribute('loop');
51608
+ // Autoplay's own: turning it off gives the sound back
51609
+ values.muted = media.hasAttribute('muted') && !values.autoplay;
51610
+ // Without Autoplay it keeps its controls, or it could never be played
51611
+ values.controls = media.hasAttribute('controls') || !values.autoplay;
51612
+ }
51613
+
51614
+
51615
+ /***/ }),
51616
+
51617
+ /***/ 96170:
51618
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
51619
+
51620
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
51621
+ /* harmony export */ replaceMedia: function() { return /* binding */ replaceMedia; }
51622
+ /* harmony export */ });
51623
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
51624
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29960);
51625
+ /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(41180);
51626
+ /* harmony import */ var _readers_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(54426);
51627
+ /* harmony import */ var _writers_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(44909);
51628
+ /*!
51629
+ * Jodit Editor (https://xdsoft.net/jodit/)
51630
+ * Released under MIT see LICENSE.txt in the project root for license information.
51631
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
51632
+ */
51633
+
51634
+
51635
+
51636
+
51637
+ /**
51638
+ * Give `media`, in `outer`, the classes, inline styles, size and playback
51639
+ * settings of `old`, in `oldOuter`. It keeps its own source and poster.
51640
+ */ function takeOver(j, oldOuter, old, outer, media) {
51641
+ var _a;
51642
+ const state = {
51643
+ target: oldOuter,
51644
+ media: old,
51645
+ ratio: 1,
51646
+ sizeIsLocked: true,
51647
+ values: {
51648
+ width: '',
51649
+ height: '',
51650
+ poster: '',
51651
+ autoplay: false,
51652
+ loop: false,
51653
+ muted: false,
51654
+ controls: true
51655
+ }
51656
+ };
51657
+ (0,_readers_js__WEBPACK_IMPORTED_MODULE_3__.readValues)(state);
51658
+ const pairs = [
51659
+ [
51660
+ old,
51661
+ media
51662
+ ]
51663
+ ];
51664
+ // A wrapper kept in the content, which holds the alignment
51665
+ if (oldOuter !== old && outer !== media && oldOuter.nodeName === outer.nodeName) {
51666
+ pairs.push([
51667
+ oldOuter,
51668
+ outer
51669
+ ]);
51670
+ }
51671
+ pairs.forEach(([from, to])=>{
51672
+ [
51673
+ 'class',
51674
+ 'style'
51675
+ ].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)));
51676
+ });
51677
+ // A video's size is CSS and an embed's its attributes, so the writer sizes
51678
+ // one that's a different element
51679
+ if (old.nodeName !== media.nodeName) {
51680
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(media, {
51681
+ width: null,
51682
+ height: null
51683
+ });
51684
+ if (!((_a = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(media, 'style')) === null || _a === void 0 ? void 0 : _a.trim())) {
51685
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(media, 'style', null);
51686
+ }
51687
+ }
51688
+ state.media = media;
51689
+ state.values.poster = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(media, 'poster') || '';
51690
+ (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')));
51691
+ }
51692
+ /**
51693
+ * Run `insert`, which inserts media at the cursor, with the cursor after
51694
+ * `replaced`, and put what it inserts in place of `replaced`
51695
+ * @private
51696
+ */ function replaceMedia(j, replaced, insert) {
51697
+ const inserted = [];
51698
+ const collect = (node)=>{
51699
+ inserted.push(node);
51700
+ };
51701
+ j.history.snapshot.transaction(()=>{
51702
+ j.s.focus();
51703
+ j.s.setCursorAfter(replaced);
51704
+ j.e.on('afterInsertNode', collect);
51705
+ try {
51706
+ insert();
51707
+ } finally{
51708
+ j.e.off('afterInsertNode', collect);
51709
+ }
51710
+ const [outer] = inserted;
51711
+ if (!_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isHTMLElement(outer)) {
51712
+ return;
51713
+ }
51714
+ const old = (0,_readers_js__WEBPACK_IMPORTED_MODULE_3__.editedMedia)(replaced);
51715
+ const media = (0,_readers_js__WEBPACK_IMPORTED_MODULE_3__.editedMedia)(outer);
51716
+ if (old && media) {
51717
+ takeOver(j, replaced, old, outer, media);
51718
+ }
51719
+ // The resizer can have put an embed in its own wrapper already
51720
+ 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;
51721
+ // Where the old one was, since media Jodit counts as blocks can be put
51722
+ // after the paragraph
51723
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.before(replaced, placed);
51724
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(replaced);
51725
+ j.s.setCursorAfter(placed);
51726
+ });
51727
+ j.synchronizeValues();
51728
+ j.e.fire('closeAllPopups');
51729
+ }
51730
+
51731
+
51732
+ /***/ }),
51733
+
51734
+ /***/ 27828:
51735
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
51736
+
51737
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
51738
+ /* harmony export */ UIVideoPropertiesForm: function() { return /* binding */ UIVideoPropertiesForm; }
51739
+ /* harmony export */ });
51740
+ /* harmony import */ var _core_decorators_component_component_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(87325);
51741
+ /* harmony import */ var _core_decorators_hook_hook_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(97357);
51742
+ /* harmony import */ var _core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(37133);
51743
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2748);
51744
+ /* harmony import */ var _core_helpers_checker_is_numeric_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(29807);
51745
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(29960);
51746
+ /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(41180);
51747
+ /* harmony import */ var _core_ui_element_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(48538);
51748
+ /* harmony import */ var _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(12153);
51749
+ /*!
51750
+ * Jodit Editor (https://xdsoft.net/jodit/)
51751
+ * Released under MIT see LICENSE.txt in the project root for license information.
51752
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
51753
+ */ var __decorate = undefined && undefined.__decorate || function(decorators, target, key, desc) {
51754
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
51755
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
51756
+ 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;
51757
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
51758
+ };
51759
+
51760
+
51761
+
51762
+
51763
+
51764
+
51765
+
51766
+
51767
+
51768
+ const flags = {
51769
+ autoplay: 'Autoplay',
51770
+ loop: 'Loop',
51771
+ muted: 'Muted',
51772
+ controls: 'Controls'
51773
+ };
51774
+ const checkbox = ([flag, label])=>`<label class="jodit_vertical_middle">
51775
+ <input type="checkbox" class="jodit-checkbox &__${flag}"/>
51776
+ <span>~${label}~</span>
51777
+ </label>`;
51778
+ /** @private */ let UIVideoPropertiesForm = class UIVideoPropertiesForm extends _core_ui_element_js__WEBPACK_IMPORTED_MODULE_7__.UIElement {
51779
+ className() {
51780
+ return 'UIVideoPropertiesForm';
51781
+ }
51782
+ render() {
51783
+ return `<form>
51784
+ <div class="jodit-form__group &__previewBox">
51785
+ <img class="&__preview" alt=""/>
51786
+ </div>
51787
+ <div class="jodit-form__group &__sizes">
51788
+ <input type="text" class="jodit-input &__width" placeholder="~Width~" aria-label="~Width~"/>
51789
+ <a class="&__lockSize">*lock*</a>
51790
+ <input type="text" class="jodit-input &__height" placeholder="~Height~" aria-label="~Height~"/>
51791
+ </div>
51792
+ <div class="jodit-form__group &__editPoster">
51793
+ <label>~Poster~</label>
51794
+ <div class="jodit-input_group">
51795
+ <input type="text" class="jodit-input &__poster" placeholder="https://"/>
51796
+ <div class="jodit-input_group-buttons">
51797
+ <a class="jodit-button &__changePoster" title="~Upload~">*image*</a>
51798
+ <a class="jodit-button &__removePoster" title="~Remove~">*bin*</a>
51799
+ </div>
51800
+ </div>
51801
+ </div>
51802
+ <div class="jodit-form__group &__playback">
51803
+ ${Object.entries(flags).map(checkbox).join('')}
51804
+ </div>
51805
+ </form>`;
51806
+ }
51807
+ input(name) {
51808
+ return this.getElm(name);
51809
+ }
51810
+ show(name, shown) {
51811
+ ;(0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(this.getElm(name), 'display', shown ? null : 'none');
51812
+ }
51813
+ /**
51814
+ * A video has every field, an embed only its size, and audio only its
51815
+ * playback settings
51816
+ */ onStateMediaChange() {
51817
+ const { media } = this.state;
51818
+ this.show('editPoster', _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_3__.Dom.isTag(media, 'video'));
51819
+ this.show('sizes', !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_3__.Dom.isTag(media, 'audio'));
51820
+ this.show('playback', !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_3__.Dom.isTag(media, 'iframe'));
51821
+ this.showPreview();
51822
+ }
51823
+ // A video's poster, when it has one
51824
+ showPreview() {
51825
+ const { media, values } = this.state;
51826
+ const shown = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_3__.Dom.isTag(media, 'video') && Boolean(values.poster);
51827
+ this.show('previewBox', shown);
51828
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_5__.attr)(this.getElm('preview'), 'src', shown ? values.poster : null);
51829
+ }
51830
+ hideChangePoster() {
51831
+ const { uploader, filebrowser } = this.j.o;
51832
+ // What FileSelectorWidget offers
51833
+ const canUpload = uploader.showTabInFileSelector !== false && Boolean(uploader.url || uploader.insertImageAsBase64URI || uploader.customUploadFunction);
51834
+ const canBrowse = Boolean(filebrowser.ajax.url || filebrowser.items.url);
51835
+ this.show('changePoster', canUpload || canBrowse);
51836
+ }
51837
+ onStatePosterChange() {
51838
+ const { poster } = this.state.values;
51839
+ this.input('poster').value = poster;
51840
+ this.show('removePoster', Boolean(poster));
51841
+ this.showPreview();
51842
+ }
51843
+ onPosterChange() {
51844
+ this.state.values.poster = this.input('poster').value;
51845
+ }
51846
+ onChangePosterClick(e) {
51847
+ this.handlers.openPosterPopup(this.getElm('changePoster'));
51848
+ e.stopPropagation();
51849
+ }
51850
+ onRemovePosterClick() {
51851
+ this.state.values.poster = '';
51852
+ }
51853
+ onStateSizeIsLockedChange() {
51854
+ this.getElm('lockSize').innerHTML = _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_8__.Icon.get(this.state.sizeIsLocked ? 'lock' : 'unlock');
51855
+ }
51856
+ onLockSizeClick() {
51857
+ const { state } = this;
51858
+ const { values } = state;
51859
+ state.sizeIsLocked = !state.sizeIsLocked;
51860
+ if (state.sizeIsLocked && (0,_core_helpers_checker_is_numeric_js__WEBPACK_IMPORTED_MODULE_4__.isNumeric)(values.width)) {
51861
+ values.height = Math.round(parseFloat(values.width.toString()) / state.ratio);
51862
+ }
51863
+ }
51864
+ onStateSizeChange() {
51865
+ const { values } = this.state;
51866
+ // Not the field being typed in
51867
+ [
51868
+ 'width',
51869
+ 'height'
51870
+ ].forEach((key)=>{
51871
+ const input = this.input(key);
51872
+ if (input !== this.j.od.activeElement) {
51873
+ input.value = values[key].toString();
51874
+ }
51875
+ });
51876
+ }
51877
+ onSizeInput(e) {
51878
+ const { state } = this;
51879
+ const { values } = state;
51880
+ // Both read first, since setting one rewrites the other's field
51881
+ const width = this.input('width').value;
51882
+ const height = this.input('height').value;
51883
+ 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)) {
51884
+ values.width = width;
51885
+ values.height = height;
51886
+ return;
51887
+ }
51888
+ const w = parseFloat(width);
51889
+ const h = parseFloat(height);
51890
+ if (e.target === this.input('width')) {
51891
+ values.width = w;
51892
+ values.height = Math.round(w / state.ratio);
51893
+ } else {
51894
+ values.width = Math.round(h * state.ratio);
51895
+ values.height = h;
51896
+ }
51897
+ }
51898
+ /**
51899
+ * Autoplay mutes it, and it keeps its controls unless it autoplays
51900
+ */ onStateFlagsChange() {
51901
+ const { values } = this.state;
51902
+ this.input('autoplay').checked = values.autoplay;
51903
+ this.input('loop').checked = values.loop;
51904
+ this.input('muted').checked = values.muted || values.autoplay;
51905
+ this.input('muted').disabled = values.autoplay;
51906
+ this.input('controls').checked = values.controls || !values.autoplay;
51907
+ this.input('controls').disabled = !values.autoplay;
51908
+ }
51909
+ onFlagChange(e) {
51910
+ Object.keys(flags).forEach((flag)=>{
51911
+ const input = this.input(flag);
51912
+ if (e.target === input) {
51913
+ this.state.values[flag] = input.checked;
51914
+ }
51915
+ });
51916
+ }
51917
+ constructor(jodit, state, handlers){
51918
+ super(jodit);
51919
+ this.state = state;
51920
+ this.handlers = handlers;
51921
+ }
51922
+ };
51923
+ __decorate([
51924
+ (0,_core_decorators_hook_hook_js__WEBPACK_IMPORTED_MODULE_1__.hook)('ready'),
51925
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)('state.media')
51926
+ ], UIVideoPropertiesForm.prototype, "onStateMediaChange", null);
51927
+ __decorate([
51928
+ (0,_core_decorators_hook_hook_js__WEBPACK_IMPORTED_MODULE_1__.hook)('ready')
51929
+ ], UIVideoPropertiesForm.prototype, "hideChangePoster", null);
51930
+ __decorate([
51931
+ (0,_core_decorators_hook_hook_js__WEBPACK_IMPORTED_MODULE_1__.hook)('ready'),
51932
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)('state.values.poster')
51933
+ ], UIVideoPropertiesForm.prototype, "onStatePosterChange", null);
51934
+ __decorate([
51935
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)('poster:change')
51936
+ ], UIVideoPropertiesForm.prototype, "onPosterChange", null);
51937
+ __decorate([
51938
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)('changePoster:click')
51939
+ ], UIVideoPropertiesForm.prototype, "onChangePosterClick", null);
51940
+ __decorate([
51941
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)('removePoster:click')
51942
+ ], UIVideoPropertiesForm.prototype, "onRemovePosterClick", null);
51943
+ __decorate([
51944
+ (0,_core_decorators_hook_hook_js__WEBPACK_IMPORTED_MODULE_1__.hook)('ready'),
51945
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)('state.sizeIsLocked')
51946
+ ], UIVideoPropertiesForm.prototype, "onStateSizeIsLockedChange", null);
51947
+ __decorate([
51948
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)('lockSize:click')
51949
+ ], UIVideoPropertiesForm.prototype, "onLockSizeClick", null);
51950
+ __decorate([
51951
+ (0,_core_decorators_hook_hook_js__WEBPACK_IMPORTED_MODULE_1__.hook)('ready'),
51952
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)([
51953
+ 'state.values.width',
51954
+ 'state.values.height'
51955
+ ])
51956
+ ], UIVideoPropertiesForm.prototype, "onStateSizeChange", null);
51957
+ __decorate([
51958
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)([
51959
+ 'width:input',
51960
+ 'height:input',
51961
+ 'width:change',
51962
+ 'height:change'
51963
+ ])
51964
+ ], UIVideoPropertiesForm.prototype, "onSizeInput", null);
51965
+ __decorate([
51966
+ (0,_core_decorators_hook_hook_js__WEBPACK_IMPORTED_MODULE_1__.hook)('ready'),
51967
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)(Object.keys(flags).map((flag)=>`state.values.${flag}`))
51968
+ ], UIVideoPropertiesForm.prototype, "onStateFlagsChange", null);
51969
+ __decorate([
51970
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)(Object.keys(flags).map((flag)=>`${flag}:change`))
51971
+ ], UIVideoPropertiesForm.prototype, "onFlagChange", null);
51972
+ UIVideoPropertiesForm = __decorate([
51973
+ _core_decorators_component_component_js__WEBPACK_IMPORTED_MODULE_0__.component
51974
+ ], UIVideoPropertiesForm);
51975
+
51976
+
51977
+
51978
+ /***/ }),
51979
+
51980
+ /***/ 96139:
51286
51981
  /***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) {
51287
51982
 
51983
+ /* unused harmony export videoProperties */
51984
+ /* harmony import */ var _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(65478);
51985
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2748);
51986
+ /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(580);
51987
+ /* harmony import */ var _core_helpers_checker_is_array_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(68345);
51988
+ /* harmony import */ var _core_helpers_size_position_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5700);
51989
+ /* harmony import */ var _core_helpers_utils_utils_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(37790);
51990
+ /* harmony import */ var _core_plugin_plugin_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(20356);
51991
+ /* harmony import */ var _core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(62843);
51992
+ /* harmony import */ var _core_ui_popup_popup_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(56917);
51993
+ /* harmony import */ var _modules_widget_file_selector_file_selector_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(34793);
51994
+ /* harmony import */ var _ui_ui_video_form_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(27828);
51995
+ /* harmony import */ var _readers_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(54426);
51996
+ /* harmony import */ var _replace_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(96170);
51997
+ /* harmony import */ var _writers_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(44909);
51998
+ /* harmony import */ var _video_config_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(14984);
51999
+ /*!
52000
+ * Jodit Editor (https://xdsoft.net/jodit/)
52001
+ * Released under MIT see LICENSE.txt in the project root for license information.
52002
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
52003
+ */ var __decorate = undefined && undefined.__decorate || function(decorators, target, key, desc) {
52004
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
52005
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
52006
+ 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;
52007
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
52008
+ };
52009
+
52010
+
52011
+
52012
+
52013
+
52014
+
52015
+
52016
+
52017
+
52018
+
52019
+
52020
+
52021
+
52022
+
52023
+
52024
+ /**
52025
+ * Show a dialog with the size, poster and playback settings of a video, an
52026
+ * embed or audio. The media popup's Edit button opens it:
52027
+ *
52028
+ * ```javascript
52029
+ * editor.events.fire('openVideoProperties', video);
52030
+ * ```
52031
+ */ class videoProperties extends _core_plugin_plugin_js__WEBPACK_IMPORTED_MODULE_6__.Plugin {
52032
+ get __size() {
52033
+ const { width, height } = this.state.values;
52034
+ return `${width}x${height}`;
52035
+ }
52036
+ get form() {
52037
+ return new _ui_ui_video_form_js__WEBPACK_IMPORTED_MODULE_10__.UIVideoPropertiesForm(this.j, this.state, {
52038
+ openPosterPopup: (target)=>this.__openPosterPopup(target)
52039
+ });
52040
+ }
52041
+ get dialog() {
52042
+ const { j } = this;
52043
+ const dialog = j.dlg({
52044
+ minWidth: Math.min(400, screen.width),
52045
+ buttons: [
52046
+ 'dialog.close'
52047
+ ]
52048
+ });
52049
+ const buttons = this.__buttons;
52050
+ buttons.check.onAction(()=>{
52051
+ (0,_writers_js__WEBPACK_IMPORTED_MODULE_13__.applyValues)(j, this.state, this.__size !== this.__readSize);
52052
+ j.synchronizeValues();
52053
+ dialog.close();
52054
+ });
52055
+ buttons.remove.onAction(()=>{
52056
+ j.s.removeNode(this.state.target);
52057
+ dialog.close();
52058
+ });
52059
+ buttons.cancel.onAction(()=>{
52060
+ dialog.close();
52061
+ });
52062
+ dialog.setContent(this.form);
52063
+ dialog.setFooter([
52064
+ [
52065
+ buttons.cancel,
52066
+ buttons.remove
52067
+ ],
52068
+ buttons.check
52069
+ ]);
52070
+ (0,_core_helpers_utils_utils_js__WEBPACK_IMPORTED_MODULE_5__.markOwner)(j, dialog.container);
52071
+ return dialog;
52072
+ }
52073
+ get __buttons() {
52074
+ const { j } = this;
52075
+ return {
52076
+ check: (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_7__.Button)(j, 'ok', 'Apply', 'primary'),
52077
+ remove: (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_7__.Button)(j, 'bin', 'Delete'),
52078
+ cancel: (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_7__.Button)(j, 'cancel', 'Cancel')
52079
+ };
52080
+ }
52081
+ /**
52082
+ * Open the dialog for the media `target` is, or is the wrapper of
52083
+ */ open(target) {
52084
+ const media = (0,_readers_js__WEBPACK_IMPORTED_MODULE_11__.editedMedia)(target);
52085
+ if (!media) {
52086
+ return;
52087
+ }
52088
+ this.state.target = target;
52089
+ this.state.media = media;
52090
+ (0,_readers_js__WEBPACK_IMPORTED_MODULE_11__.readValues)(this.state);
52091
+ this.__readSize = this.__size;
52092
+ this.dialog.setHeader(this.j.i18n(_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(media, 'audio') ? 'Audio properties' : 'Video properties'));
52093
+ this.dialog.open().setModal(true).setPosition();
52094
+ }
52095
+ /**
52096
+ * The video popup's tabs for the media popup's Replace: what they insert
52097
+ * takes the place of the media `target` is, or is the wrapper of
52098
+ */ onGenerateReplaceVideoTabs(target, close) {
52099
+ 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));
52100
+ }
52101
+ __openPosterPopup(button) {
52102
+ const { j, state } = this;
52103
+ const popup = new _core_ui_popup_popup_js__WEBPACK_IMPORTED_MODULE_8__.Popup(this.dialog);
52104
+ const close = ()=>{
52105
+ popup.close();
52106
+ popup.destruct();
52107
+ };
52108
+ popup.setContent((0,_modules_widget_file_selector_file_selector_js__WEBPACK_IMPORTED_MODULE_9__.FileSelectorWidget)(j, {
52109
+ upload: (data)=>{
52110
+ if (data.files && data.files.length) {
52111
+ state.values.poster = data.baseurl + data.files[0];
52112
+ }
52113
+ close();
52114
+ },
52115
+ filebrowser: (data)=>{
52116
+ if ((0,_core_helpers_checker_is_array_js__WEBPACK_IMPORTED_MODULE_3__.isArray)(data.files) && data.files.length) {
52117
+ state.values.poster = data.files[0];
52118
+ close();
52119
+ }
52120
+ }
52121
+ }, null, close)).open(()=>(0,_core_helpers_size_position_js__WEBPACK_IMPORTED_MODULE_4__.position)(button));
52122
+ }
52123
+ /** @override */ afterInit() {}
52124
+ /** @override */ beforeDestruct() {
52125
+ var _a, _b, _c;
52126
+ Object.values((_a = (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.cached)(this, '__buttons')) !== null && _a !== void 0 ? _a : {}).forEach((b)=>b.destruct());
52127
+ (_b = (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.cached)(this, 'dialog')) === null || _b === void 0 ? void 0 : _b.destruct();
52128
+ (_c = (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.cached)(this, 'form')) === null || _c === void 0 ? void 0 : _c.destruct();
52129
+ }
52130
+ constructor(){
52131
+ super(...arguments);
52132
+ this.state = {
52133
+ target: this.j.c.element('video'),
52134
+ media: this.j.c.element('video'),
52135
+ ratio: 1,
52136
+ sizeIsLocked: true,
52137
+ values: {
52138
+ width: '',
52139
+ height: '',
52140
+ poster: '',
52141
+ autoplay: false,
52142
+ loop: false,
52143
+ muted: false,
52144
+ controls: true
52145
+ }
52146
+ };
52147
+ // The size as it was read, so an unchanged one isn't written
52148
+ this.__readSize = '';
52149
+ }
52150
+ }
52151
+ __decorate([
52152
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.cache
52153
+ ], videoProperties.prototype, "form", null);
52154
+ __decorate([
52155
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.cache
52156
+ ], videoProperties.prototype, "dialog", null);
52157
+ __decorate([
52158
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.cache
52159
+ ], videoProperties.prototype, "__buttons", null);
52160
+ __decorate([
52161
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)(':openVideoProperties')
52162
+ ], videoProperties.prototype, "open", null);
52163
+ __decorate([
52164
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)(':generateReplaceVideoTabs')
52165
+ ], videoProperties.prototype, "onGenerateReplaceVideoTabs", null);
52166
+ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('videoProperties', videoProperties);
52167
+
52168
+
52169
+ /***/ }),
52170
+
52171
+ /***/ 44909:
52172
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
52173
+
52174
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
52175
+ /* harmony export */ applyValues: function() { return /* binding */ applyValues; }
52176
+ /* harmony export */ });
52177
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
52178
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29960);
52179
+ /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(41180);
52180
+ /* harmony import */ var _readers_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(54426);
52181
+ /* harmony import */ var _image_properties_utils_utils_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(14415);
52182
+ /*!
52183
+ * Jodit Editor (https://xdsoft.net/jodit/)
52184
+ * Released under MIT see LICENSE.txt in the project root for license information.
52185
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
52186
+ */
52187
+
52188
+
52189
+
52190
+
52191
+ const cssSize = (value)=>value === '' ? null : (0,_image_properties_utils_utils_js__WEBPACK_IMPORTED_MODULE_4__.normalSizeToString)(value);
52192
+ // Sizes go on as the resizer writes them: an embed takes them as attributes,
52193
+ // and a video as CSS, without a height while its ratio is kept, if it had none
52194
+ function applySize(j, state) {
52195
+ var _a;
52196
+ const { media, values } = state;
52197
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(media, 'iframe')) {
52198
+ [
52199
+ 'width',
52200
+ 'height'
52201
+ ].forEach((key)=>{
52202
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(media, key, values[key] === '' ? null : values[key]);
52203
+ if ((0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__.cssInline)(media, key)) {
52204
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(media, key, cssSize(values[key]));
52205
+ }
52206
+ });
52207
+ // The resizer's frame for an embed
52208
+ const wrapper = media.parentElement;
52209
+ if (wrapper && (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(wrapper, 'data-jodit_iframe_wrapper')) {
52210
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(wrapper, {
52211
+ width: media.offsetWidth,
52212
+ height: media.offsetHeight
52213
+ });
52214
+ }
52215
+ return;
52216
+ }
52217
+ const heightFollowsWidth = state.sizeIsLocked && !(0,_readers_js__WEBPACK_IMPORTED_MODULE_3__.ownSize)(media, 'height');
52218
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(media, {
52219
+ width: cssSize(values.width),
52220
+ height: heightFollowsWidth ? null : cssSize(values.height)
52221
+ });
52222
+ if (!((_a = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(media, 'style')) === null || _a === void 0 ? void 0 : _a.trim())) {
52223
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(media, 'style', null);
52224
+ }
52225
+ j.e.fire(media, 'changesize');
52226
+ }
52227
+ function setFlag(media, name, on) {
52228
+ if (media.hasAttribute(name) !== on) {
52229
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(media, name, on ? '' : null);
52230
+ }
52231
+ }
52232
+ /**
52233
+ * Apply the dialog's values to the media
52234
+ * @private
52235
+ */ function applyValues(j, state, sizeChanged) {
52236
+ const { media, values } = state;
52237
+ if (sizeChanged && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(media, 'audio')) {
52238
+ applySize(j, state);
52239
+ }
52240
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(media, 'iframe')) {
52241
+ return;
52242
+ }
52243
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(media, 'video')) {
52244
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(media, 'poster', values.poster || null);
52245
+ }
52246
+ // Browsers only autoplay muted media, and playsinline keeps an iPhone from
52247
+ // playing it full screen
52248
+ setFlag(media, 'autoplay', values.autoplay);
52249
+ setFlag(media, 'muted', values.autoplay || values.muted);
52250
+ setFlag(media, 'loop', values.loop);
52251
+ setFlag(media, 'controls', values.controls || !values.autoplay);
52252
+ if (values.autoplay && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(media, 'video')) {
52253
+ setFlag(media, 'playsinline', true);
52254
+ }
52255
+ }
52256
+
52257
+
52258
+ /***/ }),
52259
+
52260
+ /***/ 14984:
52261
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
52262
+
52263
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
52264
+ /* harmony export */ videoTabs: function() { return /* binding */ videoTabs; }
52265
+ /* harmony export */ });
51288
52266
  /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(21537);
51289
52267
  /* harmony import */ var _core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(62843);
51290
52268
  /* harmony import */ var _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2525);
@@ -51319,77 +52297,88 @@ _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.video = {
51319
52297
  defaultHandlerSuccess: insertVideos
51320
52298
  };
51321
52299
  _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_3__.Icon.set('video', _video_svg_js__WEBPACK_IMPORTED_MODULE_6__["default"]);
51322
- _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.video = {
51323
- popup: (jodit, current, close)=>{
51324
- const formLink = new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIForm(jodit, [
51325
- new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIBlock(jodit, [
51326
- new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIInput(jodit, {
51327
- name: 'url',
51328
- required: true,
51329
- label: 'URL',
51330
- placeholder: 'https://',
51331
- validators: [
51332
- 'url'
51333
- ]
51334
- })
51335
- ]),
51336
- new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIBlock(jodit, [
51337
- (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_1__.Button)(jodit, '', 'Insert', 'primary').onAction(()=>formLink.submit())
51338
- ])
51339
- ]), formCode = new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIForm(jodit, [
51340
- new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIBlock(jodit, [
51341
- new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UITextArea(jodit, {
51342
- name: 'code',
51343
- required: true,
51344
- label: 'Embed code'
51345
- })
51346
- ]),
51347
- new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIBlock(jodit, [
51348
- (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_1__.Button)(jodit, '', 'Insert', 'primary').onAction(()=>formCode.submit())
51349
- ])
51350
- ]), tabs = [], insertCode = (code)=>{
51351
- jodit.s.restore();
51352
- jodit.s.insertHTML((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_0__.prepareEmbedCode)(jodit, code));
51353
- close();
51354
- };
52300
+ /**
52301
+ * The video popup's tabs: Upload, when the uploader is configured, then Link
52302
+ * and Code. `insert` runs what a tab inserts, which by default goes in at the
52303
+ * selection the popup was opened with.
52304
+ */ function videoTabs(jodit, close, insert) {
52305
+ const run = insert !== null && insert !== void 0 ? insert : (fn)=>{
52306
+ jodit.s.restore();
52307
+ fn();
52308
+ };
52309
+ const formLink = new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIForm(jodit, [
52310
+ new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIBlock(jodit, [
52311
+ new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIInput(jodit, {
52312
+ name: 'url',
52313
+ required: true,
52314
+ label: 'URL',
52315
+ placeholder: 'https://',
52316
+ validators: [
52317
+ 'url'
52318
+ ]
52319
+ })
52320
+ ]),
52321
+ new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIBlock(jodit, [
52322
+ (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_1__.Button)(jodit, '', 'Insert', 'primary').onAction(()=>formLink.submit())
52323
+ ])
52324
+ ]), formCode = new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIForm(jodit, [
52325
+ new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIBlock(jodit, [
52326
+ new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UITextArea(jodit, {
52327
+ name: 'code',
52328
+ required: true,
52329
+ label: 'Embed code'
52330
+ })
52331
+ ]),
52332
+ new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIBlock(jodit, [
52333
+ (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_1__.Button)(jodit, '', 'Insert', 'primary').onAction(()=>formCode.submit())
52334
+ ])
52335
+ ]), tabs = [], insertCode = (code)=>{
52336
+ run(()=>jodit.s.insertHTML((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_0__.prepareEmbedCode)(jodit, code)));
52337
+ close();
52338
+ };
52339
+ if (!insert) {
51355
52340
  jodit.s.save();
51356
- const { uploader } = jodit.o;
51357
- // Base64 alone would put whole video files into the content
51358
- if (uploader.showTabInFileSelector !== false && (uploader.url || uploader.customUploadFunction)) {
51359
- tabs.push((0,_modules_widget_index_js__WEBPACK_IMPORTED_MODULE_5__.UploadTab)(jodit, (data)=>{
52341
+ }
52342
+ const { uploader } = jodit.o;
52343
+ // Base64 alone would put whole video files into the content
52344
+ if (uploader.showTabInFileSelector !== false && (uploader.url || uploader.customUploadFunction)) {
52345
+ tabs.push((0,_modules_widget_index_js__WEBPACK_IMPORTED_MODULE_5__.UploadTab)(jodit, (data)=>{
52346
+ run(()=>{
51360
52347
  var _a, _b;
51361
- jodit.s.restore();
51362
- ((_b = (_a = jodit.o.video) === null || _a === void 0 ? void 0 : _a.defaultHandlerSuccess) !== null && _b !== void 0 ? _b : insertVideos).call(jodit, data);
51363
- }, {
51364
- label: 'Drop file',
51365
- accept: 'video/*'
51366
- }));
51367
- }
51368
- tabs.push({
51369
- icon: 'link',
51370
- name: 'Link',
51371
- content: formLink.container
52348
+ return ((_b = (_a = jodit.o.video) === null || _a === void 0 ? void 0 : _a.defaultHandlerSuccess) !== null && _b !== void 0 ? _b : insertVideos).call(jodit, data);
52349
+ });
51372
52350
  }, {
51373
- icon: 'source',
51374
- name: 'Code',
51375
- content: formCode.container
51376
- });
51377
- formLink.onSubmit((data)=>{
51378
- var _a, _b, _c, _d;
51379
- 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, {
51380
- width: (_c = jodit.o.video) === null || _c === void 0 ? void 0 : _c.defaultWidth,
51381
- height: (_d = jodit.o.video) === null || _d === void 0 ? void 0 : _d.defaultHeight
51382
- }));
51383
- });
51384
- formCode.onSubmit((data)=>{
51385
- insertCode(data.code);
51386
- });
51387
- const box = (0,_modules_widget_index_js__WEBPACK_IMPORTED_MODULE_5__.TabsWidget)(jodit, tabs);
51388
- // Its tabs are sized to their labels, as the file selector's are, since
51389
- // "Upload" doesn't fit a third of the popup
51390
- box.classList.add('jodit-file-selector');
51391
- return box;
51392
- },
52351
+ label: 'Drop file',
52352
+ accept: 'video/*'
52353
+ }));
52354
+ }
52355
+ tabs.push({
52356
+ icon: 'link',
52357
+ name: 'Link',
52358
+ content: formLink.container
52359
+ }, {
52360
+ icon: 'source',
52361
+ name: 'Code',
52362
+ content: formCode.container
52363
+ });
52364
+ formLink.onSubmit((data)=>{
52365
+ var _a, _b, _c, _d;
52366
+ 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, {
52367
+ width: (_c = jodit.o.video) === null || _c === void 0 ? void 0 : _c.defaultWidth,
52368
+ height: (_d = jodit.o.video) === null || _d === void 0 ? void 0 : _d.defaultHeight
52369
+ }));
52370
+ });
52371
+ formCode.onSubmit((data)=>{
52372
+ insertCode(data.code);
52373
+ });
52374
+ const box = (0,_modules_widget_index_js__WEBPACK_IMPORTED_MODULE_5__.TabsWidget)(jodit, tabs);
52375
+ // Its tabs are sized to their labels, as the file selector's are, since
52376
+ // "Upload" doesn't fit a third of the popup
52377
+ box.classList.add('jodit-file-selector');
52378
+ return box;
52379
+ }
52380
+ _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.video = {
52381
+ popup: (jodit, current, close)=>videoTabs(jodit, close),
51393
52382
  tags: [
51394
52383
  'iframe'
51395
52384
  ],