jodit 4.18.3 → 4.18.6

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 (237) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/es2015/jodit.css +72 -34
  3. package/es2015/jodit.fat.min.css +1 -1
  4. package/es2015/jodit.fat.min.js +35 -10
  5. package/es2015/jodit.js +1967 -327
  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 +35 -10
  16. package/es2018/jodit.min.css +1 -1
  17. package/es2018/jodit.min.js +35 -10
  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 +72 -34
  21. package/es2021/jodit.fat.min.css +1 -1
  22. package/es2021/jodit.fat.min.js +42 -17
  23. package/es2021/jodit.js +1949 -323
  24. package/es2021/jodit.min.css +1 -1
  25. package/es2021/jodit.min.js +42 -17
  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 +72 -34
  33. package/es2021.en/jodit.fat.min.css +1 -1
  34. package/es2021.en/jodit.fat.min.js +42 -17
  35. package/es2021.en/jodit.js +1923 -297
  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 +85 -38
  45. package/es5/jodit.fat.min.css +1 -1
  46. package/es5/jodit.fat.min.js +2 -2
  47. package/es5/jodit.js +2225 -379
  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 +28 -26
  60. package/esm/config.js +19 -21
  61. package/esm/core/constants.js +1 -1
  62. package/esm/core/helpers/html/apply-styles.js +3 -0
  63. package/esm/core/helpers/html/clean-from-word.js +3 -0
  64. package/esm/core/helpers/html/strip-tags.js +24 -6
  65. package/esm/core/helpers/html/word-lists.d.ts +29 -0
  66. package/esm/core/helpers/html/word-lists.js +158 -0
  67. package/esm/core/helpers/utils/align.d.ts +1 -1
  68. package/esm/core/helpers/utils/align.js +2 -3
  69. package/esm/core/selection/helpers/index.d.ts +1 -0
  70. package/esm/core/selection/helpers/index.js +1 -0
  71. package/esm/core/selection/helpers/is-moved.d.ts +15 -0
  72. package/esm/core/selection/helpers/is-moved.js +22 -0
  73. package/esm/core/selection/style/api/list/toggle-ordered-list.js +40 -3
  74. package/esm/core/selection/style/transactions.js +5 -2
  75. package/esm/jodit.js +14 -4
  76. package/esm/langs/ar.d.ts +10 -0
  77. package/esm/langs/ar.js +11 -1
  78. package/esm/langs/az.d.ts +10 -0
  79. package/esm/langs/az.js +11 -1
  80. package/esm/langs/cs_cz.d.ts +10 -0
  81. package/esm/langs/cs_cz.js +12 -1
  82. package/esm/langs/de.d.ts +10 -0
  83. package/esm/langs/de.js +11 -1
  84. package/esm/langs/es.d.ts +10 -0
  85. package/esm/langs/es.js +11 -1
  86. package/esm/langs/fa.d.ts +10 -0
  87. package/esm/langs/fa.js +11 -1
  88. package/esm/langs/fi.d.ts +10 -0
  89. package/esm/langs/fi.js +11 -1
  90. package/esm/langs/fr.d.ts +10 -0
  91. package/esm/langs/fr.js +11 -1
  92. package/esm/langs/he.d.ts +10 -0
  93. package/esm/langs/he.js +11 -1
  94. package/esm/langs/hu.d.ts +10 -0
  95. package/esm/langs/hu.js +11 -1
  96. package/esm/langs/id.d.ts +10 -0
  97. package/esm/langs/id.js +11 -1
  98. package/esm/langs/it.d.ts +10 -0
  99. package/esm/langs/it.js +11 -1
  100. package/esm/langs/ja.d.ts +10 -0
  101. package/esm/langs/ja.js +11 -1
  102. package/esm/langs/ko.d.ts +10 -0
  103. package/esm/langs/ko.js +11 -1
  104. package/esm/langs/mn.d.ts +10 -0
  105. package/esm/langs/mn.js +11 -1
  106. package/esm/langs/nl.d.ts +10 -0
  107. package/esm/langs/nl.js +11 -1
  108. package/esm/langs/no.d.ts +10 -0
  109. package/esm/langs/no.js +11 -1
  110. package/esm/langs/pl.d.ts +10 -0
  111. package/esm/langs/pl.js +11 -1
  112. package/esm/langs/pt_br.d.ts +10 -0
  113. package/esm/langs/pt_br.js +11 -1
  114. package/esm/langs/ru.d.ts +10 -0
  115. package/esm/langs/ru.js +11 -1
  116. package/esm/langs/sk.d.ts +10 -0
  117. package/esm/langs/sk.js +11 -1
  118. package/esm/langs/sv.d.ts +10 -0
  119. package/esm/langs/sv.js +11 -1
  120. package/esm/langs/tr.d.ts +10 -0
  121. package/esm/langs/tr.js +11 -1
  122. package/esm/langs/ua.d.ts +10 -0
  123. package/esm/langs/ua.js +11 -1
  124. package/esm/langs/zh_cn.d.ts +10 -0
  125. package/esm/langs/zh_cn.js +11 -1
  126. package/esm/langs/zh_tw.d.ts +10 -0
  127. package/esm/langs/zh_tw.js +11 -1
  128. package/esm/modules/dialog/dialog.d.ts +7 -0
  129. package/esm/modules/dialog/dialog.js +24 -6
  130. package/esm/modules/table/table.d.ts +6 -0
  131. package/esm/modules/table/table.js +18 -26
  132. package/esm/plugins/all.d.ts +1 -0
  133. package/esm/plugins/all.js +1 -0
  134. package/esm/plugins/backspace/cases/check-join-neighbors.js +90 -3
  135. package/esm/plugins/clean-html/clean-html.d.ts +8 -0
  136. package/esm/plugins/clean-html/clean-html.js +21 -1
  137. package/esm/plugins/clean-html/helpers/index.d.ts +1 -0
  138. package/esm/plugins/clean-html/helpers/index.js +1 -0
  139. package/esm/plugins/clean-html/helpers/remove-placeholder-br.d.ts +16 -0
  140. package/esm/plugins/clean-html/helpers/remove-placeholder-br.js +51 -0
  141. package/esm/plugins/delete/delete.d.ts +11 -1
  142. package/esm/plugins/delete/delete.js +92 -16
  143. package/esm/plugins/focus/focus.js +12 -1
  144. package/esm/plugins/iframe/config.d.ts +3 -0
  145. package/esm/plugins/iframe/config.js +0 -27
  146. package/esm/plugins/iframe/iframe.js +8 -1
  147. package/esm/plugins/image-processor/image-processor.d.ts +4 -1
  148. package/esm/plugins/image-processor/image-processor.js +15 -4
  149. package/esm/plugins/image-properties/readers/align.d.ts +2 -2
  150. package/esm/plugins/index.d.ts +1 -0
  151. package/esm/plugins/inline-popup/config/items/iframe.d.ts +9 -1
  152. package/esm/plugins/inline-popup/config/items/iframe.js +15 -0
  153. package/esm/plugins/inline-popup/inline-popup.d.ts +19 -0
  154. package/esm/plugins/inline-popup/inline-popup.js +70 -1
  155. package/esm/plugins/media/media.js +16 -7
  156. package/esm/plugins/ordered-list/config.js +13 -2
  157. package/esm/plugins/ordered-list/start-dialog.d.ts +19 -0
  158. package/esm/plugins/ordered-list/start-dialog.js +58 -0
  159. package/esm/plugins/placeholder/placeholder.js +7 -1
  160. package/esm/plugins/resizer/config.d.ts +5 -3
  161. package/esm/plugins/resizer/config.js +8 -2
  162. package/esm/plugins/resizer/resizer.d.ts +20 -0
  163. package/esm/plugins/resizer/resizer.js +140 -17
  164. package/esm/plugins/select-cells/select-cells.d.ts +23 -0
  165. package/esm/plugins/select-cells/select-cells.js +75 -1
  166. package/esm/plugins/table-keyboard-navigation/table-keyboard-navigation.js +3 -2
  167. package/esm/plugins/video/config.d.ts +6 -0
  168. package/esm/plugins/video/config.js +77 -65
  169. package/esm/plugins/video-properties/interface.d.ts +31 -0
  170. package/esm/plugins/video-properties/interface.js +6 -0
  171. package/esm/plugins/video-properties/readers.d.ts +26 -0
  172. package/esm/plugins/video-properties/readers.js +65 -0
  173. package/esm/plugins/video-properties/replace.d.ts +15 -0
  174. package/esm/plugins/video-properties/replace.js +97 -0
  175. package/esm/plugins/video-properties/ui/ui-video-form.d.ts +41 -0
  176. package/esm/plugins/video-properties/ui/ui-video-form.js +228 -0
  177. package/esm/plugins/video-properties/video-properties.d.ts +37 -0
  178. package/esm/plugins/video-properties/video-properties.js +175 -0
  179. package/esm/plugins/video-properties/writers.d.ts +15 -0
  180. package/esm/plugins/video-properties/writers.js +73 -0
  181. package/esm/types/types.d.ts +1 -1
  182. package/package.json +1 -1
  183. package/types/config.d.ts +28 -26
  184. package/types/core/helpers/html/word-lists.d.ts +29 -0
  185. package/types/core/helpers/utils/align.d.ts +1 -1
  186. package/types/core/selection/helpers/index.d.ts +1 -0
  187. package/types/core/selection/helpers/is-moved.d.ts +15 -0
  188. package/types/langs/ar.d.ts +10 -0
  189. package/types/langs/az.d.ts +10 -0
  190. package/types/langs/cs_cz.d.ts +10 -0
  191. package/types/langs/de.d.ts +10 -0
  192. package/types/langs/es.d.ts +10 -0
  193. package/types/langs/fa.d.ts +10 -0
  194. package/types/langs/fi.d.ts +10 -0
  195. package/types/langs/fr.d.ts +10 -0
  196. package/types/langs/he.d.ts +10 -0
  197. package/types/langs/hu.d.ts +10 -0
  198. package/types/langs/id.d.ts +10 -0
  199. package/types/langs/it.d.ts +10 -0
  200. package/types/langs/ja.d.ts +10 -0
  201. package/types/langs/ko.d.ts +10 -0
  202. package/types/langs/mn.d.ts +10 -0
  203. package/types/langs/nl.d.ts +10 -0
  204. package/types/langs/no.d.ts +10 -0
  205. package/types/langs/pl.d.ts +10 -0
  206. package/types/langs/pt_br.d.ts +10 -0
  207. package/types/langs/ru.d.ts +10 -0
  208. package/types/langs/sk.d.ts +10 -0
  209. package/types/langs/sv.d.ts +10 -0
  210. package/types/langs/tr.d.ts +10 -0
  211. package/types/langs/ua.d.ts +10 -0
  212. package/types/langs/zh_cn.d.ts +10 -0
  213. package/types/langs/zh_tw.d.ts +10 -0
  214. package/types/modules/dialog/dialog.d.ts +7 -0
  215. package/types/modules/table/table.d.ts +6 -0
  216. package/types/plugins/clean-html/clean-html.d.ts +8 -0
  217. package/types/plugins/clean-html/helpers/index.d.ts +1 -0
  218. package/types/plugins/clean-html/helpers/remove-placeholder-br.d.ts +16 -0
  219. package/types/plugins/delete/delete.d.ts +11 -1
  220. package/types/plugins/iframe/config.d.ts +3 -0
  221. package/types/plugins/image-processor/image-processor.d.ts +4 -1
  222. package/types/plugins/image-properties/readers/align.d.ts +2 -2
  223. package/types/plugins/index.d.ts +1 -0
  224. package/types/plugins/inline-popup/config/items/iframe.d.ts +9 -1
  225. package/types/plugins/inline-popup/inline-popup.d.ts +19 -0
  226. package/types/plugins/ordered-list/start-dialog.d.ts +19 -0
  227. package/types/plugins/resizer/config.d.ts +5 -3
  228. package/types/plugins/resizer/resizer.d.ts +20 -0
  229. package/types/plugins/select-cells/select-cells.d.ts +23 -0
  230. package/types/plugins/video/config.d.ts +6 -0
  231. package/types/plugins/video-properties/interface.d.ts +31 -0
  232. package/types/plugins/video-properties/readers.d.ts +26 -0
  233. package/types/plugins/video-properties/replace.d.ts +15 -0
  234. package/types/plugins/video-properties/ui/ui-video-form.d.ts +41 -0
  235. package/types/plugins/video-properties/video-properties.d.ts +37 -0
  236. package/types/plugins/video-properties/writers.d.ts +15 -0
  237. package/types/types/types.d.ts +1 -1
@@ -215,5 +215,15 @@ 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;
225
+ 'Start at...': string;
226
+ 'Start numbering at': string;
227
+ 'Number for the first item': string;
218
228
  };
219
229
  export = _exports;
@@ -209,5 +209,15 @@ 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;
219
+ 'Start at...': string;
220
+ 'Start numbering at': string;
221
+ 'Number for the first item': string;
212
222
  };
213
223
  export = _exports;
@@ -210,5 +210,15 @@ 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;
220
+ 'Start at...': string;
221
+ 'Start numbering at': string;
222
+ 'Number for the first item': string;
213
223
  };
214
224
  export = _exports;
@@ -211,5 +211,15 @@ 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;
221
+ 'Start at...': string;
222
+ 'Start numbering at': string;
223
+ 'Number for the first item': string;
214
224
  };
215
225
  export = _exports;
@@ -219,5 +219,15 @@ 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;
229
+ 'Start at...': string;
230
+ 'Start numbering at': string;
231
+ 'Number for the first item': string;
222
232
  };
223
233
  export = _exports;
@@ -210,5 +210,15 @@ 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;
220
+ 'Start at...': string;
221
+ 'Start numbering at': string;
222
+ 'Number for the first item': string;
213
223
  };
214
224
  export = _exports;
@@ -215,5 +215,15 @@ 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;
225
+ 'Start at...': string;
226
+ 'Start numbering at': string;
227
+ 'Number for the first item': string;
218
228
  };
219
229
  export = _exports;
@@ -209,5 +209,15 @@ 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;
219
+ 'Start at...': string;
220
+ 'Start numbering at': string;
221
+ 'Number for the first item': string;
212
222
  };
213
223
  export = _exports;
@@ -217,5 +217,15 @@ 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;
227
+ 'Start at...': string;
228
+ 'Start numbering at': string;
229
+ 'Number for the first item': string;
220
230
  };
221
231
  export = _exports;
@@ -218,5 +218,15 @@ 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;
228
+ 'Start at...': string;
229
+ 'Start numbering at': string;
230
+ 'Number for the first item': string;
221
231
  };
222
232
  export = _exports;
@@ -210,5 +210,15 @@ 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;
220
+ 'Start at...': string;
221
+ 'Start numbering at': string;
222
+ 'Number for the first item': string;
213
223
  };
214
224
  export = _exports;
@@ -209,5 +209,15 @@ 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;
219
+ 'Start at...': string;
220
+ 'Start numbering at': string;
221
+ 'Number for the first item': string;
212
222
  };
213
223
  export = _exports;
@@ -211,5 +211,15 @@ 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;
221
+ 'Start at...': string;
222
+ 'Start numbering at': string;
223
+ 'Number for the first item': string;
214
224
  };
215
225
  export = _exports;
@@ -210,5 +210,15 @@ 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;
220
+ 'Start at...': string;
221
+ 'Start numbering at': string;
222
+ 'Number for the first item': string;
213
223
  };
214
224
  export = _exports;
@@ -48,6 +48,13 @@ export declare class Dialog extends ViewWithToolbar implements IDialog {
48
48
  */
49
49
  private minSize;
50
50
  private __onResizerMouseDown;
51
+ /**
52
+ * The width `box` takes with its content on one line. The header and
53
+ * footer are flex rows as wide as the dialog, so the footer's
54
+ * `scrollWidth` was the dialog's width and kept it from getting any
55
+ * narrower
56
+ */
57
+ private __contentWidth;
51
58
  private __addGlobalResizeListeners;
52
59
  private __removeGlobalResizeListeners;
53
60
  OPTIONS: IDialogOptions;
@@ -15,6 +15,12 @@ export declare class Table extends ViewComponent<IJodit> {
15
15
  className(): string;
16
16
  private selected;
17
17
  private static __selectedByTable;
18
+ /**
19
+ * Rewrite the `<style>` that marks the selected cells once for all the
20
+ * cells (un)selected in one go: a drag over a block of cells unmarks and
21
+ * marks every one of them on each move. `@debounce()` was never applied,
22
+ * as a Table never reaches `ready`
23
+ */
18
24
  private __recalculateStyles;
19
25
  addSelection(td: HTMLTableCellElement): void;
20
26
  removeSelection(td: HTMLTableCellElement): void;
@@ -23,6 +23,14 @@ export declare class cleanHtml extends Plugin {
23
23
  */
24
24
  protected onChangeCleanHTML(): void;
25
25
  private currentSelectionNode;
26
+ /**
27
+ * Typing into an empty block (`<p><br></p>`) replaces its `<br>`, but the
28
+ * browser keeps the `<br>` when the caret is in an invisible-space text
29
+ * node in front of it, as Jodit leaves the caret in many of the empty
30
+ * blocks it makes (a cleared editor, a heading in an empty table cell).
31
+ * See #1632
32
+ */
33
+ protected onInputRemovePlaceholderBr(event: InputEvent | CompositionEvent): void;
26
34
  private walker;
27
35
  protected startWalker(): void;
28
36
  protected beforeCommand(command: string): void | false;
@@ -10,4 +10,5 @@ export * from "./get-hash";
10
10
  export * from "./is-allowed-media-embed";
11
11
  export * from "./remove-format/remove-format-for-collapsed-selection";
12
12
  export * from "./remove-format/remove-format-for-selection";
13
+ export * from "./remove-placeholder-br";
13
14
  export * from "./visitor/visit-node-walker";
@@ -0,0 +1,16 @@
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/clean-html
8
+ */
9
+ import type { IJodit } from "../../../types/index";
10
+ /**
11
+ * Remove the `<br>` that kept the block with the caret open while it was
12
+ * empty, once text has gone into the block: when the block is one line of
13
+ * text that ends in that `<br>`, the `<br>` adds nothing to it
14
+ * @private
15
+ */
16
+ export declare function removePlaceholderBr(jodit: IJodit): void;
@@ -20,13 +20,23 @@ export declare class deleteCommand extends Plugin {
20
20
  */
21
21
  private __afterDeleteCommand;
22
22
  private __onDeleteCommand;
23
+ /**
24
+ * A selection that starts or ends in a table cell clears the selected part
25
+ * of each cell it covers and keeps the cells, as the browsers do.
26
+ * `deleteContents` would remove the cells it fully covers, and the cells
27
+ * it cuts would then be merged as blocks. The range is moved out of those
28
+ * tables, so only the content between them is left to delete.
29
+ *
30
+ * Returns where the caret goes, or null when no table is involved
31
+ */
32
+ private __clearSelectedCells;
23
33
  private __moveContentInLeftSibling;
24
34
  /**
25
35
  * If left sibling is list - return last leaf
26
36
  */
27
37
  private __defineRightLeftBox;
28
38
  /**
29
- * Add BR in empty blocks left and right(for table cell)
39
+ * Add BR in the empty block left at the caret
30
40
  */
31
41
  private __addBrInEmptyBlock;
32
42
  private __moveCursorInEditableSibling;
@@ -37,6 +37,9 @@ declare module 'jodit/config' {
37
37
  iframeDoctype: string;
38
38
  /**
39
39
  * Custom style to be used inside the iframe to display content.
40
+ * It goes in after `iframeCSSLinks`. The rules Jodit's own plugins need
41
+ * in the editing document are added apart from it, so a value of your
42
+ * own doesn't have to repeat them.
40
43
  *
41
44
  * ```javascript
42
45
  * Jodit.make('#editor', {
@@ -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;
@@ -37,6 +37,17 @@ export declare class inlinePopup extends Plugin {
37
37
  */
38
38
  private hidePopup;
39
39
  protected onOutsideClick(): void;
40
+ /**
41
+ * A key that moves the caret off an element closes its popup, and one
42
+ * that moves the caret into an element with a popup (a link) opens it,
43
+ * as clicks do
44
+ */
45
+ protected onKeyUp(): void;
46
+ private __followCaret;
47
+ /**
48
+ * The element with a popup that holds `node`
49
+ */
50
+ private __elementAt;
40
51
  /**
41
52
  * Can show popup for this type
42
53
  */
@@ -53,6 +64,13 @@ export declare class inlinePopup extends Plugin {
53
64
  * while the selection is still there. See #1238
54
65
  */
55
66
  private __reopenSelectionPopup;
67
+ /**
68
+ * The alignment controls fire `recalcPositionPopup` once they have moved
69
+ * the element, and their button then fires `closeAllPopups`. The popup
70
+ * opens again beside the element, as the selection toolbar does
71
+ */
72
+ private __reopenFor;
73
+ protected onRecalcPositionPopup(): void;
56
74
  private __onDocumentMouseDown;
57
75
  private __onCloseAllPopups;
58
76
  /**
@@ -64,6 +82,7 @@ export declare class inlinePopup extends Plugin {
64
82
  private __selectionBound;
65
83
  private snapRange;
66
84
  private onSelectionStart;
85
+ private __keyDownElement;
67
86
  private onSelectionEnd;
68
87
  /**
69
88
  * Selection change handler
@@ -0,0 +1,19 @@
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/ordered-list
8
+ */
9
+ import type { IJodit, Nullable } from "../../types/index";
10
+ /**
11
+ * The numbered list the selection is in
12
+ */
13
+ export declare function closestOrderedList(jodit: IJodit): Nullable<HTMLOListElement>;
14
+ /**
15
+ * Asks for the number of the first item of the list the selection is in,
16
+ * and sets the list's `start`. The selection is put back when the dialog
17
+ * closes, however it closes.
18
+ */
19
+ export declare function openStartDialog(jodit: IJodit): void;
@@ -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;
@@ -40,12 +46,26 @@ export declare class resizer extends Plugin {
40
46
  private pointerX;
41
47
  private pointerY;
42
48
  private onResize;
49
+ private __keyDownRange;
50
+ private __keyDownTable;
51
+ private onEditorKeyDown;
52
+ private __caretTable;
53
+ /**
54
+ * Hide the frame once a key has moved the caret off its element, and
55
+ * frame a table the caret has moved into, as clicks do
56
+ */
57
+ protected onEditorKeyUp(): void;
58
+ private __followCaret;
43
59
  private isAltMode;
44
60
  private onKeyDown;
45
61
  private onKeyUp;
46
62
  private onClickOutside;
47
63
  private getWorkplacePosition;
48
64
  private applySize;
65
+ /**
66
+ * The framed element can go with a wrapper round it, keeping its parent
67
+ */
68
+ private get isElementInEditor();
49
69
  private onDelete;
50
70
  private __onChangeEditor;
51
71
  /**
@@ -18,6 +18,29 @@ export declare class selectCells extends Plugin {
18
18
  */
19
19
  private get __tableModule();
20
20
  protected afterInit(jodit: IJodit): void;
21
+ /**
22
+ * The cell with the caret, and the selection, when a key went down
23
+ */
24
+ private __keyDownCell;
25
+ private __keyDownRange;
26
+ private __onKeyDown;
27
+ /**
28
+ * A link's popup replaces the cell's while the caret is in the link
29
+ */
30
+ private __keyDownInLink;
31
+ private __isInLink;
32
+ /**
33
+ * Where the selection starts rather than `s.current()`, which finds the
34
+ * first cell when the caret is just before the table
35
+ */
36
+ private __caretCell;
37
+ /**
38
+ * A key that moves the caret into a cell, from another cell or from
39
+ * outside the table, marks that cell and opens its popup, as a click on
40
+ * it does. One that moves the caret out of the table unmarks the cells
41
+ */
42
+ protected onKeyUp(): void;
43
+ private __followCaret;
21
44
  /**
22
45
  * First selected cell
23
46
  */
@@ -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;
@@ -0,0 +1,15 @@
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 { IJodit } from "../../types/index";
10
+ /**
11
+ * Run `insert`, which inserts media at the cursor, with the cursor after
12
+ * `replaced`, and put what it inserts in place of `replaced`
13
+ * @private
14
+ */
15
+ export declare function replaceMedia(j: IJodit, replaced: HTMLElement, insert: () => void): void;