jodit 3.18.2 → 3.18.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.
Files changed (36) hide show
  1. package/.idea/workspace.xml +78 -36
  2. package/CHANGELOG.MD +12 -6
  3. package/README.md +2 -2
  4. package/build/jodit.css +2 -2
  5. package/build/jodit.es2018.css +1 -1
  6. package/build/jodit.es2018.en.css +1 -1
  7. package/build/jodit.es2018.en.js +27 -14
  8. package/build/jodit.es2018.en.min.js +1 -1
  9. package/build/jodit.es2018.js +27 -14
  10. package/build/jodit.es2018.min.js +1 -1
  11. package/build/jodit.js +35 -14
  12. package/build/jodit.min.css +1 -1
  13. package/build/jodit.min.js +1 -1
  14. package/build/vdom.css +1 -1
  15. package/build/vdom.js +1 -1
  16. package/package.json +1 -1
  17. package/src/core/helpers/html/safe-html.ts +4 -0
  18. package/src/core/helpers/utils/reset.ts +4 -0
  19. package/src/core/helpers/utils/scroll-into-view.ts +4 -0
  20. package/src/plugins/clipboard/paste/helpers.ts +13 -4
  21. package/src/plugins/source/editor/engines/ace.ts +4 -0
  22. package/src/plugins/source/editor/engines/area.ts +4 -0
  23. package/src/plugins/source/source.ts +10 -12
  24. package/src/plugins/speech/speech-recognize/README.md +0 -0
  25. package/src/plugins/speech/speech-recognize/config.ts +23 -0
  26. package/src/plugins/speech/speech-recognize/helpers/microphone-input.ts +218 -0
  27. package/src/plugins/speech/speech-recognize/helpers/voice-command.ts +118 -0
  28. package/src/plugins/speech/speech-recognize/icon.svg +5 -0
  29. package/src/plugins/speech/speech-recognize/speech-recognize.ts +38 -0
  30. package/src/types/events.d.ts +12 -1
  31. package/src/types/source.d.ts +1 -0
  32. package/types/core/helpers/utils/reset.d.ts +3 -0
  33. package/types/plugins/source/editor/engines/ace.d.ts +1 -0
  34. package/types/plugins/source/editor/engines/area.d.ts +1 -0
  35. package/types/types/events.d.ts +12 -1
  36. package/types/types/source.d.ts +1 -0
@@ -11,7 +11,38 @@
11
11
  <select />
12
12
  </component>
13
13
  <component name="ChangeListManager">
14
- <list default="true" id="5da7ff7f-03a8-49de-9fbb-8f8640d83b83" name="Default Changelist" comment="Moved the test files to the appropriate directories" />
14
+ <list default="true" id="5da7ff7f-03a8-49de-9fbb-8f8640d83b83" name="Default Changelist" comment="Merge">
15
+ <change afterPath="$PROJECT_DIR$/build-system/utils/include-plugins.js" afterDir="false" />
16
+ <change afterPath="$PROJECT_DIR$/src/plugins/speech/speech-recognize/README.md" afterDir="false" />
17
+ <change afterPath="$PROJECT_DIR$/src/plugins/speech/speech-recognize/config.ts" afterDir="false" />
18
+ <change afterPath="$PROJECT_DIR$/src/plugins/speech/speech-recognize/helpers/microphone-input.ts" afterDir="false" />
19
+ <change afterPath="$PROJECT_DIR$/src/plugins/speech/speech-recognize/helpers/voice-command.ts" afterDir="false" />
20
+ <change afterPath="$PROJECT_DIR$/src/plugins/speech/speech-recognize/icon.svg" afterDir="false" />
21
+ <change afterPath="$PROJECT_DIR$/src/plugins/speech/speech-recognize/speech-recognize.ts" afterDir="false" />
22
+ <change beforePath="$PROJECT_DIR$/CHANGELOG.MD" beforeDir="false" afterPath="$PROJECT_DIR$/CHANGELOG.MD" afterDir="false" />
23
+ <change beforePath="$PROJECT_DIR$/build-system/index.js" beforeDir="false" afterPath="$PROJECT_DIR$/build-system/index.js" afterDir="false" />
24
+ <change beforePath="$PROJECT_DIR$/build/jodit.css" beforeDir="false" />
25
+ <change beforePath="$PROJECT_DIR$/build/jodit.es2018.css" beforeDir="false" />
26
+ <change beforePath="$PROJECT_DIR$/build/jodit.es2018.en.css" beforeDir="false" />
27
+ <change beforePath="$PROJECT_DIR$/build/jodit.es2018.en.js" beforeDir="false" afterPath="$PROJECT_DIR$/build/jodit.es2018.en.js" afterDir="false" />
28
+ <change beforePath="$PROJECT_DIR$/build/jodit.es2018.en.min.css" beforeDir="false" />
29
+ <change beforePath="$PROJECT_DIR$/build/jodit.es2018.en.min.js" beforeDir="false" afterPath="$PROJECT_DIR$/build/jodit.es2018.en.min.js" afterDir="false" />
30
+ <change beforePath="$PROJECT_DIR$/build/jodit.es2018.js" beforeDir="false" afterPath="$PROJECT_DIR$/build/jodit.es2018.js" afterDir="false" />
31
+ <change beforePath="$PROJECT_DIR$/build/jodit.es2018.min.css" beforeDir="false" />
32
+ <change beforePath="$PROJECT_DIR$/build/jodit.es2018.min.js" beforeDir="false" afterPath="$PROJECT_DIR$/build/jodit.es2018.min.js" afterDir="false" />
33
+ <change beforePath="$PROJECT_DIR$/build/jodit.js" beforeDir="false" afterPath="$PROJECT_DIR$/build/jodit.js" afterDir="false" />
34
+ <change beforePath="$PROJECT_DIR$/build/jodit.min.css" beforeDir="false" />
35
+ <change beforePath="$PROJECT_DIR$/build/jodit.min.js" beforeDir="false" afterPath="$PROJECT_DIR$/build/jodit.min.js" afterDir="false" />
36
+ <change beforePath="$PROJECT_DIR$/build/vdom.css" beforeDir="false" />
37
+ <change beforePath="$PROJECT_DIR$/make.js" beforeDir="false" afterPath="$PROJECT_DIR$/make.js" afterDir="false" />
38
+ <change beforePath="$PROJECT_DIR$/src/plugins/clipboard/paste/helpers.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/plugins/clipboard/paste/helpers.ts" afterDir="false" />
39
+ <change beforePath="$PROJECT_DIR$/src/plugins/source/editor/engines/ace.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/plugins/source/editor/engines/ace.ts" afterDir="false" />
40
+ <change beforePath="$PROJECT_DIR$/src/plugins/source/editor/engines/area.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/plugins/source/editor/engines/area.ts" afterDir="false" />
41
+ <change beforePath="$PROJECT_DIR$/src/plugins/source/source.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/plugins/source/source.ts" afterDir="false" />
42
+ <change beforePath="$PROJECT_DIR$/src/styles/mixins.less" beforeDir="false" afterPath="$PROJECT_DIR$/src/styles/mixins.less" afterDir="false" />
43
+ <change beforePath="$PROJECT_DIR$/src/types/events.d.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/types/events.d.ts" afterDir="false" />
44
+ <change beforePath="$PROJECT_DIR$/src/types/source.d.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/types/source.d.ts" afterDir="false" />
45
+ </list>
15
46
  <list id="5049e1d4-15bc-4e3a-b46b-d2ce7537fc13" name="Revert &quot;Some small fixes&quot;" comment="Revert &quot;Some small fixes&quot;&#10;&#10;This reverts commit bc391ec6" />
16
47
  <option name="SHOW_DIALOG" value="false" />
17
48
  <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -75,7 +106,7 @@
75
106
  <component name="PropertiesComponent">{
76
107
  &quot;keyToString&quot;: {
77
108
  &quot;WebServerToolWindowFactoryState&quot;: &quot;true&quot;,
78
- &quot;last_opened_file_path&quot;: &quot;/Users/v-chupurnov/WebstormProjects/pet/jodit/src/plugins/inline-popup&quot;,
109
+ &quot;last_opened_file_path&quot;: &quot;/Users/v-chupurnov/WebstormProjects/pet/jodit/src/plugins/speech/speech-recognize/helpers&quot;,
79
110
  &quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
80
111
  &quot;node.js.detected.package.stylelint&quot;: &quot;true&quot;,
81
112
  &quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
@@ -91,18 +122,18 @@
91
122
  }</component>
92
123
  <component name="RecentsManager">
93
124
  <key name="CopyFile.RECENT_KEYS">
125
+ <recent name="$PROJECT_DIR$/src/plugins/speech/speech-recognize/helpers" />
94
126
  <recent name="$PROJECT_DIR$/src/plugins/inline-popup" />
95
127
  <recent name="$PROJECT_DIR$/src/plugins/image" />
96
128
  <recent name="$PROJECT_DIR$/src/plugins/clipboard/drag-and-drop-element" />
97
129
  <recent name="$PROJECT_DIR$/src/plugins/line-height" />
98
- <recent name="$PROJECT_DIR$" />
99
130
  </key>
100
131
  <key name="MoveFile.RECENT_KEYS">
132
+ <recent name="$PROJECT_DIR$/src/plugins/speech/speech-recognize" />
101
133
  <recent name="$PROJECT_DIR$/src/core/create" />
102
134
  <recent name="$PROJECT_DIR$/src/langs" />
103
135
  <recent name="$PROJECT_DIR$/src/plugins" />
104
136
  <recent name="$PROJECT_DIR$/src/plugins/clipboard" />
105
- <recent name="$PROJECT_DIR$/src/core/helpers/size" />
106
137
  </key>
107
138
  </component>
108
139
  <component name="RunManager" selected="Node.js.find-tests.js">
@@ -819,35 +850,12 @@
819
850
  <workItem from="1652042752043" duration="2143000" />
820
851
  <workItem from="1652044910721" duration="81000" />
821
852
  <workItem from="1652045004195" duration="17714000" />
822
- <workItem from="1652217495723" duration="720000" />
823
- </task>
824
- <task id="LOCAL-01071" summary="Fixed composition `wait` and `debounce` decorators">
825
- <created>1647732750559</created>
826
- <option name="number" value="01071" />
827
- <option name="presentableId" value="LOCAL-01071" />
828
- <option name="project" value="LOCAL" />
829
- <updated>1647732750559</updated>
830
- </task>
831
- <task id="LOCAL-01072" summary="Fixed apply styles inside another styles">
832
- <created>1648290585805</created>
833
- <option name="number" value="01072" />
834
- <option name="presentableId" value="LOCAL-01072" />
835
- <option name="project" value="LOCAL" />
836
- <updated>1648290585805</updated>
837
- </task>
838
- <task id="LOCAL-01073" summary="Sass compile error Css3 min() #809&#10;Issue: https://github.com/xdan/jodit/issues/809">
839
- <created>1648376444855</created>
840
- <option name="number" value="01073" />
841
- <option name="presentableId" value="LOCAL-01073" />
842
- <option name="project" value="LOCAL" />
843
- <updated>1648376444855</updated>
844
- </task>
845
- <task id="LOCAL-01074" summary="Fixed image links">
846
- <created>1648376457006</created>
847
- <option name="number" value="01074" />
848
- <option name="presentableId" value="LOCAL-01074" />
849
- <option name="project" value="LOCAL" />
850
- <updated>1648376457006</updated>
853
+ <workItem from="1652217495723" duration="2120000" />
854
+ <workItem from="1652276295627" duration="290000" />
855
+ <workItem from="1652278073818" duration="2863000" />
856
+ <workItem from="1652284339282" duration="529000" />
857
+ <workItem from="1652288722754" duration="1515000" />
858
+ <workItem from="1652290653496" duration="512000" />
851
859
  </task>
852
860
  <task id="LOCAL-01075" summary="The preview popup has double scrollbars #808&#10;Issue: https://github.com/xdan/jodit/issues/808">
853
861
  <created>1648376761158</created>
@@ -1164,11 +1172,45 @@
1164
1172
  <option name="project" value="LOCAL" />
1165
1173
  <updated>1652217605928</updated>
1166
1174
  </task>
1167
- <option name="localTasksCounter" value="1120" />
1175
+ <task id="LOCAL-01120" summary="Merge">
1176
+ <created>1652218282019</created>
1177
+ <option name="number" value="01120" />
1178
+ <option name="presentableId" value="LOCAL-01120" />
1179
+ <option name="project" value="LOCAL" />
1180
+ <updated>1652218282019</updated>
1181
+ </task>
1182
+ <task id="LOCAL-01121" summary="Merge">
1183
+ <created>1652218678007</created>
1184
+ <option name="number" value="01121" />
1185
+ <option name="presentableId" value="LOCAL-01121" />
1186
+ <option name="project" value="LOCAL" />
1187
+ <updated>1652218678007</updated>
1188
+ </task>
1189
+ <task id="LOCAL-01122" summary="Merge">
1190
+ <created>1652218704246</created>
1191
+ <option name="number" value="01122" />
1192
+ <option name="presentableId" value="LOCAL-01122" />
1193
+ <option name="project" value="LOCAL" />
1194
+ <updated>1652218704246</updated>
1195
+ </task>
1196
+ <task id="LOCAL-01123" summary="Merge">
1197
+ <created>1652218824617</created>
1198
+ <option name="number" value="01123" />
1199
+ <option name="presentableId" value="LOCAL-01123" />
1200
+ <option name="project" value="LOCAL" />
1201
+ <updated>1652218824618</updated>
1202
+ </task>
1203
+ <option name="localTasksCounter" value="1124" />
1168
1204
  <servers />
1169
1205
  </component>
1170
1206
  <component name="TypeScriptGeneratedFilesManager">
1171
1207
  <option name="version" value="3" />
1208
+ <option name="exactExcludedFiles">
1209
+ <list>
1210
+ <option value="$PROJECT_DIR$/types/types/core.d.ts" />
1211
+ <option value="$PROJECT_DIR$/types/types/storage.d.ts" />
1212
+ </list>
1213
+ </option>
1172
1214
  </component>
1173
1215
  <component name="UnknownFeatures">
1174
1216
  <option featureType="com.intellij.configurationType" implementationName="BashConfigurationType" />
@@ -1304,7 +1346,6 @@
1304
1346
  </component>
1305
1347
  <component name="VcsManagerConfiguration">
1306
1348
  <option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="false" />
1307
- <MESSAGE value="Keyboard Trap in Source Code mode #817&#10;Issue: https://github.com/xdan/jodit/issues/817" />
1308
1349
  <MESSAGE value="Fixed component inheritance error after component decorator" />
1309
1350
  <MESSAGE value="Fixed processing of inserting videos from YouTube. Now you can start playing the video." />
1310
1351
  <MESSAGE value="selection.insertHTML causes infinite blur loop when Jodit editor not active&#10;Added `insertCursorAfter` argument.&#10;&#10;Issue: https://github.com/xdan/jodit/issues/819" />
@@ -1329,7 +1370,8 @@
1329
1370
  <MESSAGE value="Fix tests" />
1330
1371
  <MESSAGE value="Moved the test files to the appropriate directories" />
1331
1372
  <MESSAGE value="Added event `applyLink` for issue &#10;change default target for all links #841&#10;Issue: https://github.com/xdan/jodit/issues/841" />
1332
- <option name="LAST_COMMIT_MESSAGE" value="Added event `applyLink` for issue &#10;change default target for all links #841&#10;Issue: https://github.com/xdan/jodit/issues/841" />
1373
+ <MESSAGE value="Merge" />
1374
+ <option name="LAST_COMMIT_MESSAGE" value="Merge" />
1333
1375
  </component>
1334
1376
  <component name="XDebuggerManager">
1335
1377
  <breakpoint-manager>
package/CHANGELOG.MD CHANGED
@@ -9,7 +9,13 @@
9
9
  > - :house: [Internal]
10
10
  > - :nail_care: [Polish]
11
11
 
12
- ## 3.17.2
12
+ ## 3.18.3
13
+
14
+ #### :bug: Bug Fix
15
+
16
+ - Fixed a bug where pressing `Esc` did not close the dialog
17
+
18
+ ## 3.18.2
13
19
 
14
20
  #### :boom: Breaking Change
15
21
 
@@ -1432,11 +1438,11 @@ Related with https://github.com/xdan/jodit/issues/574. In some cases need to lim
1432
1438
  - @property {IUIOption[]} link.selectOptionsClassName=[] The list of the option for the select (to use with
1433
1439
  modeClassName="select")
1434
1440
  - ex: [
1435
- - { value: "", text: "" },
1436
- - { value: "val1", text: "text1" },
1437
- - { value: "val2", text: "text2" },
1438
- - { value: "val3", text: "text3" }
1439
- - ]
1441
+ - { value: "", text: "" },
1442
+ - { value: "val1", text: "text1" },
1443
+ - { value: "val2", text: "text2" },
1444
+ - { value: "val3", text: "text3" }
1445
+ - ]
1440
1446
  PR: https://github.com/xdan/jodit/pull/577 Thanks @s-renier-taonix-fr
1441
1447
 
1442
1448
  ##### New option `statusbar: boolean = true`
package/README.md CHANGED
@@ -55,9 +55,9 @@ ES2018 Version (if your users use only modern browsers)
55
55
  ```html
56
56
  <link
57
57
  rel="stylesheet"
58
- href="https://cdnjs.cloudflare.com/ajax/libs/jodit/3.13.4/jodit.es2018.min.css"
58
+ href="https://cdnjs.cloudflare.com/ajax/libs/jodit/3.18.2/jodit.es2018.min.css"
59
59
  />
60
- <script src="https://cdnjs.cloudflare.com/ajax/libs/jodit/3.13.4/jodit.es2018.min.js"></script>
60
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/jodit/3.18.2/jodit.es2018.min.js"></script>
61
61
  ```
62
62
 
63
63
  ### USAGE
package/build/jodit.css CHANGED
@@ -1,14 +1,14 @@
1
1
  /*!
2
2
  * jodit - Jodit is awesome and usefully wysiwyg editor with filebrowser
3
3
  * Author: Chupurnov <chupurnov@gmail.com> (https://xdsoft.net/)
4
- * Version: v3.18.2
4
+ * Version: v3.18.3
5
5
  * Url: https://xdsoft.net/jodit/
6
6
  * License(s): MIT
7
7
  */
8
8
  /*!
9
9
  * jodit - Jodit is awesome and usefully wysiwyg editor with filebrowser
10
10
  * Author: Chupurnov <chupurnov@gmail.com> (https://xdsoft.net/)
11
- * Version: v3.18.2
11
+ * Version: v3.18.3
12
12
  * Url: https://xdsoft.net/jodit/
13
13
  * License(s): MIT
14
14
  */
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * jodit - Jodit is awesome and usefully wysiwyg editor with filebrowser
3
3
  * Author: Chupurnov <chupurnov@gmail.com> (https://xdsoft.net/)
4
- * Version: v3.18.2
4
+ * Version: v3.18.3
5
5
  * Url: https://xdsoft.net/jodit/
6
6
  * License(s): MIT
7
7
  */
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * jodit - Jodit is awesome and usefully wysiwyg editor with filebrowser
3
3
  * Author: Chupurnov <chupurnov@gmail.com> (https://xdsoft.net/)
4
- * Version: v3.18.2
4
+ * Version: v3.18.3
5
5
  * Url: https://xdsoft.net/jodit/
6
6
  * License(s): MIT
7
7
  */
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * jodit - Jodit is awesome and usefully wysiwyg editor with filebrowser
3
3
  * Author: Chupurnov <chupurnov@gmail.com> (https://xdsoft.net/)
4
- * Version: v3.18.2
4
+ * Version: v3.18.3
5
5
  * Url: https://xdsoft.net/jodit/
6
6
  * License(s): MIT
7
7
  */
@@ -12177,7 +12177,7 @@ class View extends component/* Component */.wA {
12177
12177
  this.isView = true;
12178
12178
  this.mods = {};
12179
12179
  this.components = new Set();
12180
- this.version = "3.18.2";
12180
+ this.version = "3.18.3";
12181
12181
  this.buffer = Storage.makeStorage();
12182
12182
  this.storage = Storage.makeStorage(true, this.componentName);
12183
12183
  this.OPTIONS = View.defaultOptions;
@@ -12274,10 +12274,10 @@ class View extends component/* Component */.wA {
12274
12274
  return this.__isFullSize;
12275
12275
  }
12276
12276
  getVersion() {
12277
- return "3.18.2";
12277
+ return "3.18.3";
12278
12278
  }
12279
12279
  static getVersion() {
12280
- return "3.18.2";
12280
+ return "3.18.3";
12281
12281
  }
12282
12282
  initOptions(options) {
12283
12283
  this.options = (0,helpers.ConfigProto)(options || {}, (0,helpers.ConfigProto)(this.options || {}, View.defaultOptions));
@@ -20360,12 +20360,22 @@ function askInsertTypeDialog(jodit, msg, title, callback, buttonList) {
20360
20360
  text,
20361
20361
  name: text.toLowerCase(),
20362
20362
  tabIndex: 0
20363
- }).onAction(() => callback(value)));
20363
+ }).onAction(() => {
20364
+ dialog.close();
20365
+ callback(value);
20366
+ }));
20367
+ dialog.e.one(dialog, 'afterClose', () => {
20368
+ if (!jodit.s.isFocused()) {
20369
+ jodit.s.focus();
20370
+ }
20371
+ });
20364
20372
  const cancel = (0,ui/* Button */.zx)(jodit, {
20365
20373
  text: 'Cancel',
20366
20374
  tabIndex: 0
20375
+ }).onAction(() => {
20376
+ dialog.close();
20367
20377
  });
20368
- dialog.setFooter([...buttons, cancel].map(btn => btn.onAction(() => dialog.close())));
20378
+ dialog.setFooter([...buttons, cancel]);
20369
20379
  buttons[0].focus();
20370
20380
  buttons[0].state.variant = 'primary';
20371
20381
  jodit.e.fire('afterOpenPasteDialog', dialog, msg, title, callback, buttonList);
@@ -26710,6 +26720,9 @@ class TextAreaEditor extends SourceEditor {
26710
26720
  setSelectionRange(start, end = start) {
26711
26721
  this.instance.setSelectionRange(start, end);
26712
26722
  }
26723
+ get isFocused() {
26724
+ return this.instance === this.j.od.activeElement;
26725
+ }
26713
26726
  focus() {
26714
26727
  this.instance.focus();
26715
26728
  }
@@ -26900,6 +26913,9 @@ class AceEditor extends SourceEditor {
26900
26913
  setReadOnly(isReadOnly) {
26901
26914
  this.instance.setReadOnly(isReadOnly);
26902
26915
  }
26916
+ get isFocused() {
26917
+ return this.instance.isFocused();
26918
+ }
26903
26919
  focus() {
26904
26920
  this.instance.focus();
26905
26921
  }
@@ -27194,14 +27210,11 @@ class source extends Plugin {
27194
27210
  editor.workplace.appendChild(this.mirrorContainer);
27195
27211
  });
27196
27212
  this.sourceEditor = createSourceEditor('area', editor, this.mirrorContainer, this.toWYSIWYG, this.fromWYSIWYG);
27197
- editor.registerCommand('escapeSourceEditor', {
27198
- exec: () => {
27199
- var _a;
27200
- (_a = this.sourceEditor) === null || _a === void 0 ? void 0 : _a.blur();
27201
- },
27202
- hotkeys: ['esc']
27203
- }, {
27204
- stopPropagation: false
27213
+ editor.e.on(editor.ow, 'keydown', (e) => {
27214
+ var _a;
27215
+ if (e.key === constants.KEY_ESC && ((_a = this.sourceEditor) === null || _a === void 0 ? void 0 : _a.isFocused)) {
27216
+ this.sourceEditor.blur();
27217
+ }
27205
27218
  });
27206
27219
  this.onReadonlyReact();
27207
27220
  editor.e