jodit 4.17.4 → 4.17.6
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 +17 -0
- package/es2015/jodit.css +1 -1
- package/es2015/jodit.fat.min.js +5 -5
- package/es2015/jodit.js +131 -37
- package/es2015/jodit.min.js +5 -5
- package/es2015/plugins/debug/debug.css +1 -1
- package/es2015/plugins/debug/debug.js +1 -1
- package/es2015/plugins/debug/debug.min.js +1 -1
- package/es2015/plugins/speech-recognize/speech-recognize.css +1 -1
- package/es2015/plugins/speech-recognize/speech-recognize.js +1 -1
- package/es2015/plugins/speech-recognize/speech-recognize.min.js +1 -1
- package/es2018/jodit.fat.min.js +5 -5
- package/es2018/jodit.min.js +5 -5
- package/es2018/plugins/debug/debug.min.js +1 -1
- package/es2018/plugins/speech-recognize/speech-recognize.min.js +1 -1
- package/es2021/jodit.css +1 -1
- package/es2021/jodit.fat.min.js +7 -7
- package/es2021/jodit.js +125 -37
- package/es2021/jodit.min.js +7 -7
- package/es2021/plugins/debug/debug.css +1 -1
- package/es2021/plugins/debug/debug.js +1 -1
- package/es2021/plugins/debug/debug.min.js +1 -1
- package/es2021/plugins/speech-recognize/speech-recognize.css +1 -1
- package/es2021/plugins/speech-recognize/speech-recognize.js +1 -1
- package/es2021/plugins/speech-recognize/speech-recognize.min.js +1 -1
- package/es2021.en/jodit.css +1 -1
- package/es2021.en/jodit.fat.min.js +7 -7
- package/es2021.en/jodit.js +125 -37
- package/es2021.en/jodit.min.js +8 -8
- package/es2021.en/plugins/debug/debug.css +1 -1
- package/es2021.en/plugins/debug/debug.js +1 -1
- package/es2021.en/plugins/debug/debug.min.js +1 -1
- package/es2021.en/plugins/speech-recognize/speech-recognize.css +1 -1
- package/es2021.en/plugins/speech-recognize/speech-recognize.js +1 -1
- package/es2021.en/plugins/speech-recognize/speech-recognize.min.js +1 -1
- package/es5/jodit.css +2 -2
- package/es5/jodit.fat.min.js +2 -2
- package/es5/jodit.js +140 -37
- package/es5/jodit.min.css +2 -2
- package/es5/jodit.min.js +2 -2
- package/es5/plugins/debug/debug.css +1 -1
- package/es5/plugins/debug/debug.js +1 -1
- package/es5/plugins/debug/debug.min.js +1 -1
- package/es5/plugins/speech-recognize/speech-recognize.css +1 -1
- package/es5/plugins/speech-recognize/speech-recognize.js +1 -1
- package/es5/plugins/speech-recognize/speech-recognize.min.js +1 -1
- package/es5/polyfills.fat.min.js +1 -1
- package/es5/polyfills.js +1 -1
- package/es5/polyfills.min.js +1 -1
- package/esm/core/constants.js +1 -1
- package/esm/core/selection/selection.d.ts +5 -0
- package/esm/core/selection/selection.js +56 -5
- package/esm/modules/history/history.js +20 -12
- package/esm/plugins/line-height/line-height.js +1 -1
- package/esm/plugins/placeholder/placeholder.js +1 -1
- package/esm/plugins/select/select.d.ts +7 -0
- package/esm/plugins/select/select.js +19 -1
- package/esm/plugins/source/editor/engines/ace.d.ts +2 -0
- package/esm/plugins/source/editor/engines/ace.js +35 -3
- package/package.json +1 -1
- package/types/core/selection/selection.d.ts +5 -0
- package/types/plugins/select/select.d.ts +7 -0
- package/types/plugins/source/editor/engines/ace.d.ts +2 -0
package/es5/polyfills.fat.min.js
CHANGED
package/es5/polyfills.js
CHANGED
package/es5/polyfills.min.js
CHANGED
package/esm/core/constants.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Released under MIT see LICENSE.txt in the project root for license information.
|
|
4
4
|
* Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
|
|
5
5
|
*/
|
|
6
|
-
export const APP_VERSION = "4.17.
|
|
6
|
+
export const APP_VERSION = "4.17.6";
|
|
7
7
|
// prettier-ignore
|
|
8
8
|
export const ES = "es2020";
|
|
9
9
|
export const IS_ES_MODERN = true;
|
|
@@ -60,6 +60,11 @@ export declare class Selection implements ISelect {
|
|
|
60
60
|
* back to the plain window selection.
|
|
61
61
|
*/
|
|
62
62
|
private __composedSelection;
|
|
63
|
+
/**
|
|
64
|
+
* How many ranges the browser's own selection holds right now, as opposed
|
|
65
|
+
* to the composed view that [[sel]] may answer from.
|
|
66
|
+
*/
|
|
67
|
+
private __nativeRangeCount;
|
|
63
68
|
/**
|
|
64
69
|
* Return first selected range or create new
|
|
65
70
|
*/
|
|
@@ -25,6 +25,15 @@ import { moveTheNodeAlongTheEdgeOutward } from "./helpers/move-the-node-along-th
|
|
|
25
25
|
import "./interface.js";
|
|
26
26
|
import { CommitStyle } from "./style/commit-style.js";
|
|
27
27
|
import { composedRanges, cursorInTheEdgeOfString, findCorrectCurrentNode } from "./helpers/index.js";
|
|
28
|
+
/**
|
|
29
|
+
* A text node that is empty or holds only invisible caret placeholders.
|
|
30
|
+
*/
|
|
31
|
+
function isBlankTextNode(node) {
|
|
32
|
+
var _a;
|
|
33
|
+
return (Dom.isText(node) &&
|
|
34
|
+
((_a = node.nodeValue) !== null && _a !== void 0 ? _a : '').replace(consts.INVISIBLE_SPACE_REG_EXP(), '')
|
|
35
|
+
.length === 0);
|
|
36
|
+
}
|
|
28
37
|
export class Selection {
|
|
29
38
|
constructor(jodit) {
|
|
30
39
|
this.jodit = jodit;
|
|
@@ -151,6 +160,18 @@ export class Selection {
|
|
|
151
160
|
}
|
|
152
161
|
});
|
|
153
162
|
}
|
|
163
|
+
/**
|
|
164
|
+
* How many ranges the browser's own selection holds right now, as opposed
|
|
165
|
+
* to the composed view that [[sel]] may answer from.
|
|
166
|
+
*/
|
|
167
|
+
__nativeRangeCount() {
|
|
168
|
+
var _a, _b, _c, _d;
|
|
169
|
+
const { shadowRoot } = this.j.o;
|
|
170
|
+
if (shadowRoot && isFunction(shadowRoot.getSelection)) {
|
|
171
|
+
return (_b = (_a = shadowRoot.getSelection()) === null || _a === void 0 ? void 0 : _a.rangeCount) !== null && _b !== void 0 ? _b : 0;
|
|
172
|
+
}
|
|
173
|
+
return (_d = (_c = this.win.getSelection()) === null || _c === void 0 ? void 0 : _c.rangeCount) !== null && _d !== void 0 ? _d : 0;
|
|
174
|
+
}
|
|
154
175
|
/**
|
|
155
176
|
* Return first selected range or create new
|
|
156
177
|
*/
|
|
@@ -275,6 +296,7 @@ export class Selection {
|
|
|
275
296
|
* Create marker element
|
|
276
297
|
*/
|
|
277
298
|
marker(atStart = false, range) {
|
|
299
|
+
var _a;
|
|
278
300
|
let newRange = null;
|
|
279
301
|
if (range) {
|
|
280
302
|
newRange = range.cloneRange();
|
|
@@ -296,10 +318,24 @@ export class Selection {
|
|
|
296
318
|
Dom.append(marker, this.j.createInside.text(consts.INVISIBLE_SPACE));
|
|
297
319
|
if (newRange) {
|
|
298
320
|
if (Dom.isOrContains(this.area, atStart ? newRange.startContainer : newRange.endContainer)) {
|
|
299
|
-
|
|
300
|
-
//
|
|
301
|
-
//
|
|
302
|
-
|
|
321
|
+
const { startContainer: node, startOffset: offset } = newRange;
|
|
322
|
+
// At either end of a text node the marker goes beside it. Splitting
|
|
323
|
+
// the node there would leave the selection's boundary in an empty
|
|
324
|
+
// text node, and WebKit neither repaints a selection that leaves one
|
|
325
|
+
// nor moves a selection that follows one when it's removed.
|
|
326
|
+
if (Dom.isText(node) && offset === 0) {
|
|
327
|
+
Dom.before(node, marker);
|
|
328
|
+
}
|
|
329
|
+
else if (Dom.isText(node) &&
|
|
330
|
+
offset === ((_a = node.nodeValue) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
331
|
+
Dom.after(node, marker);
|
|
332
|
+
}
|
|
333
|
+
else {
|
|
334
|
+
// Here need do unsafe inserting
|
|
335
|
+
// Deny Dom.safeInsertNode(newRange, marker);
|
|
336
|
+
// Apply style -> Test Style module -> Base apply -> For selection <p><strong>|test|</strong></p> apply style {"element":"em","style":{"fontStyle":"italic"}}
|
|
337
|
+
newRange.insertNode(marker);
|
|
338
|
+
}
|
|
303
339
|
}
|
|
304
340
|
}
|
|
305
341
|
return marker;
|
|
@@ -639,7 +675,9 @@ export class Selection {
|
|
|
639
675
|
() => { var _a; return (_a = firstChild === null || firstChild === void 0 ? void 0 : firstChild.previousSibling) === null || _a === void 0 ? void 0 : _a.lastChild; }
|
|
640
676
|
].forEach(getChildNode => {
|
|
641
677
|
const childNode = getChildNode();
|
|
642
|
-
|
|
678
|
+
// Only a text node left with nothing in it by the split
|
|
679
|
+
// goes; one holding a space is content (`<b>a</b> |`).
|
|
680
|
+
if (childNode && isBlankTextNode(childNode)) {
|
|
643
681
|
Dom.safeRemove(childNode);
|
|
644
682
|
}
|
|
645
683
|
});
|
|
@@ -1035,6 +1073,19 @@ export class Selection {
|
|
|
1035
1073
|
const range = ranges[0];
|
|
1036
1074
|
sel.setBaseAndExtent(range.endContainer, range.endOffset, range.startContainer, range.startOffset);
|
|
1037
1075
|
}
|
|
1076
|
+
else if (ranges.length === 1 &&
|
|
1077
|
+
!this.__nativeRangeCount() &&
|
|
1078
|
+
isFunction(sel.setBaseAndExtent)) {
|
|
1079
|
+
// `addRange` is specified to ignore a range whose root is not
|
|
1080
|
+
// the document, which is every range inside a shadow tree.
|
|
1081
|
+
// Chrome's `ShadowRoot.getSelection()` takes them anyway, but
|
|
1082
|
+
// Safari has only the window selection, so after
|
|
1083
|
+
// `removeAllRanges` the caret is simply gone: a character was
|
|
1084
|
+
// deleted and nothing was left to type into. `setBaseAndExtent`
|
|
1085
|
+
// does accept nodes inside a shadow tree.
|
|
1086
|
+
const range = ranges[0];
|
|
1087
|
+
sel.setBaseAndExtent(range.startContainer, range.startOffset, range.endContainer, range.endOffset);
|
|
1088
|
+
}
|
|
1038
1089
|
}
|
|
1039
1090
|
/**
|
|
1040
1091
|
* Fired after change selection
|
|
@@ -133,20 +133,28 @@ export class History extends ViewComponent {
|
|
|
133
133
|
*/
|
|
134
134
|
updateStack(replace = false) {
|
|
135
135
|
const newValue = this.snapshot.make();
|
|
136
|
-
if (
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
this.__stack.push(newCommand);
|
|
146
|
-
}
|
|
136
|
+
if (Snapshot.equal(newValue, this.startValue)) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
// Only the selection moved, for example when the selection markers
|
|
140
|
+
// went in before a switch to the source view. There is nothing to
|
|
141
|
+
// undo, but the next change has to start from this selection.
|
|
142
|
+
if (newValue.html === this.startValue.html) {
|
|
147
143
|
this.startValue = newValue;
|
|
148
|
-
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
const newCommand = new Command(this.startValue, newValue, this, this.updateTick);
|
|
147
|
+
if (replace) {
|
|
148
|
+
const command = this.__stack.current();
|
|
149
|
+
if (command && this.updateTick === command.tick) {
|
|
150
|
+
this.__stack.replace(newCommand);
|
|
151
|
+
}
|
|
149
152
|
}
|
|
153
|
+
else {
|
|
154
|
+
this.__stack.push(newCommand);
|
|
155
|
+
}
|
|
156
|
+
this.startValue = newValue;
|
|
157
|
+
this.fireChangeStack();
|
|
150
158
|
}
|
|
151
159
|
fireChangeStack() {
|
|
152
160
|
var _a;
|
|
@@ -69,7 +69,7 @@ export class placeholder extends Plugin {
|
|
|
69
69
|
.on('changePlace.placeholder', this.addNativeListeners)
|
|
70
70
|
.on('change.placeholder focus.placeholder keyup.placeholder mouseup.placeholder keydown.placeholder ' +
|
|
71
71
|
'mousedown.placeholder afterSetMode.placeholder changePlace.placeholder ' +
|
|
72
|
-
'internalChange.placeholder', this.toggle)
|
|
72
|
+
'internalChange.placeholder afterCommand.placeholder', this.toggle)
|
|
73
73
|
.on(window, 'load', this.toggle);
|
|
74
74
|
this.addNativeListeners();
|
|
75
75
|
this.toggle();
|
|
@@ -27,6 +27,13 @@ export declare class select extends Plugin {
|
|
|
27
27
|
protected afterInit(jodit: IJodit): void;
|
|
28
28
|
protected beforeDestruct(jodit: IJodit): void;
|
|
29
29
|
private onStartSelection;
|
|
30
|
+
/**
|
|
31
|
+
* Where the last press started. Chrome reports a drag that begins in one
|
|
32
|
+
* element and ends in another as a `click` on their common ancestor, so a
|
|
33
|
+
* press inside a popup is remembered to tell such a drag from a real click.
|
|
34
|
+
*/
|
|
35
|
+
private __pressTarget;
|
|
36
|
+
protected onOutsidePress(e: Event): void;
|
|
30
37
|
/**
|
|
31
38
|
* @event outsideClick(e) - when user clicked on the outside of editor
|
|
32
39
|
*/
|
|
@@ -42,6 +42,12 @@ export class select extends Plugin {
|
|
|
42
42
|
'mouseup',
|
|
43
43
|
'touchend'
|
|
44
44
|
];
|
|
45
|
+
/**
|
|
46
|
+
* Where the last press started. Chrome reports a drag that begins in one
|
|
47
|
+
* element and ends in another as a `click` on their common ancestor, so a
|
|
48
|
+
* press inside a popup is remembered to tell such a drag from a real click.
|
|
49
|
+
*/
|
|
50
|
+
this.__pressTarget = null;
|
|
45
51
|
}
|
|
46
52
|
afterInit(jodit) {
|
|
47
53
|
this.proxyEventsList.forEach(eventName => {
|
|
@@ -64,14 +70,23 @@ export class select extends Plugin {
|
|
|
64
70
|
j.e.fire(e.type + 'Editor', target, e);
|
|
65
71
|
}
|
|
66
72
|
}
|
|
73
|
+
onOutsidePress(e) {
|
|
74
|
+
this.__pressTarget = e.target;
|
|
75
|
+
}
|
|
67
76
|
/**
|
|
68
77
|
* @event outsideClick(e) - when user clicked on the outside of editor
|
|
69
78
|
*/
|
|
70
79
|
onOutsideClick(e) {
|
|
71
|
-
const node = e.target;
|
|
80
|
+
const node = e.target, pressed = this.__pressTarget;
|
|
81
|
+
this.__pressTarget = null;
|
|
72
82
|
if (Dom.up(node, elm => elm === this.j.editor)) {
|
|
73
83
|
return;
|
|
74
84
|
}
|
|
85
|
+
// Selecting the text of a popup input with the mouse and releasing
|
|
86
|
+
// the button past the popup's edge is not a click outside of it.
|
|
87
|
+
if (pressed && UIElement.closestElement(pressed, Popup)) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
75
90
|
const box = UIElement.closestElement(node, Popup);
|
|
76
91
|
if (!box) {
|
|
77
92
|
this.j.e.fire('outsideClick', e);
|
|
@@ -186,6 +201,9 @@ export class select extends Plugin {
|
|
|
186
201
|
__decorate([
|
|
187
202
|
autobind
|
|
188
203
|
], select.prototype, "onStartSelection", null);
|
|
204
|
+
__decorate([
|
|
205
|
+
watch(['ow:mousedown', 'ow:touchstart'])
|
|
206
|
+
], select.prototype, "onOutsidePress", null);
|
|
189
207
|
__decorate([
|
|
190
208
|
watch('ow:click')
|
|
191
209
|
], select.prototype, "onOutsideClick", null);
|
|
@@ -25,6 +25,8 @@ export declare class AceEditor extends SourceEditor<AceAjax.Editor> implements I
|
|
|
25
25
|
init(editor: IJodit): any;
|
|
26
26
|
destruct(): any;
|
|
27
27
|
setValue(value: string): void;
|
|
28
|
+
private __settingValue;
|
|
29
|
+
private __onChange;
|
|
28
30
|
getValue(): string;
|
|
29
31
|
setReadOnly(isReadOnly: boolean): void;
|
|
30
32
|
get isFocused(): boolean;
|
|
@@ -3,7 +3,18 @@
|
|
|
3
3
|
* Released under MIT see LICENSE.txt in the project root for license information.
|
|
4
4
|
* Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
|
|
5
5
|
*/
|
|
6
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
7
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
9
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
10
|
+
else
|
|
11
|
+
for (var i = decorators.length - 1; i >= 0; i--)
|
|
12
|
+
if (d = decorators[i])
|
|
13
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
14
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
15
|
+
};
|
|
6
16
|
import * as constants from "../../../../core/constants.js";
|
|
17
|
+
import { autobind } from "../../../../core/decorators/autobind/autobind.js";
|
|
7
18
|
import { Dom } from "../../../../core/dom/dom.js";
|
|
8
19
|
import { isString, loadNext } from "../../../../core/helpers/index.js";
|
|
9
20
|
import { SourceEditor } from "../sourceEditor.js";
|
|
@@ -23,6 +34,7 @@ export class AceEditor extends SourceEditor {
|
|
|
23
34
|
this.proxyOnMouseDown = (e) => {
|
|
24
35
|
this.j.e.fire('mousedown', e);
|
|
25
36
|
};
|
|
37
|
+
this.__settingValue = false;
|
|
26
38
|
}
|
|
27
39
|
aceExists() {
|
|
28
40
|
return this.j.ow.ace !== undefined;
|
|
@@ -98,7 +110,7 @@ export class AceEditor extends SourceEditor {
|
|
|
98
110
|
this.instance.setOption('wrap', editor.o.sourceEditorNativeOptions.wrap);
|
|
99
111
|
this.instance.getSession().setUseWorker(false);
|
|
100
112
|
this.instance.$blockScrolling = Infinity;
|
|
101
|
-
this.instance.on('change', this.
|
|
113
|
+
this.instance.on('change', this.__onChange);
|
|
102
114
|
this.instance.on('focus', this.proxyOnFocus);
|
|
103
115
|
this.instance.on('mousedown', this.proxyOnMouseDown);
|
|
104
116
|
this.instance.on('blur', this.proxyOnBlur);
|
|
@@ -155,7 +167,7 @@ export class AceEditor extends SourceEditor {
|
|
|
155
167
|
}
|
|
156
168
|
destruct() {
|
|
157
169
|
var _a, _b;
|
|
158
|
-
this.instance.off('change', this.
|
|
170
|
+
this.instance.off('change', this.__onChange);
|
|
159
171
|
this.instance.off('focus', this.proxyOnFocus);
|
|
160
172
|
this.instance.off('mousedown', this.proxyOnMouseDown);
|
|
161
173
|
this.instance.destroy();
|
|
@@ -168,9 +180,26 @@ export class AceEditor extends SourceEditor {
|
|
|
168
180
|
value = html;
|
|
169
181
|
}
|
|
170
182
|
}
|
|
171
|
-
|
|
183
|
+
// ACE reports its own `setValue` as two changes, the removal of the
|
|
184
|
+
// old text and the insertion of the new one. Fed back into the
|
|
185
|
+
// editor they became two history entries, `content -> ''` and
|
|
186
|
+
// `'' -> content`, so the first undo after a switch to the source
|
|
187
|
+
// view and back emptied the editor. The text came from the editor
|
|
188
|
+
// in the first place, so there is nothing to send back.
|
|
189
|
+
this.__settingValue = true;
|
|
190
|
+
try {
|
|
191
|
+
this.instance.setValue(value);
|
|
192
|
+
}
|
|
193
|
+
finally {
|
|
194
|
+
this.__settingValue = false;
|
|
195
|
+
}
|
|
172
196
|
this.instance.clearSelection();
|
|
173
197
|
}
|
|
198
|
+
__onChange() {
|
|
199
|
+
if (!this.__settingValue) {
|
|
200
|
+
this.toWYSIWYG();
|
|
201
|
+
}
|
|
202
|
+
}
|
|
174
203
|
getValue() {
|
|
175
204
|
return this.instance.getValue();
|
|
176
205
|
}
|
|
@@ -230,3 +259,6 @@ export class AceEditor extends SourceEditor {
|
|
|
230
259
|
});
|
|
231
260
|
}
|
|
232
261
|
}
|
|
262
|
+
__decorate([
|
|
263
|
+
autobind
|
|
264
|
+
], AceEditor.prototype, "__onChange", null);
|
package/package.json
CHANGED
|
@@ -60,6 +60,11 @@ export declare class Selection implements ISelect {
|
|
|
60
60
|
* back to the plain window selection.
|
|
61
61
|
*/
|
|
62
62
|
private __composedSelection;
|
|
63
|
+
/**
|
|
64
|
+
* How many ranges the browser's own selection holds right now, as opposed
|
|
65
|
+
* to the composed view that [[sel]] may answer from.
|
|
66
|
+
*/
|
|
67
|
+
private __nativeRangeCount;
|
|
63
68
|
/**
|
|
64
69
|
* Return first selected range or create new
|
|
65
70
|
*/
|
|
@@ -27,6 +27,13 @@ export declare class select extends Plugin {
|
|
|
27
27
|
protected afterInit(jodit: IJodit): void;
|
|
28
28
|
protected beforeDestruct(jodit: IJodit): void;
|
|
29
29
|
private onStartSelection;
|
|
30
|
+
/**
|
|
31
|
+
* Where the last press started. Chrome reports a drag that begins in one
|
|
32
|
+
* element and ends in another as a `click` on their common ancestor, so a
|
|
33
|
+
* press inside a popup is remembered to tell such a drag from a real click.
|
|
34
|
+
*/
|
|
35
|
+
private __pressTarget;
|
|
36
|
+
protected onOutsidePress(e: Event): void;
|
|
30
37
|
/**
|
|
31
38
|
* @event outsideClick(e) - when user clicked on the outside of editor
|
|
32
39
|
*/
|
|
@@ -25,6 +25,8 @@ export declare class AceEditor extends SourceEditor<AceAjax.Editor> implements I
|
|
|
25
25
|
init(editor: IJodit): any;
|
|
26
26
|
destruct(): any;
|
|
27
27
|
setValue(value: string): void;
|
|
28
|
+
private __settingValue;
|
|
29
|
+
private __onChange;
|
|
28
30
|
getValue(): string;
|
|
29
31
|
setReadOnly(isReadOnly: boolean): void;
|
|
30
32
|
get isFocused(): boolean;
|