@syncfusion/ej2-richtexteditor 20.4.52 → 21.1.35

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 (140) hide show
  1. package/CHANGELOG.md +32 -2
  2. package/dist/ej2-richtexteditor.min.js +2 -2
  3. package/dist/ej2-richtexteditor.umd.min.js +2 -2
  4. package/dist/ej2-richtexteditor.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-richtexteditor.es2015.js +1623 -639
  6. package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
  7. package/dist/es6/ej2-richtexteditor.es5.js +1638 -646
  8. package/dist/es6/ej2-richtexteditor.es5.js.map +1 -1
  9. package/dist/global/ej2-richtexteditor.min.js +2 -2
  10. package/dist/global/ej2-richtexteditor.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/package.json +13 -13
  13. package/src/common/config.js +3 -1
  14. package/src/common/constant.d.ts +6 -0
  15. package/src/common/constant.js +6 -0
  16. package/src/common/util.d.ts +2 -1
  17. package/src/common/util.js +15 -6
  18. package/src/editor-manager/base/editor-manager.d.ts +2 -0
  19. package/src/editor-manager/base/editor-manager.js +6 -1
  20. package/src/editor-manager/base/enum.d.ts +14 -0
  21. package/src/editor-manager/base/interface.d.ts +34 -0
  22. package/src/editor-manager/plugin/clearformat.js +13 -4
  23. package/src/editor-manager/plugin/format-painter-actions.d.ts +63 -0
  24. package/src/editor-manager/plugin/format-painter-actions.js +474 -0
  25. package/src/editor-manager/plugin/image.js +0 -1
  26. package/src/editor-manager/plugin/inserthtml-exec.js +1 -1
  27. package/src/editor-manager/plugin/inserthtml.d.ts +1 -1
  28. package/src/editor-manager/plugin/inserthtml.js +18 -10
  29. package/src/editor-manager/plugin/isformatted.js +1 -0
  30. package/src/editor-manager/plugin/link.js +0 -1
  31. package/src/editor-manager/plugin/lists.js +1 -1
  32. package/src/editor-manager/plugin/ms-word-clean-up.js +57 -19
  33. package/src/editor-manager/plugin/selection-commands.d.ts +4 -1
  34. package/src/editor-manager/plugin/selection-commands.js +70 -9
  35. package/src/editor-manager/plugin/video.js +2 -0
  36. package/src/editor-manager/plugin.d.ts +1 -0
  37. package/src/editor-manager/plugin.js +1 -0
  38. package/src/global.js +1 -1
  39. package/src/rich-text-editor/actions/base-quick-toolbar.d.ts +1 -0
  40. package/src/rich-text-editor/actions/base-quick-toolbar.js +21 -1
  41. package/src/rich-text-editor/actions/base-toolbar.js +33 -10
  42. package/src/rich-text-editor/actions/enter-key.js +23 -16
  43. package/src/rich-text-editor/actions/format-painter.d.ts +24 -0
  44. package/src/rich-text-editor/actions/format-painter.js +142 -0
  45. package/src/rich-text-editor/actions/full-screen.js +0 -1
  46. package/src/rich-text-editor/actions/html-editor.d.ts +1 -0
  47. package/src/rich-text-editor/actions/html-editor.js +117 -97
  48. package/src/rich-text-editor/actions/paste-clean-up.js +2 -2
  49. package/src/rich-text-editor/actions/quick-toolbar.js +8 -1
  50. package/src/rich-text-editor/actions/toolbar.js +10 -0
  51. package/src/rich-text-editor/actions.d.ts +1 -0
  52. package/src/rich-text-editor/actions.js +1 -0
  53. package/src/rich-text-editor/base/constant.d.ts +10 -0
  54. package/src/rich-text-editor/base/constant.js +10 -0
  55. package/src/rich-text-editor/base/enum.d.ts +4 -0
  56. package/src/rich-text-editor/base/interface.d.ts +30 -3
  57. package/src/rich-text-editor/base/interface.js +12 -0
  58. package/src/rich-text-editor/base/rich-text-editor-model.d.ts +30 -4
  59. package/src/rich-text-editor/base/rich-text-editor.d.ts +35 -5
  60. package/src/rich-text-editor/base/rich-text-editor.js +46 -10
  61. package/src/rich-text-editor/base/util.js +2 -0
  62. package/src/rich-text-editor/formatter/formatter.js +22 -13
  63. package/src/rich-text-editor/formatter/html-formatter.d.ts +5 -3
  64. package/src/rich-text-editor/formatter/html-formatter.js +7 -5
  65. package/src/rich-text-editor/models/default-locale.js +4 -2
  66. package/src/rich-text-editor/models/items.d.ts +3 -0
  67. package/src/rich-text-editor/models/items.js +32 -0
  68. package/src/rich-text-editor/models/toolbar-settings-model.d.ts +29 -1
  69. package/src/rich-text-editor/models/toolbar-settings.d.ts +24 -1
  70. package/src/rich-text-editor/models/toolbar-settings.js +20 -0
  71. package/src/rich-text-editor/renderer/audio-module.js +6 -3
  72. package/src/rich-text-editor/renderer/image-module.js +11 -6
  73. package/src/rich-text-editor/renderer/link-module.js +2 -1
  74. package/src/rich-text-editor/renderer/table-module.js +18 -6
  75. package/src/rich-text-editor/renderer/toolbar-renderer.js +10 -1
  76. package/src/rich-text-editor/renderer/video-module.js +8 -5
  77. package/src/rich-text-editor/renderer/view-source.js +1 -1
  78. package/styles/bootstrap-dark.css +31 -1
  79. package/styles/bootstrap.css +31 -1
  80. package/styles/bootstrap4.css +31 -1
  81. package/styles/bootstrap5-dark.css +32 -2
  82. package/styles/bootstrap5.css +32 -2
  83. package/styles/fabric-dark.css +31 -1
  84. package/styles/fabric.css +31 -1
  85. package/styles/fluent-dark.css +34 -4
  86. package/styles/fluent.css +34 -4
  87. package/styles/highcontrast-light.css +31 -1
  88. package/styles/highcontrast.css +31 -1
  89. package/styles/material-dark.css +31 -1
  90. package/styles/material.css +31 -1
  91. package/styles/rich-text-editor/_bootstrap-dark-definition.scss +25 -1
  92. package/styles/rich-text-editor/_bootstrap-definition.scss +25 -1
  93. package/styles/rich-text-editor/_bootstrap4-definition.scss +25 -1
  94. package/styles/rich-text-editor/_bootstrap5-definition.scss +28 -5
  95. package/styles/rich-text-editor/_fabric-dark-definition.scss +25 -1
  96. package/styles/rich-text-editor/_fabric-definition.scss +25 -1
  97. package/styles/rich-text-editor/_fluent-definition.scss +30 -7
  98. package/styles/rich-text-editor/_fusionnew-definition.scss +26 -3
  99. package/styles/rich-text-editor/_highcontrast-definition.scss +25 -1
  100. package/styles/rich-text-editor/_highcontrast-light-definition.scss +25 -1
  101. package/styles/rich-text-editor/_layout.scss +47 -15
  102. package/styles/rich-text-editor/_material-dark-definition.scss +26 -1
  103. package/styles/rich-text-editor/_material-definition.scss +25 -1
  104. package/styles/rich-text-editor/_tailwind-definition.scss +28 -5
  105. package/styles/rich-text-editor/_theme.scss +54 -6
  106. package/styles/rich-text-editor/bootstrap-dark.css +31 -1
  107. package/styles/rich-text-editor/bootstrap.css +31 -1
  108. package/styles/rich-text-editor/bootstrap4.css +31 -1
  109. package/styles/rich-text-editor/bootstrap5-dark.css +32 -2
  110. package/styles/rich-text-editor/bootstrap5.css +32 -2
  111. package/styles/rich-text-editor/fabric-dark.css +31 -1
  112. package/styles/rich-text-editor/fabric.css +31 -1
  113. package/styles/rich-text-editor/fluent-dark.css +34 -4
  114. package/styles/rich-text-editor/fluent.css +34 -4
  115. package/styles/rich-text-editor/highcontrast-light.css +31 -1
  116. package/styles/rich-text-editor/highcontrast.css +31 -1
  117. package/styles/rich-text-editor/icons/_bootstrap-dark.scss +8 -0
  118. package/styles/rich-text-editor/icons/_bootstrap.scss +8 -0
  119. package/styles/rich-text-editor/icons/_bootstrap4.scss +8 -0
  120. package/styles/rich-text-editor/icons/_bootstrap5.scss +8 -0
  121. package/styles/rich-text-editor/icons/_fabric-dark.scss +8 -0
  122. package/styles/rich-text-editor/icons/_fabric.scss +8 -0
  123. package/styles/rich-text-editor/icons/_fluent.scss +8 -0
  124. package/styles/rich-text-editor/icons/_fusionnew.scss +8 -0
  125. package/styles/rich-text-editor/icons/_highcontrast-light.scss +8 -0
  126. package/styles/rich-text-editor/icons/_highcontrast.scss +8 -0
  127. package/styles/rich-text-editor/icons/_material-dark.scss +8 -0
  128. package/styles/rich-text-editor/icons/_material.scss +8 -0
  129. package/styles/rich-text-editor/icons/_material3.scss +8 -0
  130. package/styles/rich-text-editor/icons/_tailwind.scss +8 -0
  131. package/styles/rich-text-editor/material-dark.css +31 -1
  132. package/styles/rich-text-editor/material.css +31 -1
  133. package/styles/rich-text-editor/tailwind-dark.css +31 -1
  134. package/styles/rich-text-editor/tailwind.css +31 -1
  135. package/styles/tailwind-dark.css +31 -1
  136. package/styles/tailwind.css +31 -1
  137. package/GitLeaksReport.json +0 -1
  138. package/gitleaks-ci/gitleaks +0 -0
  139. package/gitleaks-ci.tar.gz +0 -0
  140. package/styles/rich-text-editor/_material3-definition.scss +0 -196
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * filename: index.d.ts
3
- * version : 20.4.52
3
+ * version : 21.1.35
4
4
  * Copyright Syncfusion Inc. 2001 - 2020. All rights reserved.
5
5
  * Use of this code is subject to the terms of our license.
6
6
  * A copy of the current license can be obtained at any time by e-mailing
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "_from": "@syncfusion/ej2-richtexteditor@*",
3
- "_id": "@syncfusion/ej2-richtexteditor@20.4.51",
3
+ "_id": "@syncfusion/ej2-richtexteditor@20.13.3",
4
4
  "_inBundle": false,
5
- "_integrity": "sha512-KrCoVlwCvqCiQPFS/bTRaCsH8WAyiBTtWkbBRRLLxCXtjyUKz8X3XIOcSmekQFzmMGcvwXHPwqTfKUMBQs+mAQ==",
5
+ "_integrity": "sha512-4jdrmREjDgPKwiANKnB0xje6CtxhXFDBUoNaNL39VS/LTNTc6Vp7eYY6MmUAkkfulvnK99kdaSHCXLbh9hui5g==",
6
6
  "_location": "/@syncfusion/ej2-richtexteditor",
7
7
  "_phantomChildren": {},
8
8
  "_requested": {
@@ -26,10 +26,10 @@
26
26
  "/@syncfusion/ej2-react-richtexteditor",
27
27
  "/@syncfusion/ej2-vue-richtexteditor"
28
28
  ],
29
- "_resolved": "https://nexus.syncfusion.com/repository/ej2-hotfix-new/@syncfusion/ej2-richtexteditor/-/ej2-richtexteditor-20.4.51.tgz",
30
- "_shasum": "5a1cdfcc714424ed059b501d2c0eaa46d0b2c172",
29
+ "_resolved": "https://nexus.syncfusion.com/repository/ej2-release/@syncfusion/ej2-richtexteditor/-/ej2-richtexteditor-20.13.3.tgz",
30
+ "_shasum": "00117dbb8de0202c6f23ca3a4d58f3578b21234c",
31
31
  "_spec": "@syncfusion/ej2-richtexteditor@*",
32
- "_where": "/jenkins/workspace/ease-automation_release_19.1.0.1/packages/included",
32
+ "_where": "/jenkins/workspace/elease-automation_release_21.1.1/packages/included",
33
33
  "author": {
34
34
  "name": "Syncfusion Inc."
35
35
  },
@@ -38,13 +38,13 @@
38
38
  },
39
39
  "bundleDependencies": false,
40
40
  "dependencies": {
41
- "@syncfusion/ej2-base": "~20.4.51",
42
- "@syncfusion/ej2-buttons": "~20.4.50",
43
- "@syncfusion/ej2-filemanager": "~20.4.51",
44
- "@syncfusion/ej2-inputs": "~20.4.52",
45
- "@syncfusion/ej2-navigations": "~20.4.52",
46
- "@syncfusion/ej2-popups": "~20.4.52",
47
- "@syncfusion/ej2-splitbuttons": "~20.4.50"
41
+ "@syncfusion/ej2-base": "~21.1.35",
42
+ "@syncfusion/ej2-buttons": "~21.1.35",
43
+ "@syncfusion/ej2-filemanager": "~21.1.35",
44
+ "@syncfusion/ej2-inputs": "~21.1.35",
45
+ "@syncfusion/ej2-navigations": "~21.1.35",
46
+ "@syncfusion/ej2-popups": "~21.1.35",
47
+ "@syncfusion/ej2-splitbuttons": "~21.1.35"
48
48
  },
49
49
  "deprecated": false,
50
50
  "description": "Essential JS 2 RichTextEditor component",
@@ -70,6 +70,6 @@
70
70
  "url": "git+https://github.com/syncfusion/ej2-javascript-ui-controls.git"
71
71
  },
72
72
  "typings": "index.d.ts",
73
- "version": "20.4.52",
73
+ "version": "21.1.35",
74
74
  "sideEffects": false
75
75
  }
@@ -72,7 +72,9 @@ export var htmlKeyConfig = {
72
72
  'space': '32',
73
73
  'enter': '13',
74
74
  'tab': 'tab',
75
- 'delete': '46'
75
+ 'delete': '46',
76
+ 'format-copy': 'ctrl+shift+c',
77
+ 'format-paste': 'ctrl+shift+v'
76
78
  };
77
79
  /**
78
80
  * Default markdown key config for adapter
@@ -79,3 +79,9 @@ export declare const ON_BEGIN: string;
79
79
  * @hidden
80
80
  */
81
81
  export declare const SPACE_ACTION: string;
82
+ /**
83
+ * Format painter event constant
84
+ *
85
+ * @hidden
86
+ */
87
+ export declare const FORMAT_PAINTER_ACTIONS: string;
@@ -79,3 +79,9 @@ export var ON_BEGIN = 'onBegin';
79
79
  * @hidden
80
80
  */
81
81
  export var SPACE_ACTION = 'actionBegin';
82
+ /**
83
+ * Format painter event constant
84
+ *
85
+ * @hidden
86
+ */
87
+ export var FORMAT_PAINTER_ACTIONS = 'format_painter_actions';
@@ -13,10 +13,11 @@ export declare function isIDevice(): boolean;
13
13
  export declare function setEditFrameFocus(editableElement: Element, selector: string): void;
14
14
  /**
15
15
  * @param {string} value - specifies the string value
16
+ * @param {string} enterAction - specifies the enter key action API
16
17
  * @returns {void}
17
18
  * @hidden
18
19
  */
19
- export declare function updateTextNode(value: string): string;
20
+ export declare function updateTextNode(value: string, enterAction?: string): string;
20
21
  /**
21
22
  * @param {Node} startChildNodes - specifies the node
22
23
  * @returns {void}
@@ -34,10 +34,11 @@ export function setEditFrameFocus(editableElement, selector) {
34
34
  }
35
35
  /**
36
36
  * @param {string} value - specifies the string value
37
+ * @param {string} enterAction - specifies the enter key action API
37
38
  * @returns {void}
38
39
  * @hidden
39
40
  */
40
- export function updateTextNode(value) {
41
+ export function updateTextNode(value, enterAction) {
41
42
  var tempNode = document.createElement('div');
42
43
  tempNode.innerHTML = value;
43
44
  tempNode.setAttribute('class', 'tempDiv');
@@ -52,15 +53,23 @@ export function updateTextNode(value) {
52
53
  (tempNode.firstChild.textContent.indexOf('\n') < 0 || tempNode.firstChild.textContent.trim() !== '')) ||
53
54
  inlineNode.indexOf(tempNode.firstChild.nodeName.toLocaleLowerCase()) >= 0) {
54
55
  if (!isPreviousInlineElem) {
55
- paraElm = createElement('p');
56
- resultElm.appendChild(paraElm);
57
- paraElm.appendChild(tempNode.firstChild);
56
+ if (enterAction === 'BR') {
57
+ resultElm.appendChild(tempNode.firstChild);
58
+ previousParent = resultElm;
59
+ }
60
+ else {
61
+ paraElm = createElement('p');
62
+ resultElm.appendChild(paraElm);
63
+ paraElm.appendChild(tempNode.firstChild);
64
+ previousParent = paraElm;
65
+ isPreviousInlineElem = true;
66
+ }
58
67
  }
59
68
  else {
60
69
  previousParent.appendChild(tempNode.firstChild);
70
+ previousParent = paraElm;
71
+ isPreviousInlineElem = true;
61
72
  }
62
- previousParent = paraElm;
63
- isPreviousInlineElem = true;
64
73
  }
65
74
  else if (tempNode.firstChild.nodeName === '#text' && (tempNode.firstChild.textContent === '\n' ||
66
75
  (tempNode.firstChild.textContent.indexOf('\n') >= 0 && tempNode.firstChild.textContent.trim() === ''))) {
@@ -19,6 +19,7 @@ import { UndoRedoManager } from './../plugin/undo';
19
19
  import { MsWordPaste } from '../plugin/ms-word-clean-up';
20
20
  import { InsertTextExec } from '../plugin/insert-text';
21
21
  import { NodeCutter } from '../plugin/nodecutter';
22
+ import { FormatPainterActions } from '../plugin/format-painter-actions';
22
23
  /**
23
24
  * EditorManager internal component
24
25
  *
@@ -46,6 +47,7 @@ export declare class EditorManager {
46
47
  clearObj: ClearFormatExec;
47
48
  undoRedoManager: UndoRedoManager;
48
49
  msWordPaste: MsWordPaste;
50
+ formatPaintetrObj: FormatPainterActions;
49
51
  editableElement: Element;
50
52
  /**
51
53
  * Constructor for creating the component
@@ -19,6 +19,7 @@ import { MsWordPaste } from '../plugin/ms-word-clean-up';
19
19
  import * as EVENTS from './../../common/constant';
20
20
  import { InsertTextExec } from '../plugin/insert-text';
21
21
  import { NodeCutter } from '../plugin/nodecutter';
22
+ import { FormatPainterActions } from '../plugin/format-painter-actions';
22
23
  /**
23
24
  * EditorManager internal component
24
25
  *
@@ -55,6 +56,7 @@ var EditorManager = /** @class */ (function () {
55
56
  this.tableObj = new TableCommand(this);
56
57
  this.undoRedoManager = new UndoRedoManager(this, options.options);
57
58
  this.msWordPaste = new MsWordPaste(this);
59
+ this.formatPaintetrObj = new FormatPainterActions(this, options.formatPainterSettings);
58
60
  this.wireEvents();
59
61
  }
60
62
  EditorManager.prototype.wireEvents = function () {
@@ -188,7 +190,7 @@ var EditorManager = /** @class */ (function () {
188
190
  this.observer.notify(CONSTANT.SELECTION_TYPE, { subCommand: value, event: event, callBack: callBack, value: text, selector: selector, enterAction: enterAction });
189
191
  break;
190
192
  case 'inserthtml':
191
- this.observer.notify(CONSTANT.INSERTHTML_TYPE, { subCommand: value, callBack: callBack, value: text });
193
+ this.observer.notify(CONSTANT.INSERTHTML_TYPE, { subCommand: value, callBack: callBack, value: text, enterAction: enterAction });
192
194
  break;
193
195
  case 'inserttext':
194
196
  this.observer.notify(CONSTANT.INSERT_TEXT_TYPE, { subCommand: value, callBack: callBack, value: text });
@@ -199,6 +201,9 @@ var EditorManager = /** @class */ (function () {
199
201
  case 'actions':
200
202
  this.observer.notify(EVENTS.ACTION, { subCommand: value, event: event, callBack: callBack, selector: selector });
201
203
  break;
204
+ case 'formatpainter':
205
+ this.observer.notify(EVENTS.FORMAT_PAINTER_ACTIONS, { item: exeValue, subCommand: value, event: event, callBack: callBack });
206
+ break;
202
207
  }
203
208
  };
204
209
  return EditorManager;
@@ -1,3 +1,17 @@
1
1
  /**
2
2
  * Enum values for EditorManager
3
3
  */
4
+ /**
5
+ *
6
+
7
+ * @hidden
8
+ * Defines the context or contexts in which styles will be copied.
9
+ */
10
+ export declare type IFormatPainterContext = 'Text' | 'List' | 'Table';
11
+ /**
12
+ *
13
+
14
+ * @hidden
15
+ * Defines the action values for format painter.
16
+ */
17
+ export declare type IFormatPainterActionValue = 'format-copy' | 'format-paste' | 'escape';
@@ -1,6 +1,7 @@
1
1
  import { NodeSelection } from './../../selection/index';
2
2
  import { KeyboardEventArgs } from '@syncfusion/ej2-base';
3
3
  import { IHtmlFormatterCallBack, IAdvanceListItem } from '../../common/interface';
4
+ import { IFormatPainterActionValue, IFormatPainterContext } from './enum';
4
5
  /**
5
6
  * Specifies Command models interfaces.
6
7
  *
@@ -19,6 +20,7 @@ export interface ICommandModel {
19
20
  options?: {
20
21
  [key: string]: number;
21
22
  };
23
+ formatPainterSettings?: IFormatPainterSettings;
22
24
  }
23
25
  /**
24
26
  * Specifies IHtmlSubCommands interfaces.
@@ -157,3 +159,35 @@ export interface IHtmlKeyboardEvent {
157
159
  */
158
160
  enterAction?: string;
159
161
  }
162
+ /**
163
+ *
164
+
165
+ * @hidden
166
+ *
167
+ */
168
+ export interface IFormatPainterSettings {
169
+ allowedContext?: IFormatPainterContext[];
170
+ allowedFormats?: string;
171
+ deniedFormats?: string;
172
+ }
173
+ /**
174
+ *
175
+
176
+ * @hidden
177
+ *
178
+ */
179
+ export interface IFormatPainterActionArgs {
180
+ name: string;
181
+ event: MouseEvent | KeyboardEvent;
182
+ item: IFormatPainterAction;
183
+ subCommand: string;
184
+ }
185
+ /**
186
+ *
187
+
188
+ * @hidden
189
+ *
190
+ */
191
+ export interface IFormatPainterAction {
192
+ formatPainterAction: IFormatPainterActionValue;
193
+ }
@@ -28,12 +28,18 @@ var ClearFormat = /** @class */ (function () {
28
28
  var nodeSelection = new NodeSelection();
29
29
  var nodeCutter = new NodeCutter();
30
30
  var range = nodeSelection.getRange(docElement);
31
- var isCollapsed = range.collapsed;
32
- var nodes = nodeSelection.getInsertNodeCollection(range);
31
+ var nodes = range.collapsed ? nodeSelection.getSelectionNodeCollection(range) :
32
+ nodeSelection.getSelectionNodeCollectionBr(range);
33
33
  var save = nodeSelection.save(range, docElement);
34
+ var cursorRange = false;
35
+ if (range.collapsed) {
36
+ cursorRange = true;
37
+ range = nodeCutter.GetCursorRange(docElement, range, nodes[0]);
38
+ }
39
+ var isCollapsed = range.collapsed;
34
40
  if (!isCollapsed) {
35
41
  var preNode = void 0;
36
- if (nodes[0].nodeName === 'BR' && closest(nodes[0], 'table')) {
42
+ if (nodes.length > 0 && nodes[0].nodeName === 'BR' && closest(nodes[0], 'table')) {
37
43
  preNode = nodeCutter.GetSpliceNode(range, closest(nodes[0], 'table'));
38
44
  }
39
45
  else {
@@ -43,7 +49,7 @@ var ClearFormat = /** @class */ (function () {
43
49
  nodeSelection.setSelectionContents(docElement, preNode);
44
50
  range = nodeSelection.getRange(docElement);
45
51
  }
46
- else {
52
+ else if (nodes.length > 1) {
47
53
  var i = 1;
48
54
  var lastText = nodes[nodes.length - i];
49
55
  while (nodes.length <= i && nodes[nodes.length - i].nodeName === 'BR') {
@@ -68,6 +74,9 @@ var ClearFormat = /** @class */ (function () {
68
74
  }
69
75
  this.reSelection(docElement, save, exactNodes);
70
76
  }
77
+ if (cursorRange) {
78
+ nodeSelection.setCursorPoint(docElement, range.endContainer, range.endOffset);
79
+ }
71
80
  };
72
81
  ClearFormat.reSelection = function (docElement, save, exactNodes) {
73
82
  var selectionNodes = save.getInsertNodes(exactNodes);
@@ -0,0 +1,63 @@
1
+ import { IFormatPainterSettings } from '../base';
2
+ import { EditorManager } from '../base';
3
+ export declare class FormatPainterActions {
4
+ private parent;
5
+ private copyCollection;
6
+ private deniedFormatsCollection;
7
+ private newElem;
8
+ private newElemLastChild;
9
+ private settings;
10
+ constructor(parent?: EditorManager, options?: IFormatPainterSettings);
11
+ private addEventListener;
12
+ private actionHandler;
13
+ private generateElement;
14
+ private pasteAction;
15
+ private removeDeniedFormats;
16
+ private copyAction;
17
+ private getRangeParentElem;
18
+ private getNearestBlockParentElement;
19
+ private isBlockElement;
20
+ private escapeAction;
21
+ private paintPlainTextFormat;
22
+ private validateELementTag;
23
+ private findCurrentContext;
24
+ private insertFormatNode;
25
+ private insertBlockNode;
26
+ private cleanEmptyLists;
27
+ private setDeniedFormats;
28
+ private makeDeniedFormatsCollection;
29
+ }
30
+ /**
31
+ * @hidden
32
+ */
33
+ export interface FormatPainterCollection {
34
+ attrs: Attr[];
35
+ className: string;
36
+ styles: CSSPropCollection[];
37
+ tagName: string;
38
+ }
39
+ /**
40
+ * @hidden
41
+ *
42
+ */
43
+ export interface FormatPainterValue {
44
+ element: HTMLElement;
45
+ lastChild: HTMLElement;
46
+ }
47
+ /**
48
+ * @hidden
49
+ */
50
+ export interface DeniedFormatsCollection {
51
+ tag: string;
52
+ styles: string[];
53
+ attributes: string[];
54
+ classes: string[];
55
+ }
56
+ /**
57
+ * @hidden
58
+ */
59
+ export interface CSSPropCollection {
60
+ property: string;
61
+ value: string;
62
+ priority: string;
63
+ }