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
package/es2021/jodit.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * jodit-pro - PRO Version of Jodit Editor
3
3
  * Author: Chupurnov Valerii <chupurnov@gmail.com>
4
- * Version: v4.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
 
@@ -33569,10 +33761,11 @@ UiAiAssistant = __decorate([
33569
33761
  /* harmony import */ var _table_keyboard_navigation_table_keyboard_navigation_js__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(72439);
33570
33762
  /* harmony import */ var _toolbar_navigation_toolbar_navigation_js__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(94529);
33571
33763
  /* harmony import */ var _video_video_js__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(26551);
33572
- /* harmony import */ var _wrap_nodes_wrap_nodes_js__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(72253);
33573
- /* harmony import */ var _dtd_dtd_js__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(65735);
33574
- /* harmony import */ var _xpath_xpath_js__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(83671);
33575
- /* harmony import */ var _speech_recognize_speech_recognize_js__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(3115);
33764
+ /* harmony import */ var _video_properties_video_properties_js__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(96139);
33765
+ /* harmony import */ var _wrap_nodes_wrap_nodes_js__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(72253);
33766
+ /* harmony import */ var _dtd_dtd_js__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(65735);
33767
+ /* harmony import */ var _xpath_xpath_js__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(83671);
33768
+ /* harmony import */ var _speech_recognize_speech_recognize_js__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(3115);
33576
33769
  /*!
33577
33770
  * Jodit Editor (https://xdsoft.net/jodit/)
33578
33771
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -33643,6 +33836,7 @@ UiAiAssistant = __decorate([
33643
33836
 
33644
33837
 
33645
33838
 
33839
+
33646
33840
 
33647
33841
 
33648
33842
  // JODIT-START:FAT
@@ -40059,6 +40253,11 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.imageProcessor = {
40059
40253
  const JODIT_IMAGE_PROCESSOR_BINDED = '__jodit_imageprocessor_binded';
40060
40254
  const JODIT_IMAGE_BLOB_ID = JODIT_IMAGE_PROCESSOR_BINDED + 'blob-id';
40061
40255
  const IMAGE_SELECTED = 'jodit-wysiwyg_image-selected';
40256
+ const SELECTED_TAGS = new Set([
40257
+ 'img',
40258
+ 'jodit',
40259
+ 'jodit-media'
40260
+ ]);
40062
40261
  /**
40063
40262
  * Change editor's size after load all images
40064
40263
  */ class imageProcessor extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_5__.Plugin {
@@ -40100,7 +40299,10 @@ const IMAGE_SELECTED = 'jodit-wysiwyg_image-selected';
40100
40299
  }
40101
40300
  /**
40102
40301
  * While the selection is an image, only the image is highlighted: Safari
40103
- * paints the rest of a block image's line with its parent's highlight. See #1528
40302
+ * paints the rest of a block image's line with its parent's highlight. See #1528.
40303
+ * Media in a wrapper (`jodit-media`, the resizer's `jodit` for an embed, or
40304
+ * one from `mediaWrappers`) isn't highlighted either, as Safari paints its
40305
+ * wrapper's whole line, and its resize frame shows it's selected
40104
40306
  */ onSelectionChange() {
40105
40307
  const { jodit } = this;
40106
40308
  jodit.editor.classList.toggle(IMAGE_SELECTED, isImageSelected(jodit));
@@ -40154,7 +40356,8 @@ function isImageSelected(jodit) {
40154
40356
  return false;
40155
40357
  }
40156
40358
  const { startContainer, startOffset, endContainer, endOffset } = sel.getRangeAt(0);
40157
- 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);
40359
+ const node = startContainer.childNodes[startOffset];
40360
+ 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);
40158
40361
  }
40159
40362
  /**
40160
40363
  * Remove the invisible-space text beside an image, which only held a caret.
@@ -42284,6 +42487,12 @@ const cmd = (control)=>control.args && (0,_core_helpers_checker_index_js__WEBPAC
42284
42487
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
42285
42488
  */
42286
42489
  /* harmony default export */ __webpack_exports__["default"] = ([
42490
+ {
42491
+ name: 'replace',
42492
+ icon: 'video',
42493
+ tooltip: 'Replace',
42494
+ popup: (editor, target, close)=>target ? editor.e.fire('generateReplaceVideoTabs', target, close) : undefined
42495
+ },
42287
42496
  {
42288
42497
  name: 'bin',
42289
42498
  tooltip: 'Delete',
@@ -42291,6 +42500,13 @@ const cmd = (control)=>control.args && (0,_core_helpers_checker_index_js__WEBPAC
42291
42500
  image && editor.s.removeNode(image);
42292
42501
  }
42293
42502
  },
42503
+ {
42504
+ name: 'pencil',
42505
+ tooltip: 'Edit',
42506
+ exec: (editor, target)=>{
42507
+ target && editor.e.fire('openVideoProperties', target);
42508
+ }
42509
+ },
42294
42510
  _img_js__WEBPACK_IMPORTED_MODULE_0__.align
42295
42511
  ]);
42296
42512
 
@@ -44397,6 +44613,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.mediaWrappers = {};
44397
44613
  } else if (mediaWrappers[element.nodeName.toLowerCase()]) {
44398
44614
  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);
44399
44615
  } else if (mediaInFakeBlock) {
44616
+ const media = element;
44400
44617
  const wrapper = editor.createInside.element(mediaFakeTag, {
44401
44618
  'data-jodit-temp': 1,
44402
44619
  contenteditable: false,
@@ -44404,11 +44621,17 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.mediaWrappers = {};
44404
44621
  [`data-${keyFake}`]: 1
44405
44622
  });
44406
44623
  (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'));
44407
- (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_4__.css)(wrapper, {
44408
- display: (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_4__.cssInline)(element, 'display') === 'inline-block' ? 'inline-block' : 'block',
44409
- width: element.offsetWidth,
44410
- height: element.offsetHeight
44411
- });
44624
+ // The wrapper fits the media, whose size changes as its metadata loads
44625
+ // and as it's resized. A percentage width is of the line, so it takes that
44626
+ const fit = ()=>{
44627
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_4__.css)(wrapper, {
44628
+ display: (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_4__.cssInline)(media, 'display') === 'inline-block' ? 'inline-block' : 'block',
44629
+ width: (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_4__.cssInline)(media, 'width').endsWith('%') ? '' : 'fit-content',
44630
+ height: ''
44631
+ });
44632
+ };
44633
+ fit();
44634
+ editor.e.on(media, 'changesize', fit);
44412
44635
  if (element.parentNode) {
44413
44636
  _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.before(element, wrapper);
44414
44637
  }
@@ -46631,7 +46854,8 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.allowResizeTags = new S
46631
46854
  'img',
46632
46855
  'iframe',
46633
46856
  'table',
46634
- 'jodit'
46857
+ 'jodit',
46858
+ 'video'
46635
46859
  ]);
46636
46860
  _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.resizer = {
46637
46861
  showSize: true,
@@ -46640,7 +46864,8 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.resizer = {
46640
46864
  min_width: 10,
46641
46865
  min_height: 10,
46642
46866
  useAspectRatio: new Set([
46643
- 'img'
46867
+ 'img',
46868
+ 'video'
46644
46869
  ])
46645
46870
  };
46646
46871
 
@@ -46691,6 +46916,12 @@ const keyBInd = '__jodit-resizer_binded';
46691
46916
  }
46692
46917
  return parseFloat(value);
46693
46918
  }
46919
+ /**
46920
+ * A video with no height of its own takes it from its width and its ratio,
46921
+ * so resizing it keeps the ratio without setting a height.
46922
+ */ function heightFollowsWidth(element) {
46923
+ 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');
46924
+ }
46694
46925
  /**
46695
46926
  * The module creates a supporting frame for resizing of the elements img and table
46696
46927
  */ class resizer extends _core_plugin_plugin_js__WEBPACK_IMPORTED_MODULE_6__.Plugin {
@@ -46718,14 +46949,27 @@ const keyBInd = '__jodit-resizer_binded';
46718
46949
  let node = e.target;
46719
46950
  const { editor, options: { allowResizeTags } } = this.j;
46720
46951
  while(node && node !== editor){
46721
- if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(node, allowResizeTags)) {
46722
- this.__bind(node);
46723
- this.onClickElement(node);
46952
+ const element = this.__resizable(node);
46953
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(element, allowResizeTags)) {
46954
+ this.__bind(element);
46955
+ this.onClickElement(element);
46724
46956
  return;
46725
46957
  }
46726
46958
  node = node.parentNode;
46727
46959
  }
46728
46960
  }
46961
+ /**
46962
+ * What a click on `node` resizes: the media in it when it's a media
46963
+ * wrapper (`jodit-media`, or one from `mediaWrappers`), or `node` itself
46964
+ */ __resizable(node) {
46965
+ var _a;
46966
+ 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;
46967
+ if (!media) {
46968
+ return node;
46969
+ }
46970
+ // An embed is resized through its own wrapper
46971
+ 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;
46972
+ }
46729
46973
  __afterInsertImage(image) {
46730
46974
  if (this.j.o.resizer.forImageChangeAttributes) {
46731
46975
  return;
@@ -46742,17 +46986,15 @@ const keyBInd = '__jodit-resizer_binded';
46742
46986
  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')) {
46743
46987
  this.onDelete(e);
46744
46988
  }
46745
- }).on(editor.ow, 'resize.resizer', this.updateSize).on('resize.resizer', this.updateSize).on([
46989
+ }).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
46990
+ // element as the content scrolls
46991
+ .on([
46746
46992
  editor.ow,
46747
46993
  editor.editor
46748
- ], 'scroll.resizer', ()=>{
46749
- if (this.isShown && !this.isResizeMode) {
46750
- this.hide();
46751
- }
46752
- }).on(editor.ow, 'keydown.resizer', this.onKeyDown).on(editor.ow, 'keyup.resizer', this.onKeyUp).on(editor.ow, 'mouseup.resizer touchend.resizer', this.onClickOutside);
46994
+ ], '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);
46753
46995
  }
46754
46996
  onStartResizing(resizeHandle, e) {
46755
- if (!this.element || !this.element.parentNode) {
46997
+ if (!this.element || !this.isElementInEditor) {
46756
46998
  this.hide();
46757
46999
  return false;
46758
47000
  }
@@ -46805,7 +47047,8 @@ const keyBInd = '__jodit-resizer_binded';
46805
47047
  const className = this.handle.className;
46806
47048
  let new_w, new_h;
46807
47049
  const uar = this.j.o.resizer.useAspectRatio;
46808
- if (!this.isAltMode && (uar === true || uar && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(this.element, uar))) {
47050
+ const keepRatio = !this.isAltMode && (uar === true || Boolean(uar && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(this.element, uar)));
47051
+ if (keepRatio) {
46809
47052
  if (diff_x) {
46810
47053
  new_w = this.width + (className.match(/left/) ? -1 : 1) * diff_x;
46811
47054
  new_h = Math.round(new_w / this.ratio);
@@ -46828,7 +47071,7 @@ const keyBInd = '__jodit-resizer_binded';
46828
47071
  this.applySize(this.element, 'width', '100%');
46829
47072
  }
46830
47073
  }
46831
- if (new_h > this.j.o.resizer.min_height) {
47074
+ if (new_h > this.j.o.resizer.min_height && !(keepRatio && heightFollowsWidth(this.element))) {
46832
47075
  this.applySize(this.element, 'height', new_h);
46833
47076
  }
46834
47077
  this.updateSize();
@@ -46874,10 +47117,19 @@ const keyBInd = '__jodit-resizer_binded';
46874
47117
  (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.css)(element, key, value);
46875
47118
  }
46876
47119
  }
47120
+ /**
47121
+ * The framed element can go with a wrapper round it, keeping its parent
47122
+ */ get isElementInEditor() {
47123
+ return Boolean(this.element && this.j.editor.contains(this.element));
47124
+ }
46877
47125
  onDelete(e) {
46878
47126
  if (!this.element) {
46879
47127
  return;
46880
47128
  }
47129
+ if (!this.isElementInEditor) {
47130
+ this.hide();
47131
+ return;
47132
+ }
46881
47133
  if (this.element.tagName !== 'JODIT') {
46882
47134
  this.j.s.select(this.element);
46883
47135
  } else {
@@ -46888,7 +47140,7 @@ const keyBInd = '__jodit-resizer_binded';
46888
47140
  }
46889
47141
  __onChangeEditor() {
46890
47142
  if (this.isShown) {
46891
- if (!this.element || !this.element.parentNode) {
47143
+ if (!this.isElementInEditor) {
46892
47144
  this.hide();
46893
47145
  } else {
46894
47146
  this.updateSize();
@@ -46986,9 +47238,13 @@ const keyBInd = '__jodit-resizer_binded';
46986
47238
  return;
46987
47239
  }
46988
47240
  this.isShown = true;
47241
+ if (this.layer.parentNode !== this.j.workplace) {
47242
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.markOwner)(this.j, this.layer);
47243
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(this.j.workplace, this.layer);
47244
+ }
46989
47245
  if (!this.rect.parentNode) {
46990
47246
  (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.markOwner)(this.j, this.rect);
46991
- _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(this.j.workplace, this.rect);
47247
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(this.layer, this.rect);
46992
47248
  }
46993
47249
  if (this.j.isFullSize) {
46994
47250
  (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());
@@ -47008,6 +47264,7 @@ const keyBInd = '__jodit-resizer_binded';
47008
47264
  }
47009
47265
  beforeDestruct(jodit) {
47010
47266
  this.hide();
47267
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove(this.layer);
47011
47268
  _core_global_js__WEBPACK_IMPORTED_MODULE_3__.eventEmitter.off('hideHelpers', this.hide);
47012
47269
  jodit.e.off(this.j.ow, '.resizer').off('.resizer');
47013
47270
  }
@@ -47029,6 +47286,8 @@ const keyBInd = '__jodit-resizer_binded';
47029
47286
  <div class="jodit-resizer__bottom-left"></div>
47030
47287
  <span>100x100</span>
47031
47288
  </div>`);
47289
+ // Clips the frame to the workplace, without the frame making it scroll
47290
+ this.layer = this.j.c.div('jodit-resizer-layer');
47032
47291
  this.sizeViewer = this.rect.getElementsByTagName('span')[0];
47033
47292
  this.pointerX = 0;
47034
47293
  this.pointerY = 0;
@@ -47043,6 +47302,9 @@ const keyBInd = '__jodit-resizer_binded';
47043
47302
  if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(this.element, 'img') && !this.element.complete) {
47044
47303
  this.j.e.one(this.element, 'load', this.updateSize);
47045
47304
  }
47305
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(this.element, 'video') && this.element.readyState < HTMLMediaElement.HAVE_METADATA) {
47306
+ this.j.e.one(this.element, 'loadedmetadata', this.updateSize);
47307
+ }
47046
47308
  }
47047
47309
  };
47048
47310
  this.updateSize = ()=>{
@@ -53360,9 +53622,725 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_4__.pluginSystem.add('toolbarNavigation
53360
53622
 
53361
53623
  /***/ }),
53362
53624
 
53363
- /***/ 14984:
53625
+ /***/ 54426:
53626
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
53627
+
53628
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
53629
+ /* harmony export */ editedMedia: function() { return /* binding */ editedMedia; },
53630
+ /* harmony export */ ownSize: function() { return /* binding */ ownSize; },
53631
+ /* harmony export */ readValues: function() { return /* binding */ readValues; }
53632
+ /* harmony export */ });
53633
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
53634
+ /* harmony import */ var _core_helpers_checker_is_numeric_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29807);
53635
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29960);
53636
+ /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(41180);
53637
+ /* harmony import */ var _image_properties_utils_utils_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(14415);
53638
+ /*!
53639
+ * Jodit Editor (https://xdsoft.net/jodit/)
53640
+ * Released under MIT see LICENSE.txt in the project root for license information.
53641
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
53642
+ */
53643
+
53644
+
53645
+
53646
+
53647
+ const mediaSelector = 'video, audio, iframe';
53648
+ /**
53649
+ * The media `target` is, or holds as its wrapper (`jodit-media`, the resizer's
53650
+ * `jodit` for an embed, or one from `mediaWrappers`)
53651
+ * @private
53652
+ */ function editedMedia(target) {
53653
+ return target.matches(mediaSelector) ? target : target.querySelector(mediaSelector);
53654
+ }
53655
+ /**
53656
+ * The size `media` is given, inline or by its attribute
53657
+ * @private
53658
+ */ function ownSize(media, key) {
53659
+ 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) || '';
53660
+ }
53661
+ const toNumber = (value)=>parseFloat(value.toString());
53662
+ /**
53663
+ * Read the media's values into the state
53664
+ * @private
53665
+ */ function readValues(state) {
53666
+ const { media, values } = state;
53667
+ const width = ownSize(media, 'width');
53668
+ const height = ownSize(media, 'height');
53669
+ values.width = width ? (0,_image_properties_utils_utils_js__WEBPACK_IMPORTED_MODULE_4__.normalSizeFromString)(width) : media.offsetWidth;
53670
+ values.height = height ? (0,_image_properties_utils_utils_js__WEBPACK_IMPORTED_MODULE_4__.normalSizeFromString)(height) : '';
53671
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(media, 'video') && media.videoWidth) {
53672
+ state.ratio = media.videoWidth / media.videoHeight;
53673
+ } 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)) {
53674
+ state.ratio = toNumber(values.width) / toNumber(values.height);
53675
+ } else {
53676
+ state.ratio = media.offsetWidth / media.offsetHeight || 1;
53677
+ }
53678
+ // One with no height takes it from its width
53679
+ if (!height && (0,_core_helpers_checker_is_numeric_js__WEBPACK_IMPORTED_MODULE_1__.isNumeric)(values.width)) {
53680
+ values.height = Math.round(toNumber(values.width) / state.ratio);
53681
+ }
53682
+ 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);
53683
+ values.poster = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_2__.attr)(media, 'poster') || '';
53684
+ values.autoplay = media.hasAttribute('autoplay');
53685
+ values.loop = media.hasAttribute('loop');
53686
+ // Autoplay's own: turning it off gives the sound back
53687
+ values.muted = media.hasAttribute('muted') && !values.autoplay;
53688
+ // Without Autoplay it keeps its controls, or it could never be played
53689
+ values.controls = media.hasAttribute('controls') || !values.autoplay;
53690
+ }
53691
+
53692
+
53693
+ /***/ }),
53694
+
53695
+ /***/ 96170:
53696
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
53697
+
53698
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
53699
+ /* harmony export */ replaceMedia: function() { return /* binding */ replaceMedia; }
53700
+ /* harmony export */ });
53701
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
53702
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29960);
53703
+ /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(41180);
53704
+ /* harmony import */ var _readers_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(54426);
53705
+ /* harmony import */ var _writers_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(44909);
53706
+ /*!
53707
+ * Jodit Editor (https://xdsoft.net/jodit/)
53708
+ * Released under MIT see LICENSE.txt in the project root for license information.
53709
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
53710
+ */
53711
+
53712
+
53713
+
53714
+
53715
+ /**
53716
+ * Give `media`, in `outer`, the classes, inline styles, size and playback
53717
+ * settings of `old`, in `oldOuter`. It keeps its own source and poster.
53718
+ */ function takeOver(j, oldOuter, old, outer, media) {
53719
+ var _a;
53720
+ const state = {
53721
+ target: oldOuter,
53722
+ media: old,
53723
+ ratio: 1,
53724
+ sizeIsLocked: true,
53725
+ values: {
53726
+ width: '',
53727
+ height: '',
53728
+ poster: '',
53729
+ autoplay: false,
53730
+ loop: false,
53731
+ muted: false,
53732
+ controls: true
53733
+ }
53734
+ };
53735
+ (0,_readers_js__WEBPACK_IMPORTED_MODULE_3__.readValues)(state);
53736
+ const pairs = [
53737
+ [
53738
+ old,
53739
+ media
53740
+ ]
53741
+ ];
53742
+ // A wrapper kept in the content, which holds the alignment
53743
+ if (oldOuter !== old && outer !== media && oldOuter.nodeName === outer.nodeName) {
53744
+ pairs.push([
53745
+ oldOuter,
53746
+ outer
53747
+ ]);
53748
+ }
53749
+ pairs.forEach(([from, to])=>{
53750
+ [
53751
+ 'class',
53752
+ 'style'
53753
+ ].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)));
53754
+ });
53755
+ // A video's size is CSS and an embed's its attributes, so the writer sizes
53756
+ // one that's a different element
53757
+ if (old.nodeName !== media.nodeName) {
53758
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(media, {
53759
+ width: null,
53760
+ height: null
53761
+ });
53762
+ if (!((_a = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(media, 'style')) === null || _a === void 0 ? void 0 : _a.trim())) {
53763
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(media, 'style', null);
53764
+ }
53765
+ }
53766
+ state.media = media;
53767
+ state.values.poster = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(media, 'poster') || '';
53768
+ (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')));
53769
+ }
53770
+ /**
53771
+ * Run `insert`, which inserts media at the cursor, with the cursor after
53772
+ * `replaced`, and put what it inserts in place of `replaced`
53773
+ * @private
53774
+ */ function replaceMedia(j, replaced, insert) {
53775
+ const inserted = [];
53776
+ const collect = (node)=>{
53777
+ inserted.push(node);
53778
+ };
53779
+ j.history.snapshot.transaction(()=>{
53780
+ j.s.focus();
53781
+ j.s.setCursorAfter(replaced);
53782
+ j.e.on('afterInsertNode', collect);
53783
+ try {
53784
+ insert();
53785
+ } finally{
53786
+ j.e.off('afterInsertNode', collect);
53787
+ }
53788
+ const [outer] = inserted;
53789
+ if (!_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isHTMLElement(outer)) {
53790
+ return;
53791
+ }
53792
+ const old = (0,_readers_js__WEBPACK_IMPORTED_MODULE_3__.editedMedia)(replaced);
53793
+ const media = (0,_readers_js__WEBPACK_IMPORTED_MODULE_3__.editedMedia)(outer);
53794
+ if (old && media) {
53795
+ takeOver(j, replaced, old, outer, media);
53796
+ }
53797
+ // The resizer can have put an embed in its own wrapper already
53798
+ 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;
53799
+ // Where the old one was, since media Jodit counts as blocks can be put
53800
+ // after the paragraph
53801
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.before(replaced, placed);
53802
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(replaced);
53803
+ j.s.setCursorAfter(placed);
53804
+ });
53805
+ j.synchronizeValues();
53806
+ j.e.fire('closeAllPopups');
53807
+ }
53808
+
53809
+
53810
+ /***/ }),
53811
+
53812
+ /***/ 27828:
53813
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
53814
+
53815
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
53816
+ /* harmony export */ UIVideoPropertiesForm: function() { return /* binding */ UIVideoPropertiesForm; }
53817
+ /* harmony export */ });
53818
+ /* harmony import */ var _core_decorators_component_component_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(87325);
53819
+ /* harmony import */ var _core_decorators_hook_hook_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(97357);
53820
+ /* harmony import */ var _core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(37133);
53821
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2748);
53822
+ /* harmony import */ var _core_helpers_checker_is_numeric_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(29807);
53823
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(29960);
53824
+ /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(41180);
53825
+ /* harmony import */ var _core_ui_element_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(48538);
53826
+ /* harmony import */ var _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(12153);
53827
+ /*!
53828
+ * Jodit Editor (https://xdsoft.net/jodit/)
53829
+ * Released under MIT see LICENSE.txt in the project root for license information.
53830
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
53831
+ */ var __decorate = undefined && undefined.__decorate || function(decorators, target, key, desc) {
53832
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
53833
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
53834
+ 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;
53835
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
53836
+ };
53837
+
53838
+
53839
+
53840
+
53841
+
53842
+
53843
+
53844
+
53845
+
53846
+ const flags = {
53847
+ autoplay: 'Autoplay',
53848
+ loop: 'Loop',
53849
+ muted: 'Muted',
53850
+ controls: 'Controls'
53851
+ };
53852
+ const checkbox = ([flag, label])=>`<label class="jodit_vertical_middle">
53853
+ <input type="checkbox" class="jodit-checkbox &__${flag}"/>
53854
+ <span>~${label}~</span>
53855
+ </label>`;
53856
+ /** @private */ let UIVideoPropertiesForm = class UIVideoPropertiesForm extends _core_ui_element_js__WEBPACK_IMPORTED_MODULE_7__.UIElement {
53857
+ className() {
53858
+ return 'UIVideoPropertiesForm';
53859
+ }
53860
+ render() {
53861
+ return `<form>
53862
+ <div class="jodit-form__group &__previewBox">
53863
+ <img class="&__preview" alt=""/>
53864
+ </div>
53865
+ <div class="jodit-form__group &__sizes">
53866
+ <input type="text" class="jodit-input &__width" placeholder="~Width~" aria-label="~Width~"/>
53867
+ <a class="&__lockSize">*lock*</a>
53868
+ <input type="text" class="jodit-input &__height" placeholder="~Height~" aria-label="~Height~"/>
53869
+ </div>
53870
+ <div class="jodit-form__group &__editPoster">
53871
+ <label>~Poster~</label>
53872
+ <div class="jodit-input_group">
53873
+ <input type="text" class="jodit-input &__poster" placeholder="https://"/>
53874
+ <div class="jodit-input_group-buttons">
53875
+ <a class="jodit-button &__changePoster" title="~Upload~">*image*</a>
53876
+ <a class="jodit-button &__removePoster" title="~Remove~">*bin*</a>
53877
+ </div>
53878
+ </div>
53879
+ </div>
53880
+ <div class="jodit-form__group &__playback">
53881
+ ${Object.entries(flags).map(checkbox).join('')}
53882
+ </div>
53883
+ </form>`;
53884
+ }
53885
+ input(name) {
53886
+ return this.getElm(name);
53887
+ }
53888
+ show(name, shown) {
53889
+ ;(0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(this.getElm(name), 'display', shown ? null : 'none');
53890
+ }
53891
+ /**
53892
+ * A video has every field, an embed only its size, and audio only its
53893
+ * playback settings
53894
+ */ onStateMediaChange() {
53895
+ const { media } = this.state;
53896
+ this.show('editPoster', _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_3__.Dom.isTag(media, 'video'));
53897
+ this.show('sizes', !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_3__.Dom.isTag(media, 'audio'));
53898
+ this.show('playback', !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_3__.Dom.isTag(media, 'iframe'));
53899
+ this.showPreview();
53900
+ }
53901
+ // A video's poster, when it has one
53902
+ showPreview() {
53903
+ const { media, values } = this.state;
53904
+ const shown = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_3__.Dom.isTag(media, 'video') && Boolean(values.poster);
53905
+ this.show('previewBox', shown);
53906
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_5__.attr)(this.getElm('preview'), 'src', shown ? values.poster : null);
53907
+ }
53908
+ hideChangePoster() {
53909
+ const { uploader, filebrowser } = this.j.o;
53910
+ // What FileSelectorWidget offers
53911
+ const canUpload = uploader.showTabInFileSelector !== false && Boolean(uploader.url || uploader.insertImageAsBase64URI || uploader.customUploadFunction);
53912
+ const canBrowse = Boolean(filebrowser.ajax.url || filebrowser.items.url);
53913
+ this.show('changePoster', canUpload || canBrowse);
53914
+ }
53915
+ onStatePosterChange() {
53916
+ const { poster } = this.state.values;
53917
+ this.input('poster').value = poster;
53918
+ this.show('removePoster', Boolean(poster));
53919
+ this.showPreview();
53920
+ }
53921
+ onPosterChange() {
53922
+ this.state.values.poster = this.input('poster').value;
53923
+ }
53924
+ onChangePosterClick(e) {
53925
+ this.handlers.openPosterPopup(this.getElm('changePoster'));
53926
+ e.stopPropagation();
53927
+ }
53928
+ onRemovePosterClick() {
53929
+ this.state.values.poster = '';
53930
+ }
53931
+ onStateSizeIsLockedChange() {
53932
+ this.getElm('lockSize').innerHTML = _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_8__.Icon.get(this.state.sizeIsLocked ? 'lock' : 'unlock');
53933
+ }
53934
+ onLockSizeClick() {
53935
+ const { state } = this;
53936
+ const { values } = state;
53937
+ state.sizeIsLocked = !state.sizeIsLocked;
53938
+ if (state.sizeIsLocked && (0,_core_helpers_checker_is_numeric_js__WEBPACK_IMPORTED_MODULE_4__.isNumeric)(values.width)) {
53939
+ values.height = Math.round(parseFloat(values.width.toString()) / state.ratio);
53940
+ }
53941
+ }
53942
+ onStateSizeChange() {
53943
+ const { values } = this.state;
53944
+ // Not the field being typed in
53945
+ [
53946
+ 'width',
53947
+ 'height'
53948
+ ].forEach((key)=>{
53949
+ const input = this.input(key);
53950
+ if (input !== this.j.od.activeElement) {
53951
+ input.value = values[key].toString();
53952
+ }
53953
+ });
53954
+ }
53955
+ onSizeInput(e) {
53956
+ const { state } = this;
53957
+ const { values } = state;
53958
+ // Both read first, since setting one rewrites the other's field
53959
+ const width = this.input('width').value;
53960
+ const height = this.input('height').value;
53961
+ 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)) {
53962
+ values.width = width;
53963
+ values.height = height;
53964
+ return;
53965
+ }
53966
+ const w = parseFloat(width);
53967
+ const h = parseFloat(height);
53968
+ if (e.target === this.input('width')) {
53969
+ values.width = w;
53970
+ values.height = Math.round(w / state.ratio);
53971
+ } else {
53972
+ values.width = Math.round(h * state.ratio);
53973
+ values.height = h;
53974
+ }
53975
+ }
53976
+ /**
53977
+ * Autoplay mutes it, and it keeps its controls unless it autoplays
53978
+ */ onStateFlagsChange() {
53979
+ const { values } = this.state;
53980
+ this.input('autoplay').checked = values.autoplay;
53981
+ this.input('loop').checked = values.loop;
53982
+ this.input('muted').checked = values.muted || values.autoplay;
53983
+ this.input('muted').disabled = values.autoplay;
53984
+ this.input('controls').checked = values.controls || !values.autoplay;
53985
+ this.input('controls').disabled = !values.autoplay;
53986
+ }
53987
+ onFlagChange(e) {
53988
+ Object.keys(flags).forEach((flag)=>{
53989
+ const input = this.input(flag);
53990
+ if (e.target === input) {
53991
+ this.state.values[flag] = input.checked;
53992
+ }
53993
+ });
53994
+ }
53995
+ constructor(jodit, state, handlers){
53996
+ super(jodit);
53997
+ this.state = state;
53998
+ this.handlers = handlers;
53999
+ }
54000
+ };
54001
+ __decorate([
54002
+ (0,_core_decorators_hook_hook_js__WEBPACK_IMPORTED_MODULE_1__.hook)('ready'),
54003
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)('state.media')
54004
+ ], UIVideoPropertiesForm.prototype, "onStateMediaChange", null);
54005
+ __decorate([
54006
+ (0,_core_decorators_hook_hook_js__WEBPACK_IMPORTED_MODULE_1__.hook)('ready')
54007
+ ], UIVideoPropertiesForm.prototype, "hideChangePoster", null);
54008
+ __decorate([
54009
+ (0,_core_decorators_hook_hook_js__WEBPACK_IMPORTED_MODULE_1__.hook)('ready'),
54010
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)('state.values.poster')
54011
+ ], UIVideoPropertiesForm.prototype, "onStatePosterChange", null);
54012
+ __decorate([
54013
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)('poster:change')
54014
+ ], UIVideoPropertiesForm.prototype, "onPosterChange", null);
54015
+ __decorate([
54016
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)('changePoster:click')
54017
+ ], UIVideoPropertiesForm.prototype, "onChangePosterClick", null);
54018
+ __decorate([
54019
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)('removePoster:click')
54020
+ ], UIVideoPropertiesForm.prototype, "onRemovePosterClick", null);
54021
+ __decorate([
54022
+ (0,_core_decorators_hook_hook_js__WEBPACK_IMPORTED_MODULE_1__.hook)('ready'),
54023
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)('state.sizeIsLocked')
54024
+ ], UIVideoPropertiesForm.prototype, "onStateSizeIsLockedChange", null);
54025
+ __decorate([
54026
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)('lockSize:click')
54027
+ ], UIVideoPropertiesForm.prototype, "onLockSizeClick", null);
54028
+ __decorate([
54029
+ (0,_core_decorators_hook_hook_js__WEBPACK_IMPORTED_MODULE_1__.hook)('ready'),
54030
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)([
54031
+ 'state.values.width',
54032
+ 'state.values.height'
54033
+ ])
54034
+ ], UIVideoPropertiesForm.prototype, "onStateSizeChange", null);
54035
+ __decorate([
54036
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)([
54037
+ 'width:input',
54038
+ 'height:input',
54039
+ 'width:change',
54040
+ 'height:change'
54041
+ ])
54042
+ ], UIVideoPropertiesForm.prototype, "onSizeInput", null);
54043
+ __decorate([
54044
+ (0,_core_decorators_hook_hook_js__WEBPACK_IMPORTED_MODULE_1__.hook)('ready'),
54045
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)(Object.keys(flags).map((flag)=>`state.values.${flag}`))
54046
+ ], UIVideoPropertiesForm.prototype, "onStateFlagsChange", null);
54047
+ __decorate([
54048
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_2__.watch)(Object.keys(flags).map((flag)=>`${flag}:change`))
54049
+ ], UIVideoPropertiesForm.prototype, "onFlagChange", null);
54050
+ UIVideoPropertiesForm = __decorate([
54051
+ _core_decorators_component_component_js__WEBPACK_IMPORTED_MODULE_0__.component
54052
+ ], UIVideoPropertiesForm);
54053
+
54054
+
54055
+
54056
+ /***/ }),
54057
+
54058
+ /***/ 96139:
53364
54059
  /***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) {
53365
54060
 
54061
+ /* unused harmony export videoProperties */
54062
+ /* harmony import */ var _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(65478);
54063
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2748);
54064
+ /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(580);
54065
+ /* harmony import */ var _core_helpers_checker_is_array_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(68345);
54066
+ /* harmony import */ var _core_helpers_size_position_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5700);
54067
+ /* harmony import */ var _core_helpers_utils_utils_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(37790);
54068
+ /* harmony import */ var _core_plugin_plugin_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(20356);
54069
+ /* harmony import */ var _core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(62843);
54070
+ /* harmony import */ var _core_ui_popup_popup_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(56917);
54071
+ /* harmony import */ var _modules_widget_file_selector_file_selector_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(34793);
54072
+ /* harmony import */ var _ui_ui_video_form_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(27828);
54073
+ /* harmony import */ var _readers_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(54426);
54074
+ /* harmony import */ var _replace_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(96170);
54075
+ /* harmony import */ var _writers_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(44909);
54076
+ /* harmony import */ var _video_config_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(14984);
54077
+ /*!
54078
+ * Jodit Editor (https://xdsoft.net/jodit/)
54079
+ * Released under MIT see LICENSE.txt in the project root for license information.
54080
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
54081
+ */ var __decorate = undefined && undefined.__decorate || function(decorators, target, key, desc) {
54082
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
54083
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
54084
+ 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;
54085
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
54086
+ };
54087
+
54088
+
54089
+
54090
+
54091
+
54092
+
54093
+
54094
+
54095
+
54096
+
54097
+
54098
+
54099
+
54100
+
54101
+
54102
+ /**
54103
+ * Show a dialog with the size, poster and playback settings of a video, an
54104
+ * embed or audio. The media popup's Edit button opens it:
54105
+ *
54106
+ * ```javascript
54107
+ * editor.events.fire('openVideoProperties', video);
54108
+ * ```
54109
+ */ class videoProperties extends _core_plugin_plugin_js__WEBPACK_IMPORTED_MODULE_6__.Plugin {
54110
+ get __size() {
54111
+ const { width, height } = this.state.values;
54112
+ return `${width}x${height}`;
54113
+ }
54114
+ get form() {
54115
+ return new _ui_ui_video_form_js__WEBPACK_IMPORTED_MODULE_10__.UIVideoPropertiesForm(this.j, this.state, {
54116
+ openPosterPopup: (target)=>this.__openPosterPopup(target)
54117
+ });
54118
+ }
54119
+ get dialog() {
54120
+ const { j } = this;
54121
+ const dialog = j.dlg({
54122
+ minWidth: Math.min(400, screen.width),
54123
+ buttons: [
54124
+ 'dialog.close'
54125
+ ]
54126
+ });
54127
+ const buttons = this.__buttons;
54128
+ buttons.check.onAction(()=>{
54129
+ (0,_writers_js__WEBPACK_IMPORTED_MODULE_13__.applyValues)(j, this.state, this.__size !== this.__readSize);
54130
+ j.synchronizeValues();
54131
+ dialog.close();
54132
+ });
54133
+ buttons.remove.onAction(()=>{
54134
+ j.s.removeNode(this.state.target);
54135
+ dialog.close();
54136
+ });
54137
+ buttons.cancel.onAction(()=>{
54138
+ dialog.close();
54139
+ });
54140
+ dialog.setContent(this.form);
54141
+ dialog.setFooter([
54142
+ [
54143
+ buttons.cancel,
54144
+ buttons.remove
54145
+ ],
54146
+ buttons.check
54147
+ ]);
54148
+ (0,_core_helpers_utils_utils_js__WEBPACK_IMPORTED_MODULE_5__.markOwner)(j, dialog.container);
54149
+ return dialog;
54150
+ }
54151
+ get __buttons() {
54152
+ const { j } = this;
54153
+ return {
54154
+ check: (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_7__.Button)(j, 'ok', 'Apply', 'primary'),
54155
+ remove: (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_7__.Button)(j, 'bin', 'Delete'),
54156
+ cancel: (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_7__.Button)(j, 'cancel', 'Cancel')
54157
+ };
54158
+ }
54159
+ /**
54160
+ * Open the dialog for the media `target` is, or is the wrapper of
54161
+ */ open(target) {
54162
+ const media = (0,_readers_js__WEBPACK_IMPORTED_MODULE_11__.editedMedia)(target);
54163
+ if (!media) {
54164
+ return;
54165
+ }
54166
+ this.state.target = target;
54167
+ this.state.media = media;
54168
+ (0,_readers_js__WEBPACK_IMPORTED_MODULE_11__.readValues)(this.state);
54169
+ this.__readSize = this.__size;
54170
+ this.dialog.setHeader(this.j.i18n(_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(media, 'audio') ? 'Audio properties' : 'Video properties'));
54171
+ this.dialog.open().setModal(true).setPosition();
54172
+ }
54173
+ /**
54174
+ * The video popup's tabs for the media popup's Replace: what they insert
54175
+ * takes the place of the media `target` is, or is the wrapper of
54176
+ */ onGenerateReplaceVideoTabs(target, close) {
54177
+ 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));
54178
+ }
54179
+ __openPosterPopup(button) {
54180
+ const { j, state } = this;
54181
+ const popup = new _core_ui_popup_popup_js__WEBPACK_IMPORTED_MODULE_8__.Popup(this.dialog);
54182
+ const close = ()=>{
54183
+ popup.close();
54184
+ popup.destruct();
54185
+ };
54186
+ popup.setContent((0,_modules_widget_file_selector_file_selector_js__WEBPACK_IMPORTED_MODULE_9__.FileSelectorWidget)(j, {
54187
+ upload: (data)=>{
54188
+ if (data.files && data.files.length) {
54189
+ state.values.poster = data.baseurl + data.files[0];
54190
+ }
54191
+ close();
54192
+ },
54193
+ filebrowser: (data)=>{
54194
+ if ((0,_core_helpers_checker_is_array_js__WEBPACK_IMPORTED_MODULE_3__.isArray)(data.files) && data.files.length) {
54195
+ state.values.poster = data.files[0];
54196
+ close();
54197
+ }
54198
+ }
54199
+ }, null, close)).open(()=>(0,_core_helpers_size_position_js__WEBPACK_IMPORTED_MODULE_4__.position)(button));
54200
+ }
54201
+ /** @override */ afterInit() {}
54202
+ /** @override */ beforeDestruct() {
54203
+ var _a, _b, _c;
54204
+ Object.values((_a = (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.cached)(this, '__buttons')) !== null && _a !== void 0 ? _a : {}).forEach((b)=>b.destruct());
54205
+ (_b = (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.cached)(this, 'dialog')) === null || _b === void 0 ? void 0 : _b.destruct();
54206
+ (_c = (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.cached)(this, 'form')) === null || _c === void 0 ? void 0 : _c.destruct();
54207
+ }
54208
+ constructor(){
54209
+ super(...arguments);
54210
+ this.state = {
54211
+ target: this.j.c.element('video'),
54212
+ media: this.j.c.element('video'),
54213
+ ratio: 1,
54214
+ sizeIsLocked: true,
54215
+ values: {
54216
+ width: '',
54217
+ height: '',
54218
+ poster: '',
54219
+ autoplay: false,
54220
+ loop: false,
54221
+ muted: false,
54222
+ controls: true
54223
+ }
54224
+ };
54225
+ // The size as it was read, so an unchanged one isn't written
54226
+ this.__readSize = '';
54227
+ }
54228
+ }
54229
+ __decorate([
54230
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.cache
54231
+ ], videoProperties.prototype, "form", null);
54232
+ __decorate([
54233
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.cache
54234
+ ], videoProperties.prototype, "dialog", null);
54235
+ __decorate([
54236
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.cache
54237
+ ], videoProperties.prototype, "__buttons", null);
54238
+ __decorate([
54239
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)(':openVideoProperties')
54240
+ ], videoProperties.prototype, "open", null);
54241
+ __decorate([
54242
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)(':generateReplaceVideoTabs')
54243
+ ], videoProperties.prototype, "onGenerateReplaceVideoTabs", null);
54244
+ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('videoProperties', videoProperties);
54245
+
54246
+
54247
+ /***/ }),
54248
+
54249
+ /***/ 44909:
54250
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
54251
+
54252
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
54253
+ /* harmony export */ applyValues: function() { return /* binding */ applyValues; }
54254
+ /* harmony export */ });
54255
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
54256
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29960);
54257
+ /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(41180);
54258
+ /* harmony import */ var _readers_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(54426);
54259
+ /* harmony import */ var _image_properties_utils_utils_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(14415);
54260
+ /*!
54261
+ * Jodit Editor (https://xdsoft.net/jodit/)
54262
+ * Released under MIT see LICENSE.txt in the project root for license information.
54263
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
54264
+ */
54265
+
54266
+
54267
+
54268
+
54269
+ const cssSize = (value)=>value === '' ? null : (0,_image_properties_utils_utils_js__WEBPACK_IMPORTED_MODULE_4__.normalSizeToString)(value);
54270
+ // Sizes go on as the resizer writes them: an embed takes them as attributes,
54271
+ // and a video as CSS, without a height while its ratio is kept, if it had none
54272
+ function applySize(j, state) {
54273
+ var _a;
54274
+ const { media, values } = state;
54275
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(media, 'iframe')) {
54276
+ [
54277
+ 'width',
54278
+ 'height'
54279
+ ].forEach((key)=>{
54280
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(media, key, values[key] === '' ? null : values[key]);
54281
+ if ((0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__.cssInline)(media, key)) {
54282
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(media, key, cssSize(values[key]));
54283
+ }
54284
+ });
54285
+ // The resizer's frame for an embed
54286
+ const wrapper = media.parentElement;
54287
+ if (wrapper && (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(wrapper, 'data-jodit_iframe_wrapper')) {
54288
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(wrapper, {
54289
+ width: media.offsetWidth,
54290
+ height: media.offsetHeight
54291
+ });
54292
+ }
54293
+ return;
54294
+ }
54295
+ const heightFollowsWidth = state.sizeIsLocked && !(0,_readers_js__WEBPACK_IMPORTED_MODULE_3__.ownSize)(media, 'height');
54296
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(media, {
54297
+ width: cssSize(values.width),
54298
+ height: heightFollowsWidth ? null : cssSize(values.height)
54299
+ });
54300
+ if (!((_a = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(media, 'style')) === null || _a === void 0 ? void 0 : _a.trim())) {
54301
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(media, 'style', null);
54302
+ }
54303
+ j.e.fire(media, 'changesize');
54304
+ }
54305
+ function setFlag(media, name, on) {
54306
+ if (media.hasAttribute(name) !== on) {
54307
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(media, name, on ? '' : null);
54308
+ }
54309
+ }
54310
+ /**
54311
+ * Apply the dialog's values to the media
54312
+ * @private
54313
+ */ function applyValues(j, state, sizeChanged) {
54314
+ const { media, values } = state;
54315
+ if (sizeChanged && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(media, 'audio')) {
54316
+ applySize(j, state);
54317
+ }
54318
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(media, 'iframe')) {
54319
+ return;
54320
+ }
54321
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(media, 'video')) {
54322
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(media, 'poster', values.poster || null);
54323
+ }
54324
+ // Browsers only autoplay muted media, and playsinline keeps an iPhone from
54325
+ // playing it full screen
54326
+ setFlag(media, 'autoplay', values.autoplay);
54327
+ setFlag(media, 'muted', values.autoplay || values.muted);
54328
+ setFlag(media, 'loop', values.loop);
54329
+ setFlag(media, 'controls', values.controls || !values.autoplay);
54330
+ if (values.autoplay && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(media, 'video')) {
54331
+ setFlag(media, 'playsinline', true);
54332
+ }
54333
+ }
54334
+
54335
+
54336
+ /***/ }),
54337
+
54338
+ /***/ 14984:
54339
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
54340
+
54341
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
54342
+ /* harmony export */ videoTabs: function() { return /* binding */ videoTabs; }
54343
+ /* harmony export */ });
53366
54344
  /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(21537);
53367
54345
  /* harmony import */ var _core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(62843);
53368
54346
  /* harmony import */ var _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2525);
@@ -53397,77 +54375,88 @@ _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.video = {
53397
54375
  defaultHandlerSuccess: insertVideos
53398
54376
  };
53399
54377
  _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_3__.Icon.set('video', _video_svg_js__WEBPACK_IMPORTED_MODULE_6__["default"]);
53400
- _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.video = {
53401
- popup: (jodit, current, close)=>{
53402
- const formLink = new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIForm(jodit, [
53403
- new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIBlock(jodit, [
53404
- new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIInput(jodit, {
53405
- name: 'url',
53406
- required: true,
53407
- label: 'URL',
53408
- placeholder: 'https://',
53409
- validators: [
53410
- 'url'
53411
- ]
53412
- })
53413
- ]),
53414
- new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIBlock(jodit, [
53415
- (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_1__.Button)(jodit, '', 'Insert', 'primary').onAction(()=>formLink.submit())
53416
- ])
53417
- ]), formCode = new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIForm(jodit, [
53418
- new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIBlock(jodit, [
53419
- new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UITextArea(jodit, {
53420
- name: 'code',
53421
- required: true,
53422
- label: 'Embed code'
53423
- })
53424
- ]),
53425
- new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIBlock(jodit, [
53426
- (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_1__.Button)(jodit, '', 'Insert', 'primary').onAction(()=>formCode.submit())
53427
- ])
53428
- ]), tabs = [], insertCode = (code)=>{
53429
- jodit.s.restore();
53430
- jodit.s.insertHTML((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_0__.prepareEmbedCode)(jodit, code));
53431
- close();
53432
- };
54378
+ /**
54379
+ * The video popup's tabs: Upload, when the uploader is configured, then Link
54380
+ * and Code. `insert` runs what a tab inserts, which by default goes in at the
54381
+ * selection the popup was opened with.
54382
+ */ function videoTabs(jodit, close, insert) {
54383
+ const run = insert !== null && insert !== void 0 ? insert : (fn)=>{
54384
+ jodit.s.restore();
54385
+ fn();
54386
+ };
54387
+ const formLink = new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIForm(jodit, [
54388
+ new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIBlock(jodit, [
54389
+ new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIInput(jodit, {
54390
+ name: 'url',
54391
+ required: true,
54392
+ label: 'URL',
54393
+ placeholder: 'https://',
54394
+ validators: [
54395
+ 'url'
54396
+ ]
54397
+ })
54398
+ ]),
54399
+ new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIBlock(jodit, [
54400
+ (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_1__.Button)(jodit, '', 'Insert', 'primary').onAction(()=>formLink.submit())
54401
+ ])
54402
+ ]), formCode = new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIForm(jodit, [
54403
+ new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIBlock(jodit, [
54404
+ new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UITextArea(jodit, {
54405
+ name: 'code',
54406
+ required: true,
54407
+ label: 'Embed code'
54408
+ })
54409
+ ]),
54410
+ new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_2__.UIBlock(jodit, [
54411
+ (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_1__.Button)(jodit, '', 'Insert', 'primary').onAction(()=>formCode.submit())
54412
+ ])
54413
+ ]), tabs = [], insertCode = (code)=>{
54414
+ run(()=>jodit.s.insertHTML((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_0__.prepareEmbedCode)(jodit, code)));
54415
+ close();
54416
+ };
54417
+ if (!insert) {
53433
54418
  jodit.s.save();
53434
- const { uploader } = jodit.o;
53435
- // Base64 alone would put whole video files into the content
53436
- if (uploader.showTabInFileSelector !== false && (uploader.url || uploader.customUploadFunction)) {
53437
- tabs.push((0,_modules_widget_index_js__WEBPACK_IMPORTED_MODULE_5__.UploadTab)(jodit, (data)=>{
54419
+ }
54420
+ const { uploader } = jodit.o;
54421
+ // Base64 alone would put whole video files into the content
54422
+ if (uploader.showTabInFileSelector !== false && (uploader.url || uploader.customUploadFunction)) {
54423
+ tabs.push((0,_modules_widget_index_js__WEBPACK_IMPORTED_MODULE_5__.UploadTab)(jodit, (data)=>{
54424
+ run(()=>{
53438
54425
  var _a, _b;
53439
- jodit.s.restore();
53440
- ((_b = (_a = jodit.o.video) === null || _a === void 0 ? void 0 : _a.defaultHandlerSuccess) !== null && _b !== void 0 ? _b : insertVideos).call(jodit, data);
53441
- }, {
53442
- label: 'Drop file',
53443
- accept: 'video/*'
53444
- }));
53445
- }
53446
- tabs.push({
53447
- icon: 'link',
53448
- name: 'Link',
53449
- content: formLink.container
54426
+ return ((_b = (_a = jodit.o.video) === null || _a === void 0 ? void 0 : _a.defaultHandlerSuccess) !== null && _b !== void 0 ? _b : insertVideos).call(jodit, data);
54427
+ });
53450
54428
  }, {
53451
- icon: 'source',
53452
- name: 'Code',
53453
- content: formCode.container
53454
- });
53455
- formLink.onSubmit((data)=>{
53456
- var _a, _b, _c, _d;
53457
- 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, {
53458
- width: (_c = jodit.o.video) === null || _c === void 0 ? void 0 : _c.defaultWidth,
53459
- height: (_d = jodit.o.video) === null || _d === void 0 ? void 0 : _d.defaultHeight
53460
- }));
53461
- });
53462
- formCode.onSubmit((data)=>{
53463
- insertCode(data.code);
53464
- });
53465
- const box = (0,_modules_widget_index_js__WEBPACK_IMPORTED_MODULE_5__.TabsWidget)(jodit, tabs);
53466
- // Its tabs are sized to their labels, as the file selector's are, since
53467
- // "Upload" doesn't fit a third of the popup
53468
- box.classList.add('jodit-file-selector');
53469
- return box;
53470
- },
54429
+ label: 'Drop file',
54430
+ accept: 'video/*'
54431
+ }));
54432
+ }
54433
+ tabs.push({
54434
+ icon: 'link',
54435
+ name: 'Link',
54436
+ content: formLink.container
54437
+ }, {
54438
+ icon: 'source',
54439
+ name: 'Code',
54440
+ content: formCode.container
54441
+ });
54442
+ formLink.onSubmit((data)=>{
54443
+ var _a, _b, _c, _d;
54444
+ 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, {
54445
+ width: (_c = jodit.o.video) === null || _c === void 0 ? void 0 : _c.defaultWidth,
54446
+ height: (_d = jodit.o.video) === null || _d === void 0 ? void 0 : _d.defaultHeight
54447
+ }));
54448
+ });
54449
+ formCode.onSubmit((data)=>{
54450
+ insertCode(data.code);
54451
+ });
54452
+ const box = (0,_modules_widget_index_js__WEBPACK_IMPORTED_MODULE_5__.TabsWidget)(jodit, tabs);
54453
+ // Its tabs are sized to their labels, as the file selector's are, since
54454
+ // "Upload" doesn't fit a third of the popup
54455
+ box.classList.add('jodit-file-selector');
54456
+ return box;
54457
+ }
54458
+ _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.video = {
54459
+ popup: (jodit, current, close)=>videoTabs(jodit, close),
53471
54460
  tags: [
53472
54461
  'iframe'
53473
54462
  ],