jodit 4.2.25 → 4.2.27

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 (74) hide show
  1. package/CHANGELOG.md +20 -5
  2. package/es2015/jodit.css +4 -2
  3. package/es2015/jodit.fat.min.css +1 -1
  4. package/es2015/jodit.fat.min.js +2 -2
  5. package/es2015/jodit.js +95 -57
  6. package/es2015/jodit.min.css +1 -1
  7. package/es2015/jodit.min.js +2 -2
  8. package/es2015/plugins/debug/debug.js +1 -1
  9. package/es2015/plugins/debug/debug.min.js +1 -1
  10. package/es2015/plugins/speech-recognize/speech-recognize.css +1 -1
  11. package/es2015/plugins/speech-recognize/speech-recognize.js +1 -1
  12. package/es2015/plugins/speech-recognize/speech-recognize.min.js +1 -1
  13. package/es2018/jodit.css +4 -2
  14. package/es2018/jodit.fat.min.css +1 -1
  15. package/es2018/jodit.fat.min.js +2 -2
  16. package/es2018/jodit.js +95 -57
  17. package/es2018/jodit.min.css +1 -1
  18. package/es2018/jodit.min.js +2 -2
  19. package/es2018/plugins/debug/debug.js +1 -1
  20. package/es2018/plugins/debug/debug.min.js +1 -1
  21. package/es2018/plugins/speech-recognize/speech-recognize.css +1 -1
  22. package/es2018/plugins/speech-recognize/speech-recognize.js +1 -1
  23. package/es2018/plugins/speech-recognize/speech-recognize.min.js +1 -1
  24. package/es2021/jodit.css +4 -2
  25. package/es2021/jodit.fat.min.css +1 -1
  26. package/es2021/jodit.fat.min.js +2 -2
  27. package/es2021/jodit.js +95 -57
  28. package/es2021/jodit.min.css +1 -1
  29. package/es2021/jodit.min.js +2 -2
  30. package/es2021/plugins/debug/debug.js +1 -1
  31. package/es2021/plugins/debug/debug.min.js +1 -1
  32. package/es2021/plugins/speech-recognize/speech-recognize.css +1 -1
  33. package/es2021/plugins/speech-recognize/speech-recognize.js +1 -1
  34. package/es2021/plugins/speech-recognize/speech-recognize.min.js +1 -1
  35. package/es2021.en/jodit.css +4 -2
  36. package/es2021.en/jodit.fat.min.css +1 -1
  37. package/es2021.en/jodit.fat.min.js +2 -2
  38. package/es2021.en/jodit.js +95 -57
  39. package/es2021.en/jodit.min.css +1 -1
  40. package/es2021.en/jodit.min.js +2 -2
  41. package/es2021.en/plugins/debug/debug.js +1 -1
  42. package/es2021.en/plugins/debug/debug.min.js +1 -1
  43. package/es2021.en/plugins/speech-recognize/speech-recognize.css +1 -1
  44. package/es2021.en/plugins/speech-recognize/speech-recognize.js +1 -1
  45. package/es2021.en/plugins/speech-recognize/speech-recognize.min.js +1 -1
  46. package/es5/jodit.css +11 -6
  47. package/es5/jodit.fat.min.css +1 -1
  48. package/es5/jodit.fat.min.js +2 -2
  49. package/es5/jodit.js +96 -57
  50. package/es5/jodit.min.css +3 -3
  51. package/es5/jodit.min.js +2 -2
  52. package/es5/plugins/debug/debug.js +1 -1
  53. package/es5/plugins/debug/debug.min.js +1 -1
  54. package/es5/plugins/speech-recognize/speech-recognize.css +1 -1
  55. package/es5/plugins/speech-recognize/speech-recognize.js +1 -1
  56. package/es5/plugins/speech-recognize/speech-recognize.min.js +1 -1
  57. package/esm/core/constants.js +3 -3
  58. package/esm/core/dom/dom.d.ts +2 -1
  59. package/esm/core/dom/dom.js +10 -4
  60. package/esm/core/global.js +4 -1
  61. package/esm/core/helpers/normalize/normalize-key-aliases.js +2 -1
  62. package/esm/core/ui/button/tooltip/tooltip.d.ts +1 -0
  63. package/esm/core/ui/button/tooltip/tooltip.js +11 -5
  64. package/esm/modules/table/table.d.ts +2 -3
  65. package/esm/modules/table/table.js +27 -34
  66. package/esm/plugins/add-new-line/add-new-line.js +4 -1
  67. package/esm/plugins/clean-html/helpers/visitor/filters/fill-empty-paragraph.js +9 -1
  68. package/esm/plugins/hotkeys/hotkeys.js +4 -2
  69. package/esm/plugins/select-cells/select-cells.js +1 -1
  70. package/esm/plugins/table/config.js +19 -3
  71. package/package.json +1 -1
  72. package/types/core/dom/dom.d.ts +2 -1
  73. package/types/core/ui/button/tooltip/tooltip.d.ts +1 -0
  74. package/types/modules/table/table.d.ts +2 -3
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * jodit - Jodit is an awesome and useful wysiwyg editor with filebrowser
3
3
  * Author: Chupurnov <chupurnov@gmail.com> (https://xdsoft.net/jodit/)
4
- * Version: v4.2.25
4
+ * Version: v4.2.27
5
5
  * Url: https://xdsoft.net/jodit/
6
6
  * License(s): MIT
7
7
  */
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * jodit - Jodit is an awesome and useful wysiwyg editor with filebrowser
3
3
  * Author: Chupurnov <chupurnov@gmail.com> (https://xdsoft.net/jodit/)
4
- * Version: v4.2.25
4
+ * Version: v4.2.27
5
5
  * Url: https://xdsoft.net/jodit/
6
6
  * License(s): MIT
7
7
  */
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * jodit - Jodit is an awesome and useful wysiwyg editor with filebrowser
3
3
  * Author: Chupurnov <chupurnov@gmail.com> (https://xdsoft.net/jodit/)
4
- * Version: v4.2.25
4
+ * Version: v4.2.27
5
5
  * Url: https://xdsoft.net/jodit/
6
6
  * License(s): MIT
7
7
  */
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * jodit - Jodit is an awesome and useful wysiwyg editor with filebrowser
3
3
  * Author: Chupurnov <chupurnov@gmail.com> (https://xdsoft.net/jodit/)
4
- * Version: v4.2.25
4
+ * Version: v4.2.27
5
5
  * Url: https://xdsoft.net/jodit/
6
6
  * License(s): MIT
7
7
  */
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * jodit - Jodit is an awesome and useful wysiwyg editor with filebrowser
3
3
  * Author: Chupurnov <chupurnov@gmail.com> (https://xdsoft.net/jodit/)
4
- * Version: v4.2.25
4
+ * Version: v4.2.27
5
5
  * Url: https://xdsoft.net/jodit/
6
6
  * License(s): MIT
7
7
  */
@@ -3,7 +3,7 @@
3
3
  * Released under MIT see LICENSE.txt in the project root for license information.
4
4
  * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
5
5
  */
6
- export const APP_VERSION = "4.2.25";
6
+ export const APP_VERSION = "4.2.27";
7
7
  // prettier-ignore
8
8
  export const ES = "es2020";
9
9
  export const IS_ES_MODERN = true;
@@ -165,8 +165,8 @@ export const KEY_ALIASES = {
165
165
  option: 'alt',
166
166
  return: 'enter',
167
167
  right: 'arrowright',
168
- space: ' ',
169
- spacebar: ' ',
168
+ space: 'space',
169
+ spacebar: 'space',
170
170
  up: 'arrowup',
171
171
  win: 'meta',
172
172
  windows: 'meta'
@@ -45,8 +45,9 @@ export declare class Dom {
45
45
  * // Replace the first <span> element to the < p >
46
46
  * ```
47
47
  */
48
+ static replace<T extends HTMLElement>(elm: Node, newTagName: HTMLTagNames): T;
48
49
  static replace<T extends HTMLElement>(elm: Node, newTagName: HTMLTagNames, create: ICreate, withAttributes?: boolean, notMoveContent?: boolean): T;
49
- static replace<T extends Node>(elm: Node, newTagName: T | string, create: ICreate, withAttributes?: boolean, notMoveContent?: boolean): T;
50
+ static replace<T extends Node>(elm: Node, newTagName: T | string, create?: ICreate, withAttributes?: boolean, notMoveContent?: boolean): T;
50
51
  /**
51
52
  * Checks whether the Node text and blank (in this case it may contain invisible auxiliary characters ,
52
53
  * it is also empty )
@@ -8,7 +8,7 @@ import { INSEPARABLE_TAGS, LIST_TAGS, NO_EMPTY_TAGS, TEMP_ATTR } from "../consta
8
8
  import { toArray } from "../helpers/array/to-array.js";
9
9
  import { isArray, isFunction, isHTML, isMarker, isSet, isString, isVoid } from "../helpers/checker/index.js";
10
10
  import { trim } from "../helpers/string/trim.js";
11
- import { $$, attr, call, css, dataBind, error } from "../helpers/utils/index.js";
11
+ import { $$, assert, attr, call, css, dataBind, error } from "../helpers/utils/index.js";
12
12
  /**
13
13
  * Module for working with DOM
14
14
  */
@@ -115,11 +115,17 @@ export class Dom {
115
115
  }
116
116
  static replace(elm, newTagName, create, withAttributes = false, notMoveContent = false) {
117
117
  if (isHTML(newTagName)) {
118
+ assert(create, 'Need create instance for new tag');
118
119
  newTagName = create.fromHTML(newTagName);
119
120
  }
120
- const tag = isString(newTagName)
121
- ? create.element(newTagName)
122
- : newTagName;
121
+ let tag;
122
+ if (isString(newTagName)) {
123
+ assert(create, 'Need create instance for new tag');
124
+ tag = create.element(newTagName);
125
+ }
126
+ else {
127
+ tag = newTagName;
128
+ }
123
129
  if (!notMoveContent) {
124
130
  while (elm.firstChild) {
125
131
  tag.appendChild(elm.firstChild);
@@ -55,7 +55,8 @@ export function getContainer(jodit, classFunc, tag = 'div', createInsideEditor =
55
55
  const data = boxes.get(jodit) || {}, key = name + tag;
56
56
  const view = isViewObject(jodit) ? jodit : jodit.j;
57
57
  if (!data[key]) {
58
- let c = view.c, body = isJoditObject(jodit) && jodit.o.shadowRoot
58
+ let c = view.c;
59
+ let body = isJoditObject(jodit) && jodit.o.shadowRoot
59
60
  ? jodit.o.shadowRoot
60
61
  : jodit.od.body;
61
62
  if (createInsideEditor &&
@@ -75,6 +76,7 @@ export function getContainer(jodit, classFunc, tag = 'div', createInsideEditor =
75
76
  body.appendChild(box);
76
77
  data[key] = box;
77
78
  jodit.hookStatus('beforeDestruct', () => {
79
+ view.events.off(box);
78
80
  Dom.safeRemove(box);
79
81
  delete data[key];
80
82
  if (Object.keys(data).length) {
@@ -82,6 +84,7 @@ export function getContainer(jodit, classFunc, tag = 'div', createInsideEditor =
82
84
  }
83
85
  });
84
86
  boxes.set(jodit, data);
87
+ view.events.fire('getContainer', box);
85
88
  }
86
89
  data[key].classList.remove('jodit_theme_default', 'jodit_theme_dark');
87
90
  data[key].classList.add(`jodit_theme_${view.o.theme || 'default'}`);
@@ -15,7 +15,8 @@ export function normalizeKeyAliases(keys) {
15
15
  ctrl: 2,
16
16
  control: 2,
17
17
  alt: 3,
18
- shift: 4
18
+ shift: 4,
19
+ space: 5
19
20
  };
20
21
  return keys
21
22
  .replace(/\+\+/g, '+add')
@@ -16,6 +16,7 @@ export declare class UITooltip extends UIElement {
16
16
  className(): string;
17
17
  protected render(): string;
18
18
  constructor(view: IViewBased);
19
+ private __onAttach;
19
20
  private __listenClose;
20
21
  private __addListenersOnEnter;
21
22
  private __removeListenersOnLeave;
@@ -51,15 +51,21 @@ let UITooltip = UITooltip_1 = class UITooltip extends UIElement {
51
51
  if (!view.o.textIcons &&
52
52
  view.o.showTooltip &&
53
53
  !view.o.useNativeTooltip) {
54
+ this.j.e.on('getContainer', (box) => {
55
+ this.__onAttach(box);
56
+ });
54
57
  view.hookStatus(STATUSES.ready, () => {
55
- // TODO Move it inside __show method. Now it is here because testcase failed with capturing
56
- getContainer(this.j, UITooltip_1).appendChild(this.container);
57
- view.e.on(view.container, 'mouseenter.tooltip', this.__onMouseEnter, {
58
- capture: true
59
- });
58
+ this.__onAttach(this.j.container);
60
59
  });
61
60
  }
62
61
  }
62
+ __onAttach(container) {
63
+ // TODO Move it inside __show method. Now it is here because testcase failed with capturing
64
+ getContainer(this.j, UITooltip_1).appendChild(this.container);
65
+ this.j.e.on(container, 'mouseenter.tooltip', this.__onMouseEnter, {
66
+ capture: true
67
+ });
68
+ }
63
69
  __addListenersOnEnter() {
64
70
  if (this.__listenClose) {
65
71
  return;
@@ -62,11 +62,10 @@ export declare class Table extends ViewComponent<IJodit> {
62
62
  * Remove row
63
63
  */
64
64
  removeRow(table: HTMLTableElement, rowIndex: number): void;
65
- private static __appendColumn;
66
65
  /**
67
66
  * Insert column before / after all the columns containing the selected cells
68
67
  */
69
- appendColumn(table: HTMLTableElement, j: number, after: boolean): void;
68
+ appendColumn(table: HTMLTableElement, selectedCell: HTMLTableCellElement, insertAfter?: boolean): void;
70
69
  private static __removeColumn;
71
70
  /**
72
71
  * Remove column by index
@@ -86,7 +85,7 @@ export declare class Table extends ViewComponent<IJodit> {
86
85
  normalizeTable(table: HTMLTableElement): void;
87
86
  private static __mergeSelected;
88
87
  /**
89
- * It combines all of the selected cells into one. The contents of the cells will also be combined
88
+ * It combines all the selected cells into one. The contents of the cells will also be combined
90
89
  */
91
90
  mergeSelected(table: HTMLTableElement): void;
92
91
  private static __splitHorizontal;
@@ -254,46 +254,39 @@ export class Table extends ViewComponent {
254
254
  removeRow(table, rowIndex) {
255
255
  return Table.__removeRow(table, rowIndex);
256
256
  }
257
- static __appendColumn(table, j, after, create) {
257
+ /**
258
+ * Insert column before / after all the columns containing the selected cells
259
+ */
260
+ appendColumn(table, selectedCell, insertAfter = true) {
258
261
  const box = Table.__formalMatrix(table);
259
- let i;
260
- if (j === undefined || j < 0) {
261
- j = Table.__getColumnsCount(table) - 1;
262
+ if (!insertAfter && Dom.isCell(selectedCell.previousElementSibling)) {
263
+ return this.appendColumn(table, selectedCell.previousElementSibling, true);
262
264
  }
263
- for (i = 0; i < box.length; i += 1) {
264
- const cell = create.element('td');
265
- const td = box[i][j];
266
- let added = false;
267
- if (after) {
268
- if ((box[i] && td && j + 1 >= box[i].length) ||
269
- td !== box[i][j + 1]) {
270
- if (td.nextSibling) {
271
- Dom.before(td.nextSibling, cell);
272
- }
273
- else {
274
- td.parentNode && td.parentNode.appendChild(cell);
275
- }
276
- added = true;
265
+ const columnIndex = insertAfter
266
+ ? selectedCell.cellIndex + ((selectedCell.colSpan || 1) - 1)
267
+ : selectedCell.cellIndex;
268
+ const newColumnIndex = insertAfter ? columnIndex + 1 : columnIndex;
269
+ for (let i = 0; i < box.length;) {
270
+ const cells = box[i];
271
+ if (cells[columnIndex] !== cells[newColumnIndex] ||
272
+ columnIndex === newColumnIndex) {
273
+ const cell = this.j.createInside.element('td');
274
+ if (insertAfter) {
275
+ Dom.after(cells[columnIndex], cell);
277
276
  }
278
- }
279
- else {
280
- if (j - 1 < 0 ||
281
- (box[i][j] !== box[i][j - 1] && box[i][j].parentNode)) {
282
- Dom.before(box[i][j], cell);
283
- added = true;
277
+ else {
278
+ Dom.before(cells[columnIndex], cell);
279
+ }
280
+ if (cells[columnIndex].rowSpan > 1) {
281
+ cell.rowSpan = cells[columnIndex].rowSpan;
284
282
  }
285
283
  }
286
- if (!added) {
287
- attr(box[i][j], 'colspan', parseInt(attr(box[i][j], 'colspan') || '1', 10) + 1);
284
+ else {
285
+ cells[columnIndex].colSpan += 1;
288
286
  }
287
+ i += cells[columnIndex].rowSpan || 1;
289
288
  }
290
289
  }
291
- /**
292
- * Insert column before / after all the columns containing the selected cells
293
- */
294
- appendColumn(table, j, after) {
295
- return Table.__appendColumn(table, j, after, this.j.createInside);
296
- }
297
290
  static __removeColumn(table, j) {
298
291
  const box = Table.__formalMatrix(table);
299
292
  let dec;
@@ -511,7 +504,7 @@ export class Table extends ViewComponent {
511
504
  alreadyMerged.delete(first);
512
505
  Table.__unmark(__marked);
513
506
  Table.__normalizeTable(table);
514
- toArray(table.rows).forEach((tr, index) => {
507
+ toArray(table.rows).forEach(tr => {
515
508
  if (!tr.cells.length) {
516
509
  Dom.safeRemove(tr);
517
510
  }
@@ -520,7 +513,7 @@ export class Table extends ViewComponent {
520
513
  }
521
514
  }
522
515
  /**
523
- * It combines all of the selected cells into one. The contents of the cells will also be combined
516
+ * It combines all the selected cells into one. The contents of the cells will also be combined
524
517
  */
525
518
  mergeSelected(table) {
526
519
  return Table.__mergeSelected(table, this.j);
@@ -120,7 +120,9 @@ export class addNewLine extends Plugin {
120
120
  editor.e
121
121
  .off(editor.editor, '.' + ns)
122
122
  .off(editor.container, '.' + ns)
123
+ .off('.' + ns)
123
124
  .on([editor.ow, editor.ew, editor.editor], 'scroll' + '.' + ns, this.__hideForce)
125
+ .on('finishedCleanHTMLWorker' + '.' + ns, this.__hideForce)
124
126
  .on(editor.editor, 'click' + '.' + ns, this.__hide)
125
127
  .on(editor.container, 'mouseleave' + '.' + ns, this.__hide)
126
128
  .on(editor.editor, 'mousemove' + '.' + ns, this.__onMouseMove);
@@ -208,7 +210,8 @@ export class addNewLine extends Plugin {
208
210
  Dom.safeRemove(this.__line);
209
211
  this.j.e
210
212
  .off([this.j.ow, this.j.ew, this.j.editor], '.' + ns)
211
- .off(this.j.container, '.' + ns);
213
+ .off(this.j.container, '.' + ns)
214
+ .off('.' + ns);
212
215
  }
213
216
  }
214
217
  __decorate([
@@ -5,13 +5,21 @@
5
5
  */
6
6
  import { INSEPARABLE_TAGS } from "../../../../../core/constants.js";
7
7
  import { Dom } from "../../../../../core/dom/dom.js";
8
+ const TABLE_CONTAINER_TAGS = new Set([
9
+ 'table',
10
+ 'tbody',
11
+ 'thead',
12
+ 'tfoot',
13
+ 'tr'
14
+ ]);
8
15
  /**
9
16
  * @private
10
17
  */
11
18
  export function fillEmptyParagraph(jodit, nodeElm, hadEffect) {
12
19
  if (jodit.o.cleanHTML.fillEmptyParagraph &&
13
20
  Dom.isBlock(nodeElm) &&
14
- Dom.isEmpty(nodeElm, INSEPARABLE_TAGS)) {
21
+ Dom.isEmpty(nodeElm, INSEPARABLE_TAGS) &&
22
+ !Dom.isTag(nodeElm, TABLE_CONTAINER_TAGS)) {
15
23
  const br = jodit.createInside.element('br');
16
24
  nodeElm.appendChild(br);
17
25
  return true;
@@ -15,7 +15,8 @@ export class hotkeys extends Plugin {
15
15
  constructor() {
16
16
  super(...arguments);
17
17
  this.onKeyPress = (event) => {
18
- const special = this.specialKeys[event.which], character = (event.key || String.fromCharCode(event.which)).toLowerCase();
18
+ const special = this.specialKeys[event.which];
19
+ const character = (event.key || String.fromCharCode(event.which)).toLowerCase();
19
20
  const modif = [special || character];
20
21
  ['alt', 'ctrl', 'shift', 'meta'].forEach(specialKey => {
21
22
  if (event[specialKey + 'Key'] && special !== specialKey) {
@@ -109,7 +110,8 @@ export class hotkeys extends Plugin {
109
110
  }
110
111
  })
111
112
  .on('keydown.hotkeys', (event) => {
112
- const shortcut = this.onKeyPress(event), stop = {
113
+ const shortcut = this.onKeyPress(event);
114
+ const stop = {
113
115
  shouldStop: true
114
116
  };
115
117
  const resultOfFire = this.j.e.fire(shortcut + '.hotkey', event.type, stop);
@@ -283,7 +283,7 @@ export class selectCells extends Plugin {
283
283
  break;
284
284
  case 'addcolumnafter':
285
285
  case 'addcolumnbefore':
286
- this.__tableModule.appendColumn(table, cell.cellIndex, command === 'addcolumnafter');
286
+ this.__tableModule.appendColumn(table, cell, command === 'addcolumnafter');
287
287
  break;
288
288
  case 'addrowafter':
289
289
  case 'addrowbefore':
@@ -25,6 +25,8 @@ Config.prototype.controls.table = {
25
25
  }
26
26
  },
27
27
  popup: (editor, current, close, button) => {
28
+ editor.editor.normalize();
29
+ const snapshot = editor.history.snapshot.make();
28
30
  const control = button.control;
29
31
  const default_rows_count = control.data && control.data.rows ? control.data.rows : 10, default_cols_count = control.data && control.data.cols ? control.data.cols : 10;
30
32
  const generateExtraClasses = () => {
@@ -117,10 +119,24 @@ Config.prototype.controls.table = {
117
119
  table.classList.add(className);
118
120
  });
119
121
  });
120
- if (editor.editor.firstChild) {
121
- editor.s.insertNode(crt.text('\n'), false, false);
122
+ editor.s.restore();
123
+ editor.s.removeMarkers();
124
+ editor.editor.normalize();
125
+ editor.history.snapshot.restore(snapshot);
126
+ const block = Dom.furthest(editor.s.current(), Dom.isBlock, editor.editor);
127
+ if (block && Dom.isEmpty(block)) {
128
+ Dom.replace(block, table, undefined, false, true);
129
+ }
130
+ else {
131
+ if (block) {
132
+ const fake = crt.text('\n');
133
+ Dom.after(block, fake);
134
+ Dom.after(fake, table);
135
+ }
136
+ else {
137
+ editor.s.insertNode(table, false);
138
+ }
122
139
  }
123
- editor.s.insertNode(table, false);
124
140
  if (first_td) {
125
141
  editor.s.setCursorIn(first_td);
126
142
  scrollIntoViewIfNeeded(first_td, editor.editor, editor.ed);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jodit",
3
- "version": "4.2.25",
3
+ "version": "4.2.27",
4
4
  "description": "Jodit is an awesome and useful wysiwyg editor with filebrowser",
5
5
  "main": "esm/index.js",
6
6
  "types": "types/index.d.ts",
@@ -45,8 +45,9 @@ export declare class Dom {
45
45
  * // Replace the first <span> element to the < p >
46
46
  * ```
47
47
  */
48
+ static replace<T extends HTMLElement>(elm: Node, newTagName: HTMLTagNames): T;
48
49
  static replace<T extends HTMLElement>(elm: Node, newTagName: HTMLTagNames, create: ICreate, withAttributes?: boolean, notMoveContent?: boolean): T;
49
- static replace<T extends Node>(elm: Node, newTagName: T | string, create: ICreate, withAttributes?: boolean, notMoveContent?: boolean): T;
50
+ static replace<T extends Node>(elm: Node, newTagName: T | string, create?: ICreate, withAttributes?: boolean, notMoveContent?: boolean): T;
50
51
  /**
51
52
  * Checks whether the Node text and blank (in this case it may contain invisible auxiliary characters ,
52
53
  * it is also empty )
@@ -16,6 +16,7 @@ export declare class UITooltip extends UIElement {
16
16
  className(): string;
17
17
  protected render(): string;
18
18
  constructor(view: IViewBased);
19
+ private __onAttach;
19
20
  private __listenClose;
20
21
  private __addListenersOnEnter;
21
22
  private __removeListenersOnLeave;
@@ -62,11 +62,10 @@ export declare class Table extends ViewComponent<IJodit> {
62
62
  * Remove row
63
63
  */
64
64
  removeRow(table: HTMLTableElement, rowIndex: number): void;
65
- private static __appendColumn;
66
65
  /**
67
66
  * Insert column before / after all the columns containing the selected cells
68
67
  */
69
- appendColumn(table: HTMLTableElement, j: number, after: boolean): void;
68
+ appendColumn(table: HTMLTableElement, selectedCell: HTMLTableCellElement, insertAfter?: boolean): void;
70
69
  private static __removeColumn;
71
70
  /**
72
71
  * Remove column by index
@@ -86,7 +85,7 @@ export declare class Table extends ViewComponent<IJodit> {
86
85
  normalizeTable(table: HTMLTableElement): void;
87
86
  private static __mergeSelected;
88
87
  /**
89
- * It combines all of the selected cells into one. The contents of the cells will also be combined
88
+ * It combines all the selected cells into one. The contents of the cells will also be combined
90
89
  */
91
90
  mergeSelected(table: HTMLTableElement): void;
92
91
  private static __splitHorizontal;