jodit 4.18.3 → 4.18.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/es2015/jodit.css +60 -1
  3. package/es2015/jodit.fat.min.css +1 -1
  4. package/es2015/jodit.fat.min.js +35 -10
  5. package/es2015/jodit.js +968 -152
  6. package/es2015/jodit.min.css +1 -1
  7. package/es2015/jodit.min.js +41 -16
  8. package/es2015/plugins/debug/debug.css +1 -1
  9. package/es2015/plugins/debug/debug.js +1 -1
  10. package/es2015/plugins/debug/debug.min.js +1 -1
  11. package/es2015/plugins/speech-recognize/speech-recognize.css +1 -1
  12. package/es2015/plugins/speech-recognize/speech-recognize.js +1 -1
  13. package/es2015/plugins/speech-recognize/speech-recognize.min.js +1 -1
  14. package/es2018/jodit.fat.min.css +1 -1
  15. package/es2018/jodit.fat.min.js +33 -8
  16. package/es2018/jodit.min.css +1 -1
  17. package/es2018/jodit.min.js +33 -8
  18. package/es2018/plugins/debug/debug.min.js +1 -1
  19. package/es2018/plugins/speech-recognize/speech-recognize.min.js +1 -1
  20. package/es2021/jodit.css +60 -1
  21. package/es2021/jodit.fat.min.css +1 -1
  22. package/es2021/jodit.fat.min.js +36 -11
  23. package/es2021/jodit.js +958 -150
  24. package/es2021/jodit.min.css +1 -1
  25. package/es2021/jodit.min.js +36 -11
  26. package/es2021/plugins/debug/debug.css +1 -1
  27. package/es2021/plugins/debug/debug.js +1 -1
  28. package/es2021/plugins/debug/debug.min.js +1 -1
  29. package/es2021/plugins/speech-recognize/speech-recognize.css +1 -1
  30. package/es2021/plugins/speech-recognize/speech-recognize.js +1 -1
  31. package/es2021/plugins/speech-recognize/speech-recognize.min.js +1 -1
  32. package/es2021.en/jodit.css +60 -1
  33. package/es2021.en/jodit.fat.min.css +1 -1
  34. package/es2021.en/jodit.fat.min.js +36 -11
  35. package/es2021.en/jodit.js +932 -124
  36. package/es2021.en/jodit.min.css +1 -1
  37. package/es2021.en/jodit.min.js +51 -26
  38. package/es2021.en/plugins/debug/debug.css +1 -1
  39. package/es2021.en/plugins/debug/debug.js +1 -1
  40. package/es2021.en/plugins/debug/debug.min.js +1 -1
  41. package/es2021.en/plugins/speech-recognize/speech-recognize.css +1 -1
  42. package/es2021.en/plugins/speech-recognize/speech-recognize.js +1 -1
  43. package/es2021.en/plugins/speech-recognize/speech-recognize.min.js +1 -1
  44. package/es5/jodit.css +76 -2
  45. package/es5/jodit.fat.min.css +1 -1
  46. package/es5/jodit.fat.min.js +2 -2
  47. package/es5/jodit.js +1103 -155
  48. package/es5/jodit.min.css +3 -3
  49. package/es5/jodit.min.js +2 -2
  50. package/es5/plugins/debug/debug.css +1 -1
  51. package/es5/plugins/debug/debug.js +1 -1
  52. package/es5/plugins/debug/debug.min.js +1 -1
  53. package/es5/plugins/speech-recognize/speech-recognize.css +1 -1
  54. package/es5/plugins/speech-recognize/speech-recognize.js +1 -1
  55. package/es5/plugins/speech-recognize/speech-recognize.min.js +1 -1
  56. package/es5/polyfills.fat.min.js +1 -1
  57. package/es5/polyfills.js +1 -1
  58. package/es5/polyfills.min.js +1 -1
  59. package/esm/config.d.ts +25 -26
  60. package/esm/config.js +19 -21
  61. package/esm/core/constants.js +1 -1
  62. package/esm/core/helpers/utils/align.d.ts +1 -1
  63. package/esm/core/helpers/utils/align.js +2 -3
  64. package/esm/jodit.js +14 -4
  65. package/esm/langs/ar.d.ts +7 -0
  66. package/esm/langs/ar.js +8 -1
  67. package/esm/langs/az.d.ts +7 -0
  68. package/esm/langs/az.js +8 -1
  69. package/esm/langs/cs_cz.d.ts +7 -0
  70. package/esm/langs/cs_cz.js +9 -1
  71. package/esm/langs/de.d.ts +7 -0
  72. package/esm/langs/de.js +8 -1
  73. package/esm/langs/es.d.ts +7 -0
  74. package/esm/langs/es.js +8 -1
  75. package/esm/langs/fa.d.ts +7 -0
  76. package/esm/langs/fa.js +8 -1
  77. package/esm/langs/fi.d.ts +7 -0
  78. package/esm/langs/fi.js +8 -1
  79. package/esm/langs/fr.d.ts +7 -0
  80. package/esm/langs/fr.js +8 -1
  81. package/esm/langs/he.d.ts +7 -0
  82. package/esm/langs/he.js +8 -1
  83. package/esm/langs/hu.d.ts +7 -0
  84. package/esm/langs/hu.js +8 -1
  85. package/esm/langs/id.d.ts +7 -0
  86. package/esm/langs/id.js +8 -1
  87. package/esm/langs/it.d.ts +7 -0
  88. package/esm/langs/it.js +8 -1
  89. package/esm/langs/ja.d.ts +7 -0
  90. package/esm/langs/ja.js +8 -1
  91. package/esm/langs/ko.d.ts +7 -0
  92. package/esm/langs/ko.js +8 -1
  93. package/esm/langs/mn.d.ts +7 -0
  94. package/esm/langs/mn.js +8 -1
  95. package/esm/langs/nl.d.ts +7 -0
  96. package/esm/langs/nl.js +8 -1
  97. package/esm/langs/no.d.ts +7 -0
  98. package/esm/langs/no.js +8 -1
  99. package/esm/langs/pl.d.ts +7 -0
  100. package/esm/langs/pl.js +8 -1
  101. package/esm/langs/pt_br.d.ts +7 -0
  102. package/esm/langs/pt_br.js +8 -1
  103. package/esm/langs/ru.d.ts +7 -0
  104. package/esm/langs/ru.js +8 -1
  105. package/esm/langs/sk.d.ts +7 -0
  106. package/esm/langs/sk.js +8 -1
  107. package/esm/langs/sv.d.ts +7 -0
  108. package/esm/langs/sv.js +8 -1
  109. package/esm/langs/tr.d.ts +7 -0
  110. package/esm/langs/tr.js +8 -1
  111. package/esm/langs/ua.d.ts +7 -0
  112. package/esm/langs/ua.js +8 -1
  113. package/esm/langs/zh_cn.d.ts +7 -0
  114. package/esm/langs/zh_cn.js +8 -1
  115. package/esm/langs/zh_tw.d.ts +7 -0
  116. package/esm/langs/zh_tw.js +8 -1
  117. package/esm/plugins/all.d.ts +1 -0
  118. package/esm/plugins/all.js +1 -0
  119. package/esm/plugins/image-processor/image-processor.d.ts +4 -1
  120. package/esm/plugins/image-processor/image-processor.js +9 -3
  121. package/esm/plugins/image-properties/readers/align.d.ts +2 -2
  122. package/esm/plugins/index.d.ts +1 -0
  123. package/esm/plugins/inline-popup/config/items/iframe.d.ts +9 -1
  124. package/esm/plugins/inline-popup/config/items/iframe.js +15 -0
  125. package/esm/plugins/media/media.js +16 -7
  126. package/esm/plugins/resizer/config.d.ts +5 -3
  127. package/esm/plugins/resizer/config.js +8 -2
  128. package/esm/plugins/resizer/resizer.d.ts +10 -0
  129. package/esm/plugins/resizer/resizer.js +64 -15
  130. package/esm/plugins/video/config.d.ts +6 -0
  131. package/esm/plugins/video/config.js +77 -65
  132. package/esm/plugins/video-properties/interface.d.ts +31 -0
  133. package/esm/plugins/video-properties/interface.js +6 -0
  134. package/esm/plugins/video-properties/readers.d.ts +26 -0
  135. package/esm/plugins/video-properties/readers.js +65 -0
  136. package/esm/plugins/video-properties/replace.d.ts +15 -0
  137. package/esm/plugins/video-properties/replace.js +97 -0
  138. package/esm/plugins/video-properties/ui/ui-video-form.d.ts +41 -0
  139. package/esm/plugins/video-properties/ui/ui-video-form.js +228 -0
  140. package/esm/plugins/video-properties/video-properties.d.ts +37 -0
  141. package/esm/plugins/video-properties/video-properties.js +175 -0
  142. package/esm/plugins/video-properties/writers.d.ts +15 -0
  143. package/esm/plugins/video-properties/writers.js +73 -0
  144. package/esm/types/types.d.ts +1 -1
  145. package/package.json +1 -1
  146. package/types/config.d.ts +25 -26
  147. package/types/core/helpers/utils/align.d.ts +1 -1
  148. package/types/langs/ar.d.ts +7 -0
  149. package/types/langs/az.d.ts +7 -0
  150. package/types/langs/cs_cz.d.ts +7 -0
  151. package/types/langs/de.d.ts +7 -0
  152. package/types/langs/es.d.ts +7 -0
  153. package/types/langs/fa.d.ts +7 -0
  154. package/types/langs/fi.d.ts +7 -0
  155. package/types/langs/fr.d.ts +7 -0
  156. package/types/langs/he.d.ts +7 -0
  157. package/types/langs/hu.d.ts +7 -0
  158. package/types/langs/id.d.ts +7 -0
  159. package/types/langs/it.d.ts +7 -0
  160. package/types/langs/ja.d.ts +7 -0
  161. package/types/langs/ko.d.ts +7 -0
  162. package/types/langs/mn.d.ts +7 -0
  163. package/types/langs/nl.d.ts +7 -0
  164. package/types/langs/no.d.ts +7 -0
  165. package/types/langs/pl.d.ts +7 -0
  166. package/types/langs/pt_br.d.ts +7 -0
  167. package/types/langs/ru.d.ts +7 -0
  168. package/types/langs/sk.d.ts +7 -0
  169. package/types/langs/sv.d.ts +7 -0
  170. package/types/langs/tr.d.ts +7 -0
  171. package/types/langs/ua.d.ts +7 -0
  172. package/types/langs/zh_cn.d.ts +7 -0
  173. package/types/langs/zh_tw.d.ts +7 -0
  174. package/types/plugins/image-processor/image-processor.d.ts +4 -1
  175. package/types/plugins/image-properties/readers/align.d.ts +2 -2
  176. package/types/plugins/index.d.ts +1 -0
  177. package/types/plugins/inline-popup/config/items/iframe.d.ts +9 -1
  178. package/types/plugins/resizer/config.d.ts +5 -3
  179. package/types/plugins/resizer/resizer.d.ts +10 -0
  180. package/types/plugins/video/config.d.ts +6 -0
  181. package/types/plugins/video-properties/interface.d.ts +31 -0
  182. package/types/plugins/video-properties/readers.d.ts +26 -0
  183. package/types/plugins/video-properties/replace.d.ts +15 -0
  184. package/types/plugins/video-properties/ui/ui-video-form.d.ts +41 -0
  185. package/types/plugins/video-properties/video-properties.d.ts +37 -0
  186. package/types/plugins/video-properties/writers.d.ts +15 -0
  187. package/types/types/types.d.ts +1 -1
package/types/config.d.ts CHANGED
@@ -26,7 +26,6 @@ import type { Controls } from "./types/index";
26
26
  import type { HAlignClasses } from "./types/index";
27
27
  import type { IAsyncStorageOptions } from "./types/index";
28
28
  import type { IExtraPlugin } from "./types/index";
29
- import type { ImageAlignClasses } from "./types/index";
30
29
  import type { ImageHAlign } from "./types/index";
31
30
  import type { IUIButtonState } from "./types/index";
32
31
  import type { IViewOptions } from "./types/index";
@@ -642,29 +641,19 @@ declare class Config implements IViewOptions {
642
641
  */
643
642
  imageDefaultAlign: ImageHAlign;
644
643
  /**
645
- * Class names to align images with, instead of an inline `float` or
646
- * `margin`. Aligning an image removes every class listed here and adds the
647
- * chosen alignment's, which can be several separated by spaces. An
648
- * alignment can also list several such sets, to recognise each of them;
649
- * aligning writes the first. `alignClasses.img` takes its place when set.
650
- *
651
- * ```javascript
652
- * Jodit.make('#editor', {
653
- * imageAlignClasses: {
654
- * left: 'align-left',
655
- * right: 'align-right',
656
- * center: ['align-center', 'centered']
657
- * }
658
- * });
659
- * ```
644
+ * @deprecated Use `alignClasses.img`, which takes the same value. When
645
+ * `alignClasses.img` isn't set, the editor copies this into it.
660
646
  */
661
- imageAlignClasses: Nullable<ImageAlignClasses>;
647
+ imageAlignClasses: Nullable<HAlignClasses>;
662
648
  /**
663
- * Class names to align elements with, by tag name, as `imageAlignClasses`
664
- * does for images: `img`, and `video`, `audio` and `iframe` in the media
665
- * popup. A media wrapper (see `mediaWrappers`), and Jodit's own `jodit` and
666
- * `jodit-media` wrappers, are aligned with the classes for the media in
667
- * them.
649
+ * Class names to align elements with, by tag name, instead of an inline
650
+ * `float` or `margin`: `img`, and `video`, `audio` and `iframe` in the
651
+ * media popup. Aligning an element removes every class listed for its tag
652
+ * and adds the chosen alignment's, which can be several separated by
653
+ * spaces. An alignment can also list several such sets, to recognise each
654
+ * of them; aligning writes the first. A media wrapper (see
655
+ * `mediaWrappers`), and Jodit's own `jodit` and `jodit-media` wrappers,
656
+ * are aligned with the classes for the media in them.
668
657
  *
669
658
  * ```javascript
670
659
  * const media = {
@@ -674,7 +663,15 @@ declare class Config implements IViewOptions {
674
663
  * };
675
664
  *
676
665
  * Jodit.make('#editor', {
677
- * alignClasses: { video: media, iframe: media }
666
+ * alignClasses: {
667
+ * img: {
668
+ * left: 'align-left',
669
+ * right: 'align-right',
670
+ * center: ['align-center', 'centered']
671
+ * },
672
+ * video: media,
673
+ * iframe: media
674
+ * }
678
675
  * });
679
676
  * ```
680
677
  */
@@ -1759,7 +1756,7 @@ interface Config {
1759
1756
  }
1760
1757
  interface Config {
1761
1758
  /**
1762
- * Set of HTML tag names whose elements can be resized by the user via drag handles (e.g. images, iframes, tables)
1759
+ * Set of HTML tag names whose elements can be resized by the user via drag handles (e.g. images, iframes, tables, videos)
1763
1760
  */
1764
1761
  allowResizeTags: Set<HTMLTagNames>;
1765
1762
  resizer: {
@@ -1772,14 +1769,16 @@ interface Config {
1772
1769
  * Save width and height proportions when resizing
1773
1770
  * ```js
1774
1771
  * Jodit.make('#editor', {
1775
- * allowResizeTags: ['img', 'iframe', 'table', 'jodit'],
1772
+ * allowResizeTags: new Set(['img', 'iframe', 'table', 'jodit', 'video']),
1776
1773
  * resizer: {
1777
1774
  * useAspectRatio: false, // don't save,
1778
- * useAspectRatio: ['img'], // save only for images (default value)
1775
+ * useAspectRatio: new Set(['img']), // save only for images
1779
1776
  * useAspectRatio: true // save for all
1780
1777
  * }
1781
1778
  * });
1782
1779
  * ```
1780
+ * Images and videos keep it by default. A video with no height of its
1781
+ * own keeps it by being given only a width.
1783
1782
  */
1784
1783
  useAspectRatio: boolean | Set<HTMLTagNames>;
1785
1784
  /**
@@ -10,7 +10,7 @@ import type { HAlignClasses, IJodit, ImageHAlign, Nullable } from "../../../type
10
10
  /**
11
11
  * The class names to align `elm` with: `alignClasses` for its tag, or for the
12
12
  * media in it when it wraps media (a `mediaWrappers` wrapper, `jodit` or
13
- * `jodit-media`), falling back to `imageAlignClasses` for an image
13
+ * `jodit-media`)
14
14
  */
15
15
  export declare function getAlignClasses(jodit: IJodit, elm: Nullable<HTMLElement>): Nullable<HAlignClasses>;
16
16
  /**
@@ -213,5 +213,12 @@ declare const _exports: {
213
213
  spellcheck: string;
214
214
  'Speech Recognize': string;
215
215
  All: string;
216
+ 'Video properties': string;
217
+ 'Audio properties': string;
218
+ Poster: string;
219
+ Autoplay: string;
220
+ Loop: string;
221
+ Muted: string;
222
+ Controls: string;
216
223
  };
217
224
  export = _exports;
@@ -219,5 +219,12 @@ declare const _exports: {
219
219
  'Insert className': string;
220
220
  'Press Alt for custom resizing': string;
221
221
  'License: %s': string;
222
+ 'Video properties': string;
223
+ 'Audio properties': string;
224
+ Poster: string;
225
+ Autoplay: string;
226
+ Loop: string;
227
+ Muted: string;
228
+ Controls: string;
222
229
  };
223
230
  export = _exports;
@@ -211,5 +211,12 @@ declare const _exports: {
211
211
  'Find Next': string;
212
212
  'Insert className': string;
213
213
  'Press Alt for custom resizing': string;
214
+ 'Video properties': string;
215
+ 'Audio properties': string;
216
+ Poster: string;
217
+ Autoplay: string;
218
+ Loop: string;
219
+ Muted: string;
220
+ Controls: string;
214
221
  };
215
222
  export = _exports;
@@ -215,5 +215,12 @@ declare const _exports: {
215
215
  'Insert className': string;
216
216
  'Press Alt for custom resizing': string;
217
217
  'License: %s': string;
218
+ 'Video properties': string;
219
+ 'Audio properties': string;
220
+ Poster: string;
221
+ Autoplay: string;
222
+ Loop: string;
223
+ Muted: string;
224
+ Controls: string;
218
225
  };
219
226
  export = _exports;
@@ -215,5 +215,12 @@ declare const _exports: {
215
215
  'Insert className': string;
216
216
  'Press Alt for custom resizing': string;
217
217
  'License: %s': string;
218
+ 'Video properties': string;
219
+ 'Audio properties': string;
220
+ Poster: string;
221
+ Autoplay: string;
222
+ Loop: string;
223
+ Muted: string;
224
+ Controls: string;
218
225
  };
219
226
  export = _exports;
@@ -210,5 +210,12 @@ declare const _exports: {
210
210
  'Insert className': string;
211
211
  'Press Alt for custom resizing': string;
212
212
  'License: %s': string;
213
+ 'Video properties': string;
214
+ 'Audio properties': string;
215
+ Poster: string;
216
+ Autoplay: string;
217
+ Loop: string;
218
+ Muted: string;
219
+ Controls: string;
213
220
  };
214
221
  export = _exports;
@@ -216,5 +216,12 @@ declare const _exports: {
216
216
  'Press Alt for custom resizing': string;
217
217
  'Class name': string;
218
218
  'License: %s': string;
219
+ 'Video properties': string;
220
+ 'Audio properties': string;
221
+ Poster: string;
222
+ Autoplay: string;
223
+ Loop: string;
224
+ Muted: string;
225
+ Controls: string;
219
226
  };
220
227
  export = _exports;
@@ -210,5 +210,12 @@ declare const _exports: {
210
210
  Edit: string;
211
211
  All: string;
212
212
  'License: %s': string;
213
+ 'Video properties': string;
214
+ 'Audio properties': string;
215
+ Poster: string;
216
+ Autoplay: string;
217
+ Loop: string;
218
+ Muted: string;
219
+ Controls: string;
213
220
  };
214
221
  export = _exports;
@@ -210,5 +210,12 @@ declare const _exports: {
210
210
  'Insert className': string;
211
211
  'Press Alt for custom resizing': string;
212
212
  'License: %s': string;
213
+ 'Video properties': string;
214
+ 'Audio properties': string;
215
+ Poster: string;
216
+ Autoplay: string;
217
+ Loop: string;
218
+ Muted: string;
219
+ Controls: string;
213
220
  };
214
221
  export = _exports;
@@ -212,5 +212,12 @@ declare const _exports: {
212
212
  'Insert className': string;
213
213
  'Press Alt for custom resizing': string;
214
214
  'License: %s': string;
215
+ 'Video properties': string;
216
+ 'Audio properties': string;
217
+ Poster: string;
218
+ Autoplay: string;
219
+ Loop: string;
220
+ Muted: string;
221
+ Controls: string;
215
222
  };
216
223
  export = _exports;
@@ -211,5 +211,12 @@ declare const _exports: {
211
211
  'Find Next': string;
212
212
  'Insert className': string;
213
213
  'Press Alt for custom resizing': string;
214
+ 'Video properties': string;
215
+ 'Audio properties': string;
216
+ Poster: string;
217
+ Autoplay: string;
218
+ Loop: string;
219
+ Muted: string;
220
+ Controls: string;
214
221
  };
215
222
  export = _exports;
@@ -215,5 +215,12 @@ declare const _exports: {
215
215
  'Insert className': string;
216
216
  'Press Alt for custom resizing': string;
217
217
  'License: %s': string;
218
+ 'Video properties': string;
219
+ 'Audio properties': string;
220
+ Poster: string;
221
+ Autoplay: string;
222
+ Loop: string;
223
+ Muted: string;
224
+ Controls: string;
218
225
  };
219
226
  export = _exports;
@@ -215,5 +215,12 @@ declare const _exports: {
215
215
  'Insert className': string;
216
216
  'Press Alt for custom resizing': string;
217
217
  'License: %s': string;
218
+ 'Video properties': string;
219
+ 'Audio properties': string;
220
+ Poster: string;
221
+ Autoplay: string;
222
+ Loop: string;
223
+ Muted: string;
224
+ Controls: string;
218
225
  };
219
226
  export = _exports;
@@ -209,5 +209,12 @@ declare const _exports: {
209
209
  'Find Next': string;
210
210
  'Insert className': string;
211
211
  'Press Alt for custom resizing': string;
212
+ 'Video properties': string;
213
+ 'Audio properties': string;
214
+ Poster: string;
215
+ Autoplay: string;
216
+ Loop: string;
217
+ Muted: string;
218
+ Controls: string;
212
219
  };
213
220
  export = _exports;
@@ -210,5 +210,12 @@ declare const _exports: {
210
210
  'Insert className': string;
211
211
  'Press Alt for custom resizing': string;
212
212
  'License: %s': string;
213
+ 'Video properties': string;
214
+ 'Audio properties': string;
215
+ Poster: string;
216
+ Autoplay: string;
217
+ Loop: string;
218
+ Muted: string;
219
+ Controls: string;
213
220
  };
214
221
  export = _exports;
@@ -211,5 +211,12 @@ declare const _exports: {
211
211
  'Insert className': string;
212
212
  'Press Alt for custom resizing': string;
213
213
  'License: %s': string;
214
+ 'Video properties': string;
215
+ 'Audio properties': string;
216
+ Poster: string;
217
+ Autoplay: string;
218
+ Loop: string;
219
+ Muted: string;
220
+ Controls: string;
214
221
  };
215
222
  export = _exports;
@@ -219,5 +219,12 @@ declare const _exports: {
219
219
  Quadrate: string;
220
220
  'Find Previous': string;
221
221
  'Find Next': string;
222
+ 'Video properties': string;
223
+ 'Audio properties': string;
224
+ Poster: string;
225
+ Autoplay: string;
226
+ Loop: string;
227
+ Muted: string;
228
+ Controls: string;
222
229
  };
223
230
  export = _exports;
@@ -210,5 +210,12 @@ declare const _exports: {
210
210
  'Insert className': string;
211
211
  'Press Alt for custom resizing': string;
212
212
  'License: %s': string;
213
+ 'Video properties': string;
214
+ 'Audio properties': string;
215
+ Poster: string;
216
+ Autoplay: string;
217
+ Loop: string;
218
+ Muted: string;
219
+ Controls: string;
213
220
  };
214
221
  export = _exports;
@@ -215,5 +215,12 @@ declare const _exports: {
215
215
  'Insert className': string;
216
216
  'Press Alt for custom resizing': string;
217
217
  'License: %s': string;
218
+ 'Video properties': string;
219
+ 'Audio properties': string;
220
+ Poster: string;
221
+ Autoplay: string;
222
+ Loop: string;
223
+ Muted: string;
224
+ Controls: string;
218
225
  };
219
226
  export = _exports;
@@ -209,5 +209,12 @@ declare const _exports: {
209
209
  'Find Next': string;
210
210
  'Insert className': string;
211
211
  'Press Alt for custom resizing': string;
212
+ 'Video properties': string;
213
+ 'Audio properties': string;
214
+ Poster: string;
215
+ Autoplay: string;
216
+ Loop: string;
217
+ Muted: string;
218
+ Controls: string;
212
219
  };
213
220
  export = _exports;
@@ -217,5 +217,12 @@ declare const _exports: {
217
217
  'Edit image': string;
218
218
  'Tiles view': string;
219
219
  'List view': string;
220
+ 'Video properties': string;
221
+ 'Audio properties': string;
222
+ Poster: string;
223
+ Autoplay: string;
224
+ Loop: string;
225
+ Muted: string;
226
+ Controls: string;
220
227
  };
221
228
  export = _exports;
@@ -218,5 +218,12 @@ declare const _exports: {
218
218
  'Embed code': string;
219
219
  All: string;
220
220
  'License: %s': string;
221
+ 'Video properties': string;
222
+ 'Audio properties': string;
223
+ Poster: string;
224
+ Autoplay: string;
225
+ Loop: string;
226
+ Muted: string;
227
+ Controls: string;
221
228
  };
222
229
  export = _exports;
@@ -210,5 +210,12 @@ declare const _exports: {
210
210
  'Insert className': string;
211
211
  'Press Alt for custom resizing': string;
212
212
  'License: %s': string;
213
+ 'Video properties': string;
214
+ 'Audio properties': string;
215
+ Poster: string;
216
+ Autoplay: string;
217
+ Loop: string;
218
+ Muted: string;
219
+ Controls: string;
213
220
  };
214
221
  export = _exports;
@@ -209,5 +209,12 @@ declare const _exports: {
209
209
  'Find Next': string;
210
210
  'Insert className': string;
211
211
  'Press Alt for custom resizing': string;
212
+ 'Video properties': string;
213
+ 'Audio properties': string;
214
+ Poster: string;
215
+ Autoplay: string;
216
+ Loop: string;
217
+ Muted: string;
218
+ Controls: string;
212
219
  };
213
220
  export = _exports;
@@ -211,5 +211,12 @@ declare const _exports: {
211
211
  'Insert className': string;
212
212
  'Press Alt for custom resizing': string;
213
213
  'License: %s': string;
214
+ 'Video properties': string;
215
+ 'Audio properties': string;
216
+ Poster: string;
217
+ Autoplay: string;
218
+ Loop: string;
219
+ Muted: string;
220
+ Controls: string;
214
221
  };
215
222
  export = _exports;
@@ -210,5 +210,12 @@ declare const _exports: {
210
210
  'Press Alt for custom resizing': string;
211
211
  Edit: string;
212
212
  'License: %s': string;
213
+ 'Video properties': string;
214
+ 'Audio properties': string;
215
+ Poster: string;
216
+ Autoplay: string;
217
+ Loop: string;
218
+ Muted: string;
219
+ Controls: string;
213
220
  };
214
221
  export = _exports;
@@ -25,7 +25,10 @@ export declare class imageProcessor extends Plugin {
25
25
  }): void;
26
26
  /**
27
27
  * While the selection is an image, only the image is highlighted: Safari
28
- * paints the rest of a block image's line with its parent's highlight. See #1528
28
+ * paints the rest of a block image's line with its parent's highlight. See #1528.
29
+ * Media in a wrapper (`jodit-media`, the resizer's `jodit` for an embed, or
30
+ * one from `mediaWrappers`) isn't highlighted either, as Safari paints its
31
+ * wrapper's whole line, and its resize frame shows it's selected
29
32
  */
30
33
  private onSelectionChange;
31
34
  protected afterChange(data: {
@@ -6,9 +6,9 @@
6
6
  /**
7
7
  * @module plugins/image-properties
8
8
  */
9
- import type { ImageAlignClasses, Nullable } from "../../../types/index";
9
+ import type { HAlignClasses, Nullable } from "../../../types/index";
10
10
  import type { EditValues } from "../interface";
11
11
  /**
12
12
  * @private
13
13
  */
14
- export declare function readAlign(image: HTMLImageElement, values: EditValues, classes?: Nullable<ImageAlignClasses>): void;
14
+ export declare function readAlign(image: HTMLImageElement, values: EditValues, classes?: Nullable<HAlignClasses>): void;
@@ -68,6 +68,7 @@ import "./table/table";
68
68
  import "./table-keyboard-navigation/table-keyboard-navigation";
69
69
  import "./toolbar-navigation/toolbar-navigation";
70
70
  import "./video/video";
71
+ import "./video-properties/video-properties";
71
72
  import "./wrap-nodes/wrap-nodes";
72
73
  import "./dtd/dtd";
73
74
  import "./xpath/xpath";
@@ -6,10 +6,18 @@
6
6
  /**
7
7
  * @module plugins/inline-popup
8
8
  */
9
- import type { IJodit } from "../../../../types/index";
9
+ import type { IJodit, Nullable } from "../../../../types/index";
10
10
  declare const _default: (import("../../../../types/index").IControlType<IJodit, import("../../../../types/index").IToolbarButton> | {
11
+ name: string;
12
+ icon: string;
13
+ tooltip: string;
14
+ popup: (editor: IJodit, target: Nullable<Node>, close: () => void) => HTMLElement | void;
15
+ exec?: undefined;
16
+ } | {
11
17
  name: string;
12
18
  tooltip: string;
13
19
  exec: (editor: IJodit, image: HTMLImageElement) => void;
20
+ icon?: undefined;
21
+ popup?: undefined;
14
22
  })[];
15
23
  export default _default;
@@ -10,7 +10,7 @@ import type { HTMLTagNames } from "../../types/index";
10
10
  declare module 'jodit/config' {
11
11
  interface Config {
12
12
  /**
13
- * Set of HTML tag names whose elements can be resized by the user via drag handles (e.g. images, iframes, tables)
13
+ * Set of HTML tag names whose elements can be resized by the user via drag handles (e.g. images, iframes, tables, videos)
14
14
  */
15
15
  allowResizeTags: Set<HTMLTagNames>;
16
16
  resizer: {
@@ -23,14 +23,16 @@ declare module 'jodit/config' {
23
23
  * Save width and height proportions when resizing
24
24
  * ```js
25
25
  * Jodit.make('#editor', {
26
- * allowResizeTags: ['img', 'iframe', 'table', 'jodit'],
26
+ * allowResizeTags: new Set(['img', 'iframe', 'table', 'jodit', 'video']),
27
27
  * resizer: {
28
28
  * useAspectRatio: false, // don't save,
29
- * useAspectRatio: ['img'], // save only for images (default value)
29
+ * useAspectRatio: new Set(['img']), // save only for images
30
30
  * useAspectRatio: true // save for all
31
31
  * }
32
32
  * });
33
33
  * ```
34
+ * Images and videos keep it by default. A video with no height of its
35
+ * own keeps it by being given only a width.
34
36
  */
35
37
  useAspectRatio: boolean | Set<HTMLTagNames>;
36
38
  /**
@@ -26,6 +26,7 @@ export declare class resizer extends Plugin {
26
26
  private height;
27
27
  private ratio;
28
28
  private rect;
29
+ private layer;
29
30
  private sizeViewer;
30
31
  /** @override */
31
32
  protected afterInit(editor: IJodit): void;
@@ -33,6 +34,11 @@ export declare class resizer extends Plugin {
33
34
  * Click in the editor area
34
35
  */
35
36
  protected onEditorClick(e: MouseEvent): void;
37
+ /**
38
+ * What a click on `node` resizes: the media in it when it's a media
39
+ * wrapper (`jodit-media`, or one from `mediaWrappers`), or `node` itself
40
+ */
41
+ private __resizable;
36
42
  protected __afterInsertImage(image: HTMLImageElement): void;
37
43
  private addEventListeners;
38
44
  private onStartResizing;
@@ -46,6 +52,10 @@ export declare class resizer extends Plugin {
46
52
  private onClickOutside;
47
53
  private getWorkplacePosition;
48
54
  private applySize;
55
+ /**
56
+ * The framed element can go with a wrapper round it, keeping its parent
57
+ */
58
+ private get isElementInEditor();
49
59
  private onDelete;
50
60
  private __onChangeEditor;
51
61
  /**
@@ -53,3 +53,9 @@ declare module 'jodit/config' {
53
53
  };
54
54
  }
55
55
  }
56
+ /**
57
+ * The video popup's tabs: Upload, when the uploader is configured, then Link
58
+ * and Code. `insert` runs what a tab inserts, which by default goes in at the
59
+ * selection the popup was opened with.
60
+ */
61
+ export declare function videoTabs(jodit: IJodit, close: () => void, insert?: (run: () => void) => void): HTMLElement;
@@ -0,0 +1,31 @@
1
+ /*!
2
+ * Jodit Editor (https://xdsoft.net/jodit/)
3
+ * Released under MIT see LICENSE.txt in the project root for license information.
4
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
5
+ */
6
+ /**
7
+ * @module plugins/video-properties
8
+ */
9
+ export type EditedMedia = HTMLVideoElement | HTMLAudioElement | HTMLIFrameElement;
10
+ export interface VideoPropertiesValues {
11
+ width: number | string;
12
+ height: number | string;
13
+ poster: string;
14
+ autoplay: boolean;
15
+ loop: boolean;
16
+ muted: boolean;
17
+ controls: boolean;
18
+ }
19
+ export interface VideoPropertiesState {
20
+ /**
21
+ * What the dialog was opened for: the media, or a wrapper round it
22
+ */
23
+ target: HTMLElement;
24
+ media: EditedMedia;
25
+ ratio: number;
26
+ sizeIsLocked: boolean;
27
+ values: VideoPropertiesValues;
28
+ }
29
+ export interface VideoPropertiesAPI {
30
+ openPosterPopup: (target: HTMLElement) => void;
31
+ }
@@ -0,0 +1,26 @@
1
+ /*!
2
+ * Jodit Editor (https://xdsoft.net/jodit/)
3
+ * Released under MIT see LICENSE.txt in the project root for license information.
4
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
5
+ */
6
+ /**
7
+ * @module plugins/video-properties
8
+ */
9
+ import type { Nullable } from "../../types/index";
10
+ import type { EditedMedia, VideoPropertiesState } from "./interface";
11
+ /**
12
+ * The media `target` is, or holds as its wrapper (`jodit-media`, the resizer's
13
+ * `jodit` for an embed, or one from `mediaWrappers`)
14
+ * @private
15
+ */
16
+ export declare function editedMedia(target: HTMLElement): Nullable<EditedMedia>;
17
+ /**
18
+ * The size `media` is given, inline or by its attribute
19
+ * @private
20
+ */
21
+ export declare function ownSize(media: EditedMedia, key: 'width' | 'height'): string;
22
+ /**
23
+ * Read the media's values into the state
24
+ * @private
25
+ */
26
+ export declare function readValues(state: VideoPropertiesState): void;