@syncfusion/ej2-richtexteditor 20.2.49 → 20.3.47
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 +10 -0
- 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 +3790 -358
- package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
- package/dist/es6/ej2-richtexteditor.es5.js +3780 -319
- 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 +13 -13
- package/src/common/config.js +2 -0
- package/src/common/types.d.ts +4 -0
- package/src/editor-manager/base/classes.d.ts +16 -0
- package/src/editor-manager/base/classes.js +16 -0
- package/src/editor-manager/base/constant.d.ts +2 -0
- package/src/editor-manager/base/constant.js +2 -0
- package/src/editor-manager/base/editor-manager.d.ts +4 -0
- package/src/editor-manager/base/editor-manager.js +14 -0
- package/src/editor-manager/base/interface.d.ts +2 -0
- package/src/editor-manager/plugin/audio.d.ts +32 -0
- package/src/editor-manager/plugin/audio.js +133 -0
- package/src/editor-manager/plugin/dom-node.js +1 -1
- package/src/editor-manager/plugin/image.js +1 -1
- package/src/editor-manager/plugin/inserthtml.js +1 -1
- package/src/editor-manager/plugin/lists.js +10 -8
- package/src/editor-manager/plugin/ms-word-clean-up.js +18 -18
- package/src/editor-manager/plugin/nodecutter.d.ts +1 -1
- package/src/editor-manager/plugin/nodecutter.js +7 -5
- package/src/editor-manager/plugin/selection-commands.js +3 -2
- package/src/editor-manager/plugin/table.js +3 -2
- package/src/editor-manager/plugin/undo.js +2 -1
- package/src/editor-manager/plugin/video.d.ts +34 -0
- package/src/editor-manager/plugin/video.js +249 -0
- package/src/editor-manager/plugin.d.ts +2 -0
- package/src/editor-manager/plugin.js +2 -0
- package/src/global.js +1 -1
- package/src/rich-text-editor/actions/base-quick-toolbar.js +3 -1
- package/src/rich-text-editor/actions/base-toolbar.js +1 -1
- package/src/rich-text-editor/actions/dropdown-buttons.d.ts +2 -2
- package/src/rich-text-editor/actions/dropdown-buttons.js +14 -11
- package/src/rich-text-editor/actions/enter-key.d.ts +1 -0
- package/src/rich-text-editor/actions/enter-key.js +157 -103
- package/src/rich-text-editor/actions/html-editor.d.ts +1 -0
- package/src/rich-text-editor/actions/html-editor.js +59 -1
- package/src/rich-text-editor/actions/paste-clean-up.js +2 -1
- package/src/rich-text-editor/actions/quick-toolbar.d.ts +2 -0
- package/src/rich-text-editor/actions/quick-toolbar.js +52 -6
- package/src/rich-text-editor/actions/resize.js +11 -1
- package/src/rich-text-editor/actions/toolbar-action.js +2 -1
- package/src/rich-text-editor/actions/xhtml-validation.js +1 -1
- package/src/rich-text-editor/audio.d.ts +4 -0
- package/src/rich-text-editor/audio.js +4 -0
- package/src/rich-text-editor/base/classes.d.ts +50 -0
- package/src/rich-text-editor/base/classes.js +50 -0
- package/src/rich-text-editor/base/constant.d.ts +74 -14
- package/src/rich-text-editor/base/constant.js +76 -16
- package/src/rich-text-editor/base/enum.d.ts +10 -2
- package/src/rich-text-editor/base/enum.js +10 -2
- package/src/rich-text-editor/base/interface.d.ts +86 -2
- package/src/rich-text-editor/base/interface.js +8 -0
- package/src/rich-text-editor/base/rich-text-editor-model.d.ts +130 -29
- package/src/rich-text-editor/base/rich-text-editor.d.ts +150 -30
- package/src/rich-text-editor/base/rich-text-editor.js +200 -6
- package/src/rich-text-editor/formatter/formatter.js +7 -2
- package/src/rich-text-editor/models/default-locale.js +46 -0
- package/src/rich-text-editor/models/items.d.ts +3 -0
- package/src/rich-text-editor/models/items.js +100 -3
- package/src/rich-text-editor/models/toolbar-settings-model.d.ts +169 -1
- package/src/rich-text-editor/models/toolbar-settings.d.ts +143 -1
- package/src/rich-text-editor/models/toolbar-settings.js +88 -0
- package/src/rich-text-editor/renderer/audio-module.d.ts +76 -0
- package/src/rich-text-editor/renderer/audio-module.js +875 -0
- package/src/rich-text-editor/renderer/iframe-content-renderer.js +1 -1
- package/src/rich-text-editor/renderer/image-module.js +9 -6
- package/src/rich-text-editor/renderer/link-module.js +2 -1
- package/src/rich-text-editor/renderer/table-module.d.ts +2 -0
- package/src/rich-text-editor/renderer/table-module.js +43 -7
- package/src/rich-text-editor/renderer/video-module.d.ts +105 -0
- package/src/rich-text-editor/renderer/video-module.js +1422 -0
- package/src/rich-text-editor/renderer/view-source.js +2 -0
- package/src/rich-text-editor/renderer.d.ts +2 -0
- package/src/rich-text-editor/renderer.js +2 -0
- package/src/rich-text-editor/video.d.ts +4 -0
- package/src/rich-text-editor/video.js +4 -0
- package/styles/_all.scss +1 -2
- package/styles/bootstrap-dark.css +220 -70
- package/styles/bootstrap.css +220 -70
- package/styles/bootstrap4.css +220 -70
- package/styles/bootstrap5-dark.css +220 -70
- package/styles/bootstrap5.css +220 -70
- package/styles/fabric-dark.css +220 -70
- package/styles/fabric.css +222 -72
- package/styles/fluent-dark.css +222 -72
- package/styles/fluent.css +222 -72
- package/styles/highcontrast-light.css +222 -72
- package/styles/highcontrast.css +222 -72
- package/styles/material-dark.css +220 -70
- package/styles/material.css +220 -70
- package/styles/rich-text-editor/_all.scss +1 -1
- package/styles/rich-text-editor/_bootstrap-dark-definition.scss +3 -0
- package/styles/rich-text-editor/_bootstrap-definition.scss +2 -1
- package/styles/rich-text-editor/_bootstrap4-definition.scss +5 -3
- package/styles/rich-text-editor/_bootstrap5-definition.scss +8 -3
- package/styles/rich-text-editor/_fabric-dark-definition.scss +3 -0
- package/styles/rich-text-editor/_fabric-definition.scss +2 -0
- package/styles/rich-text-editor/_fluent-definition.scss +8 -3
- package/styles/rich-text-editor/_fusionnew-definition.scss +8 -3
- package/styles/rich-text-editor/_highcontrast-definition.scss +2 -0
- package/styles/rich-text-editor/_highcontrast-light-definition.scss +2 -0
- package/styles/rich-text-editor/_layout.scss +116 -74
- package/styles/rich-text-editor/_material-dark-definition.scss +3 -0
- package/styles/rich-text-editor/_material-definition.scss +2 -0
- package/styles/rich-text-editor/_material3-definition.scss +8 -3
- package/styles/rich-text-editor/_tailwind-definition.scss +7 -2
- package/styles/rich-text-editor/_theme.scss +74 -15
- package/styles/rich-text-editor/bootstrap-dark.css +220 -70
- package/styles/rich-text-editor/bootstrap.css +220 -70
- package/styles/rich-text-editor/bootstrap4.css +220 -70
- package/styles/rich-text-editor/bootstrap5-dark.css +220 -70
- package/styles/rich-text-editor/bootstrap5.css +220 -70
- package/styles/rich-text-editor/fabric-dark.css +220 -70
- package/styles/rich-text-editor/fabric.css +222 -72
- package/styles/rich-text-editor/fluent-dark.css +222 -72
- package/styles/rich-text-editor/fluent.css +222 -72
- package/styles/rich-text-editor/highcontrast-light.css +222 -72
- package/styles/rich-text-editor/highcontrast.css +222 -72
- package/styles/rich-text-editor/icons/_bootstrap-dark.scss +20 -4
- package/styles/rich-text-editor/icons/_bootstrap.scss +20 -4
- package/styles/rich-text-editor/icons/_bootstrap4.scss +20 -4
- package/styles/rich-text-editor/icons/_bootstrap5.scss +20 -4
- package/styles/rich-text-editor/icons/_fabric-dark.scss +20 -4
- package/styles/rich-text-editor/icons/_fabric.scss +20 -4
- package/styles/rich-text-editor/icons/_fluent.scss +20 -4
- package/styles/rich-text-editor/icons/_fusionnew.scss +20 -4
- package/styles/rich-text-editor/icons/_highcontrast-light.scss +20 -4
- package/styles/rich-text-editor/icons/_highcontrast.scss +20 -4
- package/styles/rich-text-editor/icons/_material-dark.scss +20 -4
- package/styles/rich-text-editor/icons/_material.scss +20 -4
- package/styles/rich-text-editor/icons/_material3.scss +20 -4
- package/styles/rich-text-editor/icons/_tailwind.scss +20 -4
- package/styles/rich-text-editor/material-dark.css +220 -70
- package/styles/rich-text-editor/material.css +220 -70
- package/styles/rich-text-editor/tailwind-dark.css +220 -70
- package/styles/rich-text-editor/tailwind.css +220 -70
- package/styles/tailwind-dark.css +220 -70
- package/styles/tailwind.css +220 -70
- package/.eslintrc.json +0 -244
- package/tslint.json +0 -111
|
@@ -35,6 +35,7 @@ var EnterKeyAction = /** @class */ (function () {
|
|
|
35
35
|
var _this = this;
|
|
36
36
|
this.getRangeNode();
|
|
37
37
|
var isTableEnter = true;
|
|
38
|
+
this.formatTags = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'blockquote'];
|
|
38
39
|
if (!isNOU(this.startNode.closest('TABLE')) && !isNOU(this.endNode.closest('TABLE'))) {
|
|
39
40
|
isTableEnter = false;
|
|
40
41
|
var curElement = this.startNode;
|
|
@@ -76,16 +77,27 @@ var EnterKeyAction = /** @class */ (function () {
|
|
|
76
77
|
else if (_this.parent.inputElement === _this.range.startContainer) {
|
|
77
78
|
var focusElem = _this.range.startContainer.childNodes[_this.range.startOffset];
|
|
78
79
|
if (focusElem.nodeName === '#text' && focusElem.textContent.length === 0) {
|
|
79
|
-
_this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), focusElem, focusElem.previousSibling.textContent.length);
|
|
80
|
+
_this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), focusElem, focusElem.textContent.length === 0 ? 0 : focusElem.previousSibling.textContent.length);
|
|
80
81
|
}
|
|
81
82
|
else {
|
|
82
83
|
_this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), focusElem, focusElem.textContent.length >= 0 ? 0 : 1);
|
|
83
84
|
if (focusElem.previousSibling.textContent.length === 0) {
|
|
84
85
|
detach(focusElem.previousSibling);
|
|
86
|
+
if (!shiftKey_1) {
|
|
87
|
+
var currentFocusElem = !isNOU(focusElem.lastChild) ? focusElem.lastChild : focusElem;
|
|
88
|
+
while (!isNOU(currentFocusElem) && currentFocusElem.nodeName !== '#text' && currentFocusElem.nodeName !== 'BR') {
|
|
89
|
+
currentFocusElem = currentFocusElem.lastChild;
|
|
90
|
+
}
|
|
91
|
+
if (currentFocusElem.nodeName != 'BR' && currentFocusElem.parentElement.textContent.length === 0 && currentFocusElem.parentElement.innerHTML.length === 0 &&
|
|
92
|
+
currentFocusElem.parentElement.nodeName != 'BR') {
|
|
93
|
+
currentFocusElem.parentElement.appendChild(_this.parent.createElement('BR'));
|
|
94
|
+
}
|
|
95
|
+
_this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), currentFocusElem.nodeName === 'BR' ? currentFocusElem : currentFocusElem.parentElement, currentFocusElem.parentElement.textContent.length >= 0 || currentFocusElem.nodeName === 'BR' ? 0 : 1);
|
|
96
|
+
}
|
|
85
97
|
}
|
|
86
98
|
else if (focusElem.textContent.length === 0) {
|
|
87
|
-
var currentFocusElem = focusElem.previousSibling.lastChild;
|
|
88
|
-
while (currentFocusElem.nodeName !== '#text') {
|
|
99
|
+
var currentFocusElem = focusElem.previousSibling.nodeName === '#text' ? focusElem.previousSibling : focusElem.previousSibling.lastChild;
|
|
100
|
+
while (!isNOU(currentFocusElem) && currentFocusElem.nodeName !== '#text') {
|
|
89
101
|
currentFocusElem = currentFocusElem.lastChild;
|
|
90
102
|
}
|
|
91
103
|
_this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), currentFocusElem, currentFocusElem.textContent.length);
|
|
@@ -102,121 +114,154 @@ var EnterKeyAction = /** @class */ (function () {
|
|
|
102
114
|
}
|
|
103
115
|
if (_this.range.startContainer === _this.range.endContainer &&
|
|
104
116
|
_this.range.startOffset === _this.range.endOffset && _this.range.startContainer === _this.parent.inputElement) {
|
|
105
|
-
|
|
117
|
+
if (!isNOU(_this.range.startContainer.childNodes[_this.range.startOffset]) &&
|
|
118
|
+
!isNOU(_this.range.startContainer.childNodes[_this.range.startOffset].previousElementSibling) &&
|
|
119
|
+
_this.range.startContainer.childNodes[_this.range.startOffset].previousElementSibling.nodeName === 'TABLE') {
|
|
120
|
+
_this.parent.tableModule.removeResizeElement();
|
|
121
|
+
}
|
|
122
|
+
if (!(_this.parent.inputElement.childNodes.length === 1 && _this.parent.inputElement.childNodes[0].nodeName === 'TABLE')) {
|
|
123
|
+
_this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), _this.range.startContainer.childNodes[_this.range.startOffset], 0);
|
|
124
|
+
}
|
|
106
125
|
_this.getRangeNode();
|
|
107
126
|
}
|
|
108
127
|
if ((_this.parent.enterKey === 'P' && !shiftKey_1) || (_this.parent.enterKey === 'DIV' && !shiftKey_1) ||
|
|
109
128
|
(_this.parent.shiftEnterKey === 'P' && shiftKey_1) ||
|
|
110
129
|
(_this.parent.shiftEnterKey === 'DIV' && shiftKey_1)) {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
130
|
+
if (_this.range.startOffset === 1 && _this.parent.inputElement.childNodes.length === 1 && _this.parent.inputElement.childNodes[0].nodeName === 'TABLE') {
|
|
131
|
+
var newElem = _this.createInsertElement(shiftKey_1);
|
|
132
|
+
newElem.appendChild(_this.parent.createElement('BR'));
|
|
133
|
+
_this.parent.inputElement.appendChild(newElem);
|
|
134
|
+
_this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), newElem, 0);
|
|
114
135
|
}
|
|
115
136
|
else {
|
|
116
|
-
nearBlockNode =
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
var isFocusedFirst = false;
|
|
120
|
-
if (_this.range.startOffset != 0 && _this.range.endOffset != 0 && _this.range.startContainer === _this.range.endContainer &&
|
|
121
|
-
!(!isNOU(nearBlockNode.childNodes[0]) && nearBlockNode.childNodes[0].nodeName === 'IMG')) {
|
|
122
|
-
var startNodeText = _this.range.startContainer.textContent;
|
|
123
|
-
var splitFirstText = startNodeText.substring(0, _this.range.startOffset);
|
|
124
|
-
if (splitFirstText.charCodeAt(_this.range.startOffset - 1) != 160 && splitFirstText.trim().length === 0) {
|
|
125
|
-
isFocusedFirst = true;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
else if (_this.range.startOffset === 0 && _this.range.endOffset === 0) {
|
|
129
|
-
isFocusedFirst = true;
|
|
130
|
-
}
|
|
131
|
-
_this.removeBRElement(nearBlockNode);
|
|
132
|
-
var fireFoxEnterAtMiddle = Browser.userAgent.indexOf('Firefox') != -1 && _this.range.startOffset === 0 && _this.range.startContainer === _this.range.endContainer &&
|
|
133
|
-
_this.range.startContainer.nodeName === '#text' && !_this.parent.formatter.editorManager.domNode.isBlockNode(_this.range.startContainer.previousSibling) &&
|
|
134
|
-
_this.range.startContainer.parentElement === _this.range.startContainer.previousSibling.parentElement;
|
|
135
|
-
if (!fireFoxEnterAtMiddle && ((_this.range.startOffset === 0 && _this.range.endOffset === 0) || isFocusedFirst) &&
|
|
136
|
-
!(!isNOU(_this.range.startContainer.previousSibling) &&
|
|
137
|
-
(_this.range.startContainer.previousSibling.nodeName === 'IMG' || _this.range.startContainer.previousSibling.nodeName === 'BR'))) {
|
|
138
|
-
var isNearBlockLengthZero = void 0;
|
|
139
|
-
var newElem = void 0;
|
|
140
|
-
if (_this.range.startContainer.nodeName === 'IMG') {
|
|
141
|
-
newElem = _this.createInsertElement(shiftKey_1);
|
|
142
|
-
isImageNode = true;
|
|
143
|
-
isNearBlockLengthZero = false;
|
|
137
|
+
var nearBlockNode = void 0;
|
|
138
|
+
if (isTableEnter && _this.parent.formatter.editorManager.domNode.isBlockNode(_this.startNode)) {
|
|
139
|
+
nearBlockNode = _this.startNode;
|
|
144
140
|
}
|
|
145
141
|
else {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
142
|
+
nearBlockNode = _this.parent.formatter.editorManager.domNode.blockParentNode(_this.startNode);
|
|
143
|
+
}
|
|
144
|
+
var isImageNode = false;
|
|
145
|
+
var isFocusedFirst = false;
|
|
146
|
+
if (_this.range.startOffset !== 0 && _this.range.endOffset !== 0 &&
|
|
147
|
+
_this.range.startContainer === _this.range.endContainer && !(!isNOU(nearBlockNode.childNodes[0])
|
|
148
|
+
&& nearBlockNode.childNodes[0].nodeName === 'IMG')) {
|
|
149
|
+
var startNodeText = _this.range.startContainer.textContent;
|
|
150
|
+
var splitFirstText = startNodeText.substring(0, _this.range.startOffset);
|
|
151
|
+
if (splitFirstText.charCodeAt(_this.range.startOffset - 1) !== 160 && splitFirstText.trim().length === 0) {
|
|
152
|
+
isFocusedFirst = true;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
else if (_this.range.startOffset === 0 && _this.range.endOffset === 0) {
|
|
156
|
+
isFocusedFirst = true;
|
|
157
|
+
}
|
|
158
|
+
_this.removeBRElement(nearBlockNode);
|
|
159
|
+
var fireFoxEnterAtMiddle = Browser.userAgent.indexOf('Firefox') !== -1 && _this.range.startOffset === 0 && _this.range.startContainer === _this.range.endContainer &&
|
|
160
|
+
_this.range.startContainer.nodeName === '#text' && !_this.parent.formatter.editorManager.domNode.isBlockNode(_this.range.startContainer.previousSibling) &&
|
|
161
|
+
_this.range.startContainer.parentElement === _this.range.startContainer.previousSibling.parentElement;
|
|
162
|
+
if (!fireFoxEnterAtMiddle && ((_this.range.startOffset === 0 && _this.range.endOffset === 0) || isFocusedFirst) &&
|
|
163
|
+
!(!isNOU(_this.range.startContainer.previousSibling) &&
|
|
164
|
+
(_this.range.startContainer.previousSibling.nodeName === 'IMG' || _this.range.startContainer.previousSibling.nodeName === 'BR'))) {
|
|
165
|
+
var isNearBlockLengthZero = void 0;
|
|
166
|
+
var newElem = void 0;
|
|
167
|
+
if (_this.range.startContainer.nodeName === 'IMG' || _this.range.startContainer.nodeName === 'TABLE') {
|
|
168
|
+
newElem = _this.createInsertElement(shiftKey_1);
|
|
169
|
+
isImageNode = true;
|
|
149
170
|
isNearBlockLengthZero = false;
|
|
150
171
|
}
|
|
151
172
|
else {
|
|
152
|
-
|
|
153
|
-
|
|
173
|
+
if ((nearBlockNode.textContent.trim().length !== 0 ||
|
|
174
|
+
nearBlockNode.childNodes[0].nodeName === 'IMG')) {
|
|
175
|
+
if ((_this.range.startOffset === _this.range.endOffset && _this.range.startOffset != 0)) {
|
|
176
|
+
newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, false).cloneNode(true);
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, true).cloneNode(true);
|
|
180
|
+
isImageNode = true;
|
|
181
|
+
}
|
|
182
|
+
isNearBlockLengthZero = false;
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, true).cloneNode(true);
|
|
186
|
+
isNearBlockLengthZero = true;
|
|
187
|
+
}
|
|
154
188
|
}
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
insertElem.appendChild(newElem.firstChild);
|
|
159
|
-
}
|
|
160
|
-
nearBlockNode.parentElement.insertBefore(insertElem, nearBlockNode);
|
|
161
|
-
if (!isNearBlockLengthZero) {
|
|
162
|
-
var currentFocusElem = insertElem;
|
|
163
|
-
var finalFocusElem = void 0;
|
|
164
|
-
while (!isNOU(currentFocusElem) && currentFocusElem.nodeName !== '#text') {
|
|
165
|
-
finalFocusElem = currentFocusElem;
|
|
166
|
-
currentFocusElem = currentFocusElem.lastChild;
|
|
189
|
+
var insertElem = void 0;
|
|
190
|
+
if (_this.formatTags.indexOf(newElem.nodeName.toLocaleLowerCase()) < 0) {
|
|
191
|
+
insertElem = _this.createInsertElement(shiftKey_1);
|
|
167
192
|
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
detach(nearBlockNode);
|
|
193
|
+
else {
|
|
194
|
+
insertElem = _this.parent.createElement(newElem.nodeName);
|
|
171
195
|
}
|
|
196
|
+
while (newElem.firstChild) {
|
|
197
|
+
insertElem.appendChild(newElem.firstChild);
|
|
198
|
+
}
|
|
199
|
+
nearBlockNode.parentElement.insertBefore(insertElem, nearBlockNode);
|
|
200
|
+
if (!isNearBlockLengthZero) {
|
|
201
|
+
var currentFocusElem = insertElem;
|
|
202
|
+
var finalFocusElem = void 0;
|
|
203
|
+
while (!isNOU(currentFocusElem) && currentFocusElem.nodeName !== '#text') {
|
|
204
|
+
finalFocusElem = currentFocusElem;
|
|
205
|
+
currentFocusElem = currentFocusElem.lastChild;
|
|
206
|
+
}
|
|
207
|
+
finalFocusElem.innerHTML = '<br>';
|
|
208
|
+
if (!isImageNode) {
|
|
209
|
+
detach(nearBlockNode);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
_this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), insertElem.nextElementSibling, 0);
|
|
172
213
|
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
_this.parent.formatter.editorManager.domNode.insertAfter(newElem, nearBlockNode);
|
|
179
|
-
_this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), newElem, newElem.textContent.length >= 0 ? 0 : 1);
|
|
180
|
-
}
|
|
181
|
-
else {
|
|
182
|
-
var insertElem = _this.createInsertElement(shiftKey_1);
|
|
183
|
-
insertElem.innerHTML = '<br>';
|
|
184
|
-
_this.parent.formatter.editorManager.domNode.insertAfter(insertElem, nearBlockNode);
|
|
185
|
-
_this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), insertElem, 0);
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
else {
|
|
189
|
-
var newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, true);
|
|
190
|
-
if (!isNOU(newElem.childNodes[0]) && newElem.childNodes[0].nodeName === '#text' &&
|
|
191
|
-
newElem.childNodes[0].textContent.length === 0) {
|
|
192
|
-
detach(newElem.childNodes[0]);
|
|
193
|
-
}
|
|
194
|
-
if (newElem.textContent.trim().length === 0) {
|
|
195
|
-
var brElm = _this.parent.createElement('br');
|
|
196
|
-
if (_this.startNode.nodeName === 'A') {
|
|
197
|
-
var startParentElem = _this.startNode.parentElement;
|
|
198
|
-
_this.startNode.parentElement.insertBefore(brElm, _this.startNode);
|
|
199
|
-
detach(_this.startNode);
|
|
200
|
-
_this.startNode = startParentElem;
|
|
214
|
+
else if (nearBlockNode.textContent.length === 0 && !(!isNOU(nearBlockNode.childNodes[0]) && nearBlockNode.childNodes[0].nodeName === 'IMG')) {
|
|
215
|
+
if (!isNOU(nearBlockNode.children[0]) && nearBlockNode.children[0].tagName !== 'BR') {
|
|
216
|
+
var newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, false).cloneNode(true);
|
|
217
|
+
_this.parent.formatter.editorManager.domNode.insertAfter(newElem, nearBlockNode);
|
|
218
|
+
_this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), newElem, newElem.textContent.length >= 0 ? 0 : 1);
|
|
201
219
|
}
|
|
202
220
|
else {
|
|
203
|
-
_this.
|
|
221
|
+
var insertElem = _this.createInsertElement(shiftKey_1);
|
|
222
|
+
insertElem.innerHTML = '<br>';
|
|
223
|
+
_this.parent.formatter.editorManager.domNode.insertAfter(insertElem, nearBlockNode);
|
|
224
|
+
_this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), insertElem, 0);
|
|
204
225
|
}
|
|
205
|
-
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
var newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, true);
|
|
229
|
+
if (!isNOU(newElem.childNodes[0]) && newElem.childNodes[0].nodeName === '#text' &&
|
|
230
|
+
newElem.childNodes[0].textContent.length === 0) {
|
|
206
231
|
detach(newElem.childNodes[0]);
|
|
207
232
|
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
233
|
+
if (newElem.textContent.trim().length === 0) {
|
|
234
|
+
var brElm = _this.parent.createElement('br');
|
|
235
|
+
if (_this.startNode.nodeName === 'A') {
|
|
236
|
+
var startParentElem = _this.startNode.parentElement;
|
|
237
|
+
_this.startNode.parentElement.insertBefore(brElm, _this.startNode);
|
|
238
|
+
detach(_this.startNode);
|
|
239
|
+
_this.startNode = startParentElem;
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
if (_this.startNode.nodeName != 'BR') {
|
|
243
|
+
_this.startNode.appendChild(brElm);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
if (newElem.childNodes[0].textContent === '\n') {
|
|
247
|
+
detach(newElem.childNodes[0]);
|
|
248
|
+
}
|
|
249
|
+
_this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), _this.startNode, 0);
|
|
250
|
+
}
|
|
251
|
+
if (((_this.parent.enterKey === 'P' || _this.parent.enterKey === 'DIV') && !shiftKey_1) || ((_this.parent.shiftEnterKey === 'DIV' ||
|
|
252
|
+
_this.parent.shiftEnterKey === 'P') && shiftKey_1)) {
|
|
253
|
+
var isHeadingTag = _this.formatTags.indexOf(newElem.nodeName.toLocaleLowerCase());
|
|
254
|
+
if ((isHeadingTag < 0) || (isHeadingTag >= 0 && newElem.textContent.trim().length === 0)) {
|
|
255
|
+
var insertElm = _this.createInsertElement(shiftKey_1);
|
|
256
|
+
while (newElem.firstChild) {
|
|
257
|
+
insertElm.appendChild(newElem.firstChild);
|
|
258
|
+
}
|
|
259
|
+
_this.parent.formatter.editorManager.domNode.insertAfter(insertElm, newElem);
|
|
260
|
+
detach(newElem);
|
|
261
|
+
_this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), _this.parent.formatter.editorManager.domNode.isBlockNode(_this.startNode) ?
|
|
262
|
+
insertElm : _this.startNode, 0);
|
|
263
|
+
}
|
|
215
264
|
}
|
|
216
|
-
_this.parent.formatter.editorManager.domNode.insertAfter(insertElm, newElem);
|
|
217
|
-
detach(newElem);
|
|
218
|
-
_this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), _this.parent.formatter.editorManager.domNode.isBlockNode(_this.startNode) ?
|
|
219
|
-
insertElm : _this.startNode, 0);
|
|
220
265
|
}
|
|
221
266
|
}
|
|
222
267
|
e.args.preventDefault();
|
|
@@ -249,13 +294,18 @@ var EnterKeyAction = /** @class */ (function () {
|
|
|
249
294
|
_this.range.startOffset === _this.range.endOffset &&
|
|
250
295
|
_this.range.startOffset === isLastNodeLength) {
|
|
251
296
|
var focusBRElem = _this.parent.createElement('br');
|
|
252
|
-
if (
|
|
253
|
-
_this.
|
|
297
|
+
if (_this.range.startOffset === 0 && _this.range.startContainer.nodeName === 'TABLE') {
|
|
298
|
+
_this.range.startContainer.parentElement.insertBefore(focusBRElem, _this.range.startContainer);
|
|
254
299
|
}
|
|
255
300
|
else {
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
301
|
+
if (currentParentLastChild.nodeName === 'BR' && currentParent.textContent.length === 0) {
|
|
302
|
+
_this.parent.formatter.editorManager.domNode.insertAfter(focusBRElem, currentParentLastChild);
|
|
303
|
+
}
|
|
304
|
+
else {
|
|
305
|
+
var lineBreakBRElem = _this.parent.createElement('br');
|
|
306
|
+
_this.parent.formatter.editorManager.domNode.insertAfter(focusBRElem, _this.range.startContainer);
|
|
307
|
+
_this.parent.formatter.editorManager.domNode.insertAfter(lineBreakBRElem, _this.range.startContainer);
|
|
308
|
+
}
|
|
259
309
|
}
|
|
260
310
|
_this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), focusBRElem, 0);
|
|
261
311
|
}
|
|
@@ -300,7 +350,7 @@ var EnterKeyAction = /** @class */ (function () {
|
|
|
300
350
|
}
|
|
301
351
|
};
|
|
302
352
|
EnterKeyAction.prototype.removeBRElement = function (currentElement) {
|
|
303
|
-
if (Browser.userAgent.indexOf('Firefox')
|
|
353
|
+
if (Browser.userAgent.indexOf('Firefox') !== -1 &&
|
|
304
354
|
this.range.endOffset === currentElement.textContent.length && (currentElement.textContent.length !== 0 ||
|
|
305
355
|
currentElement.querySelectorAll('BR').length > 1) &&
|
|
306
356
|
!isNOU(currentElement.lastChild) && currentElement.lastChild.nodeName === 'BR') {
|
|
@@ -309,6 +359,10 @@ var EnterKeyAction = /** @class */ (function () {
|
|
|
309
359
|
};
|
|
310
360
|
EnterKeyAction.prototype.insertBRElement = function () {
|
|
311
361
|
var isEmptyBrInserted = false;
|
|
362
|
+
var isFocusTextNode = true;
|
|
363
|
+
if (this.range.endContainer.textContent.length == 0 && this.range.startContainer.nodeName === "BR") {
|
|
364
|
+
isFocusTextNode = false;
|
|
365
|
+
}
|
|
312
366
|
var brElm = this.parent.createElement('br');
|
|
313
367
|
if (this.startNode.nodeName === 'BR' && this.endNode.nodeName === 'BR' && this.range.startOffset === 0 && this.range.startOffset === this.range.endOffset) {
|
|
314
368
|
this.parent.formatter.editorManager.domNode.insertAfter(brElm, this.startNode);
|
|
@@ -322,7 +376,7 @@ var EnterKeyAction = /** @class */ (function () {
|
|
|
322
376
|
this.range.insertNode(brElm);
|
|
323
377
|
}
|
|
324
378
|
if (isEmptyBrInserted || (!isNOU(brElm.nextElementSibling) && brElm.nextElementSibling.tagName === 'BR') || (!isNOU(brElm.nextSibling) && brElm.nextSibling.textContent.length > 0)) {
|
|
325
|
-
this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), !isNOU(brElm.nextSibling) ? brElm.nextSibling : brElm, 0);
|
|
379
|
+
this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), !isNOU(brElm.nextSibling) && isFocusTextNode ? brElm.nextSibling : brElm, 0);
|
|
326
380
|
isEmptyBrInserted = false;
|
|
327
381
|
}
|
|
328
382
|
else {
|
|
@@ -69,6 +69,7 @@ var HtmlEditor = /** @class */ (function () {
|
|
|
69
69
|
this.parent.on(events.selectionRestore, this.onSelectionRestore, this);
|
|
70
70
|
this.parent.on(events.readOnlyMode, this.updateReadOnly, this);
|
|
71
71
|
this.parent.on(events.paste, this.onPaste, this);
|
|
72
|
+
this.parent.on(events.tableclass, this.isTableClassAdded, this);
|
|
72
73
|
};
|
|
73
74
|
HtmlEditor.prototype.updateReadOnly = function () {
|
|
74
75
|
if (this.parent.readonly) {
|
|
@@ -92,6 +93,14 @@ var HtmlEditor = /** @class */ (function () {
|
|
|
92
93
|
this.saveSelection.restore();
|
|
93
94
|
}
|
|
94
95
|
};
|
|
96
|
+
HtmlEditor.prototype.isTableClassAdded = function () {
|
|
97
|
+
var tableElement = this.parent.inputElement.querySelectorAll('table');
|
|
98
|
+
for (var i = 0; i < tableElement.length; i++) {
|
|
99
|
+
if (!tableElement[i].classList.contains('e-rte-table')) {
|
|
100
|
+
tableElement[i].classList.add('e-rte-table');
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
};
|
|
95
104
|
HtmlEditor.prototype.onKeyUp = function (e) {
|
|
96
105
|
var args = e.args;
|
|
97
106
|
var restrictKeys = [8, 9, 13, 16, 17, 18, 20, 27, 37, 38, 39, 40, 44, 45, 46, 91,
|
|
@@ -100,11 +109,39 @@ var HtmlEditor = /** @class */ (function () {
|
|
|
100
109
|
var regEx = new RegExp(String.fromCharCode(8203), 'g');
|
|
101
110
|
var pointer;
|
|
102
111
|
if (restrictKeys.indexOf(args.keyCode) < 0 && !args.shiftKey && !args.ctrlKey && !args.altKey) {
|
|
112
|
+
pointer = range.startOffset;
|
|
113
|
+
range.startContainer.nodeName === '#text' ? range.startContainer.parentElement.classList.add('currentStartMark') : range.startContainer.classList.add('currentStartMark');
|
|
103
114
|
if (range.startContainer.textContent.charCodeAt(0) === 8203) {
|
|
104
|
-
pointer = range.startOffset - 1;
|
|
115
|
+
pointer = range.startOffset === 0 ? range.startOffset : range.startOffset - 1;
|
|
105
116
|
range.startContainer.textContent = range.startContainer.textContent.replace(regEx, '');
|
|
106
117
|
this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), range.startContainer, pointer);
|
|
107
118
|
}
|
|
119
|
+
var previousLength = this.parent.inputElement.innerHTML.length;
|
|
120
|
+
var currentLength = this.parent.inputElement.innerHTML.replace(regEx, '').length;
|
|
121
|
+
if (previousLength > currentLength) {
|
|
122
|
+
var currentChild = this.parent.inputElement.firstChild;
|
|
123
|
+
while (!isNOU(currentChild) && currentChild.textContent.replace(regEx, '').trim().length > 0) {
|
|
124
|
+
currentChild.innerHTML = currentChild.innerHTML.replace(regEx, '');
|
|
125
|
+
currentChild = currentChild.nextElementSibling;
|
|
126
|
+
}
|
|
127
|
+
if (this.parent.inputElement.querySelector('.currentStartMark').childNodes.length > 1) {
|
|
128
|
+
var currentChild_1 = this.parent.inputElement.querySelector('.currentStartMark').childNodes;
|
|
129
|
+
for (var i = 0; i < currentChild_1.length; i++) {
|
|
130
|
+
if (currentChild_1[i].nodeName === '#text' && currentChild_1[i].textContent.length === 0) {
|
|
131
|
+
detach(currentChild_1[i]);
|
|
132
|
+
i--;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), this.parent.inputElement.querySelector('.currentStartMark').childNodes[0], pointer);
|
|
137
|
+
}
|
|
138
|
+
var currentElem = this.parent.inputElement.querySelector('.currentStartMark');
|
|
139
|
+
if (!isNOU(currentElem)) {
|
|
140
|
+
currentElem.classList.remove('currentStartMark');
|
|
141
|
+
if (currentElem.getAttribute('class').trim() === '') {
|
|
142
|
+
currentElem.removeAttribute('class');
|
|
143
|
+
}
|
|
144
|
+
}
|
|
108
145
|
if (!isNOU(range.startContainer.previousSibling) && !isNOU(range.startContainer.previousSibling.parentElement) &&
|
|
109
146
|
range.startContainer.parentElement === range.startContainer.previousSibling.parentElement &&
|
|
110
147
|
range.startContainer.previousSibling.textContent.charCodeAt(0) === 8203 &&
|
|
@@ -526,6 +563,16 @@ var HtmlEditor = /** @class */ (function () {
|
|
|
526
563
|
member: 'image', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle
|
|
527
564
|
});
|
|
528
565
|
}
|
|
566
|
+
if (item.command === 'Audios') {
|
|
567
|
+
this.parent.notify(events.audioToolbarAction, {
|
|
568
|
+
member: 'audio', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle
|
|
569
|
+
});
|
|
570
|
+
}
|
|
571
|
+
if (item.command === 'Videos') {
|
|
572
|
+
this.parent.notify(events.videoToolbarAction, {
|
|
573
|
+
member: 'video', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle
|
|
574
|
+
});
|
|
575
|
+
}
|
|
529
576
|
if (item.command === 'Links') {
|
|
530
577
|
this.parent.notify(events.linkToolbarAction, {
|
|
531
578
|
member: 'link', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle
|
|
@@ -574,6 +621,16 @@ var HtmlEditor = /** @class */ (function () {
|
|
|
574
621
|
member: 'image', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle
|
|
575
622
|
});
|
|
576
623
|
break;
|
|
624
|
+
case 'Audio':
|
|
625
|
+
this.parent.notify(events.insertAudio, {
|
|
626
|
+
member: 'audio', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle
|
|
627
|
+
});
|
|
628
|
+
break;
|
|
629
|
+
case 'Video':
|
|
630
|
+
this.parent.notify(events.insertVideo, {
|
|
631
|
+
member: 'video', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle
|
|
632
|
+
});
|
|
633
|
+
break;
|
|
577
634
|
case 'CreateTable':
|
|
578
635
|
this.parent.notify(events.createTable, {
|
|
579
636
|
member: 'table', args: args, selection: save
|
|
@@ -628,6 +685,7 @@ var HtmlEditor = /** @class */ (function () {
|
|
|
628
685
|
this.parent.off(events.selectionRestore, this.onSelectionRestore);
|
|
629
686
|
this.parent.off(events.readOnlyMode, this.updateReadOnly);
|
|
630
687
|
this.parent.off(events.paste, this.onPaste);
|
|
688
|
+
this.parent.off(events.tableclass, this.isTableClassAdded);
|
|
631
689
|
};
|
|
632
690
|
HtmlEditor.prototype.render = function () {
|
|
633
691
|
this.contentRenderer = this.renderFactory.getRenderer(RenderType.Content);
|
|
@@ -80,7 +80,8 @@ var PasteCleanup = /** @class */ (function () {
|
|
|
80
80
|
var file = e && e.args.clipboardData &&
|
|
81
81
|
e.args.clipboardData.items.length > 0 ?
|
|
82
82
|
(e.args.clipboardData.items[0].getAsFile() === null ?
|
|
83
|
-
(!isNOU(e.args.clipboardData.items[1]) ?
|
|
83
|
+
(!isNOU(e.args.clipboardData.items[1]) ?
|
|
84
|
+
e.args.clipboardData.items[1].getAsFile() : null) :
|
|
84
85
|
e.args.clipboardData.items[0].getAsFile()) : null;
|
|
85
86
|
this.parent.notify(events.paste, {
|
|
86
87
|
file: file,
|
|
@@ -18,6 +18,8 @@ export declare class QuickToolbar {
|
|
|
18
18
|
linkQTBar: BaseQuickToolbar;
|
|
19
19
|
textQTBar: BaseQuickToolbar;
|
|
20
20
|
imageQTBar: BaseQuickToolbar;
|
|
21
|
+
audioQTBar: BaseQuickToolbar;
|
|
22
|
+
videoQTBar: BaseQuickToolbar;
|
|
21
23
|
tableQTBar: BaseQuickToolbar;
|
|
22
24
|
inlineQTBar: BaseQuickToolbar;
|
|
23
25
|
private renderFactory;
|