jodit 4.14.4 → 4.14.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.
Files changed (187) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/es2015/jodit.css +1 -1
  3. package/es2015/jodit.fat.min.js +9 -9
  4. package/es2015/jodit.js +49 -34
  5. package/es2015/jodit.min.js +9 -9
  6. package/es2015/plugins/debug/debug.css +1 -1
  7. package/es2015/plugins/debug/debug.js +1 -1
  8. package/es2015/plugins/debug/debug.min.js +1 -1
  9. package/es2015/plugins/speech-recognize/speech-recognize.css +1 -1
  10. package/es2015/plugins/speech-recognize/speech-recognize.js +1 -1
  11. package/es2015/plugins/speech-recognize/speech-recognize.min.js +1 -1
  12. package/es2018/jodit.fat.min.js +9 -9
  13. package/es2018/jodit.min.js +9 -9
  14. package/es2018/plugins/debug/debug.min.js +1 -1
  15. package/es2018/plugins/speech-recognize/speech-recognize.min.js +1 -1
  16. package/es2021/jodit.css +1 -1
  17. package/es2021/jodit.fat.min.js +10 -10
  18. package/es2021/jodit.js +49 -34
  19. package/es2021/jodit.min.js +10 -10
  20. package/es2021/plugins/debug/debug.css +1 -1
  21. package/es2021/plugins/debug/debug.js +1 -1
  22. package/es2021/plugins/debug/debug.min.js +1 -1
  23. package/es2021/plugins/speech-recognize/speech-recognize.css +1 -1
  24. package/es2021/plugins/speech-recognize/speech-recognize.js +1 -1
  25. package/es2021/plugins/speech-recognize/speech-recognize.min.js +1 -1
  26. package/es2021.en/jodit.css +1 -1
  27. package/es2021.en/jodit.fat.min.js +10 -10
  28. package/es2021.en/jodit.js +49 -34
  29. package/es2021.en/jodit.min.js +10 -10
  30. package/es2021.en/plugins/debug/debug.css +1 -1
  31. package/es2021.en/plugins/debug/debug.js +1 -1
  32. package/es2021.en/plugins/debug/debug.min.js +1 -1
  33. package/es2021.en/plugins/speech-recognize/speech-recognize.css +1 -1
  34. package/es2021.en/plugins/speech-recognize/speech-recognize.js +1 -1
  35. package/es2021.en/plugins/speech-recognize/speech-recognize.min.js +1 -1
  36. package/es5/jodit.css +2 -2
  37. package/es5/jodit.fat.min.js +2 -2
  38. package/es5/jodit.js +49 -34
  39. package/es5/jodit.min.css +2 -2
  40. package/es5/jodit.min.js +2 -2
  41. package/es5/plugins/debug/debug.css +1 -1
  42. package/es5/plugins/debug/debug.js +1 -1
  43. package/es5/plugins/debug/debug.min.js +1 -1
  44. package/es5/plugins/speech-recognize/speech-recognize.css +1 -1
  45. package/es5/plugins/speech-recognize/speech-recognize.js +1 -1
  46. package/es5/plugins/speech-recognize/speech-recognize.min.js +1 -1
  47. package/es5/polyfills.fat.min.js +1 -1
  48. package/es5/polyfills.js +1 -1
  49. package/es5/polyfills.min.js +1 -1
  50. package/esm/core/constants.js +1 -1
  51. package/esm/core/dom/dom.js +2 -2
  52. package/esm/core/global.js +1 -1
  53. package/esm/core/helpers/checker/has-browser-color-picker.js +1 -1
  54. package/esm/core/helpers/html/apply-styles.js +1 -1
  55. package/esm/core/helpers/string/fuzzy-search-index.js +1 -1
  56. package/esm/core/helpers/utils/set.js +2 -2
  57. package/esm/core/storage/async-storage.js +1 -3
  58. package/esm/core/ui/popup/popup.js +1 -1
  59. package/esm/modules/image-editor/image-editor.js +1 -1
  60. package/esm/modules/table/table.js +2 -2
  61. package/esm/modules/widget/file-selector/file-selector.js +0 -1
  62. package/esm/plugins/ai-assistant/langs/en.js +1 -1
  63. package/esm/plugins/ai-assistant/langs/es.js +1 -1
  64. package/esm/plugins/backspace/cases/check-remove-char.js +0 -1
  65. package/esm/plugins/clean-html/helpers/visitor/filters/replace-old-tags.js +0 -1
  66. package/esm/plugins/color/config.js +1 -1
  67. package/esm/plugins/copy-format/langs/ar.js +1 -1
  68. package/esm/plugins/copy-format/langs/cs_cz.js +1 -1
  69. package/esm/plugins/copy-format/langs/de.js +1 -1
  70. package/esm/plugins/copy-format/langs/es.js +1 -1
  71. package/esm/plugins/copy-format/langs/fa.js +1 -1
  72. package/esm/plugins/copy-format/langs/fi.js +1 -1
  73. package/esm/plugins/copy-format/langs/fr.js +1 -1
  74. package/esm/plugins/copy-format/langs/he.js +1 -1
  75. package/esm/plugins/copy-format/langs/hu.js +1 -1
  76. package/esm/plugins/copy-format/langs/id.js +1 -1
  77. package/esm/plugins/copy-format/langs/it.js +1 -1
  78. package/esm/plugins/copy-format/langs/ja.js +1 -1
  79. package/esm/plugins/copy-format/langs/ko.js +1 -1
  80. package/esm/plugins/copy-format/langs/mn.js +1 -1
  81. package/esm/plugins/copy-format/langs/nl.js +1 -1
  82. package/esm/plugins/copy-format/langs/pl.js +1 -1
  83. package/esm/plugins/copy-format/langs/pt_br.js +1 -1
  84. package/esm/plugins/copy-format/langs/ru.js +1 -1
  85. package/esm/plugins/copy-format/langs/tr.js +1 -1
  86. package/esm/plugins/copy-format/langs/zh_cn.js +1 -1
  87. package/esm/plugins/copy-format/langs/zh_tw.js +1 -1
  88. package/esm/plugins/iframe/iframe.js +28 -9
  89. package/esm/plugins/line-height/langs/ar.js +1 -1
  90. package/esm/plugins/line-height/langs/cs_cz.js +1 -1
  91. package/esm/plugins/line-height/langs/de.js +1 -1
  92. package/esm/plugins/line-height/langs/es.js +1 -1
  93. package/esm/plugins/line-height/langs/fa.js +1 -1
  94. package/esm/plugins/line-height/langs/fi.js +1 -1
  95. package/esm/plugins/line-height/langs/fr.js +1 -1
  96. package/esm/plugins/line-height/langs/he.js +1 -1
  97. package/esm/plugins/line-height/langs/hu.js +1 -1
  98. package/esm/plugins/line-height/langs/id.js +1 -1
  99. package/esm/plugins/line-height/langs/it.js +1 -1
  100. package/esm/plugins/line-height/langs/ja.js +1 -1
  101. package/esm/plugins/line-height/langs/ko.js +1 -1
  102. package/esm/plugins/line-height/langs/mn.js +1 -1
  103. package/esm/plugins/line-height/langs/nl.js +1 -1
  104. package/esm/plugins/line-height/langs/pl.js +1 -1
  105. package/esm/plugins/line-height/langs/pt_br.js +1 -1
  106. package/esm/plugins/line-height/langs/ru.js +1 -1
  107. package/esm/plugins/line-height/langs/sk.js +1 -1
  108. package/esm/plugins/line-height/langs/tr.js +1 -1
  109. package/esm/plugins/line-height/langs/ua.js +1 -1
  110. package/esm/plugins/line-height/langs/zh_cn.js +1 -1
  111. package/esm/plugins/line-height/langs/zh_tw.js +1 -1
  112. package/esm/plugins/resize-cells/resize-cells.js +2 -2
  113. package/esm/plugins/resizer/resizer.js +1 -1
  114. package/esm/plugins/search/helpers/sentence-finder.js +1 -1
  115. package/esm/plugins/source/source.js +1 -1
  116. package/esm/plugins/speech-recognize/langs/ar.js +1 -1
  117. package/esm/plugins/speech-recognize/langs/cs_cz.js +1 -1
  118. package/esm/plugins/speech-recognize/langs/de.js +1 -1
  119. package/esm/plugins/speech-recognize/langs/es.js +1 -1
  120. package/esm/plugins/speech-recognize/langs/fa.js +1 -1
  121. package/esm/plugins/speech-recognize/langs/fi.js +1 -1
  122. package/esm/plugins/speech-recognize/langs/fr.js +1 -1
  123. package/esm/plugins/speech-recognize/langs/he.js +1 -1
  124. package/esm/plugins/speech-recognize/langs/hu.js +1 -1
  125. package/esm/plugins/speech-recognize/langs/id.js +1 -1
  126. package/esm/plugins/speech-recognize/langs/it.js +1 -1
  127. package/esm/plugins/speech-recognize/langs/ja.js +1 -1
  128. package/esm/plugins/speech-recognize/langs/ko.js +1 -1
  129. package/esm/plugins/speech-recognize/langs/mn.js +1 -1
  130. package/esm/plugins/speech-recognize/langs/nl.js +1 -1
  131. package/esm/plugins/speech-recognize/langs/no.js +1 -1
  132. package/esm/plugins/speech-recognize/langs/pl.js +1 -1
  133. package/esm/plugins/speech-recognize/langs/pt_br.js +1 -1
  134. package/esm/plugins/speech-recognize/langs/ru.js +1 -1
  135. package/esm/plugins/speech-recognize/langs/sk.js +1 -1
  136. package/esm/plugins/speech-recognize/langs/tr.js +1 -1
  137. package/esm/plugins/speech-recognize/langs/ua.js +1 -1
  138. package/esm/plugins/speech-recognize/langs/zh_cn.js +1 -1
  139. package/esm/plugins/speech-recognize/langs/zh_tw.js +1 -1
  140. package/esm/plugins/spellcheck/langs/ar.js +1 -1
  141. package/esm/plugins/spellcheck/langs/cs_cz.js +1 -1
  142. package/esm/plugins/spellcheck/langs/de.js +1 -1
  143. package/esm/plugins/spellcheck/langs/es.js +1 -1
  144. package/esm/plugins/spellcheck/langs/fa.js +1 -1
  145. package/esm/plugins/spellcheck/langs/fi.js +1 -1
  146. package/esm/plugins/spellcheck/langs/fr.js +1 -1
  147. package/esm/plugins/spellcheck/langs/he.js +1 -1
  148. package/esm/plugins/spellcheck/langs/hu.js +1 -1
  149. package/esm/plugins/spellcheck/langs/id.js +1 -1
  150. package/esm/plugins/spellcheck/langs/it.js +1 -1
  151. package/esm/plugins/spellcheck/langs/ja.js +1 -1
  152. package/esm/plugins/spellcheck/langs/ko.js +1 -1
  153. package/esm/plugins/spellcheck/langs/mn.js +1 -1
  154. package/esm/plugins/spellcheck/langs/nl.js +1 -1
  155. package/esm/plugins/spellcheck/langs/no.js +1 -1
  156. package/esm/plugins/spellcheck/langs/pl.js +1 -1
  157. package/esm/plugins/spellcheck/langs/pt_br.js +1 -1
  158. package/esm/plugins/spellcheck/langs/ru.js +1 -1
  159. package/esm/plugins/spellcheck/langs/sk.js +1 -1
  160. package/esm/plugins/spellcheck/langs/tr.js +1 -1
  161. package/esm/plugins/spellcheck/langs/ua.js +1 -1
  162. package/esm/plugins/spellcheck/langs/zh_cn.js +1 -1
  163. package/esm/plugins/spellcheck/langs/zh_tw.js +1 -1
  164. package/esm/plugins/symbols/langs/ar.js +1 -1
  165. package/esm/plugins/symbols/langs/cs_cz.js +1 -1
  166. package/esm/plugins/symbols/langs/de.js +1 -1
  167. package/esm/plugins/symbols/langs/es.js +1 -1
  168. package/esm/plugins/symbols/langs/fa.js +1 -1
  169. package/esm/plugins/symbols/langs/fi.js +1 -1
  170. package/esm/plugins/symbols/langs/fr.js +1 -1
  171. package/esm/plugins/symbols/langs/he.js +1 -1
  172. package/esm/plugins/symbols/langs/hu.js +1 -1
  173. package/esm/plugins/symbols/langs/id.js +1 -1
  174. package/esm/plugins/symbols/langs/it.js +1 -1
  175. package/esm/plugins/symbols/langs/ja.js +1 -1
  176. package/esm/plugins/symbols/langs/ko.js +1 -1
  177. package/esm/plugins/symbols/langs/mn.js +1 -1
  178. package/esm/plugins/symbols/langs/nl.js +1 -1
  179. package/esm/plugins/symbols/langs/pl.js +1 -1
  180. package/esm/plugins/symbols/langs/pt_br.js +1 -1
  181. package/esm/plugins/symbols/langs/ru.js +1 -1
  182. package/esm/plugins/symbols/langs/tr.js +1 -1
  183. package/esm/plugins/symbols/langs/ua.js +1 -1
  184. package/esm/plugins/symbols/langs/zh_cn.js +1 -1
  185. package/esm/plugins/symbols/langs/zh_tw.js +1 -1
  186. package/esm/plugins/table/config.js +1 -1
  187. package/package.json +4 -1
package/es2015/jodit.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * jodit - Jodit is an awesome and useful wysiwyg editor with filebrowser
3
3
  * Author: Chupurnov <chupurnov@gmail.com> (https://xdsoft.net/jodit/)
4
- * Version: v4.14.4
4
+ * Version: v4.14.6
5
5
  * Url: https://xdsoft.net/jodit/
6
6
  * License(s): MIT
7
7
  */
@@ -1785,7 +1785,7 @@ __webpack_require__.r(__webpack_exports__);
1785
1785
  * ```
1786
1786
  * @packageDocumentation
1787
1787
  * @module constants
1788
- */ const APP_VERSION = "4.14.4";
1788
+ */ const APP_VERSION = "4.14.6";
1789
1789
  // prettier-ignore
1790
1790
  const ES = "es2015";
1791
1791
  const IS_ES_MODERN = true;
@@ -3085,7 +3085,7 @@ const TEMP_ELEMENT_REG_EXP = new RegExp(`<([a-z]+)[^>]+${jodit_core_constants__W
3085
3085
  const first = current;
3086
3086
  let last = current;
3087
3087
  editor.s.save();
3088
- let needFindNext = false;
3088
+ let needFindNext;
3089
3089
  do {
3090
3090
  needFindNext = false;
3091
3091
  tmp = last.nextSibling;
@@ -3120,7 +3120,7 @@ const TEMP_ELEMENT_REG_EXP = new RegExp(`<([a-z]+)[^>]+${jodit_core_constants__W
3120
3120
  let first = current;
3121
3121
  let last = current;
3122
3122
  editor.s.save();
3123
- let needFindNext = false;
3123
+ let needFindNext;
3124
3124
  do {
3125
3125
  needFindNext = false;
3126
3126
  tmp = first.previousSibling;
@@ -4800,7 +4800,7 @@ const boxes = new WeakMap();
4800
4800
  const name = (0,jodit_core_helpers_checker_is_string__WEBPACK_IMPORTED_MODULE_1__.isString)(classFunc) ? classFunc : classFunc ? (0,jodit_core_helpers_utils_get_class_name__WEBPACK_IMPORTED_MODULE_6__.getClassName)(classFunc.prototype) : 'jodit-utils';
4801
4801
  const data = boxes.get(jodit) || {}, key = name + tag;
4802
4802
  const view = (0,jodit_core_helpers_checker_is_view_object__WEBPACK_IMPORTED_MODULE_2__.isViewObject)(jodit) ? jodit : jodit.j;
4803
- let body = null;
4803
+ let body;
4804
4804
  if (!data[key]) {
4805
4805
  let c = view.c;
4806
4806
  body = getPopupViewRoot(view.o, view.container, jodit.od.body);
@@ -5049,7 +5049,7 @@ const boxes = new WeakMap();
5049
5049
  /**
5050
5050
  * Check if browser has a color picker (a new HTML5 attribute for input tag)
5051
5051
  */ function hasBrowserColorPicker() {
5052
- let supportsColor = true;
5052
+ let supportsColor;
5053
5053
  try {
5054
5054
  const a = jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.globalDocument.createElement('input');
5055
5055
  a.type = 'color';
@@ -5883,7 +5883,7 @@ function normalizeCSS(s) {
5883
5883
  const iframe = jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.globalDocument.createElement('iframe');
5884
5884
  (0,jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_4__.css)(iframe, 'display', 'none');
5885
5885
  jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.append(jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.globalDocument.body, iframe);
5886
- let convertedString = '', collection = [];
5886
+ let convertedString = '', collection;
5887
5887
  try {
5888
5888
  const iframeDoc = iframe.contentDocument || (iframe.contentWindow ? iframe.contentWindow.document : null);
5889
5889
  if (iframeDoc) {
@@ -7222,7 +7222,7 @@ function size(subject) {
7222
7222
  * Finds the position of the substring in the string, if any, and returns the length of the found subsequence.
7223
7223
  * Unlike `indexOf` ignores INVISIBLE_SPACE and may fail at `maxDistance` characters
7224
7224
  */ function fuzzySearchIndex(needle, haystack, offset = 0, maxDistance = 1) {
7225
- let i = 0, j = 0, startIndex = -1, len = 0, errorDistance = 0;
7225
+ let i = 0, j, startIndex = -1, len = 0, errorDistance = 0;
7226
7226
  for(j = offset; i < needle.length && j < haystack.length;){
7227
7227
  if (needle[i].toLowerCase() === haystack[j].toLowerCase()) {
7228
7228
  i++;
@@ -9450,9 +9450,9 @@ const $$temp = ()=>{
9450
9450
  if (parts.some(_is_unsafe_proto_key__WEBPACK_IMPORTED_MODULE_4__.isUnsafeProtoKey)) {
9451
9451
  return;
9452
9452
  }
9453
- let result = obj, key = parts[0];
9453
+ let result = obj;
9454
9454
  for(let i = 0; i < parts.length - 1; i += 1){
9455
- key = parts[i];
9455
+ const key = parts[i];
9456
9456
  if (!(0,jodit_core_helpers_checker_is_array__WEBPACK_IMPORTED_MODULE_0__.isArray)(result[key]) && !(0,jodit_core_helpers_checker_is_plain_object__WEBPACK_IMPORTED_MODULE_2__.isPlainObject)(result[key])) {
9457
9457
  result[key] = (0,jodit_core_helpers_checker_is_numeric__WEBPACK_IMPORTED_MODULE_1__.isNumeric)(parts[i + 1]) ? [] : {};
9458
9458
  }
@@ -13545,7 +13545,6 @@ class AsyncStorage {
13545
13545
  }
13546
13546
  static makeStorage(persistentOrStrategy = false, suffix, options) {
13547
13547
  let provider = undefined;
13548
- let storage = null;
13549
13548
  // An explicit `defaultProvider` overrides the strategy-based selection
13550
13549
  // below and decides which provider backs the storage.
13551
13550
  const defaultProvider = options === null || options === void 0 ? void 0 : options.defaultProvider;
@@ -13570,8 +13569,7 @@ class AsyncStorage {
13570
13569
  if (!provider) {
13571
13570
  provider = new _engines_memory_storage_provider__WEBPACK_IMPORTED_MODULE_5__.MemoryStorageProvider();
13572
13571
  }
13573
- storage = new AsyncStorage(Promise.resolve(provider), suffix);
13574
- return storage;
13572
+ return new AsyncStorage(Promise.resolve(provider), suffix);
13575
13573
  }
13576
13574
  constructor(provider, suffix){
13577
13575
  ;(0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_1__._)(this, "provider", void 0);
@@ -16821,7 +16819,7 @@ class Popup extends jodit_core_ui_group_group__WEBPACK_IMPORTED_MODULE_12__.UIGr
16821
16819
  };
16822
16820
  };
16823
16821
  const getMatchStrategy = (inBox)=>{
16824
- let strategy = null;
16822
+ let strategy;
16825
16823
  if (Popup.boxInView(getPointByStrategy(defaultStrategy), inBox)) {
16826
16824
  strategy = defaultStrategy;
16827
16825
  } else {
@@ -22833,7 +22831,7 @@ class ImageEditor extends jodit_core_component__WEBPACK_IMPORTED_MODULE_2__.View
22833
22831
  h: 0
22834
22832
  }), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "calcCropBox", ()=>{
22835
22833
  const node = this.crop_box.parentNode, w = node.offsetWidth * 0.8, h = node.offsetHeight * 0.8;
22836
- let wn = w, hn = h;
22834
+ let wn, hn;
22837
22835
  const { naturalWidth: nw, naturalHeight: nh } = this;
22838
22836
  if (w > nw && h > nh) {
22839
22837
  wn = nw;
@@ -24034,8 +24032,8 @@ class Table extends jodit_core_component__WEBPACK_IMPORTED_MODULE_2__.ViewCompon
24034
24032
  }
24035
24033
  }
24036
24034
  static __removeExtraRowspans(box, marked) {
24037
- let i = 0;
24038
- let j = 0;
24035
+ let i;
24036
+ let j;
24039
24037
  for(i = 0; i < box.length; i += 1){
24040
24038
  let min = 1000000;
24041
24039
  let not = false;
@@ -26190,7 +26188,6 @@ jodit_core_ui__WEBPACK_IMPORTED_MODULE_2__.Icon.set('palette', (_palette_svg__WE
26190
26188
  button
26191
26189
  ])
26192
26190
  ]);
26193
- currentImage = null;
26194
26191
  if (elm && !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isText(elm) && !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isComment(elm) && (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(elm, 'img') || (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_1__.$$)('img', elm).length)) {
26195
26192
  currentImage = elm.tagName === 'IMG' ? elm : (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_1__.$$)('img', elm)[0];
26196
26193
  val(form.container, 'url', (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_1__.attr)(currentImage, 'src'));
@@ -27611,7 +27608,6 @@ function checkRemoveChar(jodit, fakeNode, backspace, mode) {
27611
27608
  }
27612
27609
  if (removeNeighbor) {
27613
27610
  jodit_core_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(removeNeighbor);
27614
- removeNeighbor = null;
27615
27611
  }
27616
27612
  if (charRemoved) {
27617
27613
  removeEmptyForParent(fakeNode, 'a');
@@ -29213,7 +29209,6 @@ __webpack_require__.r(__webpack_exports__);
29213
29209
  */ function replaceOldTags(jodit, nodeElm, hadEffect) {
29214
29210
  const newNodeElm = replaceIfMatched(jodit, nodeElm, jodit.o.cleanHTML.replaceOldTags);
29215
29211
  if (nodeElm !== newNodeElm) {
29216
- nodeElm = newNodeElm;
29217
29212
  return true;
29218
29213
  }
29219
29214
  return hadEffect;
@@ -29875,7 +29870,7 @@ jodit_config__WEBPACK_IMPORTED_MODULE_3__.Config.prototype.controls.brush = {
29875
29870
  button.state.activated = false;
29876
29871
  },
29877
29872
  popup: (editor, current, close, button)=>{
29878
- let colorHEX = '', bg_color = '', tabs = [], currentElement = null;
29873
+ let colorHEX = '', bg_color = '', tabs, currentElement = null;
29879
29874
  if (current && current !== editor.editor && jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isNode(current)) {
29880
29875
  if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(current) && editor.s.isCollapsed() && !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(current, new Set([
29881
29876
  'br',
@@ -32861,6 +32856,25 @@ jodit_config__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeSandbox = null;
32861
32856
  }
32862
32857
  return html;
32863
32858
  };
32859
+ /**
32860
+ * Replace the whole iframe document with the given HTML.
32861
+ *
32862
+ * The markup is parsed in an inert document first (no browsing
32863
+ * context: scripts do not run, sub-resources are not fetched),
32864
+ * sanitized there via `safeHTML`, and only then moved into the
32865
+ * live document. `document.write` on the live document would
32866
+ * execute inline scripts and event handlers while parsing,
32867
+ * before the sanitizer had a chance to strip them, and the
32868
+ * iframe is same-origin with the host page by default.
32869
+ * A `<script>` the cleaner is configured to keep still never
32870
+ * executes: nodes coming from an inert parser are flagged
32871
+ * "already started", exactly like `innerHTML`.
32872
+ * See GHSA-w3xv-x3fm-59ph.
32873
+ */ const replaceDocument = (html)=>{
32874
+ const inert = new DOMParser().parseFromString(html, 'text/html');
32875
+ editor.e.fire('safeHTML', inert.documentElement);
32876
+ doc.replaceChild(doc.adoptNode(inert.documentElement), doc.documentElement);
32877
+ };
32864
32878
  if (docMode) {
32865
32879
  const tag = editor.element.tagName;
32866
32880
  if (tag !== 'TEXTAREA' && tag !== 'INPUT') {
@@ -32873,19 +32887,20 @@ jodit_config__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeSandbox = null;
32873
32887
  if (/<(html|body)/i.test(value)) {
32874
32888
  const old = doc.documentElement.outerHTML;
32875
32889
  if (clearMarkers(old) !== clearMarkers(value)) {
32876
- doc.open();
32877
- doc.write(editor.o.iframeDoctype + clearMarkers(value));
32878
- doc.close();
32890
+ replaceDocument(clearMarkers(value));
32879
32891
  editor.editor = doc.body;
32880
- editor.e.fire('safeHTML', editor.editor);
32881
32892
  toggleEditable();
32882
32893
  editor.e.fire('prepareWYSIWYGEditor');
32883
32894
  editor.e.stopPropagation('beforeSetNativeEditorValue');
32884
32895
  }
32885
- } else {
32886
- doc.body.innerHTML = value;
32896
+ return true;
32887
32897
  }
32888
- return true;
32898
+ // A partial value goes through the regular
32899
+ // path: `clean-html` sanitizes it and the
32900
+ // editor assigns it to `doc.body` via
32901
+ // `innerHTML`. Writing the raw value here
32902
+ // would fire its event handlers first.
32903
+ return false;
32889
32904
  }, {
32890
32905
  top: true
32891
32906
  });
@@ -39094,11 +39109,11 @@ const key = 'table_processor_observer-resize';
39094
39109
  this.startX = event.clientX;
39095
39110
  this.j.lock(key);
39096
39111
  this.resizeHandler.classList.add('jodit-table-resizer_moved');
39097
- let box, tableBox = this.workTable.getBoundingClientRect();
39112
+ let box;
39098
39113
  this.minX = 0;
39099
39114
  this.maxX = 1000000;
39100
39115
  if (this.wholeTable != null) {
39101
- tableBox = this.workTable.parentNode.getBoundingClientRect();
39116
+ const tableBox = this.workTable.parentNode.getBoundingClientRect();
39102
39117
  this.minX = tableBox.left;
39103
39118
  this.maxX = this.minX + tableBox.width;
39104
39119
  } else {
@@ -39634,7 +39649,7 @@ const keyBInd = '__jodit-resizer_binded';
39634
39649
  diff_y = this.pointerY - this.startY;
39635
39650
  }
39636
39651
  const className = this.handle.className;
39637
- let new_w = 0, new_h = 0;
39652
+ let new_w, new_h;
39638
39653
  const uar = this.j.o.resizer.useAspectRatio;
39639
39654
  if (!this.isAltMode && (uar === true || uar && jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.isTag(this.element, uar))) {
39640
39655
  if (diff_x) {
@@ -40199,7 +40214,7 @@ class SentenceFinder {
40199
40214
  }
40200
40215
  ranges(needle, position = 0) {
40201
40216
  const results = [];
40202
- let index = position, len = 0, startQueueIndex = 0;
40217
+ let index = position, len, startQueueIndex = 0;
40203
40218
  // Find all ranges in substring
40204
40219
  do {
40205
40220
  [index, len] = this.searchIndex(needle, this.value, index);
@@ -42391,7 +42406,7 @@ class SourceEditor {
42391
42406
  return;
42392
42407
  }
42393
42408
  let value = this.getMirrorValue();
42394
- let selectionStart = 0, selectionEnd = 0;
42409
+ let selectionStart, selectionEnd;
42395
42410
  try {
42396
42411
  value = value.replace(/<span[^>]+data-jodit-selection_marker=(["'])start\1[^>]*>[<>]*?<\/span>/gim, this.tempMarkerStart).replace(/<span[^>]+data-jodit-selection_marker=(["'])end\1[^>]*>[<>]*?<\/span>/gim, this.tempMarkerEnd);
42397
42412
  if (!this.j.o.editHTMLDocumentMode && this.j.o.beautifyHTML) {
@@ -44647,7 +44662,7 @@ jodit_config__WEBPACK_IMPORTED_MODULE_5__.Config.prototype.controls.table = {
44647
44662
  return;
44648
44663
  }
44649
44664
  const index = parseInt((0,jodit_core_helpers_utils__WEBPACK_IMPORTED_MODULE_3__.attr)(e.target, '-index') || '0', 10), row = Math.floor(index / default_cols_count), col = index % default_cols_count;
44650
- let nextIndex = index;
44665
+ let nextIndex;
44651
44666
  switch(e.key){
44652
44667
  case jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.KEY_LEFT:
44653
44668
  nextIndex = col > 0 ? index - 1 : index;