tinymce-rails 7.9.2 → 8.8.0

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 (92) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -3
  3. data/app/assets/source/tinymce/tinymce.js +11860 -7756
  4. data/lib/tinymce/rails/version.rb +2 -2
  5. data/vendor/assets/javascripts/tinymce/icons/default/icons.js +1 -1
  6. data/vendor/assets/javascripts/tinymce/models/dom/model.js +1 -1
  7. data/vendor/assets/javascripts/tinymce/notices.txt +1 -1
  8. data/vendor/assets/javascripts/tinymce/plugins/accordion/plugin.js +1 -1
  9. data/vendor/assets/javascripts/tinymce/plugins/advlist/plugin.js +1 -1
  10. data/vendor/assets/javascripts/tinymce/plugins/anchor/plugin.js +1 -1
  11. data/vendor/assets/javascripts/tinymce/plugins/autolink/plugin.js +1 -1
  12. data/vendor/assets/javascripts/tinymce/plugins/autoresize/plugin.js +1 -1
  13. data/vendor/assets/javascripts/tinymce/plugins/autosave/plugin.js +1 -1
  14. data/vendor/assets/javascripts/tinymce/plugins/charmap/plugin.js +1 -1
  15. data/vendor/assets/javascripts/tinymce/plugins/code/plugin.js +1 -1
  16. data/vendor/assets/javascripts/tinymce/plugins/codesample/plugin.js +2 -2
  17. data/vendor/assets/javascripts/tinymce/plugins/directionality/plugin.js +1 -1
  18. data/vendor/assets/javascripts/tinymce/plugins/emoticons/plugin.js +1 -1
  19. data/vendor/assets/javascripts/tinymce/plugins/fullscreen/plugin.js +1 -1
  20. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/bg-BG.js +93 -0
  21. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/fr-FR.js +93 -0
  22. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/he-IL.js +93 -0
  23. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/hu-HU.js +93 -0
  24. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/ko-KR.js +93 -0
  25. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/nb-NO.js +93 -0
  26. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/pt-BR.js +93 -0
  27. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/pt-PT.js +93 -0
  28. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/sl-SI.js +93 -0
  29. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/sv-SE.js +93 -0
  30. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/th-TH.js +93 -0
  31. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/zh-CN.js +87 -0
  32. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/zh-TW.js +93 -0
  33. data/vendor/assets/javascripts/tinymce/plugins/help/plugin.js +1 -1
  34. data/vendor/assets/javascripts/tinymce/plugins/image/plugin.js +1 -1
  35. data/vendor/assets/javascripts/tinymce/plugins/importcss/plugin.js +1 -1
  36. data/vendor/assets/javascripts/tinymce/plugins/insertdatetime/plugin.js +1 -1
  37. data/vendor/assets/javascripts/tinymce/plugins/link/plugin.js +1 -1
  38. data/vendor/assets/javascripts/tinymce/plugins/lists/plugin.js +1 -1
  39. data/vendor/assets/javascripts/tinymce/plugins/media/plugin.js +1 -1
  40. data/vendor/assets/javascripts/tinymce/plugins/nonbreaking/plugin.js +1 -1
  41. data/vendor/assets/javascripts/tinymce/plugins/pagebreak/plugin.js +1 -1
  42. data/vendor/assets/javascripts/tinymce/plugins/preview/plugin.js +1 -1
  43. data/vendor/assets/javascripts/tinymce/plugins/quickbars/plugin.js +1 -1
  44. data/vendor/assets/javascripts/tinymce/plugins/save/plugin.js +1 -1
  45. data/vendor/assets/javascripts/tinymce/plugins/searchreplace/plugin.js +1 -1
  46. data/vendor/assets/javascripts/tinymce/plugins/table/plugin.js +1 -1
  47. data/vendor/assets/javascripts/tinymce/plugins/visualblocks/plugin.js +1 -1
  48. data/vendor/assets/javascripts/tinymce/plugins/visualchars/plugin.js +1 -1
  49. data/vendor/assets/javascripts/tinymce/plugins/wordcount/plugin.js +1 -1
  50. data/vendor/assets/javascripts/tinymce/skins/content/dark/content.css +1 -1
  51. data/vendor/assets/javascripts/tinymce/skins/content/dark/content.js +1 -1
  52. data/vendor/assets/javascripts/tinymce/skins/content/dark/content.min.css +1 -1
  53. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/content.css +1 -1
  54. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/content.inline.css +1 -1
  55. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/content.inline.js +1 -1
  56. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/content.inline.min.css +1 -1
  57. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/content.js +1 -1
  58. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/content.min.css +1 -1
  59. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/skin.css +1 -1
  60. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/skin.js +1 -1
  61. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/skin.min.css +1 -1
  62. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/content.css +1 -1
  63. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/content.inline.css +1 -1
  64. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/content.inline.js +1 -1
  65. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/content.inline.min.css +1 -1
  66. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/content.js +1 -1
  67. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/content.min.css +1 -1
  68. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/skin.css +1 -1
  69. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/skin.js +1 -1
  70. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/skin.min.css +1 -1
  71. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5/content.css +1 -1
  72. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5/content.inline.css +1 -1
  73. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5/content.inline.js +1 -1
  74. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5/content.inline.min.css +1 -1
  75. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5/content.js +1 -1
  76. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5/content.min.css +1 -1
  77. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5/skin.css +1 -1
  78. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5/skin.js +1 -1
  79. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5/skin.min.css +1 -1
  80. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5-dark/content.css +1 -1
  81. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5-dark/content.inline.css +1 -1
  82. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5-dark/content.inline.js +1 -1
  83. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5-dark/content.inline.min.css +1 -1
  84. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5-dark/content.js +1 -1
  85. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5-dark/content.min.css +1 -1
  86. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5-dark/skin.css +1 -1
  87. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5-dark/skin.js +1 -1
  88. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5-dark/skin.min.css +1 -1
  89. data/vendor/assets/javascripts/tinymce/themes/silver/theme.js +3 -1
  90. data/vendor/assets/javascripts/tinymce/tinymce.d.ts +575 -496
  91. data/vendor/assets/javascripts/tinymce/tinymce.js +5 -3
  92. metadata +15 -2
@@ -23,120 +23,6 @@ interface PathBookmark {
23
23
  forward?: boolean;
24
24
  }
25
25
  type Bookmark = StringPathBookmark | RangeBookmark | IdBookmark | IndexBookmark | PathBookmark;
26
- type NormalizedEvent<E, T = any> = E & {
27
- readonly type: string;
28
- readonly target: T;
29
- readonly isDefaultPrevented: () => boolean;
30
- readonly preventDefault: () => void;
31
- readonly isPropagationStopped: () => boolean;
32
- readonly stopPropagation: () => void;
33
- readonly isImmediatePropagationStopped: () => boolean;
34
- readonly stopImmediatePropagation: () => void;
35
- };
36
- type MappedEvent<T extends {}, K extends string> = K extends keyof T ? T[K] : any;
37
- interface NativeEventMap {
38
- beforepaste: Event;
39
- blur: FocusEvent;
40
- beforeinput: InputEvent;
41
- click: MouseEvent;
42
- compositionend: Event;
43
- compositionstart: Event;
44
- compositionupdate: Event;
45
- contextmenu: PointerEvent;
46
- copy: ClipboardEvent;
47
- cut: ClipboardEvent;
48
- dblclick: MouseEvent;
49
- drag: DragEvent;
50
- dragdrop: DragEvent;
51
- dragend: DragEvent;
52
- draggesture: DragEvent;
53
- dragover: DragEvent;
54
- dragstart: DragEvent;
55
- drop: DragEvent;
56
- focus: FocusEvent;
57
- focusin: FocusEvent;
58
- focusout: FocusEvent;
59
- input: InputEvent;
60
- keydown: KeyboardEvent;
61
- keypress: KeyboardEvent;
62
- keyup: KeyboardEvent;
63
- mousedown: MouseEvent;
64
- mouseenter: MouseEvent;
65
- mouseleave: MouseEvent;
66
- mousemove: MouseEvent;
67
- mouseout: MouseEvent;
68
- mouseover: MouseEvent;
69
- mouseup: MouseEvent;
70
- paste: ClipboardEvent;
71
- selectionchange: Event;
72
- submit: Event;
73
- touchend: TouchEvent;
74
- touchmove: TouchEvent;
75
- touchstart: TouchEvent;
76
- touchcancel: TouchEvent;
77
- wheel: WheelEvent;
78
- }
79
- type EditorEvent<T> = NormalizedEvent<T>;
80
- interface EventDispatcherSettings {
81
- scope?: any;
82
- toggleEvent?: (name: string, state: boolean) => void | boolean;
83
- beforeFire?: <T>(args: EditorEvent<T>) => void;
84
- }
85
- interface EventDispatcherConstructor<T extends {}> {
86
- readonly prototype: EventDispatcher<T>;
87
- new (settings?: EventDispatcherSettings): EventDispatcher<T>;
88
- isNative: (name: string) => boolean;
89
- }
90
- declare class EventDispatcher<T extends {}> {
91
- static isNative(name: string): boolean;
92
- private readonly settings;
93
- private readonly scope;
94
- private readonly toggleEvent;
95
- private bindings;
96
- constructor(settings?: EventDispatcherSettings);
97
- fire<K extends string, U extends MappedEvent<T, K>>(name: K, args?: U): EditorEvent<U>;
98
- dispatch<K extends string, U extends MappedEvent<T, K>>(name: K, args?: U): EditorEvent<U>;
99
- on<K extends string>(name: K, callback: false | ((event: EditorEvent<MappedEvent<T, K>>) => void | boolean), prepend?: boolean, extra?: {}): this;
100
- off<K extends string>(name?: K, callback?: (event: EditorEvent<MappedEvent<T, K>>) => void): this;
101
- once<K extends string>(name: K, callback: (event: EditorEvent<MappedEvent<T, K>>) => void, prepend?: boolean): this;
102
- has(name: string): boolean;
103
- }
104
- type UndoLevelType = 'fragmented' | 'complete';
105
- interface BaseUndoLevel {
106
- type: UndoLevelType;
107
- bookmark: Bookmark | null;
108
- beforeBookmark: Bookmark | null;
109
- }
110
- interface FragmentedUndoLevel extends BaseUndoLevel {
111
- type: 'fragmented';
112
- fragments: string[];
113
- content: '';
114
- }
115
- interface CompleteUndoLevel extends BaseUndoLevel {
116
- type: 'complete';
117
- fragments: null;
118
- content: string;
119
- }
120
- type NewUndoLevel = CompleteUndoLevel | FragmentedUndoLevel;
121
- type UndoLevel = NewUndoLevel & {
122
- bookmark: Bookmark;
123
- };
124
- interface UndoManager {
125
- data: UndoLevel[];
126
- typing: boolean;
127
- add: (level?: Partial<UndoLevel>, event?: EditorEvent<any>) => UndoLevel | null;
128
- dispatchChange: () => void;
129
- beforeChange: () => void;
130
- undo: () => UndoLevel | undefined;
131
- redo: () => UndoLevel | undefined;
132
- clear: () => void;
133
- reset: () => void;
134
- hasUndo: () => boolean;
135
- hasRedo: () => boolean;
136
- transact: (callback: () => void) => UndoLevel | null;
137
- ignore: (callback: () => void) => void;
138
- extra: (callback1: () => void, callback2: () => void) => void;
139
- }
140
26
  type SchemaType = 'html4' | 'html5' | 'html5-strict';
141
27
  interface ElementSettings {
142
28
  block_elements?: string;
@@ -205,6 +91,7 @@ interface CustomElementSpec {
205
91
  attributes?: string[];
206
92
  children?: string[];
207
93
  padEmpty?: boolean;
94
+ componentUrl?: string;
208
95
  }
209
96
  interface Schema {
210
97
  type: SchemaType;
@@ -225,6 +112,7 @@ interface Schema {
225
112
  getWhitespaceElements: () => SchemaMap;
226
113
  getTransparentElements: () => SchemaMap;
227
114
  getSpecialElements: () => SchemaRegExpMap;
115
+ getComponentUrls: () => Record<string, string>;
228
116
  isValidChild: (name: string, child: string) => boolean;
229
117
  isValid: (name: string, attr?: string) => boolean;
230
118
  isBlock: (name: string) => boolean;
@@ -276,36 +164,6 @@ declare class AstNode {
276
164
  isEmpty(elements: SchemaMap, whitespace?: SchemaMap, predicate?: (node: AstNode) => boolean): boolean;
277
165
  walk(prev?: boolean): AstNode | null | undefined;
278
166
  }
279
- type Content = string | AstNode;
280
- type ContentFormat = 'raw' | 'text' | 'html' | 'tree';
281
- interface GetContentArgs {
282
- format: ContentFormat;
283
- get: boolean;
284
- getInner: boolean;
285
- no_events?: boolean;
286
- save?: boolean;
287
- source_view?: boolean;
288
- [key: string]: any;
289
- }
290
- interface SetContentArgs {
291
- format: string;
292
- set: boolean;
293
- content: Content;
294
- no_events?: boolean;
295
- no_selection?: boolean;
296
- paste?: boolean;
297
- load?: boolean;
298
- initial?: boolean;
299
- [key: string]: any;
300
- }
301
- interface GetSelectionContentArgs extends GetContentArgs {
302
- selection?: boolean;
303
- contextual?: boolean;
304
- }
305
- interface SetSelectionContentArgs extends SetContentArgs {
306
- content: string;
307
- selection?: boolean;
308
- }
309
167
  interface BlobInfoData {
310
168
  id?: string;
311
169
  name?: string;
@@ -314,6 +172,7 @@ interface BlobInfoData {
314
172
  base64: string;
315
173
  blobUri?: string;
316
174
  uri?: string;
175
+ allowEmptyFile?: boolean;
317
176
  }
318
177
  interface BlobInfo {
319
178
  id: () => string;
@@ -329,116 +188,381 @@ interface BlobCache {
329
188
  (o: BlobInfoData): BlobInfo;
330
189
  (id: string, blob: Blob, base64: string, name?: string, filename?: string): BlobInfo;
331
190
  };
332
- add: (blobInfo: BlobInfo) => void;
333
- get: (id: string) => BlobInfo | undefined;
334
- getByUri: (blobUri: string) => BlobInfo | undefined;
335
- getByData: (base64: string, type: string) => BlobInfo | undefined;
336
- findFirst: (predicate: (blobInfo: BlobInfo) => boolean) => BlobInfo | undefined;
337
- removeByUri: (blobUri: string) => void;
338
- destroy: () => void;
339
- }
340
- interface BlobInfoImagePair {
341
- image: HTMLImageElement;
342
- blobInfo: BlobInfo;
343
- }
344
- declare class NodeChange {
345
- private readonly editor;
346
- private lastPath;
347
- constructor(editor: Editor);
348
- nodeChanged(args?: Record<string, any>): void;
349
- private isSameElementPath;
350
- }
351
- interface SelectionOverrides {
352
- showCaret: (direction: number, node: HTMLElement, before: boolean, scrollIntoView?: boolean) => Range | null;
353
- showBlockCaretContainer: (blockCaretContainer: HTMLElement) => void;
354
- hideFakeCaret: () => void;
355
- destroy: () => void;
356
- }
357
- interface Quirks {
358
- refreshContentEditable(): void;
359
- isHidden(): boolean;
360
- }
361
- type DecoratorData = Record<string, any>;
362
- type Decorator = (uid: string, data: DecoratorData) => {
363
- attributes?: {};
364
- classes?: string[];
365
- };
366
- type AnnotationListener = (state: boolean, name: string, data?: {
367
- uid: string;
368
- nodes: any[];
369
- }) => void;
370
- type AnnotationListenerApi = AnnotationListener;
371
- interface AnnotatorSettings {
372
- decorate: Decorator;
373
- persistent?: boolean;
374
- }
375
- interface Annotator {
376
- register: (name: string, settings: AnnotatorSettings) => void;
377
- annotate: (name: string, data: DecoratorData) => void;
378
- annotationChanged: (name: string, f: AnnotationListenerApi) => void;
379
- remove: (name: string) => void;
380
- removeAll: (name: string) => void;
381
- getAll: (name: string) => Record<string, Element[]>;
382
- }
383
- interface IsEmptyOptions {
384
- readonly skipBogus?: boolean;
385
- readonly includeZwsp?: boolean;
386
- readonly checkRootAsContent?: boolean;
387
- readonly isContent?: (node: Node) => boolean;
388
- }
389
- interface GeomRect {
390
- readonly x: number;
391
- readonly y: number;
392
- readonly w: number;
393
- readonly h: number;
394
- }
395
- interface Rect {
396
- inflate: (rect: GeomRect, w: number, h: number) => GeomRect;
397
- relativePosition: (rect: GeomRect, targetRect: GeomRect, rel: string) => GeomRect;
398
- findBestRelativePosition: (rect: GeomRect, targetRect: GeomRect, constrainRect: GeomRect, rels: string[]) => string | null;
399
- intersect: (rect: GeomRect, cropRect: GeomRect) => GeomRect | null;
400
- clamp: (rect: GeomRect, clampRect: GeomRect, fixedSize?: boolean) => GeomRect;
401
- create: (x: number, y: number, w: number, h: number) => GeomRect;
402
- fromClientRect: (clientRect: DOMRect) => GeomRect;
403
- }
404
- interface NotificationManagerImpl {
405
- open: (spec: NotificationSpec, closeCallback: () => void, hasEditorFocus: () => boolean) => NotificationApi;
406
- close: <T extends NotificationApi>(notification: T) => void;
407
- getArgs: <T extends NotificationApi>(notification: T) => NotificationSpec;
408
- }
409
- interface NotificationSpec {
410
- type?: 'info' | 'warning' | 'error' | 'success';
411
- text: string;
412
- icon?: string;
413
- progressBar?: boolean;
414
- timeout?: number;
415
- }
416
- interface NotificationApi {
417
- close: () => void;
418
- progressBar: {
419
- value: (percent: number) => void;
191
+ add: (blobInfo: BlobInfo) => void;
192
+ get: (id: string) => BlobInfo | undefined;
193
+ getByUri: (blobUri: string) => BlobInfo | undefined;
194
+ getByData: (base64: string, type: string) => BlobInfo | undefined;
195
+ findFirst: (predicate: (blobInfo: BlobInfo) => boolean) => BlobInfo | undefined;
196
+ removeByUri: (blobUri: string) => void;
197
+ destroy: () => void;
198
+ }
199
+ interface NotificationManagerImpl {
200
+ open: (spec: NotificationSpec, closeCallback: () => void, hasEditorFocus: () => boolean) => NotificationApi;
201
+ close: <T extends NotificationApi>(notification: T) => void;
202
+ getArgs: <T extends NotificationApi>(notification: T) => NotificationSpec;
203
+ }
204
+ interface NotificationSpec {
205
+ type?: 'info' | 'warning' | 'error' | 'success';
206
+ text: string;
207
+ icon?: string;
208
+ progressBar?: boolean;
209
+ timeout?: number;
210
+ }
211
+ interface NotificationApi {
212
+ close: () => void;
213
+ progressBar: {
214
+ value: (percent: number) => void;
215
+ };
216
+ text: (text: string) => void;
217
+ reposition: () => void;
218
+ getEl: () => HTMLElement;
219
+ settings: NotificationSpec;
220
+ }
221
+ interface NotificationManager {
222
+ open: (spec: NotificationSpec) => NotificationApi;
223
+ close: () => void;
224
+ getNotifications: () => NotificationApi[];
225
+ }
226
+ interface UploadFailure {
227
+ message: string;
228
+ remove?: boolean;
229
+ }
230
+ type ProgressFn = (percent: number) => void;
231
+ interface UploadFileData {
232
+ url: string;
233
+ fileName: string;
234
+ }
235
+ type UploadHandler<T extends UploadFileData | string = string> = (blobInfo: BlobInfo, progress: ProgressFn) => Promise<T>;
236
+ interface UploadResult$2 {
237
+ url: string;
238
+ blobInfo: BlobInfo;
239
+ status: boolean;
240
+ error?: UploadFailure;
241
+ }
242
+ interface IsEmptyOptions {
243
+ readonly skipBogus?: boolean;
244
+ readonly includeZwsp?: boolean;
245
+ readonly checkRootAsContent?: boolean;
246
+ readonly isContent?: (node: Node) => boolean;
247
+ }
248
+ interface GeomRect {
249
+ readonly x: number;
250
+ readonly y: number;
251
+ readonly w: number;
252
+ readonly h: number;
253
+ }
254
+ interface Rect {
255
+ inflate: (rect: GeomRect, w: number, h: number) => GeomRect;
256
+ relativePosition: (rect: GeomRect, targetRect: GeomRect, rel: string) => GeomRect;
257
+ findBestRelativePosition: (rect: GeomRect, targetRect: GeomRect, constrainRect: GeomRect, rels: string[]) => string | null;
258
+ intersect: (rect: GeomRect, cropRect: GeomRect) => GeomRect | null;
259
+ clamp: (rect: GeomRect, clampRect: GeomRect, fixedSize?: boolean) => GeomRect;
260
+ create: (x: number, y: number, w: number, h: number) => GeomRect;
261
+ fromClientRect: (clientRect: DOMRect) => GeomRect;
262
+ }
263
+ type StyleMap = Record<string, string | number>;
264
+ interface StylesSettings {
265
+ allow_script_urls?: boolean;
266
+ allow_svg_data_urls?: boolean;
267
+ url_converter?: URLConverter;
268
+ url_converter_scope?: any;
269
+ }
270
+ interface Styles {
271
+ parse: (css: string | undefined) => Record<string, string>;
272
+ serialize: (styles: StyleMap, elementName?: string) => string;
273
+ }
274
+ type NormalizedEvent<E, T = any> = E & {
275
+ readonly type: string;
276
+ readonly target: T;
277
+ readonly isDefaultPrevented: () => boolean;
278
+ readonly preventDefault: () => void;
279
+ readonly isPropagationStopped: () => boolean;
280
+ readonly stopPropagation: () => void;
281
+ readonly isImmediatePropagationStopped: () => boolean;
282
+ readonly stopImmediatePropagation: () => void;
283
+ };
284
+ type MappedEvent<T extends {}, K extends string> = K extends keyof T ? T[K] : any;
285
+ interface NativeEventMap {
286
+ beforepaste: Event;
287
+ blur: FocusEvent;
288
+ beforeinput: InputEvent;
289
+ click: MouseEvent;
290
+ compositionend: Event;
291
+ compositionstart: Event;
292
+ compositionupdate: Event;
293
+ contextmenu: PointerEvent;
294
+ copy: ClipboardEvent;
295
+ cut: ClipboardEvent;
296
+ dblclick: MouseEvent;
297
+ drag: DragEvent;
298
+ dragdrop: DragEvent;
299
+ dragend: DragEvent;
300
+ draggesture: DragEvent;
301
+ dragover: DragEvent;
302
+ dragstart: DragEvent;
303
+ drop: DragEvent;
304
+ focus: FocusEvent;
305
+ focusin: FocusEvent;
306
+ focusout: FocusEvent;
307
+ input: InputEvent;
308
+ keydown: KeyboardEvent;
309
+ keypress: KeyboardEvent;
310
+ keyup: KeyboardEvent;
311
+ mousedown: MouseEvent;
312
+ mouseenter: MouseEvent;
313
+ mouseleave: MouseEvent;
314
+ mousemove: MouseEvent;
315
+ mouseout: MouseEvent;
316
+ mouseover: MouseEvent;
317
+ mouseup: MouseEvent;
318
+ paste: ClipboardEvent;
319
+ selectionchange: Event;
320
+ submit: Event;
321
+ touchend: TouchEvent;
322
+ touchmove: TouchEvent;
323
+ touchstart: TouchEvent;
324
+ touchcancel: TouchEvent;
325
+ wheel: WheelEvent;
326
+ }
327
+ type EditorEvent<T> = NormalizedEvent<T>;
328
+ interface EventDispatcherSettings {
329
+ scope?: any;
330
+ toggleEvent?: (name: string, state: boolean) => void | boolean;
331
+ beforeFire?: <T>(args: EditorEvent<T>) => void;
332
+ }
333
+ interface EventDispatcherConstructor<T extends {}> {
334
+ readonly prototype: EventDispatcher<T>;
335
+ new (settings?: EventDispatcherSettings): EventDispatcher<T>;
336
+ isNative: (name: string) => boolean;
337
+ }
338
+ declare class EventDispatcher<T extends {}> {
339
+ static isNative(name: string): boolean;
340
+ private readonly settings;
341
+ private readonly scope;
342
+ private readonly toggleEvent;
343
+ private bindings;
344
+ constructor(settings?: EventDispatcherSettings);
345
+ fire<K extends string, U extends MappedEvent<T, K>>(name: K, args?: U): EditorEvent<U>;
346
+ dispatch<K extends string, U extends MappedEvent<T, K>>(name: K, args?: U): EditorEvent<U>;
347
+ on<K extends string>(name: K, callback: false | ((event: EditorEvent<MappedEvent<T, K>>) => void | boolean), prepend?: boolean, extra?: {}): this;
348
+ off<K extends string>(name?: K, callback?: (event: EditorEvent<MappedEvent<T, K>>) => void): this;
349
+ once<K extends string>(name: K, callback: (event: EditorEvent<MappedEvent<T, K>>) => void, prepend?: boolean): this;
350
+ has(name: string): boolean;
351
+ }
352
+ type EventUtilsCallback<T> = (event: EventUtilsEvent<T>) => void | boolean;
353
+ type EventUtilsEvent<T> = NormalizedEvent<T> & {
354
+ metaKey: boolean;
355
+ };
356
+ interface Callback$1<T> {
357
+ func: EventUtilsCallback<T>;
358
+ scope: any;
359
+ }
360
+ interface CallbackList<T> extends Array<Callback$1<T>> {
361
+ fakeName: string | false;
362
+ capture: boolean;
363
+ nativeHandler: EventListener;
364
+ }
365
+ interface EventUtilsConstructor {
366
+ readonly prototype: EventUtils;
367
+ new (): EventUtils;
368
+ Event: EventUtils;
369
+ }
370
+ declare class EventUtils {
371
+ static Event: EventUtils;
372
+ domLoaded: boolean;
373
+ events: Record<number, Record<string, CallbackList<any>>>;
374
+ private readonly expando;
375
+ private hasFocusIn;
376
+ private count;
377
+ constructor();
378
+ bind<K extends keyof HTMLElementEventMap>(target: any, name: K, callback: EventUtilsCallback<HTMLElementEventMap[K]>, scope?: any): EventUtilsCallback<HTMLElementEventMap[K]>;
379
+ bind<T = any>(target: any, names: string, callback: EventUtilsCallback<T>, scope?: any): EventUtilsCallback<T>;
380
+ unbind<K extends keyof HTMLElementEventMap>(target: any, name: K, callback?: EventUtilsCallback<HTMLElementEventMap[K]>): this;
381
+ unbind<T = any>(target: any, names: string, callback?: EventUtilsCallback<T>): this;
382
+ unbind(target: any): this;
383
+ fire(target: any, name: string, args?: {}): this;
384
+ dispatch(target: any, name: string, args?: {}): this;
385
+ clean(target: any): this;
386
+ destroy(): void;
387
+ cancel<T>(e: EventUtilsEvent<T>): boolean;
388
+ private executeHandlers;
389
+ }
390
+ interface StyleSheetLoaderSettings {
391
+ maxLoadTime?: number;
392
+ contentCssCors?: boolean;
393
+ crossOrigin?: (url: string) => string | undefined;
394
+ referrerPolicy?: ReferrerPolicy;
395
+ }
396
+ interface StyleSheetLoader {
397
+ load: (url: string) => Promise<void>;
398
+ loadRawCss: (key: string, css: string) => void;
399
+ loadAll: (urls: string[]) => Promise<string[]>;
400
+ unload: (url: string) => void;
401
+ unloadRawCss: (key: string) => void;
402
+ unloadAll: (urls: string[]) => void;
403
+ _setReferrerPolicy: (referrerPolicy: ReferrerPolicy) => void;
404
+ _setContentCssCors: (contentCssCors: boolean) => void;
405
+ _setCrossOrigin: (crossOrigin: (url: string) => string | undefined) => void;
406
+ }
407
+ interface SetAttribEvent {
408
+ attrElm: HTMLElement;
409
+ attrName: string;
410
+ attrValue: string | boolean | number | null;
411
+ }
412
+ interface DOMUtilsSettings {
413
+ schema: Schema;
414
+ url_converter: URLConverter;
415
+ url_converter_scope: any;
416
+ ownEvents: boolean;
417
+ keep_values: boolean;
418
+ update_styles: boolean;
419
+ root_element: HTMLElement | null;
420
+ collect: boolean;
421
+ onSetAttrib: (event: SetAttribEvent) => void;
422
+ contentCssCors: boolean;
423
+ referrerPolicy: ReferrerPolicy;
424
+ crossOrigin: (url: string, resourceType: 'script' | 'stylesheet') => string | undefined;
425
+ }
426
+ type Target = Node | Window;
427
+ type RunArguments<T extends Node = Node> = string | T | Array<string | T> | null;
428
+ type BoundEvent = [
429
+ Target,
430
+ string,
431
+ EventUtilsCallback<any>,
432
+ any
433
+ ];
434
+ type Callback<K extends string> = EventUtilsCallback<MappedEvent<HTMLElementEventMap, K>>;
435
+ type RunResult<T, R> = T extends Array<any> ? R[] : false | R;
436
+ interface DOMUtils {
437
+ doc: Document;
438
+ settings: Partial<DOMUtilsSettings>;
439
+ win: Window;
440
+ files: Record<string, boolean>;
441
+ stdMode: boolean;
442
+ boxModel: boolean;
443
+ styleSheetLoader: StyleSheetLoader;
444
+ boundEvents: BoundEvent[];
445
+ styles: Styles;
446
+ schema: Schema;
447
+ events: EventUtils;
448
+ root: Node | null;
449
+ isBlock: {
450
+ (node: Node | null): node is HTMLElement;
451
+ (node: string): boolean;
452
+ };
453
+ clone: (node: Node, deep: boolean) => Node;
454
+ getRoot: () => HTMLElement;
455
+ getViewPort: (argWin?: Window) => GeomRect;
456
+ getRect: (elm: string | HTMLElement) => GeomRect;
457
+ getSize: (elm: string | HTMLElement) => {
458
+ w: number;
459
+ h: number;
460
+ };
461
+ getParent: {
462
+ <K extends keyof HTMLElementTagNameMap>(node: string | Node | null, selector: K, root?: Node): HTMLElementTagNameMap[K] | null;
463
+ <T extends Element>(node: string | Node | null, selector: string | ((node: Node) => node is T), root?: Node): T | null;
464
+ (node: string | Node | null, selector?: string | ((node: Node) => boolean | void), root?: Node): Node | null;
465
+ };
466
+ getParents: {
467
+ <K extends keyof HTMLElementTagNameMap>(elm: string | HTMLElementTagNameMap[K] | null, selector: K, root?: Node, collect?: boolean): Array<HTMLElementTagNameMap[K]>;
468
+ <T extends Element>(node: string | Node | null, selector: string | ((node: Node) => node is T), root?: Node, collect?: boolean): T[];
469
+ (elm: string | Node | null, selector?: string | ((node: Node) => boolean | void), root?: Node, collect?: boolean): Node[];
470
+ };
471
+ get: {
472
+ <T extends Node>(elm: T): T;
473
+ (elm: string): HTMLElement | null;
474
+ };
475
+ getNext: (node: Node | null, selector: string | ((node: Node) => boolean)) => Node | null;
476
+ getPrev: (node: Node | null, selector: string | ((node: Node) => boolean)) => Node | null;
477
+ select: {
478
+ <K extends keyof HTMLElementTagNameMap>(selector: K, scope?: string | Node): Array<HTMLElementTagNameMap[K]>;
479
+ <T extends HTMLElement = HTMLElement>(selector: string, scope?: string | Node): T[];
480
+ };
481
+ is: {
482
+ <T extends Element>(elm: Node | Node[] | null, selector: string): elm is T;
483
+ (elm: Node | Node[] | null, selector: string): boolean;
484
+ };
485
+ add: (parentElm: RunArguments, name: string | Element, attrs?: Record<string, string | boolean | number | null>, html?: string | Node | null, create?: boolean) => HTMLElement;
486
+ create: {
487
+ <K extends keyof HTMLElementTagNameMap>(name: K, attrs?: Record<string, string | boolean | number | null>, html?: string | Node | null): HTMLElementTagNameMap[K];
488
+ (name: string, attrs?: Record<string, string | boolean | number | null>, html?: string | Node | null): HTMLElement;
489
+ };
490
+ createHTML: (name: string, attrs?: Record<string, string | null>, html?: string) => string;
491
+ createFragment: (html?: string) => DocumentFragment;
492
+ remove: {
493
+ <T extends Node>(node: T | T[], keepChildren?: boolean): typeof node extends Array<any> ? T[] : T;
494
+ <T extends Node>(node: string, keepChildren?: boolean): T | false;
495
+ };
496
+ getStyle: {
497
+ (elm: Element, name: string, computed: true): string;
498
+ (elm: string | Element | null, name: string, computed?: boolean): string | undefined;
499
+ };
500
+ setStyle: (elm: string | Element | Element[], name: string, value: string | number | null) => void;
501
+ setStyles: (elm: string | Element | Element[], stylesArg: StyleMap) => void;
502
+ removeAllAttribs: (e: RunArguments<Element>) => void;
503
+ setAttrib: (elm: RunArguments<Element>, name: string, value: string | boolean | number | null) => void;
504
+ setAttribs: (elm: RunArguments<Element>, attrs: Record<string, string | boolean | number | null>) => void;
505
+ getAttrib: (elm: string | Element | null, name: string, defaultVal?: string) => string;
506
+ getAttribs: (elm: string | Element) => NamedNodeMap | Attr[];
507
+ getPos: (elm: string | Element, rootElm?: Node) => {
508
+ x: number;
509
+ y: number;
510
+ };
511
+ parseStyle: (cssText: string) => Record<string, string>;
512
+ serializeStyle: (stylesArg: StyleMap, name?: string) => string;
513
+ addStyle: (cssText: string) => void;
514
+ loadCSS: (url: string) => void;
515
+ hasClass: (elm: string | Element, cls: string) => boolean;
516
+ addClass: (elm: RunArguments<Element>, cls: string) => void;
517
+ removeClass: (elm: RunArguments<Element>, cls: string) => void;
518
+ toggleClass: (elm: RunArguments<Element>, cls: string, state?: boolean) => void;
519
+ show: (elm: string | Node | Node[]) => void;
520
+ hide: (elm: string | Node | Node[]) => void;
521
+ isHidden: (elm: string | Node) => boolean;
522
+ uniqueId: (prefix?: string) => string;
523
+ setHTML: (elm: RunArguments<Element>, html: string) => void;
524
+ getOuterHTML: (elm: string | Node) => string;
525
+ setOuterHTML: (elm: string | Node | Node[], html: string) => void;
526
+ decode: (text: string) => string;
527
+ encode: (text: string) => string;
528
+ insertAfter: {
529
+ <T extends Node>(node: T | T[], reference: string | Node): T;
530
+ <T extends Node>(node: RunArguments<T>, reference: string | Node): RunResult<typeof node, T>;
531
+ };
532
+ replace: {
533
+ <T extends Node>(newElm: Node, oldElm: T | T[], keepChildren?: boolean): T;
534
+ <T extends Node>(newElm: Node, oldElm: RunArguments<T>, keepChildren?: boolean): false | T;
420
535
  };
421
- text: (text: string) => void;
422
- reposition: () => void;
423
- getEl: () => HTMLElement;
424
- settings: NotificationSpec;
425
- }
426
- interface NotificationManager {
427
- open: (spec: NotificationSpec) => NotificationApi;
428
- close: () => void;
429
- getNotifications: () => NotificationApi[];
430
- }
431
- interface UploadFailure {
432
- message: string;
433
- remove?: boolean;
434
- }
435
- type ProgressFn = (percent: number) => void;
436
- type UploadHandler = (blobInfo: BlobInfo, progress: ProgressFn) => Promise<string>;
437
- interface UploadResult$2 {
438
- url: string;
439
- blobInfo: BlobInfo;
440
- status: boolean;
441
- error?: UploadFailure;
536
+ rename: {
537
+ <K extends keyof HTMLElementTagNameMap>(elm: Element, name: K): HTMLElementTagNameMap[K];
538
+ (elm: Element, name: string): Element;
539
+ };
540
+ findCommonAncestor: (a: Node, b: Node) => Node | null;
541
+ run<R, T extends Node>(this: DOMUtils, elm: T | T[], func: (node: T) => R, scope?: any): typeof elm extends Array<any> ? R[] : R;
542
+ run<R, T extends Node>(this: DOMUtils, elm: RunArguments<T>, func: (node: T) => R, scope?: any): RunResult<typeof elm, R>;
543
+ isEmpty: (node: Node, elements?: Record<string, any>, options?: IsEmptyOptions) => boolean;
544
+ createRng: () => Range;
545
+ nodeIndex: (node: Node, normalized?: boolean) => number;
546
+ split: {
547
+ <T extends Node>(parentElm: Node, splitElm: Node, replacementElm: T): T | undefined;
548
+ <T extends Node>(parentElm: Node, splitElm: T): T | undefined;
549
+ };
550
+ bind: {
551
+ <K extends string>(target: Target, name: K, func: Callback<K>, scope?: any): Callback<K>;
552
+ <K extends string>(target: Target[], name: K, func: Callback<K>, scope?: any): Callback<K>[];
553
+ };
554
+ unbind: {
555
+ <K extends string>(target: Target, name?: K, func?: EventUtilsCallback<MappedEvent<HTMLElementEventMap, K>>): EventUtils;
556
+ <K extends string>(target: Target[], name?: K, func?: EventUtilsCallback<MappedEvent<HTMLElementEventMap, K>>): EventUtils[];
557
+ };
558
+ fire: (target: Node | Window, name: string, evt?: {}) => EventUtils;
559
+ dispatch: (target: Node | Window, name: string, evt?: {}) => EventUtils;
560
+ getContentEditable: (node: Node) => string | null;
561
+ getContentEditableParent: (node: Node) => string | null;
562
+ isEditable: (node: Node | null | undefined) => node is HTMLElement;
563
+ destroy: () => void;
564
+ isChildOf: (node: Node, parent: Node) => boolean;
565
+ dumpRng: (r: Range) => string;
442
566
  }
443
567
  type BlockPatternTrigger = 'enter' | 'space';
444
568
  interface RawPattern {
@@ -556,6 +680,11 @@ type CustomEditorSpec = CustomEditorOldSpec | CustomEditorNewSpec;
556
680
  interface DropZoneSpec extends FormComponentWithLabelSpec {
557
681
  type: 'dropzone';
558
682
  context?: string;
683
+ dropAreaLabel?: string;
684
+ buttonLabel?: string;
685
+ allowedFileTypes?: string;
686
+ allowedFileExtensions?: string[];
687
+ onInvalidFiles?: () => Promise<void>;
559
688
  }
560
689
  interface GridSpec {
561
690
  type: 'grid';
@@ -650,6 +779,7 @@ interface TextAreaSpec extends FormComponentWithLabelSpec {
650
779
  maximized?: boolean;
651
780
  enabled?: boolean;
652
781
  context?: string;
782
+ spellcheck?: boolean;
653
783
  }
654
784
  interface BaseToolbarButtonSpec<I extends BaseToolbarButtonInstanceApi> {
655
785
  enabled?: boolean;
@@ -879,6 +1009,7 @@ type ColumnTypes$1 = number | 'auto';
879
1009
  interface ToolbarSplitButtonSpec {
880
1010
  type?: 'splitbutton';
881
1011
  tooltip?: string;
1012
+ chevronTooltip?: string;
882
1013
  icon?: string;
883
1014
  text?: string;
884
1015
  select?: SelectPredicate;
@@ -1000,6 +1131,7 @@ interface TabSpec {
1000
1131
  interface TabPanelSpec {
1001
1132
  type: 'tabpanel';
1002
1133
  tabs: TabSpec[];
1134
+ dynamicHeight?: boolean;
1003
1135
  }
1004
1136
  type DialogDataItem = any;
1005
1137
  type DialogData = Record<string, DialogDataItem>;
@@ -1450,6 +1582,42 @@ interface RemoveInlineFormat extends Inline, CommonRemoveFormat<RemoveInlineForm
1450
1582
  }
1451
1583
  interface RemoveSelectorFormat extends Selector, CommonRemoveFormat<RemoveSelectorFormat> {
1452
1584
  }
1585
+ type UndoLevelType = 'fragmented' | 'complete';
1586
+ interface BaseUndoLevel {
1587
+ type: UndoLevelType;
1588
+ bookmark: Bookmark | null;
1589
+ beforeBookmark: Bookmark | null;
1590
+ }
1591
+ interface FragmentedUndoLevel extends BaseUndoLevel {
1592
+ type: 'fragmented';
1593
+ fragments: string[];
1594
+ content: '';
1595
+ }
1596
+ interface CompleteUndoLevel extends BaseUndoLevel {
1597
+ type: 'complete';
1598
+ fragments: null;
1599
+ content: string;
1600
+ }
1601
+ type NewUndoLevel = CompleteUndoLevel | FragmentedUndoLevel;
1602
+ type UndoLevel = NewUndoLevel & {
1603
+ bookmark: Bookmark;
1604
+ };
1605
+ interface UndoManager {
1606
+ data: UndoLevel[];
1607
+ typing: boolean;
1608
+ add: (level?: Partial<UndoLevel>, event?: EditorEvent<unknown>) => UndoLevel | null;
1609
+ dispatchChange: () => void;
1610
+ beforeChange: () => void;
1611
+ undo: () => UndoLevel | undefined;
1612
+ redo: () => UndoLevel | undefined;
1613
+ clear: () => void;
1614
+ reset: () => void;
1615
+ hasUndo: () => boolean;
1616
+ hasRedo: () => boolean;
1617
+ transact: (callback: () => void) => UndoLevel | null;
1618
+ ignore: (callback: () => void) => void;
1619
+ extra: (callback1: () => void, callback2: () => void) => void;
1620
+ }
1453
1621
  interface Filter<C extends Function> {
1454
1622
  name: string;
1455
1623
  callbacks: C[];
@@ -1505,21 +1673,6 @@ interface DomParser {
1505
1673
  removeNodeFilter: (name: string, callback?: ParserFilterCallback) => void;
1506
1674
  parse: (html: string, args?: ParserArgs) => AstNode;
1507
1675
  }
1508
- interface StyleSheetLoaderSettings {
1509
- maxLoadTime?: number;
1510
- contentCssCors?: boolean;
1511
- referrerPolicy?: ReferrerPolicy;
1512
- }
1513
- interface StyleSheetLoader {
1514
- load: (url: string) => Promise<void>;
1515
- loadRawCss: (key: string, css: string) => void;
1516
- loadAll: (urls: string[]) => Promise<string[]>;
1517
- unload: (url: string) => void;
1518
- unloadRawCss: (key: string) => void;
1519
- unloadAll: (urls: string[]) => void;
1520
- _setReferrerPolicy: (referrerPolicy: ReferrerPolicy) => void;
1521
- _setContentCssCors: (contentCssCors: boolean) => void;
1522
- }
1523
1676
  type Registry = Registry$1;
1524
1677
  interface EditorUiApi {
1525
1678
  show: () => void;
@@ -1623,7 +1776,7 @@ interface ChangeEvent {
1623
1776
  lastLevel: UndoLevel | undefined;
1624
1777
  }
1625
1778
  interface AddUndoEvent extends ChangeEvent {
1626
- originalEvent: Event | undefined;
1779
+ originalEvent: EditorEvent<unknown> | undefined;
1627
1780
  }
1628
1781
  interface UndoRedoEvent {
1629
1782
  level: UndoLevel;
@@ -1886,6 +2039,10 @@ type ThemeInitFunc = (editor: Editor, elm: HTMLElement) => {
1886
2039
  iframeHeight?: number;
1887
2040
  api?: EditorUiApi;
1888
2041
  };
2042
+ interface DocumentsFileTypes {
2043
+ readonly mimeType: string;
2044
+ readonly extensions: Array<string>;
2045
+ }
1889
2046
  type SetupCallback = (editor: Editor) => void;
1890
2047
  type FilePickerCallback = (callback: (value: string, meta?: Record<string, any>) => void, value: string, meta: Record<string, any>) => void;
1891
2048
  type FilePickerValidationStatus = 'valid' | 'unknown' | 'invalid' | 'none';
@@ -1907,6 +2064,7 @@ interface ToolbarGroup {
1907
2064
  }
1908
2065
  type ToolbarMode = 'floating' | 'sliding' | 'scrolling' | 'wrap';
1909
2066
  type ToolbarLocation = 'top' | 'bottom' | 'auto';
2067
+ type CrossOrigin = (url: string, resourceType: 'script' | 'stylesheet') => 'anonymous' | 'use-credentials' | undefined;
1910
2068
  interface BaseEditorOptions {
1911
2069
  a11y_advanced_options?: boolean;
1912
2070
  add_form_submit_trigger?: boolean;
@@ -1914,6 +2072,7 @@ interface BaseEditorOptions {
1914
2072
  allow_conditional_comments?: boolean;
1915
2073
  allow_html_data_urls?: boolean;
1916
2074
  allow_html_in_named_anchor?: boolean;
2075
+ allow_noneditable?: boolean;
1917
2076
  allow_script_urls?: boolean;
1918
2077
  allow_svg_data_urls?: boolean;
1919
2078
  allow_unsafe_link_target?: boolean;
@@ -1943,6 +2102,7 @@ interface BaseEditorOptions {
1943
2102
  content_css_cors?: boolean;
1944
2103
  content_security_policy?: string;
1945
2104
  content_style?: string;
2105
+ content_language?: string;
1946
2106
  content_langs?: ContentLanguage[];
1947
2107
  contextmenu?: string | string[] | false;
1948
2108
  contextmenu_never_use_native?: boolean;
@@ -1971,6 +2131,7 @@ interface BaseEditorOptions {
1971
2131
  extended_mathml_elements?: string[];
1972
2132
  extended_valid_elements?: string;
1973
2133
  event_root?: string;
2134
+ fetch_users?: (userIds: string[]) => Promise<ExpectedUser[]>;
1974
2135
  file_picker_callback?: FilePickerCallback;
1975
2136
  file_picker_types?: string;
1976
2137
  file_picker_validator_handler?: FilePickerValidationCallback;
@@ -2021,6 +2182,7 @@ interface BaseEditorOptions {
2021
2182
  language_load?: boolean;
2022
2183
  language_url?: string;
2023
2184
  line_height_formats?: string;
2185
+ list_max_depth?: number;
2024
2186
  max_height?: number;
2025
2187
  max_width?: number;
2026
2188
  menu?: Record<string, {
@@ -2057,6 +2219,7 @@ interface BaseEditorOptions {
2057
2219
  protect?: RegExp[];
2058
2220
  readonly?: boolean;
2059
2221
  referrer_policy?: ReferrerPolicy;
2222
+ crossorigin?: CrossOrigin;
2060
2223
  relative_urls?: boolean;
2061
2224
  remove_script_host?: boolean;
2062
2225
  remove_trailing_brs?: boolean;
@@ -2079,6 +2242,8 @@ interface BaseEditorOptions {
2079
2242
  style_formats_merge?: boolean;
2080
2243
  submit_patch?: boolean;
2081
2244
  suffix?: string;
2245
+ user_id?: string;
2246
+ content_id?: string;
2082
2247
  table_tab_navigation?: boolean;
2083
2248
  target?: HTMLElement;
2084
2249
  text_patterns?: RawPattern[] | false;
@@ -2110,6 +2275,7 @@ interface BaseEditorOptions {
2110
2275
  valid_elements?: string;
2111
2276
  valid_styles?: string | Record<string, string>;
2112
2277
  verify_html?: boolean;
2278
+ view_show?: string;
2113
2279
  visual?: boolean;
2114
2280
  visual_anchor_class?: string;
2115
2281
  visual_table_class?: string;
@@ -2152,6 +2318,7 @@ interface EditorOptions extends NormalizedEditorOptions {
2152
2318
  content_css: string[];
2153
2319
  contextmenu: string[];
2154
2320
  convert_unsafe_embeds: boolean;
2321
+ crossorigin: CrossOrigin;
2155
2322
  custom_colors: boolean;
2156
2323
  default_font_stack: string[];
2157
2324
  document_base_url: string;
@@ -2212,220 +2379,118 @@ interface EditorOptions extends NormalizedEditorOptions {
2212
2379
  toolbar_sticky_offset: number;
2213
2380
  text_patterns: Pattern[];
2214
2381
  text_patterns_lookup: DynamicPatternsLookup;
2382
+ user_id: string;
2215
2383
  visual: boolean;
2216
2384
  visual_anchor_class: string;
2217
2385
  visual_table_class: string;
2218
2386
  width: number | string;
2219
2387
  xss_sanitization: boolean;
2220
2388
  disabled: boolean;
2389
+ documents_file_types: DocumentsFileTypes[];
2221
2390
  }
2222
- type StyleMap = Record<string, string | number>;
2223
- interface StylesSettings {
2224
- allow_script_urls?: boolean;
2225
- allow_svg_data_urls?: boolean;
2226
- url_converter?: URLConverter;
2227
- url_converter_scope?: any;
2391
+ type Content = string | AstNode;
2392
+ type ContentFormat = 'raw' | 'text' | 'html' | 'tree';
2393
+ interface GetContentArgs {
2394
+ format: ContentFormat;
2395
+ get: boolean;
2396
+ getInner: boolean;
2397
+ no_events?: boolean;
2398
+ save?: boolean;
2399
+ source_view?: boolean;
2400
+ indent?: boolean;
2401
+ entity_encoding?: EntityEncoding;
2402
+ [key: string]: any;
2228
2403
  }
2229
- interface Styles {
2230
- parse: (css: string | undefined) => Record<string, string>;
2231
- serialize: (styles: StyleMap, elementName?: string) => string;
2404
+ interface SetContentArgs {
2405
+ format: string;
2406
+ set: boolean;
2407
+ content: Content;
2408
+ no_events?: boolean;
2409
+ no_selection?: boolean;
2410
+ paste?: boolean;
2411
+ load?: boolean;
2412
+ initial?: boolean;
2413
+ [key: string]: any;
2414
+ }
2415
+ interface GetSelectionContentArgs extends GetContentArgs {
2416
+ selection?: boolean;
2417
+ contextual?: boolean;
2418
+ }
2419
+ interface SetSelectionContentArgs extends SetContentArgs {
2420
+ content: string;
2421
+ selection?: boolean;
2422
+ }
2423
+ interface BlobInfoImagePair {
2424
+ image: HTMLImageElement;
2425
+ blobInfo: BlobInfo;
2426
+ }
2427
+ interface UrlObject {
2428
+ prefix: string;
2429
+ resource: string;
2430
+ suffix: string;
2431
+ }
2432
+ type WaitState = 'added' | 'loaded';
2433
+ type AddOnConstructor<T> = (editor: Editor, url: string) => T;
2434
+ interface AddOnManager<T> {
2435
+ items: AddOnConstructor<T>[];
2436
+ urls: Record<string, string>;
2437
+ lookup: Record<string, {
2438
+ instance: AddOnConstructor<T>;
2439
+ }>;
2440
+ get: (name: string) => AddOnConstructor<T> | undefined;
2441
+ requireLangPack: (name: string, languages?: string) => void;
2442
+ add: (id: string, addOn: AddOnConstructor<T>) => AddOnConstructor<T>;
2443
+ remove: (name: string) => void;
2444
+ createUrl: (baseUrl: UrlObject, dep: string | UrlObject) => UrlObject;
2445
+ load: (name: string, addOnUrl: string | UrlObject) => Promise<void>;
2446
+ waitFor: (name: string, state?: WaitState) => Promise<void>;
2232
2447
  }
2233
- type EventUtilsCallback<T> = (event: EventUtilsEvent<T>) => void | boolean;
2234
- type EventUtilsEvent<T> = NormalizedEvent<T> & {
2235
- metaKey: boolean;
2236
- };
2237
- interface Callback$1<T> {
2238
- func: EventUtilsCallback<T>;
2239
- scope: any;
2448
+ type LicenseKeyManagerAddon = AddOnConstructor<LicenseKeyManager>;
2449
+ interface ValidateData {
2450
+ plugin?: string;
2451
+ [key: string]: any;
2240
2452
  }
2241
- interface CallbackList<T> extends Array<Callback$1<T>> {
2242
- fakeName: string | false;
2243
- capture: boolean;
2244
- nativeHandler: EventListener;
2453
+ interface LicenseKeyManager {
2454
+ readonly validate: (data: ValidateData) => Promise<boolean>;
2245
2455
  }
2246
- interface EventUtilsConstructor {
2247
- readonly prototype: EventUtils;
2248
- new (): EventUtils;
2249
- Event: EventUtils;
2456
+ declare class NodeChange {
2457
+ private readonly editor;
2458
+ private lastPath;
2459
+ constructor(editor: Editor);
2460
+ nodeChanged(args?: Record<string, any>): void;
2461
+ private isSameElementPath;
2250
2462
  }
2251
- declare class EventUtils {
2252
- static Event: EventUtils;
2253
- domLoaded: boolean;
2254
- events: Record<number, Record<string, CallbackList<any>>>;
2255
- private readonly expando;
2256
- private hasFocusIn;
2257
- private count;
2258
- constructor();
2259
- bind<K extends keyof HTMLElementEventMap>(target: any, name: K, callback: EventUtilsCallback<HTMLElementEventMap[K]>, scope?: any): EventUtilsCallback<HTMLElementEventMap[K]>;
2260
- bind<T = any>(target: any, names: string, callback: EventUtilsCallback<T>, scope?: any): EventUtilsCallback<T>;
2261
- unbind<K extends keyof HTMLElementEventMap>(target: any, name: K, callback?: EventUtilsCallback<HTMLElementEventMap[K]>): this;
2262
- unbind<T = any>(target: any, names: string, callback?: EventUtilsCallback<T>): this;
2263
- unbind(target: any): this;
2264
- fire(target: any, name: string, args?: {}): this;
2265
- dispatch(target: any, name: string, args?: {}): this;
2266
- clean(target: any): this;
2267
- destroy(): void;
2268
- cancel<T>(e: EventUtilsEvent<T>): boolean;
2269
- private executeHandlers;
2463
+ interface SelectionOverrides {
2464
+ showCaret: (direction: number, node: HTMLElement, before: boolean, scrollIntoView?: boolean) => Range | null;
2465
+ showBlockCaretContainer: (blockCaretContainer: HTMLElement) => void;
2466
+ hideFakeCaret: () => void;
2467
+ destroy: () => void;
2270
2468
  }
2271
- interface SetAttribEvent {
2272
- attrElm: HTMLElement;
2273
- attrName: string;
2274
- attrValue: string | boolean | number | null;
2469
+ interface Quirks {
2470
+ refreshContentEditable(): void;
2471
+ isHidden(): boolean;
2275
2472
  }
2276
- interface DOMUtilsSettings {
2277
- schema: Schema;
2278
- url_converter: URLConverter;
2279
- url_converter_scope: any;
2280
- ownEvents: boolean;
2281
- keep_values: boolean;
2282
- update_styles: boolean;
2283
- root_element: HTMLElement | null;
2284
- collect: boolean;
2285
- onSetAttrib: (event: SetAttribEvent) => void;
2286
- contentCssCors: boolean;
2287
- referrerPolicy: ReferrerPolicy;
2473
+ type DecoratorData = Record<string, any>;
2474
+ type Decorator = (uid: string, data: DecoratorData) => {
2475
+ attributes?: {};
2476
+ classes?: string[];
2477
+ };
2478
+ type AnnotationListener = (state: boolean, name: string, data?: {
2479
+ uid: string;
2480
+ nodes: any[];
2481
+ }) => void;
2482
+ type AnnotationListenerApi = AnnotationListener;
2483
+ interface AnnotatorSettings {
2484
+ decorate: Decorator;
2485
+ persistent?: boolean;
2288
2486
  }
2289
- type Target = Node | Window;
2290
- type RunArguments<T extends Node = Node> = string | T | Array<string | T> | null;
2291
- type BoundEvent = [
2292
- Target,
2293
- string,
2294
- EventUtilsCallback<any>,
2295
- any
2296
- ];
2297
- type Callback<K extends string> = EventUtilsCallback<MappedEvent<HTMLElementEventMap, K>>;
2298
- type RunResult<T, R> = T extends Array<any> ? R[] : false | R;
2299
- interface DOMUtils {
2300
- doc: Document;
2301
- settings: Partial<DOMUtilsSettings>;
2302
- win: Window;
2303
- files: Record<string, boolean>;
2304
- stdMode: boolean;
2305
- boxModel: boolean;
2306
- styleSheetLoader: StyleSheetLoader;
2307
- boundEvents: BoundEvent[];
2308
- styles: Styles;
2309
- schema: Schema;
2310
- events: EventUtils;
2311
- root: Node | null;
2312
- isBlock: {
2313
- (node: Node | null): node is HTMLElement;
2314
- (node: string): boolean;
2315
- };
2316
- clone: (node: Node, deep: boolean) => Node;
2317
- getRoot: () => HTMLElement;
2318
- getViewPort: (argWin?: Window) => GeomRect;
2319
- getRect: (elm: string | HTMLElement) => GeomRect;
2320
- getSize: (elm: string | HTMLElement) => {
2321
- w: number;
2322
- h: number;
2323
- };
2324
- getParent: {
2325
- <K extends keyof HTMLElementTagNameMap>(node: string | Node | null, selector: K, root?: Node): HTMLElementTagNameMap[K] | null;
2326
- <T extends Element>(node: string | Node | null, selector: string | ((node: Node) => node is T), root?: Node): T | null;
2327
- (node: string | Node | null, selector?: string | ((node: Node) => boolean | void), root?: Node): Node | null;
2328
- };
2329
- getParents: {
2330
- <K extends keyof HTMLElementTagNameMap>(elm: string | HTMLElementTagNameMap[K] | null, selector: K, root?: Node, collect?: boolean): Array<HTMLElementTagNameMap[K]>;
2331
- <T extends Element>(node: string | Node | null, selector: string | ((node: Node) => node is T), root?: Node, collect?: boolean): T[];
2332
- (elm: string | Node | null, selector?: string | ((node: Node) => boolean | void), root?: Node, collect?: boolean): Node[];
2333
- };
2334
- get: {
2335
- <T extends Node>(elm: T): T;
2336
- (elm: string): HTMLElement | null;
2337
- };
2338
- getNext: (node: Node | null, selector: string | ((node: Node) => boolean)) => Node | null;
2339
- getPrev: (node: Node | null, selector: string | ((node: Node) => boolean)) => Node | null;
2340
- select: {
2341
- <K extends keyof HTMLElementTagNameMap>(selector: K, scope?: string | Node): Array<HTMLElementTagNameMap[K]>;
2342
- <T extends HTMLElement = HTMLElement>(selector: string, scope?: string | Node): T[];
2343
- };
2344
- is: {
2345
- <T extends Element>(elm: Node | Node[] | null, selector: string): elm is T;
2346
- (elm: Node | Node[] | null, selector: string): boolean;
2347
- };
2348
- add: (parentElm: RunArguments, name: string | Element, attrs?: Record<string, string | boolean | number | null>, html?: string | Node | null, create?: boolean) => HTMLElement;
2349
- create: {
2350
- <K extends keyof HTMLElementTagNameMap>(name: K, attrs?: Record<string, string | boolean | number | null>, html?: string | Node | null): HTMLElementTagNameMap[K];
2351
- (name: string, attrs?: Record<string, string | boolean | number | null>, html?: string | Node | null): HTMLElement;
2352
- };
2353
- createHTML: (name: string, attrs?: Record<string, string | null>, html?: string) => string;
2354
- createFragment: (html?: string) => DocumentFragment;
2355
- remove: {
2356
- <T extends Node>(node: T | T[], keepChildren?: boolean): typeof node extends Array<any> ? T[] : T;
2357
- <T extends Node>(node: string, keepChildren?: boolean): T | false;
2358
- };
2359
- getStyle: {
2360
- (elm: Element, name: string, computed: true): string;
2361
- (elm: string | Element | null, name: string, computed?: boolean): string | undefined;
2362
- };
2363
- setStyle: (elm: string | Element | Element[], name: string, value: string | number | null) => void;
2364
- setStyles: (elm: string | Element | Element[], stylesArg: StyleMap) => void;
2365
- removeAllAttribs: (e: RunArguments<Element>) => void;
2366
- setAttrib: (elm: RunArguments<Element>, name: string, value: string | boolean | number | null) => void;
2367
- setAttribs: (elm: RunArguments<Element>, attrs: Record<string, string | boolean | number | null>) => void;
2368
- getAttrib: (elm: string | Element | null, name: string, defaultVal?: string) => string;
2369
- getAttribs: (elm: string | Element) => NamedNodeMap | Attr[];
2370
- getPos: (elm: string | Element, rootElm?: Node) => {
2371
- x: number;
2372
- y: number;
2373
- };
2374
- parseStyle: (cssText: string) => Record<string, string>;
2375
- serializeStyle: (stylesArg: StyleMap, name?: string) => string;
2376
- addStyle: (cssText: string) => void;
2377
- loadCSS: (url: string) => void;
2378
- hasClass: (elm: string | Element, cls: string) => boolean;
2379
- addClass: (elm: RunArguments<Element>, cls: string) => void;
2380
- removeClass: (elm: RunArguments<Element>, cls: string) => void;
2381
- toggleClass: (elm: RunArguments<Element>, cls: string, state?: boolean) => void;
2382
- show: (elm: string | Node | Node[]) => void;
2383
- hide: (elm: string | Node | Node[]) => void;
2384
- isHidden: (elm: string | Node) => boolean;
2385
- uniqueId: (prefix?: string) => string;
2386
- setHTML: (elm: RunArguments<Element>, html: string) => void;
2387
- getOuterHTML: (elm: string | Node) => string;
2388
- setOuterHTML: (elm: string | Node | Node[], html: string) => void;
2389
- decode: (text: string) => string;
2390
- encode: (text: string) => string;
2391
- insertAfter: {
2392
- <T extends Node>(node: T | T[], reference: string | Node): T;
2393
- <T extends Node>(node: RunArguments<T>, reference: string | Node): RunResult<typeof node, T>;
2394
- };
2395
- replace: {
2396
- <T extends Node>(newElm: Node, oldElm: T | T[], keepChildren?: boolean): T;
2397
- <T extends Node>(newElm: Node, oldElm: RunArguments<T>, keepChildren?: boolean): false | T;
2398
- };
2399
- rename: {
2400
- <K extends keyof HTMLElementTagNameMap>(elm: Element, name: K): HTMLElementTagNameMap[K];
2401
- (elm: Element, name: string): Element;
2402
- };
2403
- findCommonAncestor: (a: Node, b: Node) => Node | null;
2404
- run<R, T extends Node>(this: DOMUtils, elm: T | T[], func: (node: T) => R, scope?: any): typeof elm extends Array<any> ? R[] : R;
2405
- run<R, T extends Node>(this: DOMUtils, elm: RunArguments<T>, func: (node: T) => R, scope?: any): RunResult<typeof elm, R>;
2406
- isEmpty: (node: Node, elements?: Record<string, any>, options?: IsEmptyOptions) => boolean;
2407
- createRng: () => Range;
2408
- nodeIndex: (node: Node, normalized?: boolean) => number;
2409
- split: {
2410
- <T extends Node>(parentElm: Node, splitElm: Node, replacementElm: T): T | undefined;
2411
- <T extends Node>(parentElm: Node, splitElm: T): T | undefined;
2412
- };
2413
- bind: {
2414
- <K extends string>(target: Target, name: K, func: Callback<K>, scope?: any): Callback<K>;
2415
- <K extends string>(target: Target[], name: K, func: Callback<K>, scope?: any): Callback<K>[];
2416
- };
2417
- unbind: {
2418
- <K extends string>(target: Target, name?: K, func?: EventUtilsCallback<MappedEvent<HTMLElementEventMap, K>>): EventUtils;
2419
- <K extends string>(target: Target[], name?: K, func?: EventUtilsCallback<MappedEvent<HTMLElementEventMap, K>>): EventUtils[];
2420
- };
2421
- fire: (target: Node | Window, name: string, evt?: {}) => EventUtils;
2422
- dispatch: (target: Node | Window, name: string, evt?: {}) => EventUtils;
2423
- getContentEditable: (node: Node) => string | null;
2424
- getContentEditableParent: (node: Node) => string | null;
2425
- isEditable: (node: Node | null | undefined) => boolean;
2426
- destroy: () => void;
2427
- isChildOf: (node: Node, parent: Node) => boolean;
2428
- dumpRng: (r: Range) => string;
2487
+ interface Annotator {
2488
+ register: (name: string, settings: AnnotatorSettings) => void;
2489
+ annotate: (name: string, data: DecoratorData) => void;
2490
+ annotationChanged: (name: string, f: AnnotationListenerApi) => void;
2491
+ remove: (name: string) => void;
2492
+ removeAll: (name: string) => void;
2493
+ getAll: (name: string) => Record<string, Element[]>;
2429
2494
  }
2430
2495
  interface ClientRect {
2431
2496
  left: number;
@@ -2481,6 +2546,10 @@ interface DomSerializerSettings extends DomParserSettings, WriterSettings, Schem
2481
2546
  url_converter?: URLConverter;
2482
2547
  url_converter_scope?: {};
2483
2548
  }
2549
+ interface DomSerializerArgs extends ParserArgs {
2550
+ indent?: HtmlSerializerSettings['indent'];
2551
+ entity_encoding?: HtmlSerializerSettings['entity_encoding'];
2552
+ }
2484
2553
  interface DomSerializerImpl {
2485
2554
  schema: Schema;
2486
2555
  addNodeFilter: (name: string, callback: ParserFilterCallback) => void;
@@ -2493,7 +2562,7 @@ interface DomSerializerImpl {
2493
2562
  (node: Element, parserArgs: {
2494
2563
  format: 'tree';
2495
2564
  } & ParserArgs): AstNode;
2496
- (node: Element, parserArgs?: ParserArgs): string;
2565
+ (node: Element, domSerializerArgs?: DomSerializerArgs): string;
2497
2566
  };
2498
2567
  addRules: (rules: string) => void;
2499
2568
  setRules: (rules: string) => void;
@@ -2557,8 +2626,8 @@ interface EditorSelection {
2557
2626
  type: 'word';
2558
2627
  }) => void;
2559
2628
  }
2560
- type EditorCommandCallback<S> = (this: S, ui: boolean, value: any) => void;
2561
- type EditorCommandsCallback = (command: string, ui: boolean, value?: any) => void;
2629
+ type EditorCommandCallback<S> = (this: S, ui: boolean, value: any, args?: ExecCommandArgs) => void;
2630
+ type EditorCommandsCallback = (command: string, ui: boolean, value?: any, args?: ExecCommandArgs) => void;
2562
2631
  interface Commands {
2563
2632
  state: Record<string, (command: string) => boolean>;
2564
2633
  exec: Record<string, EditorCommandsCallback>;
@@ -2582,6 +2651,7 @@ declare class EditorCommands {
2582
2651
  addCommands(commandList: Record<string, EditorCommandsCallback>): void;
2583
2652
  addCommand<S>(command: string, callback: EditorCommandCallback<S>, scope: S): void;
2584
2653
  addCommand(command: string, callback: EditorCommandCallback<Editor>): void;
2654
+ removeCommand(command: string, type?: 'exec' | 'state' | 'value'): void;
2585
2655
  queryCommandSupported(command: string): boolean;
2586
2656
  addQueryStateHandler<S>(command: string, callback: (this: S) => boolean, scope: S): void;
2587
2657
  addQueryStateHandler(command: string, callback: (this: Editor) => boolean): void;
@@ -2685,6 +2755,7 @@ interface EditorManager extends Observable<EditorManagerEventMap> {
2685
2755
  documentBaseURL: string;
2686
2756
  i18n: I18n;
2687
2757
  suffix: string;
2758
+ pageUid: string;
2688
2759
  add(this: EditorManager, editor: Editor): Editor;
2689
2760
  addI18n: (code: string, item: Record<string, string>) => void;
2690
2761
  createEditor(this: EditorManager, id: string, options: RawEditorOptions): Editor;
@@ -2701,6 +2772,7 @@ interface EditorManager extends Observable<EditorManagerEventMap> {
2701
2772
  translate: (text: Untranslated) => TranslatedString;
2702
2773
  triggerSave: () => void;
2703
2774
  _setBaseUrl(this: EditorManager, baseUrl: string): void;
2775
+ _addLicenseKeyManager(this: EditorManager, addOn: LicenseKeyManagerAddon): void;
2704
2776
  }
2705
2777
  interface EditorObservable extends Observable<EditorEventMap> {
2706
2778
  bindPendingEventDelegates(this: Editor): void;
@@ -2871,6 +2943,7 @@ interface Theme {
2871
2943
  getNotificationManagerImpl?: () => NotificationManagerImpl;
2872
2944
  getWindowManagerImpl?: () => WindowManagerImpl;
2873
2945
  getPromotionElement?: () => HTMLElement | null;
2946
+ getSinkElement?: (type: 'dialog' | 'popup') => HTMLElement;
2874
2947
  }
2875
2948
  type ThemeManager = AddOnManager<void | Theme>;
2876
2949
  interface EditorConstructor {
@@ -2878,9 +2951,9 @@ interface EditorConstructor {
2878
2951
  new (id: string, options: RawEditorOptions, editorManager: EditorManager): Editor;
2879
2952
  }
2880
2953
  declare class Editor implements EditorObservable {
2881
- documentBaseUrl: string;
2882
2954
  baseUri: URI;
2883
2955
  id: string;
2956
+ editorUid: string;
2884
2957
  plugins: Record<string, Plugin>;
2885
2958
  documentBaseURI: URI;
2886
2959
  baseURI: URI;
@@ -2890,6 +2963,7 @@ declare class Editor implements EditorObservable {
2890
2963
  mode: EditorMode;
2891
2964
  options: Options;
2892
2965
  editorUpload: EditorUpload;
2966
+ userLookup: UserLookup;
2893
2967
  shortcuts: Shortcuts;
2894
2968
  loadedCSS: Record<string, any>;
2895
2969
  editorCommands: EditorCommands;
@@ -2935,6 +3009,7 @@ declare class Editor implements EditorObservable {
2935
3009
  model: Model;
2936
3010
  undoManager: UndoManager;
2937
3011
  windowManager: WindowManager;
3012
+ licenseKeyManager: LicenseKeyManager;
2938
3013
  _beforeUnload: (() => void) | undefined;
2939
3014
  _eventDispatcher: EventDispatcher<NativeEventMap> | undefined;
2940
3015
  _nodeChangeDispatcher: NodeChange;
@@ -2980,11 +3055,9 @@ declare class Editor implements EditorObservable {
2980
3055
  hide(): void;
2981
3056
  isHidden(): boolean;
2982
3057
  setProgressState(state: boolean, time?: number): void;
2983
- load(args?: Partial<SetContentArgs>): string;
3058
+ load(args?: Partial<SetContentArgs>): void;
2984
3059
  save(args?: Partial<GetContentArgs>): string;
2985
- setContent(content: string, args?: Partial<SetContentArgs>): string;
2986
- setContent(content: AstNode, args?: Partial<SetContentArgs>): AstNode;
2987
- setContent(content: Content, args?: Partial<SetContentArgs>): Content;
3060
+ setContent(content: string | AstNode, args?: Partial<SetContentArgs>): void;
2988
3061
  getContent(args: {
2989
3062
  format: 'tree';
2990
3063
  } & Partial<GetContentArgs>): AstNode;
@@ -3003,31 +3076,28 @@ declare class Editor implements EditorObservable {
3003
3076
  addVisual(elm?: HTMLElement): void;
3004
3077
  setEditableRoot(state: boolean): void;
3005
3078
  hasEditableRoot(): boolean;
3079
+ announce(message: string, options?: {
3080
+ assertive?: boolean;
3081
+ }): void;
3006
3082
  remove(): void;
3007
3083
  destroy(automatic?: boolean): void;
3008
3084
  uploadImages(): Promise<UploadResult$1[]>;
3009
3085
  _scanForImages(): Promise<BlobInfoImagePair[]>;
3010
3086
  }
3011
- interface UrlObject {
3012
- prefix: string;
3013
- resource: string;
3014
- suffix: string;
3087
+ type UserId = string;
3088
+ interface User {
3089
+ id: UserId;
3090
+ name: string;
3091
+ avatar: string;
3092
+ custom?: Record<string, any>;
3015
3093
  }
3016
- type WaitState = 'added' | 'loaded';
3017
- type AddOnConstructor<T> = (editor: Editor, url: string) => T;
3018
- interface AddOnManager<T> {
3019
- items: AddOnConstructor<T>[];
3020
- urls: Record<string, string>;
3021
- lookup: Record<string, {
3022
- instance: AddOnConstructor<T>;
3023
- }>;
3024
- get: (name: string) => AddOnConstructor<T> | undefined;
3025
- requireLangPack: (name: string, languages?: string) => void;
3026
- add: (id: string, addOn: AddOnConstructor<T>) => AddOnConstructor<T>;
3027
- remove: (name: string) => void;
3028
- createUrl: (baseUrl: UrlObject, dep: string | UrlObject) => UrlObject;
3029
- load: (name: string, addOnUrl: string | UrlObject) => Promise<void>;
3030
- waitFor: (name: string, state?: WaitState) => Promise<void>;
3094
+ interface ExpectedUser {
3095
+ id: UserId;
3096
+ [key: string]: any;
3097
+ }
3098
+ interface UserLookup {
3099
+ userId: UserId;
3100
+ fetchUsers: (userIds: UserId[]) => Record<UserId, Promise<User>>;
3031
3101
  }
3032
3102
  interface RangeUtils {
3033
3103
  walk: (rng: Range, callback: (nodes: Node[]) => void) => void;
@@ -3039,6 +3109,7 @@ interface RangeUtils {
3039
3109
  }
3040
3110
  interface ScriptLoaderSettings {
3041
3111
  referrerPolicy?: ReferrerPolicy;
3112
+ crossOrigin?: (url: string) => string | undefined;
3042
3113
  }
3043
3114
  interface ScriptLoaderConstructor {
3044
3115
  readonly prototype: ScriptLoader;
@@ -3055,6 +3126,7 @@ declare class ScriptLoader {
3055
3126
  private loading;
3056
3127
  constructor(settings?: ScriptLoaderSettings);
3057
3128
  _setReferrerPolicy(referrerPolicy: ReferrerPolicy): void;
3129
+ _setCrossOrigin(crossOrigin: (url: string) => string | undefined): void;
3058
3130
  loadScript(url: string): Promise<void>;
3059
3131
  isDone(url: string): boolean;
3060
3132
  markDone(url: string): void;
@@ -3063,6 +3135,7 @@ declare class ScriptLoader {
3063
3135
  remove(url: string): void;
3064
3136
  loadQueue(): Promise<void>;
3065
3137
  loadScripts(scripts: string[]): Promise<void>;
3138
+ getScriptAttributes(url: string): Record<string, string>;
3066
3139
  }
3067
3140
  type TextProcessCallback = (node: Text, offset: number, text: string) => number;
3068
3141
  interface Spot {
@@ -3185,6 +3258,11 @@ type TextPatterns_d_InlineFormatPattern = InlineFormatPattern;
3185
3258
  declare namespace TextPatterns_d {
3186
3259
  export { TextPatterns_d_Pattern as Pattern, TextPatterns_d_RawPattern as RawPattern, TextPatterns_d_DynamicPatternsLookup as DynamicPatternsLookup, TextPatterns_d_RawDynamicPatternsLookup as RawDynamicPatternsLookup, TextPatterns_d_DynamicPatternContext as DynamicPatternContext, TextPatterns_d_BlockCmdPattern as BlockCmdPattern, TextPatterns_d_BlockPattern as BlockPattern, TextPatterns_d_BlockFormatPattern as BlockFormatPattern, TextPatterns_d_InlineCmdPattern as InlineCmdPattern, TextPatterns_d_InlinePattern as InlinePattern, TextPatterns_d_InlineFormatPattern as InlineFormatPattern, };
3187
3260
  }
3261
+ interface AriaAnnouncer {
3262
+ readonly announce: (message: string, options?: {
3263
+ assertive?: boolean;
3264
+ }) => void;
3265
+ }
3188
3266
  interface Delay {
3189
3267
  setEditorInterval: (editor: Editor, callback: () => void, time?: number) => number;
3190
3268
  setEditorTimeout: (editor: Editor, callback: () => void, time?: number) => number;
@@ -3300,6 +3378,7 @@ interface TinyMCE extends EditorManager {
3300
3378
  BookmarkManager: BookmarkManagerNamespace;
3301
3379
  Selection: (dom: DOMUtils, win: Window, serializer: DomSerializer, editor: Editor) => EditorSelection;
3302
3380
  StyleSheetLoader: (documentOrShadowRoot: Document | ShadowRoot, settings: StyleSheetLoaderSettings) => StyleSheetLoader;
3381
+ AriaAnnouncer: AriaAnnouncer;
3303
3382
  Event: EventUtils;
3304
3383
  };
3305
3384
  html: {
@@ -3348,4 +3427,4 @@ interface TinyMCE extends EditorManager {
3348
3427
  _addCacheSuffix: Tools['_addCacheSuffix'];
3349
3428
  }
3350
3429
  declare const tinymce: TinyMCE;
3351
- export { AddOnManager, Annotator, AstNode, Bookmark, BookmarkManager, ControlSelection, DOMUtils, Delay, DomParser, DomParserSettings, DomSerializer, DomSerializerSettings, DomTreeWalker, Editor, EditorCommands, EditorEvent, EditorManager, EditorModeApi, EditorObservable, EditorOptions, EditorSelection, Entities, Env, EventDispatcher, EventUtils, EventTypes_d as Events, FakeClipboard, FocusManager, Format_d as Formats, Formatter, GeomRect, HtmlSerializer, HtmlSerializerSettings, I18n, IconManager, Model, ModelManager, NotificationApi, NotificationManager, NotificationSpec, Observable, Plugin, PluginManager, RangeUtils, RawEditorOptions, Rect, Resource, Schema, SchemaSettings, ScriptLoader, Shortcuts, StyleSheetLoader, Styles, TextPatterns_d as TextPatterns, TextSeeker, Theme, ThemeManager, TinyMCE, Tools, URI, Ui_d as Ui, UndoManager, VK, WindowManager, Writer, WriterSettings, tinymce as default };
3430
+ export { AddOnManager, Annotator, AstNode, Bookmark, BookmarkManager, ControlSelection, DOMUtils, Delay, DomParser, DomParserSettings, DomSerializer, DomSerializerSettings, DomTreeWalker, Editor, EditorCommands, EditorEvent, EditorManager, EditorModeApi, EditorObservable, EditorOptions, EditorSelection, Entities, Env, EventDispatcher, EventUtils, EventTypes_d as Events, ExpectedUser, FakeClipboard, FocusManager, Format_d as Formats, Formatter, GeomRect, HtmlSerializer, HtmlSerializerSettings, I18n, IconManager, Model, ModelManager, NotificationApi, NotificationManager, NotificationSpec, Observable, Plugin, PluginManager, RangeUtils, RawEditorOptions, Rect, Resource, Schema, SchemaSettings, ScriptLoader, Shortcuts, StyleSheetLoader, Styles, TextPatterns_d as TextPatterns, TextSeeker, Theme, ThemeManager, TinyMCE, Tools, URI, Ui_d as Ui, UndoManager, User, VK, WindowManager, Writer, WriterSettings, tinymce as default };