@syncfusion/ej2-richtexteditor 24.1.46 → 24.2.3
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.
- package/CHANGELOG.md +22 -0
- package/dist/ej2-richtexteditor.min.js +2 -2
- package/dist/ej2-richtexteditor.umd.min.js +2 -2
- package/dist/ej2-richtexteditor.umd.min.js.map +1 -1
- package/dist/es6/ej2-richtexteditor.es2015.js +760 -168
- package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
- package/dist/es6/ej2-richtexteditor.es5.js +769 -167
- package/dist/es6/ej2-richtexteditor.es5.js.map +1 -1
- package/dist/global/ej2-richtexteditor.min.js +2 -2
- package/dist/global/ej2-richtexteditor.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +12 -12
- package/src/common/constant.d.ts +6 -0
- package/src/common/constant.js +6 -0
- package/src/common/util.js +31 -20
- package/src/editor-manager/base/constant.d.ts +6 -0
- package/src/editor-manager/base/constant.js +6 -0
- package/src/editor-manager/base/editor-manager.d.ts +5 -0
- package/src/editor-manager/base/editor-manager.js +59 -0
- package/src/editor-manager/base/interface.d.ts +8 -0
- package/src/editor-manager/plugin/dom-node.js +3 -1
- package/src/editor-manager/plugin/format-painter-actions.js +1 -1
- package/src/editor-manager/plugin/ms-word-clean-up.d.ts +2 -0
- package/src/editor-manager/plugin/ms-word-clean-up.js +39 -10
- package/src/editor-manager/plugin/selection-commands.js +16 -0
- package/src/editor-manager/plugin/table.d.ts +0 -1
- package/src/editor-manager/plugin/table.js +14 -26
- package/src/editor-manager/plugin/undo.d.ts +1 -0
- package/src/editor-manager/plugin/undo.js +21 -1
- package/src/rich-text-editor/actions/base-quick-toolbar.js +3 -0
- package/src/rich-text-editor/actions/base-toolbar.js +8 -4
- package/src/rich-text-editor/actions/count.js +1 -1
- package/src/rich-text-editor/actions/dropdown-buttons.js +21 -2
- package/src/rich-text-editor/actions/emoji-picker.js +1 -1
- package/src/rich-text-editor/actions/full-screen.js +1 -0
- package/src/rich-text-editor/actions/html-editor.d.ts +2 -0
- package/src/rich-text-editor/actions/html-editor.js +88 -4
- package/src/rich-text-editor/actions/keyboard.js +3 -1
- package/src/rich-text-editor/actions/paste-clean-up.d.ts +1 -0
- package/src/rich-text-editor/actions/paste-clean-up.js +32 -4
- package/src/rich-text-editor/actions/toolbar.d.ts +2 -1
- package/src/rich-text-editor/base/constant.d.ts +30 -0
- package/src/rich-text-editor/base/constant.js +199 -0
- package/src/rich-text-editor/base/interface.d.ts +7 -1
- package/src/rich-text-editor/base/rich-text-editor.d.ts +1 -0
- package/src/rich-text-editor/base/rich-text-editor.js +33 -61
- package/src/rich-text-editor/base/util.d.ts +4 -0
- package/src/rich-text-editor/base/util.js +35 -1
- package/src/rich-text-editor/formatter/formatter.js +15 -4
- package/src/rich-text-editor/models/default-locale.js +12 -12
- package/src/rich-text-editor/models/items.js +2 -2
- package/src/rich-text-editor/renderer/audio-module.d.ts +1 -0
- package/src/rich-text-editor/renderer/audio-module.js +13 -0
- package/src/rich-text-editor/renderer/dialog-renderer.d.ts +2 -0
- package/src/rich-text-editor/renderer/dialog-renderer.js +7 -0
- package/src/rich-text-editor/renderer/image-module.d.ts +1 -0
- package/src/rich-text-editor/renderer/image-module.js +20 -2
- package/src/rich-text-editor/renderer/link-module.js +10 -1
- package/src/rich-text-editor/renderer/table-module.d.ts +2 -0
- package/src/rich-text-editor/renderer/table-module.js +22 -2
- package/src/rich-text-editor/renderer/toolbar-renderer.d.ts +1 -0
- package/src/rich-text-editor/renderer/toolbar-renderer.js +25 -3
- package/src/rich-text-editor/renderer/video-module.d.ts +1 -0
- package/src/rich-text-editor/renderer/video-module.js +21 -4
- package/src/rich-text-editor/renderer/view-source.d.ts +1 -0
- package/src/rich-text-editor/renderer/view-source.js +5 -0
- package/styles/bootstrap-dark.css +49 -12
- package/styles/bootstrap.css +49 -12
- package/styles/bootstrap4.css +49 -12
- package/styles/bootstrap5-dark.css +49 -12
- package/styles/bootstrap5.css +49 -12
- package/styles/fabric-dark.css +49 -12
- package/styles/fabric.css +49 -12
- package/styles/fluent-dark.css +49 -12
- package/styles/fluent.css +49 -12
- package/styles/highcontrast-light.css +49 -12
- package/styles/highcontrast.css +49 -12
- package/styles/material-dark.css +49 -12
- package/styles/material.css +49 -12
- package/styles/material3-dark.css +56 -19
- package/styles/material3.css +56 -19
- package/styles/rich-text-editor/_bootstrap-dark-definition.scss +1 -0
- package/styles/rich-text-editor/_bootstrap-definition.scss +1 -0
- package/styles/rich-text-editor/_bootstrap4-definition.scss +1 -0
- package/styles/rich-text-editor/_bootstrap5-definition.scss +2 -1
- package/styles/rich-text-editor/_fabric-dark-definition.scss +1 -0
- package/styles/rich-text-editor/_fabric-definition.scss +1 -0
- package/styles/rich-text-editor/_fluent-definition.scss +2 -1
- package/styles/rich-text-editor/_fusionnew-definition.scss +2 -1
- package/styles/rich-text-editor/_highcontrast-definition.scss +1 -0
- package/styles/rich-text-editor/_highcontrast-light-definition.scss +1 -0
- package/styles/rich-text-editor/_layout.scss +40 -5
- package/styles/rich-text-editor/_material-dark-definition.scss +1 -0
- package/styles/rich-text-editor/_material-definition.scss +1 -0
- package/styles/rich-text-editor/_material3-definition.scss +9 -8
- package/styles/rich-text-editor/_tailwind-definition.scss +2 -1
- package/styles/rich-text-editor/_theme.scss +9 -5
- package/styles/rich-text-editor/bootstrap-dark.css +49 -12
- package/styles/rich-text-editor/bootstrap.css +49 -12
- package/styles/rich-text-editor/bootstrap4.css +49 -12
- package/styles/rich-text-editor/bootstrap5-dark.css +49 -12
- package/styles/rich-text-editor/bootstrap5.css +49 -12
- package/styles/rich-text-editor/fabric-dark.css +49 -12
- package/styles/rich-text-editor/fabric.css +49 -12
- package/styles/rich-text-editor/fluent-dark.css +49 -12
- package/styles/rich-text-editor/fluent.css +49 -12
- package/styles/rich-text-editor/highcontrast-light.css +49 -12
- package/styles/rich-text-editor/highcontrast.css +49 -12
- package/styles/rich-text-editor/material-dark.css +49 -12
- package/styles/rich-text-editor/material.css +49 -12
- package/styles/rich-text-editor/material3-dark.css +56 -19
- package/styles/rich-text-editor/material3.css +56 -19
- package/styles/rich-text-editor/tailwind-dark.css +49 -12
- package/styles/rich-text-editor/tailwind.css +49 -12
- package/styles/tailwind-dark.css +49 -12
- package/styles/tailwind.css +49 -12
package/dist/global/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* filename: index.d.ts
|
|
3
|
-
* version : 24.
|
|
3
|
+
* version : 24.2.3
|
|
4
4
|
* Copyright Syncfusion Inc. 2001 - 2023. 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@24.1.
|
|
3
|
+
"_id": "@syncfusion/ej2-richtexteditor@24.1.47",
|
|
4
4
|
"_inBundle": false,
|
|
5
|
-
"_integrity": "sha512-
|
|
5
|
+
"_integrity": "sha512-ITHuJcI8Vi0NzcpJ2//FUUah+iuPTk39qOb4jZQCJaLsoDlUsu/m2fzybDOdR6X84st4zXZb2oxvL6ANoz1G3Q==",
|
|
6
6
|
"_location": "/@syncfusion/ej2-richtexteditor",
|
|
7
7
|
"_phantomChildren": {},
|
|
8
8
|
"_requested": {
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
"/@syncfusion/ej2-react-richtexteditor",
|
|
26
26
|
"/@syncfusion/ej2-vue-richtexteditor"
|
|
27
27
|
],
|
|
28
|
-
"_resolved": "https://nexus.syncfusion.com/repository/ej2-hotfix-new/@syncfusion/ej2-richtexteditor/-/ej2-richtexteditor-24.1.
|
|
29
|
-
"_shasum": "
|
|
28
|
+
"_resolved": "https://nexus.syncfusion.com/repository/ej2-hotfix-new/@syncfusion/ej2-richtexteditor/-/ej2-richtexteditor-24.1.47.tgz",
|
|
29
|
+
"_shasum": "93709601606f02a03d67372a08a4f34792d6087e",
|
|
30
30
|
"_spec": "@syncfusion/ej2-richtexteditor@*",
|
|
31
31
|
"_where": "/jenkins/workspace/elease-automation_release_24.1.1/packages/included",
|
|
32
32
|
"author": {
|
|
@@ -37,13 +37,13 @@
|
|
|
37
37
|
},
|
|
38
38
|
"bundleDependencies": false,
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@syncfusion/ej2-base": "~24.
|
|
41
|
-
"@syncfusion/ej2-buttons": "~24.
|
|
42
|
-
"@syncfusion/ej2-filemanager": "~24.
|
|
43
|
-
"@syncfusion/ej2-inputs": "~24.
|
|
44
|
-
"@syncfusion/ej2-navigations": "~24.
|
|
45
|
-
"@syncfusion/ej2-popups": "~24.
|
|
46
|
-
"@syncfusion/ej2-splitbuttons": "~24.
|
|
40
|
+
"@syncfusion/ej2-base": "~24.2.3",
|
|
41
|
+
"@syncfusion/ej2-buttons": "~24.2.3",
|
|
42
|
+
"@syncfusion/ej2-filemanager": "~24.2.3",
|
|
43
|
+
"@syncfusion/ej2-inputs": "~24.2.3",
|
|
44
|
+
"@syncfusion/ej2-navigations": "~24.2.3",
|
|
45
|
+
"@syncfusion/ej2-popups": "~24.2.3",
|
|
46
|
+
"@syncfusion/ej2-splitbuttons": "~24.2.3"
|
|
47
47
|
},
|
|
48
48
|
"deprecated": false,
|
|
49
49
|
"description": "Essential JS 2 RichTextEditor component",
|
|
@@ -69,6 +69,6 @@
|
|
|
69
69
|
"url": "git+https://github.com/syncfusion/ej2-javascript-ui-controls.git"
|
|
70
70
|
},
|
|
71
71
|
"typings": "index.d.ts",
|
|
72
|
-
"version": "24.
|
|
72
|
+
"version": "24.2.3",
|
|
73
73
|
"sideEffects": false
|
|
74
74
|
}
|
package/src/common/constant.d.ts
CHANGED
package/src/common/constant.js
CHANGED
package/src/common/util.js
CHANGED
|
@@ -82,30 +82,41 @@ export function updateTextNode(value, enterAction) {
|
|
|
82
82
|
}
|
|
83
83
|
var tableElm = resultElm.querySelectorAll('table');
|
|
84
84
|
for (var i = 0; i < tableElm.length; i++) {
|
|
85
|
-
if (tableElm[i].
|
|
86
|
-
tableElm[i].
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
if (tdElm[j].style.borderLeft === 'none') {
|
|
91
|
-
tdElm[j].style.removeProperty('border-left');
|
|
92
|
-
}
|
|
93
|
-
if (tdElm[j].style.borderRight === 'none') {
|
|
94
|
-
tdElm[j].style.removeProperty('border-right');
|
|
95
|
-
}
|
|
96
|
-
if (tdElm[j].style.borderBottom === 'none') {
|
|
97
|
-
tdElm[j].style.removeProperty('border-bottom');
|
|
85
|
+
if (tableElm[i].classList.length > 0 && !tableElm[i].classList.contains('e-rte-table')) {
|
|
86
|
+
tableElm[i].classList.add('e-rte-paste-table');
|
|
87
|
+
if (tableElm[i].classList.contains('e-rte-paste-word-table')) {
|
|
88
|
+
tableElm[i].classList.remove('e-rte-paste-word-table');
|
|
89
|
+
continue; // Sking the removal of the border if the source is from word.
|
|
98
90
|
}
|
|
99
|
-
if (
|
|
100
|
-
|
|
91
|
+
else if (tableElm[i].classList.contains('e-rte-paste-excel-table')) {
|
|
92
|
+
tableElm[i].classList.remove('e-rte-paste-excel-table');
|
|
93
|
+
if (tableElm[i].getAttribute('border') === '0') {
|
|
94
|
+
tableElm[i].removeAttribute('border');
|
|
95
|
+
}
|
|
96
|
+
var tdElm = tableElm[i].querySelectorAll('td');
|
|
97
|
+
for (var j = 0; j < tdElm.length; j++) {
|
|
98
|
+
if (tdElm[j].style.borderLeft === 'none') {
|
|
99
|
+
tdElm[j].style.removeProperty('border-left');
|
|
100
|
+
}
|
|
101
|
+
if (tdElm[j].style.borderRight === 'none') {
|
|
102
|
+
tdElm[j].style.removeProperty('border-right');
|
|
103
|
+
}
|
|
104
|
+
if (tdElm[j].style.borderBottom === 'none') {
|
|
105
|
+
tdElm[j].style.removeProperty('border-bottom');
|
|
106
|
+
}
|
|
107
|
+
if (tdElm[j].style.borderTop === 'none') {
|
|
108
|
+
tdElm[j].style.removeProperty('border-top');
|
|
109
|
+
}
|
|
110
|
+
if (tdElm[j].style.border === 'none') {
|
|
111
|
+
tdElm[j].style.removeProperty('border');
|
|
112
|
+
}
|
|
113
|
+
}
|
|
101
114
|
}
|
|
102
|
-
if (
|
|
103
|
-
|
|
115
|
+
else if (tableElm[i].classList.contains('e-rte-paste-onenote-table')) {
|
|
116
|
+
tableElm[i].classList.remove('e-rte-paste-onenote-table');
|
|
117
|
+
continue;
|
|
104
118
|
}
|
|
105
119
|
}
|
|
106
|
-
if (!tableElm[i].classList.contains('e-rte-table')) {
|
|
107
|
-
tableElm[i].classList.add('e-rte-table');
|
|
108
|
-
}
|
|
109
120
|
}
|
|
110
121
|
var imageElm = resultElm.querySelectorAll('img');
|
|
111
122
|
for (var i = 0; i < imageElm.length; i++) {
|
|
@@ -87,3 +87,9 @@ export var CLEAR_TYPE = 'clear-type';
|
|
|
87
87
|
* @hidden
|
|
88
88
|
*/
|
|
89
89
|
export var SELF_CLOSING_TAGS = ['area', 'base', 'br', 'embed', 'hr', 'img', 'input', 'param', 'source', 'track', 'wbr', 'iframe', 'td', 'table'];
|
|
90
|
+
/**
|
|
91
|
+
* Source
|
|
92
|
+
*
|
|
93
|
+
* @hidden
|
|
94
|
+
*/
|
|
95
|
+
export var PASTE_SOURCE = ['word', 'excel', 'onenote'];
|
|
@@ -79,4 +79,9 @@ export declare class EditorManager {
|
|
|
79
79
|
|
|
80
80
|
*/
|
|
81
81
|
execCommand<T>(command: ExecCommand, value: T, event?: Event, callBack?: Function, text?: string | Node, exeValue?: T, selector?: string, enterAction?: string): void;
|
|
82
|
+
private editorMouseDown;
|
|
83
|
+
private tripleClickSelection;
|
|
84
|
+
private getParentBlockNode;
|
|
85
|
+
private getLastTextNode;
|
|
86
|
+
private getFirstTextNode;
|
|
82
87
|
}
|
|
@@ -68,6 +68,7 @@ var EditorManager = /** @class */ (function () {
|
|
|
68
68
|
this.observer.on(EVENTS.MODEL_CHANGED, this.onPropertyChanged, this);
|
|
69
69
|
this.observer.on(EVENTS.MS_WORD_CLEANUP, this.onWordPaste, this);
|
|
70
70
|
this.observer.on(EVENTS.ON_BEGIN, this.onBegin, this);
|
|
71
|
+
this.observer.on(EVENTS.MOUSE_DOWN, this.editorMouseDown, this);
|
|
71
72
|
};
|
|
72
73
|
EditorManager.prototype.onWordPaste = function (e) {
|
|
73
74
|
this.observer.notify(EVENTS.MS_WORD_CLEANUP_PLUGIN, e);
|
|
@@ -211,6 +212,64 @@ var EditorManager = /** @class */ (function () {
|
|
|
211
212
|
event: event, callBack: callBack });
|
|
212
213
|
}
|
|
213
214
|
};
|
|
215
|
+
EditorManager.prototype.editorMouseDown = function (e) {
|
|
216
|
+
if (e.args.detail === 3) {
|
|
217
|
+
this.tripleClickSelection(e.args);
|
|
218
|
+
}
|
|
219
|
+
};
|
|
220
|
+
EditorManager.prototype.tripleClickSelection = function (e) {
|
|
221
|
+
var range = this.nodeSelection.getRange(this.currentDocument);
|
|
222
|
+
var selection = this.nodeSelection.get(this.currentDocument);
|
|
223
|
+
if (selection.rangeCount > 0 && selection.toString() !== '') {
|
|
224
|
+
var startBlockNode = this.getParentBlockNode(range.startContainer);
|
|
225
|
+
var endBlockNode = this.getParentBlockNode(range.endContainer);
|
|
226
|
+
if (startBlockNode && endBlockNode && startBlockNode === endBlockNode) {
|
|
227
|
+
var newRange = this.currentDocument.createRange();
|
|
228
|
+
var startTextNode = this.getFirstTextNode(startBlockNode);
|
|
229
|
+
var endTextNode = this.getLastTextNode(endBlockNode);
|
|
230
|
+
if (startTextNode && endTextNode) {
|
|
231
|
+
newRange.setStart(startTextNode, 0);
|
|
232
|
+
newRange.setEnd(endTextNode, endTextNode.textContent.length);
|
|
233
|
+
this.nodeSelection.setRange(this.currentDocument, newRange);
|
|
234
|
+
e.preventDefault();
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
EditorManager.prototype.getParentBlockNode = function (node) {
|
|
240
|
+
var treeWalker = this.currentDocument.createTreeWalker(this.editableElement, // root
|
|
241
|
+
NodeFilter.SHOW_ELEMENT, // whatToShow
|
|
242
|
+
{
|
|
243
|
+
acceptNode: function (currentNode) {
|
|
244
|
+
// Check if the node is a block element
|
|
245
|
+
var displayStyle = window.getComputedStyle(currentNode).display;
|
|
246
|
+
if (displayStyle.indexOf('inline') < 0) {
|
|
247
|
+
return NodeFilter.FILTER_ACCEPT;
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
return NodeFilter.FILTER_SKIP;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
treeWalker.currentNode = node;
|
|
255
|
+
var blockParent = treeWalker.parentNode();
|
|
256
|
+
return blockParent;
|
|
257
|
+
};
|
|
258
|
+
EditorManager.prototype.getLastTextNode = function (node) {
|
|
259
|
+
var treeWalker = this.currentDocument.createTreeWalker(node, NodeFilter.SHOW_TEXT, null);
|
|
260
|
+
var lastTextNode = null;
|
|
261
|
+
var currentNode = treeWalker.nextNode();
|
|
262
|
+
while (currentNode) {
|
|
263
|
+
lastTextNode = currentNode;
|
|
264
|
+
currentNode = treeWalker.nextNode();
|
|
265
|
+
}
|
|
266
|
+
return lastTextNode;
|
|
267
|
+
};
|
|
268
|
+
EditorManager.prototype.getFirstTextNode = function (node) {
|
|
269
|
+
var treeWalker = this.currentDocument.createTreeWalker(node, NodeFilter.SHOW_TEXT, null);
|
|
270
|
+
var firstTextNode = treeWalker.nextNode();
|
|
271
|
+
return firstTextNode;
|
|
272
|
+
};
|
|
214
273
|
return EditorManager;
|
|
215
274
|
}());
|
|
216
275
|
export { EditorManager };
|
|
@@ -573,7 +573,9 @@ var DOMNode = /** @class */ (function () {
|
|
|
573
573
|
else if (start.tagName === 'BR') {
|
|
574
574
|
this.replaceWith(start, this.marker(className, this.encode(start.textContent)));
|
|
575
575
|
var markerStart = range.startContainer.querySelector('.' + className);
|
|
576
|
-
markerStart
|
|
576
|
+
if (markerStart) {
|
|
577
|
+
markerStart.parentElement.appendChild(start);
|
|
578
|
+
}
|
|
577
579
|
}
|
|
578
580
|
else {
|
|
579
581
|
if (start.tagName === 'IMG') {
|
|
@@ -174,7 +174,7 @@ var FormatPainterActions = /** @class */ (function () {
|
|
|
174
174
|
};
|
|
175
175
|
FormatPainterActions.prototype.copyAction = function () {
|
|
176
176
|
var copyCollection = [];
|
|
177
|
-
var range = this.parent.nodeSelection.getRange(
|
|
177
|
+
var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);
|
|
178
178
|
var domSelection = this.parent.nodeSelection;
|
|
179
179
|
var nodes = range.collapsed ? domSelection.getSelectionNodeCollection(range) :
|
|
180
180
|
domSelection.getSelectionNodeCollectionBr(range);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as EVENTS from '../../common/constant';
|
|
2
2
|
import { createElement, isNullOrUndefined as isNOU, detach } from '@syncfusion/ej2-base';
|
|
3
|
+
import { PASTE_SOURCE } from '../base/constant';
|
|
3
4
|
/**
|
|
4
5
|
* PasteCleanup for MsWord content
|
|
5
6
|
*
|
|
@@ -66,6 +67,7 @@ var MsWordPaste = /** @class */ (function () {
|
|
|
66
67
|
var pattern4 = /style='mso-width-source:/i;
|
|
67
68
|
if (patern.test(tempHTMLContent) || patern2.test(tempHTMLContent) || patern3.test(tempHTMLContent) ||
|
|
68
69
|
pattern4.test(tempHTMLContent)) {
|
|
70
|
+
var source = this.findSource(elm);
|
|
69
71
|
this.imageConversion(elm, rtfData);
|
|
70
72
|
tempHTMLContent = tempHTMLContent.replace(/<img[^>]+>/i, '');
|
|
71
73
|
this.addListClass(elm);
|
|
@@ -86,16 +88,8 @@ var MsWordPaste = /** @class */ (function () {
|
|
|
86
88
|
if (pattern4.test(tempHTMLContent)) {
|
|
87
89
|
this.addTableBorderClass(elm);
|
|
88
90
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
if (liChildren.length > 0) {
|
|
92
|
-
for (var i = 0; i < liChildren.length; i++) {
|
|
93
|
-
if (!isNOU(liChildren[i].style.marginLeft)) {
|
|
94
|
-
liChildren[i].style.marginLeft = '';
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
e.callBack(elm.innerHTML, this.cropImageDimensions);
|
|
91
|
+
this.processMargin(elm);
|
|
92
|
+
e.callBack(elm.innerHTML, this.cropImageDimensions, source);
|
|
99
93
|
}
|
|
100
94
|
else {
|
|
101
95
|
e.callBack(elm.innerHTML);
|
|
@@ -929,6 +923,25 @@ var MsWordPaste = /** @class */ (function () {
|
|
|
929
923
|
}
|
|
930
924
|
this.listContents.push(elem.innerHTML);
|
|
931
925
|
};
|
|
926
|
+
MsWordPaste.prototype.processMargin = function (element) {
|
|
927
|
+
var liChildren = element.querySelectorAll('li');
|
|
928
|
+
if (liChildren.length > 0) {
|
|
929
|
+
for (var i = 0; i < liChildren.length; i++) {
|
|
930
|
+
if (!isNOU((liChildren[i]).style.marginLeft)) {
|
|
931
|
+
(liChildren[i]).style.marginLeft = '';
|
|
932
|
+
}
|
|
933
|
+
}
|
|
934
|
+
}
|
|
935
|
+
var tableChildren = element.querySelectorAll('table');
|
|
936
|
+
if (tableChildren.length > 0) {
|
|
937
|
+
for (var i = 0; i < tableChildren.length; i++) {
|
|
938
|
+
if (!isNOU((tableChildren[i]).style.marginLeft) &&
|
|
939
|
+
(tableChildren[i]).style.marginLeft.indexOf('-') >= 0) {
|
|
940
|
+
(tableChildren[i]).style.marginLeft = '';
|
|
941
|
+
}
|
|
942
|
+
}
|
|
943
|
+
}
|
|
944
|
+
};
|
|
932
945
|
MsWordPaste.prototype.removeEmptyAnchorTag = function (element) {
|
|
933
946
|
var removableElement = element.querySelectorAll('a:not([href])');
|
|
934
947
|
for (var j = removableElement.length - 1; j >= 0; j--) {
|
|
@@ -939,6 +952,22 @@ var MsWordPaste = /** @class */ (function () {
|
|
|
939
952
|
parentElem.removeChild(removableElement[j]);
|
|
940
953
|
}
|
|
941
954
|
};
|
|
955
|
+
MsWordPaste.prototype.findSource = function (element) {
|
|
956
|
+
var metaNodes = element.querySelectorAll('meta');
|
|
957
|
+
for (var i = 0; i < metaNodes.length; i++) {
|
|
958
|
+
var metaNode = metaNodes[i];
|
|
959
|
+
var content = metaNode.getAttribute('content');
|
|
960
|
+
var name_1 = metaNode.getAttribute('name');
|
|
961
|
+
if (name_1 && name_1.toLowerCase().indexOf('generator') >= 0 && content && content.toLowerCase().indexOf('microsoft') >= 0) {
|
|
962
|
+
for (var j = 0; j < PASTE_SOURCE.length; j++) {
|
|
963
|
+
if (content.toLowerCase().indexOf(PASTE_SOURCE[j]) >= 0) {
|
|
964
|
+
return PASTE_SOURCE[j];
|
|
965
|
+
}
|
|
966
|
+
}
|
|
967
|
+
}
|
|
968
|
+
}
|
|
969
|
+
return 'html';
|
|
970
|
+
};
|
|
942
971
|
return MsWordPaste;
|
|
943
972
|
}());
|
|
944
973
|
export { MsWordPaste };
|
|
@@ -38,6 +38,22 @@ var SelectionCommands = /** @class */ (function () {
|
|
|
38
38
|
var nodeCutter = new NodeCutter();
|
|
39
39
|
var isFormatted = new IsFormatted();
|
|
40
40
|
var range = domSelection.getRange(docElement);
|
|
41
|
+
if (Browser.userAgent.indexOf('Firefox') !== -1 && range.startContainer === range.endContainer && !isNOU(endNode) && range.startContainer === endNode) {
|
|
42
|
+
var startChildNodes = range.startContainer.childNodes;
|
|
43
|
+
var startNode = ((startChildNodes[(range.startOffset > 0) ? (range.startOffset - 1) :
|
|
44
|
+
range.startOffset]) || range.startContainer);
|
|
45
|
+
var endNode_1 = (range.endContainer.childNodes[(range.endOffset > 0) ? (range.endOffset - 1) :
|
|
46
|
+
range.endOffset] || range.endContainer);
|
|
47
|
+
var lastSelectionNode = (endNode_1.lastChild.nodeName === 'BR' ? (isNOU(endNode_1.lastChild.previousSibling) ? endNode_1
|
|
48
|
+
: endNode_1.lastChild.previousSibling) : endNode_1.firstChild);
|
|
49
|
+
while (!isNOU(lastSelectionNode) && lastSelectionNode.nodeName !== '#text' && lastSelectionNode.nodeName !== 'IMG' &&
|
|
50
|
+
lastSelectionNode.nodeName !== 'BR' && lastSelectionNode.nodeName !== 'HR') {
|
|
51
|
+
lastSelectionNode = lastSelectionNode.lastChild;
|
|
52
|
+
}
|
|
53
|
+
;
|
|
54
|
+
domSelection.setSelectionText(docElement, startNode, lastSelectionNode, 0, 0);
|
|
55
|
+
range = domSelection.getRange(docElement);
|
|
56
|
+
}
|
|
41
57
|
var save = domSelection.save(range, docElement);
|
|
42
58
|
var nodes = range.collapsed ? domSelection.getSelectionNodeCollection(range) :
|
|
43
59
|
domSelection.getSelectionNodeCollectionBr(range);
|
|
@@ -60,7 +60,6 @@ var TableCommand = /** @class */ (function () {
|
|
|
60
60
|
table.appendChild(tblBody);
|
|
61
61
|
e.item.selection.restore();
|
|
62
62
|
InsertHtml.Insert(this.parent.currentDocument, table, this.parent.editableElement);
|
|
63
|
-
this.removeEmptyNode();
|
|
64
63
|
e.item.selection.setSelectionText(this.parent.currentDocument, table.querySelector('td'), table.querySelector('td'), 0, 0);
|
|
65
64
|
if (table.nextElementSibling === null) {
|
|
66
65
|
var insertElem = void 0;
|
|
@@ -104,24 +103,6 @@ var TableCommand = /** @class */ (function () {
|
|
|
104
103
|
}
|
|
105
104
|
return styleValue;
|
|
106
105
|
};
|
|
107
|
-
TableCommand.prototype.removeEmptyNode = function () {
|
|
108
|
-
var emptyUl = this.parent.editableElement.querySelectorAll('ul:empty, ol:empty');
|
|
109
|
-
for (var i = 0; i < emptyUl.length; i++) {
|
|
110
|
-
detach(emptyUl[i]);
|
|
111
|
-
}
|
|
112
|
-
var emptyLiChild = this.parent.editableElement.querySelectorAll('li *:empty:not(img)');
|
|
113
|
-
for (var i = 0; i < emptyLiChild.length; i++) {
|
|
114
|
-
detach(emptyLiChild[i]);
|
|
115
|
-
if (emptyLiChild.length === i + 1) {
|
|
116
|
-
emptyLiChild = this.parent.editableElement.querySelectorAll('li *:empty:not(img)');
|
|
117
|
-
i = -1;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
var emptyLi = this.parent.editableElement.querySelectorAll('li:empty');
|
|
121
|
-
for (var i = 0; i < emptyLi.length; i++) {
|
|
122
|
-
detach(emptyLi[i]);
|
|
123
|
-
}
|
|
124
|
-
};
|
|
125
106
|
TableCommand.prototype.insertAfter = function (newNode, referenceNode) {
|
|
126
107
|
referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
|
|
127
108
|
};
|
|
@@ -472,14 +453,21 @@ var TableCommand = /** @class */ (function () {
|
|
|
472
453
|
}
|
|
473
454
|
};
|
|
474
455
|
TableCommand.prototype.tableVerticalAlign = function (e) {
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
456
|
+
var value = '';
|
|
457
|
+
switch (e.item.subCommand) {
|
|
458
|
+
case 'AlignTop':
|
|
459
|
+
value = 'top';
|
|
460
|
+
break;
|
|
461
|
+
case 'AlignMiddle':
|
|
462
|
+
value = 'middle';
|
|
463
|
+
break;
|
|
464
|
+
case 'AlignBottom':
|
|
465
|
+
value = 'bottom';
|
|
466
|
+
break;
|
|
480
467
|
}
|
|
481
|
-
|
|
482
|
-
|
|
468
|
+
e.item.tableCell.style.verticalAlign = value;
|
|
469
|
+
if (value && value !== '' && e.item.tableCell.getAttribute('valign')) {
|
|
470
|
+
e.item.tableCell.removeAttribute('valign');
|
|
483
471
|
}
|
|
484
472
|
if (e.callBack) {
|
|
485
473
|
e.callBack({
|
|
@@ -98,6 +98,25 @@ var UndoRedoManager = /** @class */ (function () {
|
|
|
98
98
|
}
|
|
99
99
|
return textContent;
|
|
100
100
|
};
|
|
101
|
+
UndoRedoManager.prototype.isElementStructureEqual = function (previousFragment, currentFragment) {
|
|
102
|
+
if (previousFragment.childNodes.length !== currentFragment.childNodes.length) {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
for (var i = 0; i < previousFragment.childNodes.length; i++) {
|
|
106
|
+
var previousFragmentNode = previousFragment.childNodes[i];
|
|
107
|
+
var currentFragmentNode = currentFragment.childNodes[i];
|
|
108
|
+
if (!previousFragmentNode || !currentFragmentNode) {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
if (previousFragmentNode.nodeType !== currentFragmentNode.nodeType) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
if (previousFragmentNode.outerHTML !== currentFragmentNode.outerHTML) {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return true;
|
|
119
|
+
};
|
|
101
120
|
/**
|
|
102
121
|
* RTE collection stored html format.
|
|
103
122
|
*
|
|
@@ -134,7 +153,8 @@ var UndoRedoManager = /** @class */ (function () {
|
|
|
134
153
|
(this.undoRedoStack[this.undoRedoStack.length - 1].range.endOffset === save.range.endOffset) &&
|
|
135
154
|
(this.undoRedoStack[this.undoRedoStack.length - 1].range.range.startContainer === save.range.startContainer) &&
|
|
136
155
|
(this.getTextContentFromFragment(this.undoRedoStack[this.undoRedoStack.length - 1].text).trim() ===
|
|
137
|
-
this.getTextContentFromFragment(changEle.text).trim())
|
|
156
|
+
this.getTextContentFromFragment(changEle.text).trim()) &&
|
|
157
|
+
this.isElementStructureEqual(this.undoRedoStack[this.undoRedoStack.length - 1].text, changEle.text)) {
|
|
138
158
|
return;
|
|
139
159
|
}
|
|
140
160
|
this.undoRedoStack.push(changEle);
|
|
@@ -320,6 +320,9 @@ var BaseQuickToolbar = /** @class */ (function () {
|
|
|
320
320
|
this.parent.enableToolbarItem(this.parent.toolbarSettings.items);
|
|
321
321
|
}
|
|
322
322
|
}
|
|
323
|
+
if (this.parent.showTooltip && !isNOU(document.querySelector('.e-tooltip-wrap'))) {
|
|
324
|
+
this.parent.notify(events.destroyTooltip, { args: event });
|
|
325
|
+
}
|
|
323
326
|
this.removeEleFromDOM();
|
|
324
327
|
this.isDOMElement = false;
|
|
325
328
|
};
|
|
@@ -154,10 +154,14 @@ var BaseToolbar = /** @class */ (function () {
|
|
|
154
154
|
_this.parent.formatter.saveData();
|
|
155
155
|
}
|
|
156
156
|
callback_1.call(_this);
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
157
|
+
if (_this.parent.formatter.getUndoRedoStack().length > 0) {
|
|
158
|
+
var currentContentElem = _this.parent.createElement('div');
|
|
159
|
+
var stackItem = _this.parent.formatter.getUndoRedoStack()[_this.parent.formatter.getUndoRedoStack().length - 1];
|
|
160
|
+
var clonedItem = (stackItem.text).cloneNode(true);
|
|
161
|
+
currentContentElem.appendChild(clonedItem);
|
|
162
|
+
if (currentContentElem.innerHTML.trim() === _this.parent.inputElement.innerHTML.trim()) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
161
165
|
}
|
|
162
166
|
if (proxy_1.undo) {
|
|
163
167
|
_this.parent.formatter.saveData();
|
|
@@ -35,7 +35,7 @@ var Count = /** @class */ (function () {
|
|
|
35
35
|
};
|
|
36
36
|
Count.prototype.appendCount = function () {
|
|
37
37
|
var htmlText = this.parent.editorMode === 'Markdown' ? this.editPanel.value :
|
|
38
|
-
this.
|
|
38
|
+
(this.parent.getText().replace(/(\r\n|\n|\r|\t)/gm, ''));
|
|
39
39
|
if (this.parent.editorMode !== 'Markdown' && htmlText.indexOf('\u200B') !== -1) {
|
|
40
40
|
this.htmlLength = htmlText.replace(/\u200B/g, '').length;
|
|
41
41
|
}
|
|
@@ -3,7 +3,8 @@ import { RenderType } from '../base/enum';
|
|
|
3
3
|
import { getIndex } from '../base/util';
|
|
4
4
|
import * as events from '../base/constant';
|
|
5
5
|
import * as classes from '../base/classes';
|
|
6
|
-
import { getDropDownValue, getFormattedFontSize, getTooltipText } from '../base/util';
|
|
6
|
+
import { getDropDownValue, getFormattedFontSize, getTooltipText, getTooltipTextDropdownItems, getQuickToolbarTooltipText } from '../base/util';
|
|
7
|
+
import { fontNameLocale, formatsLocale, numberFormatListLocale, bulletFormatListLocale } from '../models/default-locale';
|
|
7
8
|
import * as model from '../models/items';
|
|
8
9
|
import { dispatchEvent } from '../base/util';
|
|
9
10
|
/**
|
|
@@ -24,10 +25,28 @@ var DropDownButtons = /** @class */ (function () {
|
|
|
24
25
|
if (item.cssClass) {
|
|
25
26
|
addClass([args.element], item.cssClass);
|
|
26
27
|
}
|
|
28
|
+
if (item.command === 'Images' || item.command === 'Videos' || item.command === 'Audios' || item.command === 'Table') {
|
|
29
|
+
args.element.setAttribute('title', getQuickToolbarTooltipText(item.text));
|
|
30
|
+
}
|
|
27
31
|
if (item.command === 'Alignments' || item.subCommand === 'JustifyLeft'
|
|
28
32
|
|| item.subCommand === 'JustifyRight' || item.subCommand === 'JustifyCenter') {
|
|
29
33
|
args.element.setAttribute('title', getTooltipText(item.subCommand.toLocaleLowerCase(), this.locator));
|
|
30
34
|
}
|
|
35
|
+
if (item.command === 'Formats') {
|
|
36
|
+
args.element.setAttribute('title', getTooltipTextDropdownItems(item.subCommand.toLocaleLowerCase(), this.locator, formatsLocale));
|
|
37
|
+
}
|
|
38
|
+
if (item.command === 'Font') {
|
|
39
|
+
args.element.setAttribute('title', getTooltipTextDropdownItems(item.value.toLocaleLowerCase(), this.locator, fontNameLocale));
|
|
40
|
+
}
|
|
41
|
+
if (item.subCommand === 'BulletFormatList') {
|
|
42
|
+
args.element.setAttribute('title', getTooltipTextDropdownItems(item.value.toLocaleLowerCase(), this.locator, bulletFormatListLocale));
|
|
43
|
+
}
|
|
44
|
+
if (item.subCommand === 'NumberFormatList') {
|
|
45
|
+
args.element.setAttribute('title', getTooltipTextDropdownItems(item.text.replace(/\s/g, '').toLocaleLowerCase(), this.locator, numberFormatListLocale));
|
|
46
|
+
}
|
|
47
|
+
if (item.subCommand === 'FontSize') {
|
|
48
|
+
args.element.setAttribute('title', getTooltipTextDropdownItems(item.value.toLocaleLowerCase(), null, null, this.parent));
|
|
49
|
+
}
|
|
31
50
|
};
|
|
32
51
|
DropDownButtons.prototype.dropdownContent = function (width, type, content) {
|
|
33
52
|
return ('<span style="display: inline-flex;' + 'width:' + ((type === 'quick') ? 'auto' : width) + '" >' +
|
|
@@ -134,7 +153,7 @@ var DropDownButtons = /** @class */ (function () {
|
|
|
134
153
|
if (isNullOrUndefined(targetElement) || targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {
|
|
135
154
|
return;
|
|
136
155
|
}
|
|
137
|
-
var fontsize = _this.parent.fontSize.items.slice();
|
|
156
|
+
var fontsize = !isNullOrUndefined(_this.fontSizeDropDown) && !isNullOrUndefined(_this.fontSizeDropDown.items) && _this.fontSizeDropDown.items.length > 0 ? _this.fontSizeDropDown.items : JSON.parse(JSON.stringify(_this.parent.fontSize.items.slice()));
|
|
138
157
|
fontsize.forEach(function (item) {
|
|
139
158
|
Object.defineProperties(item, {
|
|
140
159
|
command: { value: 'Font', enumerable: true }, subCommand: { value: 'FontSize', enumerable: true }
|
|
@@ -643,7 +643,7 @@ var EmojiPicker = /** @class */ (function () {
|
|
|
643
643
|
noEmojiObj.style.margin = '55px';
|
|
644
644
|
emojipickerAll.appendChild(noEmojiObj);
|
|
645
645
|
}
|
|
646
|
-
else if (!noEMoji && this.parent.element.querySelector('.e-rte-emojiSearch-noEmoji') || (inputValue === '' && value === ':')) {
|
|
646
|
+
else if (!noEMoji && this.parent.element.querySelector('.e-rte-emojiSearch-noEmoji') || (inputValue === '' && value === ':') || (inputValue === '' && this.parent.element.querySelector('.e-rte-emojiSearch-noEmoji'))) {
|
|
647
647
|
emojipickerAll.removeChild(this.parent.element.querySelector('.e-rte-emojiSearch-noEmoji'));
|
|
648
648
|
}
|
|
649
649
|
emojipickerAll.appendChild(emojiBtnDiv);
|
|
@@ -112,6 +112,7 @@ var FullScreen = /** @class */ (function () {
|
|
|
112
112
|
_this.parent.toolbarModule.addFixedTBarClass();
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
|
+
_this.parent.refreshUI();
|
|
115
116
|
_this.parent.trigger(events.actionComplete, { requestType: 'Minimize', targetItem: 'Minimize', args: event });
|
|
116
117
|
}
|
|
117
118
|
});
|