jodit 4.4.1 → 4.4.2

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 (59) hide show
  1. package/es2015/jodit.css +1 -1
  2. package/es2015/jodit.fat.min.js +2 -2
  3. package/es2015/jodit.js +2 -2
  4. package/es2015/jodit.min.js +2 -2
  5. package/es2015/plugins/debug/debug.css +1 -1
  6. package/es2015/plugins/debug/debug.js +1 -1
  7. package/es2015/plugins/debug/debug.min.js +1 -1
  8. package/es2015/plugins/speech-recognize/speech-recognize.css +1 -1
  9. package/es2015/plugins/speech-recognize/speech-recognize.js +1 -1
  10. package/es2015/plugins/speech-recognize/speech-recognize.min.js +1 -1
  11. package/es2018/jodit.css +1 -1
  12. package/es2018/jodit.fat.min.js +2 -2
  13. package/es2018/jodit.js +2 -2
  14. package/es2018/jodit.min.js +2 -2
  15. package/es2018/plugins/debug/debug.css +1 -1
  16. package/es2018/plugins/debug/debug.js +1 -1
  17. package/es2018/plugins/debug/debug.min.js +1 -1
  18. package/es2018/plugins/speech-recognize/speech-recognize.css +1 -1
  19. package/es2018/plugins/speech-recognize/speech-recognize.js +1 -1
  20. package/es2018/plugins/speech-recognize/speech-recognize.min.js +1 -1
  21. package/es2021/jodit.css +1 -1
  22. package/es2021/jodit.fat.min.js +2 -2
  23. package/es2021/jodit.js +2 -2
  24. package/es2021/jodit.min.js +2 -2
  25. package/es2021/plugins/debug/debug.css +1 -1
  26. package/es2021/plugins/debug/debug.js +1 -1
  27. package/es2021/plugins/debug/debug.min.js +1 -1
  28. package/es2021/plugins/speech-recognize/speech-recognize.css +1 -1
  29. package/es2021/plugins/speech-recognize/speech-recognize.js +1 -1
  30. package/es2021/plugins/speech-recognize/speech-recognize.min.js +1 -1
  31. package/es2021.en/jodit.css +1 -1
  32. package/es2021.en/jodit.fat.min.js +2 -2
  33. package/es2021.en/jodit.js +2 -2
  34. package/es2021.en/jodit.min.js +2 -2
  35. package/es2021.en/plugins/debug/debug.css +1 -1
  36. package/es2021.en/plugins/debug/debug.js +1 -1
  37. package/es2021.en/plugins/debug/debug.min.js +1 -1
  38. package/es2021.en/plugins/speech-recognize/speech-recognize.css +1 -1
  39. package/es2021.en/plugins/speech-recognize/speech-recognize.js +1 -1
  40. package/es2021.en/plugins/speech-recognize/speech-recognize.min.js +1 -1
  41. package/es5/5.fat.min.js +1 -1
  42. package/es5/5.min.js +1 -1
  43. package/es5/975.fat.min.js +1 -1
  44. package/es5/975.min.js +1 -1
  45. package/es5/jodit.css +2 -2
  46. package/es5/jodit.fat.min.js +2 -2
  47. package/es5/jodit.js +2 -2
  48. package/es5/jodit.min.css +2 -2
  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/esm/config.d.ts +1565 -633
  57. package/esm/core/constants.js +1 -1
  58. package/package.json +1 -1
  59. package/esm/config2.d.ts +0 -1632
package/esm/config.d.ts CHANGED
@@ -1,595 +1,616 @@
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-2025 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
5
- */
6
- import type { Attributes, ButtonsOption, Controls, IControlType, IDictionary, IExtraPlugin, InsertMode, IUIButtonState, IViewOptions, NodeFunction, Nullable } from "./types";
1
+ import type { AjaxOptions } from 'jodit/types';
2
+ import type { IDialogOptions } from 'jodit/types';
3
+ import type { IFileBrowserOptions } from 'jodit/types';
4
+ import type { ImageEditorOptions } from 'jodit/types';
5
+ import type { IUploaderOptions } from 'jodit/types';
6
+ import type { IUploader } from 'jodit/types';
7
+ import type { HTMLTagNames } from 'jodit/types';
8
+ import type { AiAssistantSettings } from 'jodit/plugins/ai-assistant/interface';
9
+ import type { IDictionary } from './types';
10
+ import type { Nullable } from './types';
11
+ import type { ImagePropertiesOptions } from 'jodit/plugins/image-properties/interface';
12
+ import type { IControlType } from './types';
13
+ import type { IJodit } from 'jodit/types';
14
+ import type { formTemplate } from 'jodit/plugins/link/template';
15
+ import type { IUIForm } from 'jodit/types';
16
+ import type { IUIOption } from 'jodit/types';
17
+ import type { ButtonsOption } from './types';
18
+ import type { InsertMode } from './types';
19
+ import type { FuzzySearch } from 'jodit/types';
20
+ import type { ISourceEditor } from 'jodit/types';
21
+ import type { ISpeechRecognizeConstructor } from 'jodit/plugins/speech-recognize/interface';
22
+ import type { Attributes } from './types';
23
+ import type { Controls } from './types';
24
+ import type { IExtraPlugin } from './types';
25
+ import type { IUIButtonState } from './types';
26
+ import type { IViewOptions } from './types';
27
+ import type { NodeFunction } from './types';
7
28
  /**
8
29
  * Default Editor's Configuration
9
30
  */
10
31
  declare class Config implements IViewOptions {
11
- private constructor();
12
- /**
13
- * Use cache for heavy methods
14
- */
15
- cache: boolean;
16
- /**
17
- * Timeout of all asynchronous methods
18
- */
19
- defaultTimeout: number;
20
- namespace: string;
21
- /**
22
- * Editor loads completely without plugins. Useful when debugging your own plugin.
23
- */
24
- safeMode: boolean;
25
- /**
26
- * Editor's width
27
- *
28
- * @example
29
- * ```javascript
30
- * Jodit.make('.editor', {
31
- * width: '100%',
32
- * })
33
- * ```
34
- * @example
35
- * ```javascript
36
- * Jodit.make('.editor', {
37
- * width: 600, // equivalent for '600px'
38
- * })
39
- * ```
40
- * @example
41
- * ```javascript
42
- * Jodit.make('.editor', {
43
- * width: 'auto', // autosize
44
- * })
45
- * ```
46
- */
47
- width: number | string;
48
- /**
49
- * Editor's height
50
- *
51
- * @example
52
- * ```javascript
53
- * Jodit.make('.editor', {
54
- * height: '100%',
55
- * })
56
- * ```
57
- * @example
58
- * ```javascript
59
- * Jodit.make('.editor', {
60
- * height: 600, // equivalent for '600px'
61
- * })
62
- * ```
63
- * @example
64
- * ```javascript
65
- * Jodit.make('.editor', {
66
- * height: 'auto', // default - autosize
67
- * })
68
- * ```
69
- */
70
- height: number | string;
71
- /**
72
- * List of plugins that will be initialized in safe mode.
73
- *
74
- * ```js
75
- * Jodit.make('#editor', {
76
- * safeMode: true,
77
- * safePluginsList: ['about'],
78
- * extraPlugins: ['yourPluginDev']
79
- * });
80
- * ```
81
- */
82
- safePluginsList: string[];
83
- commandToHotkeys: IDictionary<string | string[]>;
84
- /**
85
- * Reserved for the paid version of the editor
86
- */
87
- license: string;
88
- /**
89
- * The name of the preset that will be used to initialize the editor.
90
- * The list of available presets can be found here Jodit.defaultOptions.presets
91
- * ```javascript
92
- * Jodit.make('.editor', {
93
- * preset: 'inline'
94
- * });
95
- * ```
96
- */
97
- preset: string;
98
- presets: IDictionary;
99
- ownerDocument: Document;
100
- /**
101
- * Allows you to specify the window in which the editor will be created. Default - window
102
- * This is necessary if you are creating the editor inside an iframe but the code is running in the parent window
103
- */
104
- ownerWindow: Window;
105
- /**
106
- * Shadow root if Jodit was created in it
107
- *
108
- * ```html
109
- * <div id="editor"></div>
110
- * ```
111
- *
112
- * ```js
113
- * const app = document.getElementById('editor');
114
- * app.attachShadow({ mode: 'open' });
115
- * const root = app.shadowRoot;
116
- *
117
- * root.innerHTML = `
118
- * <link rel="stylesheet" href="./build/jodit.css"/>
119
- * <h1>Jodit example in Shadow DOM</h1>
120
- * <div id="edit"></div>
121
- * `;
122
- *
123
- * const editor = Jodit.make(root.getElementById('edit'), {
124
- * globalFullSize: false,
125
- * shadowRoot: root
126
- * });
127
- * editor.value = '<p>start</p>';
128
- * ```
129
- */
130
- shadowRoot: Nullable<ShadowRoot>;
131
- /**
132
- * z-index For editor
133
- */
134
- zIndex: number;
135
- /**
136
- * Change the read-only state of the editor
137
- */
138
- readonly: boolean;
139
- /**
140
- * Change the disabled state of the editor
141
- */
142
- disabled: boolean;
143
- /**
144
- * In readOnly mode, some buttons can still be useful, for example, the button to view source code or print
145
- */
146
- activeButtonsInReadOnly: string[];
147
- /**
148
- * When the editor is in read-only mode, some commands can still be executed:
149
- * ```javascript
150
- * const editor = Jodit.make('.editor', {
151
- * allowCommandsInReadOnly: ['selectall', 'preview', 'print']
152
- * readonly: true
153
- * });
154
- * editor.execCommand('selectall');// will be selected all content
155
- * editor.execCommand('delete');// but content will not be deleted
156
- * ```
157
- */
158
- allowCommandsInReadOnly: string[];
159
- /**
160
- * Size of icons in the toolbar (can be "small", "middle", "large")
161
- *
162
- * @example
163
- * ```javascript
164
- * const editor = Jodit.make(".dark_editor", {
165
- * toolbarButtonSize: "small"
166
- * });
167
- * ```
168
- */
169
- toolbarButtonSize: IUIButtonState['size'];
170
- /**
171
- * Allow navigation in the toolbar of the editor by Tab key
172
- */
173
- allowTabNavigation: boolean;
174
- /**
175
- * Inline editing mode
176
- */
177
- inline: boolean;
178
- /**
179
- * Theme (can be "dark")
180
- * @example
181
- * ```javascript
182
- * const editor = Jodit.make(".dark_editor", {
183
- * theme: "dark"
184
- * });
185
- * ```
186
- */
187
- theme: string;
188
- /**
189
- * if set true, then the current mode is saved in a cookie, and is restored after a reload of the page
190
- */
191
- saveModeInStorage: boolean;
192
- /**
193
- * Class name that can be appended to the editable area
194
- *
195
- * @see [[Config.iframeCSSLinks]]
196
- * @see [[Config.iframeStyle]]
197
- *
198
- * @example
199
- * ```javascript
200
- * Jodit.make('#editor', {
201
- * editorClassName: 'some_my_class'
202
- * });
203
- * ```
204
- * ```html
205
- * <style>
206
- * .some_my_class p{
207
- * line-height: 16px;
208
- * }
209
- * </style>
210
- * ```
211
- */
212
- editorClassName: false | string;
213
- /**
214
- * Class name that can be appended to the main editor container
215
- * @example
216
- * ```javascript
217
- * const jodit = Jodit.make('#editor', {
218
- * className: 'some_my_class'
219
- * });
220
- *
221
- * console.log(jodit.container.classList.contains('some_my_class')); // true
222
- * ```
223
- * ```html
224
- * <style>
225
- * .some_my_class {
226
- * max-width: 600px;
227
- * margin: 0 auto;
228
- * }
229
- * </style>
230
- * ```
231
- */
232
- className: false | string;
233
- /**
234
- * The internal styles of the editable area. They are intended to change
235
- * not the appearance of the editor, but to change the appearance of the content.
236
- * @example
237
- * ```javascript
238
- * Jodit.make('#editor', {
239
- * style: {
240
- * font: '12px Arial',
241
- * color: '#0c0c0c'
242
- * }
243
- * });
244
- * ```
245
- */
246
- style: false | IDictionary;
247
- /**
248
- *
249
- * @example
250
- * ```javascript
251
- * Jodit.make('#editor', {
252
- * editorStyle: {
253
- * font: '12px Arial',
254
- * color: '#0c0c0c'
255
- * }
256
- * });
257
- * ```
258
- */
259
- containerStyle: false | IDictionary;
260
- /**
261
- * Dictionary of variable values in css, a complete list can be found here
262
- * https://github.com/xdan/jodit/blob/main/src/styles/variables.less#L25
263
- *
264
- * @example
265
- * ```js
266
- * const editor = Jodit.make('#editor', {
267
- * styleValues: {
268
- * 'color-text': 'red',
269
- * colorBorder: 'black',
270
- * 'color-panel': 'blue'
271
- * }
272
- * });
273
- * ```
274
- */
275
- styleValues: IDictionary;
276
- /**
277
- * After all, changes in editors for textarea will call change trigger
278
- *
279
- * @example
280
- * ```javascript
281
- * const editor = Jodit.make('#editor');
282
- * document.getElementById('editor').addEventListener('change', function () {
283
- * console.log(this.value);
284
- * })
285
- * ```
286
- */
287
- triggerChangeEvent: boolean;
288
- /**
289
- * The writing direction of the language which is used to create editor content. Allowed values are: ''
290
- * (an empty string) – Indicates that content direction will be the same as either the editor UI direction or
291
- * the page element direction. 'ltr' – Indicates a Left-To-Right text direction (like in English).
292
- * 'rtl' – Indicates a Right-To-Left text direction (like in Arabic).
293
- *
294
- * @example
295
- * ```javascript
296
- * Jodit.make('.editor', {
297
- * direction: 'rtl'
298
- * })
299
- * ```
300
- */
301
- direction: 'rtl' | 'ltr' | '';
302
- /**
303
- * Language by default. if `auto` language set by document.documentElement.lang ||
304
- * (navigator.language && navigator.language.substr(0, 2)) ||
305
- * (navigator.browserLanguage && navigator.browserLanguage.substr(0, 2)) || 'en'
306
- *
307
- * @example
308
- * ```html
309
- * <!-- include in you page lang file -->
310
- * <script src="jodit/lang/de.js"></script>
311
- * <script>
312
- * var editor = Jodit.make('.editor', {
313
- * language: 'de'
314
- * });
315
- * </script>
316
- * ```
317
- */
318
- language: string;
319
- /**
320
- * if true all Lang.i18n(key) return `{key}`
321
- *
322
- * @example
323
- * ```html
324
- * <script>
325
- * var editor = Jodit.make('.editor', {
326
- * debugLanguage: true
327
- * });
328
- *
329
- * console.log(editor.i18n("Test")); // {Test}
330
- * </script>
331
- * ```
332
- */
333
- debugLanguage: boolean;
334
- /**
335
- * Collection of language pack data `{en: {'Type something': 'Type something', ...}}`
336
- *
337
- * @example
338
- * ```javascript
339
- * const editor = Jodit.make('#editor', {
340
- * language: 'ru',
341
- * i18n: {
342
- * ru: {
343
- * 'Type something': 'Начните что-либо вводить'
344
- * }
345
- * }
346
- * });
347
- * console.log(editor.i18n('Type something')) //Начните что-либо вводить
348
- * ```
349
- */
350
- i18n: IDictionary<IDictionary<string>> | false;
351
- /**
352
- * The tabindex global attribute is an integer indicating if the element can take
353
- * input focus (is focusable), if it should participate to sequential keyboard navigation,
354
- * and if so, at what position. It can take several values
355
- */
356
- tabIndex: number;
357
- /**
358
- * Boolean, whether the toolbar should be shown.
359
- * Alternatively, a valid css-selector-string to use an element as toolbar container.
360
- */
361
- toolbar: boolean | string | HTMLElement;
362
- /**
363
- * Boolean, whether the statusbar should be shown.
364
- */
365
- statusbar: boolean;
366
- /**
367
- * Show tooltip after mouse enter on the button
368
- */
369
- showTooltip: boolean;
370
- /**
371
- * Delay before show tooltip
372
- */
373
- showTooltipDelay: number;
374
- /**
375
- * Instead of create custop tooltip - use native title tooltips
376
- */
377
- useNativeTooltip: boolean;
378
- /**
379
- * Default insert method
380
- * @default insert_as_html
381
- */
382
- defaultActionOnPaste: InsertMode;
383
- /**
384
- * Element that will be created when you press Enter
385
- */
386
- enter: 'p' | 'div' | 'br';
387
- /**
388
- * When this option is enabled, the editor's content will be placed in an iframe and isolated from the rest of the page.
389
- *
390
- * @example
391
- * ```javascript
392
- * Jodit.make('#editor', {
393
- * iframe: true,
394
- * iframeStyle: 'html{margin: 0px;}body{padding:10px;background:transparent;color:#000;position:relative;z-index:2;\
395
- * user-select:auto;margin:0px;overflow:hidden;}body:after{content:"";clear:both;display:block}';
396
- * });
397
- * ```
398
- */
399
- iframe: boolean;
400
- /**
401
- * Allow editing the entire HTML document(html, head)
402
- * \> Works together with the iframe option.
403
- * @example
404
- * ```js
405
- * const editor = Jodit.make('#editor', {
406
- * iframe: true,
407
- * editHTMLDocumentMode: true
408
- * });
409
- * editor.value = '<!DOCTYPE html><html lang="en" style="overflow-y:hidden">' +
410
- * '<head><title>Jodit Editor</title></head>' +
411
- * '<body spellcheck="false"><p>Some text</p><p> a </p></body>' +
412
- * '</html>';
413
- * ```
414
- */
415
- editHTMLDocumentMode: boolean;
416
- /**
417
- * Use when you need to insert new block element
418
- * use enter option if not set
419
- */
420
- enterBlock: 'p' | 'div';
421
- /**
422
- * Jodit.MODE_WYSIWYG The HTML editor allows you to write like MSWord,
423
- * Jodit.MODE_SOURCE syntax highlighting source editor
424
- * @example
425
- * ```javascript
426
- * var editor = Jodit.make('#editor', {
427
- * defaultMode: Jodit.MODE_SPLIT
428
- * });
429
- * console.log(editor.getRealMode())
430
- * ```
431
- */
432
- defaultMode: number;
433
- /**
434
- * Use split mode
435
- */
436
- useSplitMode: boolean;
437
- /**
438
- * The colors in HEX representation to select a color for the background and for the text in colorpicker
439
- * @example
440
- * ```javascript
441
- * Jodit.make('#editor', {
442
- * colors: ['#ff0000', '#00ff00', '#0000ff']
443
- * })
444
- * ```
445
- */
446
- colors: IDictionary<string[]> | string[];
447
- /**
448
- * The default tab color picker
449
- * @example
450
- * ```javascript
451
- * Jodit.make('#editor2', {
452
- * colorPickerDefaultTab: 'color'
453
- * })
454
- * ```
455
- */
456
- colorPickerDefaultTab: 'background' | 'color';
457
- /**
458
- * Image size defaults to a larger image
459
- */
460
- imageDefaultWidth: number;
461
- /**
462
- * Do not display these buttons that are on the list
463
- * @example
464
- * ```javascript
465
- * Jodit.make('#editor2', {
466
- * removeButtons: ['hr', 'source']
467
- * });
468
- * ```
469
- */
470
- removeButtons: string[];
471
- /**
472
- * Do not init these plugins
473
- * @example
474
- * ```typescript
475
- * var editor = Jodit.make('.editor', {
476
- * disablePlugins: 'table,iframe'
477
- * });
478
- * //or
479
- * var editor = Jodit.make('.editor', {
480
- * disablePlugins: ['table', 'iframe']
481
- * });
482
- * ```
483
- */
484
- disablePlugins: string[] | string;
485
- /**
486
- * Init and download extra plugins
487
- * @example
488
- * ```typescript
489
- * var editor = Jodit.make('.editor', {
490
- * extraPlugins: ['emoji']
491
- * });
492
- * ```
493
- * It will try load %SCRIPT_PATH%/plugins/emoji/emoji.js and after load will try init it
494
- */
495
- extraPlugins: Array<string | IExtraPlugin>;
496
- /**
497
- * Base path for download extra plugins
498
- */
499
- basePath?: string;
500
- /**
501
- * These buttons list will be added to the option. Buttons
502
- */
503
- extraButtons: Array<string | IControlType>;
504
- /**
505
- * By default, you can only install an icon from the Jodit suite.
506
- * You can add your icon to the set using the `Jodit.modules.Icon.set (name, svg Code)` method.
507
- * But for a declarative declaration, you can use this option.
508
- *
509
- * @example
510
- * ```js
511
- * Jodit.modules.Icon.set('someIcon', '<svg><path.../></svg>');
512
- * const editor = Jodit.make({
513
- * extraButtons: [{
514
- * name: 'someButton',
515
- * icon: 'someIcon'
516
- * }]
517
- * });
518
- *
519
- * @example
520
- * const editor = Jodit.make({
521
- * extraIcons: {
522
- * someIcon: '<svg><path.../></svg>'
523
- * },
524
- * extraButtons: [{
525
- * name: 'someButton',
526
- * icon: 'someIcon'
527
- * }]
528
- * });
529
- * ```
530
- * @example
531
- * ```js
532
- * const editor = Jodit.make({
533
- * extraButtons: [{
534
- * name: 'someButton',
535
- * icon: '<svg><path.../></svg>'
536
- * }]
537
- * });
538
- * ```
539
- */
540
- extraIcons: IDictionary<string>;
541
- /**
542
- * Default attributes for created inside editor elements
543
- * @example
544
- * ```js
545
- * const editor2 = Jodit.make('#editor', {
546
- * createAttributes: {
547
- * div: {
548
- * class: 'test'
549
- * },
550
- * ul: function (ul) {
551
- * ul.classList.add('ui-test');
552
- * }
553
- * }
554
- * });
555
- *
556
- * const div2 = editor2.createInside.div();
557
- * expect(div2.className).equals('test');
558
- *
559
- * const ul = editor2.createInside.element('ul');
560
- * expect(ul.className).equals('ui-test');
561
- * ```
562
- * Or JSX in React
563
- * @example
564
- * ```jsx
565
- * import React, {useState, useRef} from 'react';
566
- * import JoditEditor from "jodit-react";
567
- *
568
- * const config = {
569
- * createAttributes: {
570
- * div: {
571
- * class: 'align-center'
572
- * }
573
- * }
574
- * };
575
- *
576
- * <JoditEditor config={config}/>
577
- * ```
578
- */
579
- createAttributes: IDictionary<Attributes | NodeFunction>;
580
- /**
581
- * The width of the editor, accepted as the biggest. Used to the responsive version of the editor
582
- */
583
- sizeLG: number;
584
- /**
585
- * The width of the editor, accepted as the medium. Used to the responsive version of the editor
586
- */
587
- sizeMD: number;
588
- /**
589
- * The width of the editor, accepted as the small. Used to the responsive version of the editor
590
- */
591
- sizeSM: number;
592
- /**
32
+ private constructor();
33
+ /**
34
+ * Use cache for heavy methods
35
+ */
36
+ cache: boolean;
37
+ /**
38
+ * Timeout of all asynchronous methods
39
+ */
40
+ defaultTimeout: number;
41
+ namespace: string;
42
+ /**
43
+ * Editor loads completely without plugins. Useful when debugging your own plugin.
44
+ */
45
+ safeMode: boolean;
46
+ /**
47
+ * Editor's width
48
+ *
49
+ * @example
50
+ * ```javascript
51
+ * Jodit.make('.editor', {
52
+ * width: '100%',
53
+ * })
54
+ * ```
55
+ * @example
56
+ * ```javascript
57
+ * Jodit.make('.editor', {
58
+ * width: 600, // equivalent for '600px'
59
+ * })
60
+ * ```
61
+ * @example
62
+ * ```javascript
63
+ * Jodit.make('.editor', {
64
+ * width: 'auto', // autosize
65
+ * })
66
+ * ```
67
+ */
68
+ width: number | string;
69
+ /**
70
+ * Editor's height
71
+ *
72
+ * @example
73
+ * ```javascript
74
+ * Jodit.make('.editor', {
75
+ * height: '100%',
76
+ * })
77
+ * ```
78
+ * @example
79
+ * ```javascript
80
+ * Jodit.make('.editor', {
81
+ * height: 600, // equivalent for '600px'
82
+ * })
83
+ * ```
84
+ * @example
85
+ * ```javascript
86
+ * Jodit.make('.editor', {
87
+ * height: 'auto', // default - autosize
88
+ * })
89
+ * ```
90
+ */
91
+ height: number | string;
92
+ /**
93
+ * List of plugins that will be initialized in safe mode.
94
+ *
95
+ * ```js
96
+ * Jodit.make('#editor', {
97
+ * safeMode: true,
98
+ * safePluginsList: ['about'],
99
+ * extraPlugins: ['yourPluginDev']
100
+ * });
101
+ * ```
102
+ */
103
+ safePluginsList: string[];
104
+ commandToHotkeys: IDictionary<string | string[]>;
105
+ /**
106
+ * Reserved for the paid version of the editor
107
+ */
108
+ license: string;
109
+ /**
110
+ * The name of the preset that will be used to initialize the editor.
111
+ * The list of available presets can be found here Jodit.defaultOptions.presets
112
+ * ```javascript
113
+ * Jodit.make('.editor', {
114
+ * preset: 'inline'
115
+ * });
116
+ * ```
117
+ */
118
+ preset: string;
119
+ presets: IDictionary;
120
+ ownerDocument: Document;
121
+ /**
122
+ * Allows you to specify the window in which the editor will be created. Default - window
123
+ * This is necessary if you are creating the editor inside an iframe but the code is running in the parent window
124
+ */
125
+ ownerWindow: Window;
126
+ /**
127
+ * Shadow root if Jodit was created in it
128
+ *
129
+ * ```html
130
+ * <div id="editor"></div>
131
+ * ```
132
+ *
133
+ * ```js
134
+ * const app = document.getElementById('editor');
135
+ * app.attachShadow({ mode: 'open' });
136
+ * const root = app.shadowRoot;
137
+ *
138
+ * root.innerHTML = `
139
+ * <link rel="stylesheet" href="./build/jodit.css"/>
140
+ * <h1>Jodit example in Shadow DOM</h1>
141
+ * <div id="edit"></div>
142
+ * `;
143
+ *
144
+ * const editor = Jodit.make(root.getElementById('edit'), {
145
+ * globalFullSize: false,
146
+ * shadowRoot: root
147
+ * });
148
+ * editor.value = '<p>start</p>';
149
+ * ```
150
+ */
151
+ shadowRoot: Nullable<ShadowRoot>;
152
+ /**
153
+ * z-index For editor
154
+ */
155
+ zIndex: number;
156
+ /**
157
+ * Change the read-only state of the editor
158
+ */
159
+ readonly: boolean;
160
+ /**
161
+ * Change the disabled state of the editor
162
+ */
163
+ disabled: boolean;
164
+ /**
165
+ * In readOnly mode, some buttons can still be useful, for example, the button to view source code or print
166
+ */
167
+ activeButtonsInReadOnly: string[];
168
+ /**
169
+ * When the editor is in read-only mode, some commands can still be executed:
170
+ * ```javascript
171
+ * const editor = Jodit.make('.editor', {
172
+ * allowCommandsInReadOnly: ['selectall', 'preview', 'print']
173
+ * readonly: true
174
+ * });
175
+ * editor.execCommand('selectall');// will be selected all content
176
+ * editor.execCommand('delete');// but content will not be deleted
177
+ * ```
178
+ */
179
+ allowCommandsInReadOnly: string[];
180
+ /**
181
+ * Size of icons in the toolbar (can be "small", "middle", "large")
182
+ *
183
+ * @example
184
+ * ```javascript
185
+ * const editor = Jodit.make(".dark_editor", {
186
+ * toolbarButtonSize: "small"
187
+ * });
188
+ * ```
189
+ */
190
+ toolbarButtonSize: IUIButtonState['size'];
191
+ /**
192
+ * Allow navigation in the toolbar of the editor by Tab key
193
+ */
194
+ allowTabNavigation: boolean;
195
+ /**
196
+ * Inline editing mode
197
+ */
198
+ inline: boolean;
199
+ /**
200
+ * Theme (can be "dark")
201
+ * @example
202
+ * ```javascript
203
+ * const editor = Jodit.make(".dark_editor", {
204
+ * theme: "dark"
205
+ * });
206
+ * ```
207
+ */
208
+ theme: string;
209
+ /**
210
+ * if set true, then the current mode is saved in a cookie, and is restored after a reload of the page
211
+ */
212
+ saveModeInStorage: boolean;
213
+ /**
214
+ * Class name that can be appended to the editable area
215
+ *
216
+ * @see [[Config.iframeCSSLinks]]
217
+ * @see [[Config.iframeStyle]]
218
+ *
219
+ * @example
220
+ * ```javascript
221
+ * Jodit.make('#editor', {
222
+ * editorClassName: 'some_my_class'
223
+ * });
224
+ * ```
225
+ * ```html
226
+ * <style>
227
+ * .some_my_class p{
228
+ * line-height: 16px;
229
+ * }
230
+ * </style>
231
+ * ```
232
+ */
233
+ editorClassName: false | string;
234
+ /**
235
+ * Class name that can be appended to the main editor container
236
+ * @example
237
+ * ```javascript
238
+ * const jodit = Jodit.make('#editor', {
239
+ * className: 'some_my_class'
240
+ * });
241
+ *
242
+ * console.log(jodit.container.classList.contains('some_my_class')); // true
243
+ * ```
244
+ * ```html
245
+ * <style>
246
+ * .some_my_class {
247
+ * max-width: 600px;
248
+ * margin: 0 auto;
249
+ * }
250
+ * </style>
251
+ * ```
252
+ */
253
+ className: false | string;
254
+ /**
255
+ * The internal styles of the editable area. They are intended to change
256
+ * not the appearance of the editor, but to change the appearance of the content.
257
+ * @example
258
+ * ```javascript
259
+ * Jodit.make('#editor', {
260
+ * style: {
261
+ * font: '12px Arial',
262
+ * color: '#0c0c0c'
263
+ * }
264
+ * });
265
+ * ```
266
+ */
267
+ style: false | IDictionary;
268
+ /**
269
+ *
270
+ * @example
271
+ * ```javascript
272
+ * Jodit.make('#editor', {
273
+ * editorStyle: {
274
+ * font: '12px Arial',
275
+ * color: '#0c0c0c'
276
+ * }
277
+ * });
278
+ * ```
279
+ */
280
+ containerStyle: false | IDictionary;
281
+ /**
282
+ * Dictionary of variable values in css, a complete list can be found here
283
+ * https://github.com/xdan/jodit/blob/main/src/styles/variables.less#L25
284
+ *
285
+ * @example
286
+ * ```js
287
+ * const editor = Jodit.make('#editor', {
288
+ * styleValues: {
289
+ * 'color-text': 'red',
290
+ * colorBorder: 'black',
291
+ * 'color-panel': 'blue'
292
+ * }
293
+ * });
294
+ * ```
295
+ */
296
+ styleValues: IDictionary;
297
+ /**
298
+ * After all, changes in editors for textarea will call change trigger
299
+ *
300
+ * @example
301
+ * ```javascript
302
+ * const editor = Jodit.make('#editor');
303
+ * document.getElementById('editor').addEventListener('change', function () {
304
+ * console.log(this.value);
305
+ * })
306
+ * ```
307
+ */
308
+ triggerChangeEvent: boolean;
309
+ /**
310
+ * The writing direction of the language which is used to create editor content. Allowed values are: ''
311
+ * (an empty string) – Indicates that content direction will be the same as either the editor UI direction or
312
+ * the page element direction. 'ltr' – Indicates a Left-To-Right text direction (like in English).
313
+ * 'rtl' – Indicates a Right-To-Left text direction (like in Arabic).
314
+ *
315
+ * @example
316
+ * ```javascript
317
+ * Jodit.make('.editor', {
318
+ * direction: 'rtl'
319
+ * })
320
+ * ```
321
+ */
322
+ direction: 'rtl' | 'ltr' | '';
323
+ /**
324
+ * Language by default. if `auto` language set by document.documentElement.lang ||
325
+ * (navigator.language && navigator.language.substr(0, 2)) ||
326
+ * (navigator.browserLanguage && navigator.browserLanguage.substr(0, 2)) || 'en'
327
+ *
328
+ * @example
329
+ * ```html
330
+ * <!-- include in you page lang file -->
331
+ * <script src="jodit/lang/de.js"></script>
332
+ * <script>
333
+ * var editor = Jodit.make('.editor', {
334
+ * language: 'de'
335
+ * });
336
+ * </script>
337
+ * ```
338
+ */
339
+ language: string;
340
+ /**
341
+ * if true all Lang.i18n(key) return `{key}`
342
+ *
343
+ * @example
344
+ * ```html
345
+ * <script>
346
+ * var editor = Jodit.make('.editor', {
347
+ * debugLanguage: true
348
+ * });
349
+ *
350
+ * console.log(editor.i18n("Test")); // {Test}
351
+ * </script>
352
+ * ```
353
+ */
354
+ debugLanguage: boolean;
355
+ /**
356
+ * Collection of language pack data `{en: {'Type something': 'Type something', ...}}`
357
+ *
358
+ * @example
359
+ * ```javascript
360
+ * const editor = Jodit.make('#editor', {
361
+ * language: 'ru',
362
+ * i18n: {
363
+ * ru: {
364
+ * 'Type something': 'Начните что-либо вводить'
365
+ * }
366
+ * }
367
+ * });
368
+ * console.log(editor.i18n('Type something')) //Начните что-либо вводить
369
+ * ```
370
+ */
371
+ i18n: IDictionary<IDictionary<string>> | false;
372
+ /**
373
+ * The tabindex global attribute is an integer indicating if the element can take
374
+ * input focus (is focusable), if it should participate to sequential keyboard navigation,
375
+ * and if so, at what position. It can take several values
376
+ */
377
+ tabIndex: number;
378
+ /**
379
+ * Boolean, whether the toolbar should be shown.
380
+ * Alternatively, a valid css-selector-string to use an element as toolbar container.
381
+ */
382
+ toolbar: boolean | string | HTMLElement;
383
+ /**
384
+ * Boolean, whether the statusbar should be shown.
385
+ */
386
+ statusbar: boolean;
387
+ /**
388
+ * Show tooltip after mouse enter on the button
389
+ */
390
+ showTooltip: boolean;
391
+ /**
392
+ * Delay before show tooltip
393
+ */
394
+ showTooltipDelay: number;
395
+ /**
396
+ * Instead of create custop tooltip - use native title tooltips
397
+ */
398
+ useNativeTooltip: boolean;
399
+ /**
400
+ * Default insert method
401
+ * @default insert_as_html
402
+ */
403
+ defaultActionOnPaste: InsertMode;
404
+ /**
405
+ * Element that will be created when you press Enter
406
+ */
407
+ enter: 'p' | 'div' | 'br';
408
+ /**
409
+ * When this option is enabled, the editor's content will be placed in an iframe and isolated from the rest of the page.
410
+ *
411
+ * @example
412
+ * ```javascript
413
+ * Jodit.make('#editor', {
414
+ * iframe: true,
415
+ * iframeStyle: 'html{margin: 0px;}body{padding:10px;background:transparent;color:#000;position:relative;z-index:2;\
416
+ * user-select:auto;margin:0px;overflow:hidden;}body:after{content:"";clear:both;display:block}';
417
+ * });
418
+ * ```
419
+ */
420
+ iframe: boolean;
421
+ /**
422
+ * Allow editing the entire HTML document(html, head)
423
+ * \> Works together with the iframe option.
424
+ * @example
425
+ * ```js
426
+ * const editor = Jodit.make('#editor', {
427
+ * iframe: true,
428
+ * editHTMLDocumentMode: true
429
+ * });
430
+ * editor.value = '<!DOCTYPE html><html lang="en" style="overflow-y:hidden">' +
431
+ * '<head><title>Jodit Editor</title></head>' +
432
+ * '<body spellcheck="false"><p>Some text</p><p> a </p></body>' +
433
+ * '</html>';
434
+ * ```
435
+ */
436
+ editHTMLDocumentMode: boolean;
437
+ /**
438
+ * Use when you need to insert new block element
439
+ * use enter option if not set
440
+ */
441
+ enterBlock: 'p' | 'div';
442
+ /**
443
+ * Jodit.MODE_WYSIWYG The HTML editor allows you to write like MSWord,
444
+ * Jodit.MODE_SOURCE syntax highlighting source editor
445
+ * @example
446
+ * ```javascript
447
+ * var editor = Jodit.make('#editor', {
448
+ * defaultMode: Jodit.MODE_SPLIT
449
+ * });
450
+ * console.log(editor.getRealMode())
451
+ * ```
452
+ */
453
+ defaultMode: number;
454
+ /**
455
+ * Use split mode
456
+ */
457
+ useSplitMode: boolean;
458
+ /**
459
+ * The colors in HEX representation to select a color for the background and for the text in colorpicker
460
+ * @example
461
+ * ```javascript
462
+ * Jodit.make('#editor', {
463
+ * colors: ['#ff0000', '#00ff00', '#0000ff']
464
+ * })
465
+ * ```
466
+ */
467
+ colors: IDictionary<string[]> | string[];
468
+ /**
469
+ * The default tab color picker
470
+ * @example
471
+ * ```javascript
472
+ * Jodit.make('#editor2', {
473
+ * colorPickerDefaultTab: 'color'
474
+ * })
475
+ * ```
476
+ */
477
+ colorPickerDefaultTab: 'background' | 'color';
478
+ /**
479
+ * Image size defaults to a larger image
480
+ */
481
+ imageDefaultWidth: number;
482
+ /**
483
+ * Do not display these buttons that are on the list
484
+ * @example
485
+ * ```javascript
486
+ * Jodit.make('#editor2', {
487
+ * removeButtons: ['hr', 'source']
488
+ * });
489
+ * ```
490
+ */
491
+ removeButtons: string[];
492
+ /**
493
+ * Do not init these plugins
494
+ * @example
495
+ * ```typescript
496
+ * var editor = Jodit.make('.editor', {
497
+ * disablePlugins: 'table,iframe'
498
+ * });
499
+ * //or
500
+ * var editor = Jodit.make('.editor', {
501
+ * disablePlugins: ['table', 'iframe']
502
+ * });
503
+ * ```
504
+ */
505
+ disablePlugins: string[] | string;
506
+ /**
507
+ * Init and download extra plugins
508
+ * @example
509
+ * ```typescript
510
+ * var editor = Jodit.make('.editor', {
511
+ * extraPlugins: ['emoji']
512
+ * });
513
+ * ```
514
+ * It will try load %SCRIPT_PATH%/plugins/emoji/emoji.js and after load will try init it
515
+ */
516
+ extraPlugins: Array<string | IExtraPlugin>;
517
+ /**
518
+ * Base path for download extra plugins
519
+ */
520
+ basePath?: string;
521
+ /**
522
+ * These buttons list will be added to the option. Buttons
523
+ */
524
+ extraButtons: Array<string | IControlType>;
525
+ /**
526
+ * By default, you can only install an icon from the Jodit suite.
527
+ * You can add your icon to the set using the `Jodit.modules.Icon.set (name, svg Code)` method.
528
+ * But for a declarative declaration, you can use this option.
529
+ *
530
+ * @example
531
+ * ```js
532
+ * Jodit.modules.Icon.set('someIcon', '<svg><path.../></svg>');
533
+ * const editor = Jodit.make({
534
+ * extraButtons: [{
535
+ * name: 'someButton',
536
+ * icon: 'someIcon'
537
+ * }]
538
+ * });
539
+ *
540
+ * @example
541
+ * const editor = Jodit.make({
542
+ * extraIcons: {
543
+ * someIcon: '<svg><path.../></svg>'
544
+ * },
545
+ * extraButtons: [{
546
+ * name: 'someButton',
547
+ * icon: 'someIcon'
548
+ * }]
549
+ * });
550
+ * ```
551
+ * @example
552
+ * ```js
553
+ * const editor = Jodit.make({
554
+ * extraButtons: [{
555
+ * name: 'someButton',
556
+ * icon: '<svg><path.../></svg>'
557
+ * }]
558
+ * });
559
+ * ```
560
+ */
561
+ extraIcons: IDictionary<string>;
562
+ /**
563
+ * Default attributes for created inside editor elements
564
+ * @example
565
+ * ```js
566
+ * const editor2 = Jodit.make('#editor', {
567
+ * createAttributes: {
568
+ * div: {
569
+ * class: 'test'
570
+ * },
571
+ * ul: function (ul) {
572
+ * ul.classList.add('ui-test');
573
+ * }
574
+ * }
575
+ * });
576
+ *
577
+ * const div2 = editor2.createInside.div();
578
+ * expect(div2.className).equals('test');
579
+ *
580
+ * const ul = editor2.createInside.element('ul');
581
+ * expect(ul.className).equals('ui-test');
582
+ * ```
583
+ * Or JSX in React
584
+ * @example
585
+ * ```jsx
586
+ * import React, {useState, useRef} from 'react';
587
+ * import JoditEditor from "jodit-react";
588
+ *
589
+ * const config = {
590
+ * createAttributes: {
591
+ * div: {
592
+ * class: 'align-center'
593
+ * }
594
+ * }
595
+ * };
596
+ *
597
+ * <JoditEditor config={config}/>
598
+ * ```
599
+ */
600
+ createAttributes: IDictionary<Attributes | NodeFunction>;
601
+ /**
602
+ * The width of the editor, accepted as the biggest. Used to the responsive version of the editor
603
+ */
604
+ sizeLG: number;
605
+ /**
606
+ * The width of the editor, accepted as the medium. Used to the responsive version of the editor
607
+ */
608
+ sizeMD: number;
609
+ /**
610
+ * The width of the editor, accepted as the small. Used to the responsive version of the editor
611
+ */
612
+ sizeSM: number;
613
+ /**
593
614
  * The list of buttons that appear in the editor's toolbar on large places (≥ options.sizeLG).
594
615
  * Note - this is not the width of the device, the width of the editor
595
616
  * @example
@@ -651,50 +672,961 @@ declare class Config implements IViewOptions {
651
672
  * });
652
673
  * ```
653
674
  */
654
- buttons: ButtonsOption;
655
- /**
656
- * Behavior for buttons
657
- */
658
- controls: Controls;
659
- /**
660
- * Some events are called when the editor is initialized, for example, the `afterInit` event.
661
- * So this code won't work:
662
- * ```javascript
663
- * const editor = Jodit.make('#editor');
664
- * editor.events.on('afterInit', () => console.log('afterInit'));
665
- * ```
666
- * You need to do this:
667
- * ```javascript
668
- * Jodit.make('#editor', {
669
- * events: {
670
- * afterInit: () => console.log('afterInit')
671
- * }
672
- * });
673
- * ```
674
- * The option can use any Jodit events, for example:
675
- * ```javascript
676
- * const editor = Jodit.make('#editor', {
677
- * events: {
678
- * hello: (name) => console.log('Hello', name)
679
- * }
680
- * });
681
- * editor.e.fire('hello', 'Mike');
682
- * ```
683
- */
684
- events: IDictionary<(...args: any[]) => any>;
685
- /**
686
- * Buttons in toolbat without SVG - only texts
687
- */
688
- textIcons: boolean;
689
- /**
690
- * Element for dialog container
691
- */
692
- popupRoot: Nullable<HTMLElement>;
693
- /**
694
- * shows a INPUT[type=color] to open the browser color picker, on the right bottom of widget color picker
695
- */
696
- showBrowserColorPicker: boolean;
697
- private static __defaultOptions;
698
- static get defaultOptions(): Config;
675
+ buttons: ButtonsOption;
676
+ /**
677
+ * Behavior for buttons
678
+ */
679
+ controls: Controls;
680
+ /**
681
+ * Some events are called when the editor is initialized, for example, the `afterInit` event.
682
+ * So this code won't work:
683
+ * ```javascript
684
+ * const editor = Jodit.make('#editor');
685
+ * editor.events.on('afterInit', () => console.log('afterInit'));
686
+ * ```
687
+ * You need to do this:
688
+ * ```javascript
689
+ * Jodit.make('#editor', {
690
+ * events: {
691
+ * afterInit: () => console.log('afterInit')
692
+ * }
693
+ * });
694
+ * ```
695
+ * The option can use any Jodit events, for example:
696
+ * ```javascript
697
+ * const editor = Jodit.make('#editor', {
698
+ * events: {
699
+ * hello: (name) => console.log('Hello', name)
700
+ * }
701
+ * });
702
+ * editor.e.fire('hello', 'Mike');
703
+ * ```
704
+ */
705
+ events: IDictionary<(...args: any[]) => any>;
706
+ /**
707
+ * Buttons in toolbat without SVG - only texts
708
+ */
709
+ textIcons: boolean;
710
+ /**
711
+ * Element for dialog container
712
+ */
713
+ popupRoot: Nullable<HTMLElement>;
714
+ /**
715
+ * shows a INPUT[type=color] to open the browser color picker, on the right bottom of widget color picker
716
+ */
717
+ showBrowserColorPicker: boolean;
718
+ private static __defaultOptions;
719
+ static get defaultOptions(): Config;
699
720
  }
700
721
  export { Config };
722
+
723
+ interface Config {
724
+ /**
725
+ * A set of key/value pairs that configure the Ajax request. All settings are optional
726
+ */
727
+ defaultAjaxOptions: AjaxOptions;
728
+ }
729
+ interface Config {
730
+ dialog: IDialogOptions;
731
+ }
732
+ interface Config {
733
+ filebrowser: IFileBrowserOptions;
734
+ }
735
+ interface Config {
736
+ history: {
737
+ enable: boolean;
738
+
739
+ /**
740
+ * Limit of history length
741
+ */
742
+ maxHistoryLength: number;
743
+
744
+ /**
745
+ * Delay on every change
746
+ */
747
+ timeout: number;
748
+ };
749
+ }
750
+ interface Config {
751
+ imageeditor: ImageEditorOptions;
752
+ }
753
+ interface Config {
754
+ /**
755
+ * Enable drag and drop file editor
756
+ */
757
+ enableDragAndDropFileToEditor: boolean;
758
+ uploader: IUploaderOptions<IUploader>;
759
+ }
760
+ interface Config {
761
+ /**
762
+ * Create helper
763
+ */
764
+ addNewLine: boolean;
765
+
766
+ /**
767
+ * What kind of tags it will be impact
768
+ */
769
+ addNewLineTagsTriggers: HTMLTagNames[];
770
+
771
+ /**
772
+ * On dbl click on empty space of editor it add new P element
773
+ * @example
774
+ * ```js
775
+ * Jodit.make('#editor', {
776
+ * addNewLineOnDBLClick: false // disable
777
+ * })
778
+ * ```
779
+ */
780
+ addNewLineOnDBLClick: boolean;
781
+
782
+ /**
783
+ * Absolute delta between cursor position and edge(top or bottom)
784
+ * of element when show line
785
+ */
786
+ addNewLineDeltaShow: number;
787
+ }
788
+ interface Config {
789
+ aiAssistant: AiAssistantSettings;
790
+ }
791
+ interface Config {
792
+ delete: {
793
+ hotkeys: {
794
+ delete: string[];
795
+ deleteWord: string[];
796
+ deleteSentence: string[];
797
+ backspace: string[];
798
+ backspaceWord: string[];
799
+ backspaceSentence: string[];
800
+ };
801
+ };
802
+ }
803
+ interface Config {
804
+ cleanHTML: {
805
+ timeout: number;
806
+
807
+ /**
808
+ * Replace &amp;nbsp; to plain space
809
+ */
810
+ replaceNBSP: boolean;
811
+ /**
812
+ * Remove empty P tags, if they are not in the beginning of the text
813
+ */
814
+ fillEmptyParagraph: boolean;
815
+ /**
816
+ * Remove empty elements
817
+ */
818
+ removeEmptyElements: boolean;
819
+ /**
820
+ * Replace old tags to new eg. <i> to <em>, <b> to <strong>
821
+ */
822
+ replaceOldTags: IDictionary<HTMLTagNames> | false;
823
+
824
+ /**
825
+ * You can use an iframe with the sandbox attribute to safely paste and test HTML code.
826
+ * It prevents scripts and handlers from running, but it does slow things down.
827
+ *
828
+ * ```javascript
829
+ * Jodit.make('#editor', {
830
+ * cleanHTML: {
831
+ * useIframeSandbox: true
832
+ * }
833
+ * });
834
+ * ```
835
+ */
836
+ useIframeSandbox: boolean;
837
+
838
+ /**
839
+ * Remove onError attributes
840
+ */
841
+ removeOnError: boolean;
842
+
843
+ /**
844
+ * Safe href="javascript:" links
845
+ */
846
+ safeJavaScriptLink: boolean;
847
+
848
+ /**
849
+ * The allowTags option defines which elements will remain in the
850
+ * edited text when the editor saves. You can use this limit the returned HTML.
851
+ * @example
852
+ * ```javascript
853
+ * const jodit = new Jodit.make('#editor', {
854
+ * cleanHTML: {
855
+ * cleanOnPaste: false
856
+ * }
857
+ * });
858
+ * ```
859
+ * @example
860
+ * ```javascript
861
+ * const editor = Jodit.make('#editor', {
862
+ * cleanHTML: {
863
+ * allowTags: 'p,a[href],table,tr,td, img[src=1.png]' // allow only <p>,<a>,<table>,<tr>,<td>,<img> tags and
864
+ * for <a> allow only `href` attribute and <img> allow only `src` attribute == '1.png'
865
+ * }
866
+ * });
867
+ * editor.value = 'Sorry! <strong>Goodby</strong>\
868
+ * <span>mr.</span> <a style="color:red" href="https://xdsoft.net">Freeman</a>';
869
+ * console.log(editor.value); //Sorry! <a href="https://xdsoft.net">Freeman</a>
870
+ * ```
871
+ *
872
+ * @example
873
+ * ```javascript
874
+ * const editor = Jodit.make('#editor', {
875
+ * cleanHTML: {
876
+ * allowTags: {
877
+ * p: true,
878
+ * a: {
879
+ * href: true
880
+ * },
881
+ * table: true,
882
+ * tr: true,
883
+ * td: true,
884
+ * img: {
885
+ * src: '1.png'
886
+ * }
887
+ * }
888
+ * }
889
+ * });
890
+ * ```
891
+ */
892
+ allowTags: false | string | IDictionary<string>;
893
+ denyTags: false | string | IDictionary<string>;
894
+
895
+ /**
896
+ * Node filtering rules that do not need to be applied to content
897
+ * The full list of rules is generated dynamically from the folder
898
+ * https://github.com/xdan/jodit/tree/main/src/plugins/clean-html/helpers/visitor/filters
899
+ */
900
+ disableCleanFilter: Nullable<Set<string>>;
901
+ };
902
+ }
903
+ interface Config {
904
+ /**
905
+ * Draggable elements
906
+ */
907
+ draggableTags: string | string[];
908
+ }
909
+ interface Config {
910
+ dtd: {
911
+ /**
912
+ * Remove extra br element inside block element after pasting
913
+ */
914
+ removeExtraBr: boolean;
915
+
916
+ /**
917
+ * Check when inserting a block element if it can be inside another block element (according `blockLimits`)
918
+ */
919
+ checkBlockNesting: boolean;
920
+
921
+ /**
922
+ * List of elements that contain other blocks
923
+ */
924
+ blockLimits: IDictionary<1>;
925
+ };
926
+ }
927
+ interface Config {
928
+ autofocus: boolean;
929
+ cursorAfterAutofocus: 'start' | 'end';
930
+ saveSelectionOnBlur: boolean;
931
+ }
932
+ interface Config {
933
+ defaultFontSizePoints: 'px' | 'pt';
934
+ }
935
+ interface Config {
936
+ /**
937
+ * Open WYSIWYG in full screen
938
+ * @example
939
+ * ```javascript
940
+ * var editor = Jodit.make({
941
+ * fullsize: true // fullsize editor
942
+ * });
943
+ * ```
944
+ * @example
945
+ * ```javascript
946
+ * var editor = Jodit.make();
947
+ * editor.e.fire('toggleFullSize');
948
+ * editor.e.fire('toggleFullSize', true); // fullsize
949
+ * editor.e.fire('toggleFullSize', false); // usual mode
950
+ * ```
951
+ */
952
+ fullsize: boolean;
953
+
954
+ /**
955
+ * True, after `fullsize` - all editors elements above jodit will get `jodit_fullsize-box_true` class (z-index: 100000 !important;)
956
+ */
957
+ globalFullSize: boolean;
958
+ }
959
+ interface Config {
960
+ /**
961
+ * You can redefine hotkeys for some command
962
+ *
963
+ * @example
964
+ * ```js
965
+ * const jodit = Jodit.make('#editor', {
966
+ * commandToHotkeys: {
967
+ * bold: 'ctrl+shift+b',
968
+ * italic: ['ctrl+i', 'ctrl+b'],
969
+ * }
970
+ * })
971
+ * ```
972
+ */
973
+ commandToHotkeys: IDictionary<string | string[]>;
974
+ }
975
+ interface Config {
976
+ /**
977
+ * You can redefine default page
978
+ *
979
+ * @example
980
+ * ```javascript
981
+ * Jodit.make('#editor', {
982
+ * iframe: true,
983
+ * iframeDefaultSrc: 'https://xdsoft.net/jodit/docs/',
984
+ * });
985
+ * ```
986
+ */
987
+ iframeDefaultSrc: string;
988
+
989
+ /**
990
+ * Base URL where the root directory for [[Config.iframe]] mode
991
+ *
992
+ * @example
993
+ * ```javascript
994
+ * Jodit.make('#editor', {
995
+ * iframe: true,
996
+ * iframeBaseUrl: 'https://xdsoft.net/jodit/docs/',
997
+ * });
998
+ * ```
999
+ */
1000
+ iframeBaseUrl: string;
1001
+
1002
+ /**
1003
+ * Iframe title's content
1004
+ */
1005
+ iframeTitle: string;
1006
+
1007
+ /**
1008
+ * Iframe's DOCTYPE
1009
+ */
1010
+ iframeDoctype: string;
1011
+
1012
+ /**
1013
+ * Custom style to be used inside the iframe to display content.
1014
+ * @example
1015
+ * ```javascript
1016
+ * Jodit.make('#editor', {
1017
+ * iframe: true,
1018
+ * iframeStyle: 'html{margin: 0px;}',
1019
+ * })
1020
+ * ```
1021
+ */
1022
+ iframeStyle: string;
1023
+
1024
+ /**
1025
+ * Custom stylesheet files to be used inside the iframe to display content.
1026
+ *
1027
+ * @example
1028
+ * ```javascript
1029
+ * Jodit.make('#editor', {
1030
+ * iframe: true,
1031
+ * iframeCSSLinks: ['styles/default.css'],
1032
+ * })
1033
+ * ```
1034
+ */
1035
+ iframeCSSLinks: string[];
1036
+
1037
+ /**
1038
+ * Custom sandbox attribute for the iframe.
1039
+ * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#sandbox
1040
+ * ```javascript
1041
+ * Jodit.make('#editor', {
1042
+ * iframe: true,
1043
+ * iframeSandbox: 'allow-same-origin allow-scripts'
1044
+ * });
1045
+ * ```
1046
+ * Empty string value means that all restrictions are enabled.
1047
+ */
1048
+ iframeSandbox: string | null;
1049
+ }
1050
+ interface Config {
1051
+ imageProcessor: {
1052
+ replaceDataURIToBlobIdInView: boolean;
1053
+ };
1054
+ }
1055
+ interface Config {
1056
+ image: ImagePropertiesOptions;
1057
+ }
1058
+ interface Config {
1059
+ /**
1060
+ * The number of pixels to use for indenting the current line.
1061
+ */
1062
+ indentMargin: number;
1063
+ }
1064
+ interface Config {
1065
+ popup: IDictionary<
1066
+ | Array<IControlType | string>
1067
+ | ((
1068
+ editor: IJodit,
1069
+ target: HTMLElement | undefined,
1070
+ close: () => void
1071
+ ) => Array<IControlType | string> | HTMLElement | string)
1072
+ >;
1073
+
1074
+ toolbarInlineDisabledButtons: string[];
1075
+ toolbarInline: boolean;
1076
+ toolbarInlineForSelection: boolean;
1077
+ toolbarInlineDisableFor: string | string[];
1078
+ }
1079
+ interface Config {
1080
+ /**
1081
+ * limit words count
1082
+ */
1083
+ limitWords: false | number;
1084
+
1085
+ /**
1086
+ * limit chars count
1087
+ */
1088
+ limitChars: false | number;
1089
+
1090
+ /**
1091
+ * limit html chars count
1092
+ */
1093
+ limitHTML: false;
1094
+ }
1095
+ interface Config {
1096
+ /**
1097
+ * Default line spacing for the entire editor
1098
+ *
1099
+ * ```js
1100
+ * Jodit.make('#editor', {
1101
+ * defaultLineHeight: 1.2
1102
+ * })
1103
+ * ```
1104
+ */
1105
+ defaultLineHeight: number | null;
1106
+ }
1107
+ interface Config {
1108
+ link: {
1109
+ /**
1110
+ * Template for the link dialog form
1111
+ */
1112
+ formTemplate: (editor: IJodit) => string | HTMLElement | IUIForm;
1113
+ formClassName?: string;
1114
+
1115
+ /**
1116
+ * Follow link address after dblclick
1117
+ */
1118
+ followOnDblClick: boolean;
1119
+
1120
+ /**
1121
+ * Replace inserted youtube/vimeo link to `iframe`
1122
+ */
1123
+ processVideoLink: boolean;
1124
+
1125
+ /**
1126
+ * Wrap inserted link
1127
+ */
1128
+ processPastedLink: boolean;
1129
+
1130
+ /**
1131
+ * Show `no follow` checkbox in link dialog.
1132
+ */
1133
+ noFollowCheckbox: boolean;
1134
+
1135
+ /**
1136
+ * Show `Open in new tab` checkbox in link dialog.
1137
+ */
1138
+ openInNewTabCheckbox: boolean;
1139
+
1140
+ /**
1141
+ * Use an input text to ask the classname or a select or not ask
1142
+ */
1143
+ modeClassName: 'input' | 'select';
1144
+
1145
+ /**
1146
+ * Allow multiple choises (to use with modeClassName="select")
1147
+ */
1148
+ selectMultipleClassName: boolean;
1149
+
1150
+ /**
1151
+ * The size of the select (to use with modeClassName="select")
1152
+ */
1153
+ selectSizeClassName?: number;
1154
+
1155
+ /**
1156
+ * The list of the option for the select (to use with modeClassName="select")
1157
+ */
1158
+ selectOptionsClassName: IUIOption[];
1159
+
1160
+ hotkeys: string[];
1161
+ };
1162
+ }
1163
+ interface Config {
1164
+ /**
1165
+ * Decorate media elements
1166
+ */
1167
+ mediaInFakeBlock: boolean;
1168
+
1169
+ /**
1170
+ * Decorate media element with tag
1171
+ */
1172
+ mediaFakeTag: string;
1173
+
1174
+ /**
1175
+ * Media tags
1176
+ */
1177
+ mediaBlocks: string[];
1178
+ }
1179
+ interface Config {
1180
+ /**
1181
+ * Mobile timeout for CLICK emulation
1182
+ */
1183
+ mobileTapTimeout: number;
1184
+
1185
+ /**
1186
+ * After resizing, the set of buttons will change to accommodate different sizes.
1187
+ */
1188
+ toolbarAdaptive: boolean;
1189
+
1190
+ /**
1191
+ * The list of buttons that appear in the editor's toolbar for medium-sized spaces (≥ options.sizeMD).
1192
+ */
1193
+ buttonsMD: ButtonsOption;
1194
+
1195
+ /**
1196
+ * The list of buttons that appear in the editor's toolbar for small-sized spaces (≥ options.sizeSM).
1197
+ */
1198
+ buttonsSM: ButtonsOption;
1199
+
1200
+ /**
1201
+ * The list of buttons that appear in the editor's toolbar for extra-small spaces (less than options.sizeSM).
1202
+ */
1203
+ buttonsXS: ButtonsOption;
1204
+ }
1205
+ interface Config {
1206
+ /**
1207
+ * Ask before paste HTML in WYSIWYG mode
1208
+ */
1209
+ askBeforePasteHTML: boolean;
1210
+
1211
+ /**
1212
+ * When the user inserts a snippet of HTML, the plugin will prompt for the insertion method.
1213
+ * If the user inserts the same fragment again, the previously selected option will be used without prompting for confirmation.
1214
+ */
1215
+ memorizeChoiceWhenPasteFragment: boolean;
1216
+
1217
+ /**
1218
+ * Handle pasted text - similar to HTML
1219
+ */
1220
+ processPasteHTML: boolean;
1221
+
1222
+ /**
1223
+ * Inserts HTML line breaks before all newlines in a string
1224
+ */
1225
+ nl2brInPlainText: boolean;
1226
+
1227
+ /**
1228
+ * List of tags that will not be removed from the pasted HTML with INSERT_AS_TEXT mode
1229
+ */
1230
+ pasteExcludeStripTags: HTMLTagNames[];
1231
+
1232
+ /**
1233
+ * Options when inserting HTML string
1234
+ */
1235
+ pasteHTMLActionList: IUIOption[];
1236
+
1237
+ /**
1238
+ * Scroll the editor to the pasted fragment
1239
+ */
1240
+ scrollToPastedContent: boolean;
1241
+ }
1242
+ interface Config {
1243
+ /**
1244
+ * Show the paste dialog if the html is similar to what MSWord gives when copying.
1245
+ */
1246
+ askBeforePasteFromWord: boolean;
1247
+
1248
+ /**
1249
+ * Handle pasting of HTML - similar to a fragment copied from MSWord
1250
+ */
1251
+ processPasteFromWord: boolean;
1252
+
1253
+ /**
1254
+ * Default insert method from word, if not define, it will use defaultActionOnPaste instead
1255
+ *
1256
+ * ```js
1257
+ * Jodit.make('#editor', {
1258
+ * defaultActionOnPasteFromWord: 'insert_clear_html'
1259
+ * })
1260
+ * ```
1261
+ */
1262
+ defaultActionOnPasteFromWord: InsertMode | null;
1263
+
1264
+ /**
1265
+ * Options when inserting data from Word
1266
+ */
1267
+ pasteFromWordActionList: IUIOption[];
1268
+ }
1269
+ interface Config {
1270
+ /**
1271
+ * Show placeholder
1272
+ * @example
1273
+ * ```javascript
1274
+ * const editor = Jodit.make('#editor', {
1275
+ * showPlaceholder: false
1276
+ * });
1277
+ * ```
1278
+ */
1279
+ showPlaceholder: boolean;
1280
+
1281
+ /**
1282
+ * Use a placeholder from original input field, if it was set
1283
+ * @example
1284
+ * ```javascript
1285
+ * //<textarea id="editor" placeholder="start typing text ..." cols="30" rows="10"></textarea>
1286
+ * const editor = Jodit.make('#editor', {
1287
+ * useInputsPlaceholder: true
1288
+ * });
1289
+ * ```
1290
+ */
1291
+ useInputsPlaceholder: boolean;
1292
+
1293
+ /**
1294
+ * Default placeholder
1295
+ * @example
1296
+ * ```javascript
1297
+ * const editor = Jodit.make('#editor', {
1298
+ * placeholder: 'start typing text ...'
1299
+ * });
1300
+ * ```
1301
+ */
1302
+ placeholder: string;
1303
+ }
1304
+ interface Config {
1305
+ /**
1306
+ * Hide the link to the Jodit site at the bottom of the editor
1307
+ */
1308
+ hidePoweredByJodit: boolean;
1309
+ }
1310
+ interface Config {
1311
+ tableAllowCellResize: boolean;
1312
+ }
1313
+ interface Config {
1314
+ allowResizeX: boolean;
1315
+ allowResizeY: boolean;
1316
+ }
1317
+ interface Config {
1318
+ /**
1319
+ * Use true frame for editing iframe size
1320
+ */
1321
+ allowResizeTags: Set<HTMLTagNames>;
1322
+
1323
+ resizer: {
1324
+ /**
1325
+ * Show size
1326
+ */
1327
+ showSize: boolean;
1328
+ hideSizeTimeout: number;
1329
+
1330
+ /**
1331
+ * Save width and height proportions when resizing
1332
+ * ```js
1333
+ * Jodit.make('#editor', {
1334
+ * allowResizeTags: ['img', 'iframe', 'table', 'jodit'],
1335
+ * resizer: {
1336
+ * useAspectRatio: false, // don't save,
1337
+ * useAspectRatio: ['img'], // save only for images (default value)
1338
+ * useAspectRatio: true // save for all
1339
+ * }
1340
+ * });
1341
+ * ```
1342
+ */
1343
+ useAspectRatio: boolean | Set<HTMLTagNames>;
1344
+
1345
+ /**
1346
+ * When resizing images, change not the styles but the width and height attributes
1347
+ */
1348
+ forImageChangeAttributes: boolean;
1349
+
1350
+ /**
1351
+ * The minimum width for the editable element
1352
+ */
1353
+ min_width: number;
1354
+
1355
+ /**
1356
+ * The minimum height for the item being edited
1357
+ */
1358
+ min_height: number;
1359
+ };
1360
+ }
1361
+ interface Config {
1362
+ /**
1363
+ * Enable custom search plugin
1364
+ * ![search](https://user-images.githubusercontent.com/794318/34545433-cd0a9220-f10e-11e7-8d26-7e22f66e266d.gif)
1365
+ */
1366
+ useSearch: boolean;
1367
+
1368
+ search: {
1369
+ lazyIdleTimeout: number;
1370
+
1371
+ /**
1372
+ * Use custom highlight API https://developer.mozilla.org/en-US/docs/Web/API/CSS_Custom_Highlight_API
1373
+ * or use default implementation (wrap text in span and attribute jd-tmp-selection)
1374
+ */
1375
+ useCustomHighlightAPI: boolean;
1376
+
1377
+ /**
1378
+ * Function to search for a string within a substring. The default implementation is [[fuzzySearchIndex]]
1379
+ * But you can write your own. It must implement the [[FuzzySearch]] interface.
1380
+ *
1381
+ * ```ts
1382
+ * Jodit.make('#editor', {
1383
+ * search: {
1384
+ * fuzzySearch: (needle, haystack, offset) => {
1385
+ * return [haystack.toLowerCase().indexOf(needle.toLowerCase(), offset), needle.length];
1386
+ * }
1387
+ * }
1388
+ * })
1389
+ * ```
1390
+ */
1391
+ fuzzySearch?: FuzzySearch;
1392
+ };
1393
+ }
1394
+ interface Config {
1395
+ select: {
1396
+ /**
1397
+ * When the user selects the elements of the list - from the beginning to
1398
+ * the end from the inside - when copying, we change the selection
1399
+ * to cover the entire selected container
1400
+ *
1401
+ * `<ul><li>|test|</li></ul>` will be `|<ul><li>test</li></ul>|`
1402
+ * `<ul><li>|test|</li><li>|test</li></ul>` will be `<ul>|<li>test</li><li>|test</li></ul>`
1403
+ */
1404
+ normalizeSelectionBeforeCutAndCopy: boolean;
1405
+
1406
+ /**
1407
+ * Normalize selection after triple click
1408
+ * @example
1409
+ *
1410
+ * `<ul><li>|test</li><li>|pop</li></ul>` will be `<ul><li>|test|</li><li>pop</li</ul>|`
1411
+ */
1412
+ normalizeTripleClick: boolean;
1413
+ };
1414
+ }
1415
+ interface Config {
1416
+ tableAllowCellSelection: boolean;
1417
+ }
1418
+ interface Config {
1419
+ saveHeightInStorage: boolean;
1420
+
1421
+ minWidth: number | string;
1422
+ minHeight: number | string;
1423
+ maxWidth: number | string;
1424
+ maxHeight: number | string;
1425
+ }
1426
+ interface Config {
1427
+ sourceEditor: 'area' | 'ace' | ((jodit: IJodit) => ISourceEditor);
1428
+
1429
+ /**
1430
+ * Options for [ace](https://ace.c9.io/#config) editor
1431
+ * @example
1432
+ * ```js
1433
+ * Jodit.make('#editor', {
1434
+ * showGutter: true,
1435
+ * theme: 'ace/theme/idle_fingers',
1436
+ * mode: 'ace/mode/html',
1437
+ * wrap: true,
1438
+ § * highlightActiveLine: true
1439
+ * })
1440
+ * ```
1441
+ */
1442
+ sourceEditorNativeOptions: {
1443
+ showGutter: boolean;
1444
+ theme: string;
1445
+ mode: string;
1446
+ wrap: string | boolean | number;
1447
+ highlightActiveLine: boolean;
1448
+ };
1449
+
1450
+ /**
1451
+ * Beautify HTML then it possible
1452
+ */
1453
+ beautifyHTML: boolean;
1454
+
1455
+ /**
1456
+ * CDN URLs for HTML Beautifier
1457
+ */
1458
+ beautifyHTMLCDNUrlsJS: string[];
1459
+
1460
+ /**
1461
+ * CDN URLs for ACE editor
1462
+ */
1463
+ sourceEditorCDNUrlsJS: string[];
1464
+ }
1465
+ interface Config {
1466
+ speechRecognize: {
1467
+ readonly api: ISpeechRecognizeConstructor | null;
1468
+
1469
+ /**
1470
+ * Returns and sets the language of the current SpeechRecognition.
1471
+ * If not specified, this defaults to the HTML lang attribute value, or
1472
+ * the user agent's language setting if that isn't set either.
1473
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition/lang
1474
+ */
1475
+ readonly lang?: string;
1476
+
1477
+ /**
1478
+ * Controls whether continuous results are returned for each recognition,
1479
+ * or only a single result.
1480
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition/continuous
1481
+ */
1482
+ readonly continuous: boolean;
1483
+
1484
+ /**
1485
+ * Controls whether interim results should be returned (true) or not (false.)
1486
+ * Interim results are results that are not yet final (e.g. the isFinal property is false.)
1487
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition/interimResults
1488
+ */
1489
+ readonly interimResults: boolean;
1490
+
1491
+ /**
1492
+ * On recognition error - make an error sound
1493
+ */
1494
+ readonly sound: boolean;
1495
+
1496
+ /**
1497
+ * You can specify any commands in your language by listing them with the `|` sign.
1498
+ * In the value, write down any commands for
1499
+ * [execCommand](https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand#parameters)
1500
+ * and value (separated by ::)
1501
+ * You can also use [custom Jodit commands](#need-article)
1502
+ * For example
1503
+ * ```js
1504
+ * Jodit.make('#editor', {
1505
+ * speechRecognize: {
1506
+ * commands: {
1507
+ * 'remove line|remove paragraph': 'backspaceSentenceButton',
1508
+ * 'start bold': 'bold',
1509
+ * 'insert table|create table': 'insertHTML::<table><tr><td>test</td></tr></table>',
1510
+ * }
1511
+ * }
1512
+ * });
1513
+ * ```
1514
+ */
1515
+ readonly commands: IDictionary<string>;
1516
+ };
1517
+ }
1518
+ interface Config {
1519
+ /**
1520
+ * Options specifies whether the editor is to have its spelling and grammar checked or not
1521
+ * @see http://www.w3schools.com/tags/att_global_spellcheck.asp
1522
+ */
1523
+ spellcheck: boolean;
1524
+ }
1525
+ interface Config {
1526
+ showCharsCounter: boolean;
1527
+ countHTMLChars: boolean;
1528
+ countTextSpaces: boolean;
1529
+ showWordsCounter: boolean;
1530
+ }
1531
+ interface Config {
1532
+ /**
1533
+ * @example
1534
+ * ```javascript
1535
+ * var editor = Jodit.make('#someid', {
1536
+ * toolbarSticky: false
1537
+ * })
1538
+ * ```
1539
+ */
1540
+ toolbarSticky: boolean;
1541
+
1542
+ toolbarDisableStickyForMobile: boolean;
1543
+
1544
+ /**
1545
+ * For example, in Joomla, the top menu bar closes Jodit toolbar when scrolling. Therefore, it is necessary to
1546
+ * move the toolbar Jodit by this amount [more](https://xdsoft.net/jodit/docs/#2.5.57)
1547
+ *
1548
+ * @example
1549
+ * ```javascript
1550
+ * var editor = Jodit.make('#someid', {
1551
+ * toolbarStickyOffset: 100
1552
+ * })
1553
+ * ```
1554
+ */
1555
+ toolbarStickyOffset: number;
1556
+ }
1557
+ interface Config {
1558
+ specialCharacters: string[];
1559
+ usePopupForSpecialCharacters: boolean;
1560
+ }
1561
+ interface Config {
1562
+ tab: {
1563
+ /**
1564
+ * Pressing Tab inside LI will add an internal list
1565
+ */
1566
+ tabInsideLiInsertNewList: boolean;
1567
+ };
1568
+ }
1569
+ interface Config {
1570
+ table: {
1571
+ selectionCellStyle: string;
1572
+ useExtraClassesOptions: boolean;
1573
+ };
1574
+ }
1575
+ interface Config {
1576
+ video: {
1577
+ /**
1578
+ * Custom function for parsing video URL to embed code
1579
+ * ```javascript
1580
+ * Jodit.make('#editor', {
1581
+ * video: {
1582
+ * // Defaul behavior
1583
+ * parseUrlToVideoEmbed: (url, size) => Jodit.modules.Helpers.convertMediaUrlToVideoEmbed(url, size)
1584
+ * }
1585
+ * });
1586
+ * ```
1587
+ */
1588
+ parseUrlToVideoEmbed?: (
1589
+ url: string,
1590
+ {
1591
+ width,
1592
+ height
1593
+ }?: {
1594
+ width?: number;
1595
+ height?: number;
1596
+ }
1597
+ ) => string;
1598
+ /**
1599
+ * Default width for video iframe. Default: 400
1600
+ */
1601
+ defaultWidth?: number;
1602
+ /**
1603
+ * Default height for video iframe. Default: 345
1604
+ */
1605
+ defaultHeight?: number;
1606
+ };
1607
+ }
1608
+ interface Config {
1609
+ wrapNodes: {
1610
+ /**
1611
+ * List of tags that should not be wrapped
1612
+ * Default: `new Set(['hr', 'style', 'br'])`
1613
+ */
1614
+ exclude: Set<HTMLTagNames>;
1615
+
1616
+ /**
1617
+ * If the editor is empty, then insert an empty paragraph into it
1618
+ * ```javascript
1619
+ * Jodit.make('#editor', {
1620
+ * wrapNodes: {
1621
+ * emptyBlockAfterInit: true
1622
+ * }
1623
+ * });
1624
+ * ```
1625
+ * Default: `true`
1626
+ */
1627
+ emptyBlockAfterInit: boolean;
1628
+ };
1629
+ }
1630
+ interface Config {
1631
+ showXPathInStatusbar: boolean;
1632
+ }