jodit 4.12.6 → 4.12.8

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 (60) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/es2015/jodit.css +1 -1
  3. package/es2015/jodit.fat.min.js +5 -5
  4. package/es2015/jodit.js +115 -33
  5. package/es2015/jodit.min.js +5 -5
  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 +5 -5
  13. package/es2018/jodit.min.js +5 -5
  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 +6 -6
  18. package/es2021/jodit.js +114 -33
  19. package/es2021/jodit.min.js +6 -6
  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 +6 -6
  28. package/es2021.en/jodit.js +114 -33
  29. package/es2021.en/jodit.min.js +6 -6
  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 +114 -32
  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/helpers/size/get-fixed-position-offset.d.ts +21 -0
  52. package/esm/core/helpers/size/get-fixed-position-offset.js +46 -0
  53. package/esm/core/helpers/size/index.d.ts +1 -0
  54. package/esm/core/helpers/size/index.js +1 -0
  55. package/esm/core/ui/button/tooltip/tooltip.js +9 -3
  56. package/esm/core/ui/popup/popup.js +7 -3
  57. package/esm/modules/table/table.js +16 -2
  58. package/package.json +1 -1
  59. package/types/core/helpers/size/get-fixed-position-offset.d.ts +21 -0
  60. package/types/core/helpers/size/index.d.ts +1 -0
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.12.6
4
+ * Version: v4.12.8
5
5
  * Url: https://xdsoft.net/jodit/
6
6
  * License(s): MIT
7
7
  */
@@ -1808,7 +1808,7 @@ __webpack_require__.r(__webpack_exports__);
1808
1808
  * ```
1809
1809
  * @packageDocumentation
1810
1810
  * @module constants
1811
- */ const APP_VERSION = "4.12.6";
1811
+ */ const APP_VERSION = "4.12.8";
1812
1812
  // prettier-ignore
1813
1813
  const ES = "es2015";
1814
1814
  const IS_ES_MODERN = true;
@@ -6198,6 +6198,7 @@ __webpack_require__.r(__webpack_exports__);
6198
6198
  /* harmony export */ colorToHex: function() { return /* reexport safe */ _color__WEBPACK_IMPORTED_MODULE_3__.colorToHex; },
6199
6199
  /* harmony export */ fuzzySearchIndex: function() { return /* reexport safe */ _string__WEBPACK_IMPORTED_MODULE_7__.fuzzySearchIndex; },
6200
6200
  /* harmony export */ getContentWidth: function() { return /* reexport safe */ _size__WEBPACK_IMPORTED_MODULE_6__.getContentWidth; },
6201
+ /* harmony export */ getFixedPositionOffset: function() { return /* reexport safe */ _size__WEBPACK_IMPORTED_MODULE_6__.getFixedPositionOffset; },
6201
6202
  /* harmony export */ getScrollParent: function() { return /* reexport safe */ _size__WEBPACK_IMPORTED_MODULE_6__.getScrollParent; },
6202
6203
  /* harmony export */ hasBrowserColorPicker: function() { return /* reexport safe */ _checker__WEBPACK_IMPORTED_MODULE_2__.hasBrowserColorPicker; },
6203
6204
  /* harmony export */ hasContainer: function() { return /* reexport safe */ _checker__WEBPACK_IMPORTED_MODULE_2__.hasContainer; },
@@ -6268,7 +6269,7 @@ __webpack_require__.r(__webpack_exports__);
6268
6269
  /* harmony import */ var _string__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(97642);
6269
6270
  /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(93640);
6270
6271
  /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};
6271
- /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _utils__WEBPACK_IMPORTED_MODULE_8__) if(["default","asArray","splitArray","toArray","clearTimeout","setTimeout","hasBrowserColorPicker","hasContainer","isAbortError","isArray","isBoolean","isDestructable","isEqual","isFastEqual","isFunction","isHTML","isHtmlFromWord","isInitable","isInt","isJoditObject","isLicense","isMarker","isNativeFunction","isNumber","isNumeric","isPlainObject","isPromise","isSet","isString","isStringArray","isURL","isValidName","isViewObject","isVoid","isWindow","colorToHex","applyStyles","cleanFromWord","htmlspecialchars","nl2br","safeHTML","sanitizeHTMLElement","stripTags","NUMBER_FIELDS_REG","normalizeColor","normalizeCssNumericValue","normalizeCssValue","normalizeKeyAliases","normalizeLicense","normalizePath","normalizeRelativePath","normalizeSize","normalizeUrl","getContentWidth","getScrollParent","innerWidth","offset","position","size","CamelCaseToKebabCase","camelCase","fuzzySearchIndex","i18n","kebabCase","sprintf","stringify","trim","trimChars","trimInv","ucfirst"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _utils__WEBPACK_IMPORTED_MODULE_8__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)
6272
+ /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _utils__WEBPACK_IMPORTED_MODULE_8__) if(["default","asArray","splitArray","toArray","clearTimeout","setTimeout","hasBrowserColorPicker","hasContainer","isAbortError","isArray","isBoolean","isDestructable","isEqual","isFastEqual","isFunction","isHTML","isHtmlFromWord","isInitable","isInt","isJoditObject","isLicense","isMarker","isNativeFunction","isNumber","isNumeric","isPlainObject","isPromise","isSet","isString","isStringArray","isURL","isValidName","isViewObject","isVoid","isWindow","colorToHex","applyStyles","cleanFromWord","htmlspecialchars","nl2br","safeHTML","sanitizeHTMLElement","stripTags","NUMBER_FIELDS_REG","normalizeColor","normalizeCssNumericValue","normalizeCssValue","normalizeKeyAliases","normalizeLicense","normalizePath","normalizeRelativePath","normalizeSize","normalizeUrl","getContentWidth","getFixedPositionOffset","getScrollParent","innerWidth","offset","position","size","CamelCaseToKebabCase","camelCase","fuzzySearchIndex","i18n","kebabCase","sprintf","stringify","trim","trimChars","trimInv","ucfirst"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _utils__WEBPACK_IMPORTED_MODULE_8__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)
6272
6273
  /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
6273
6274
  /*!
6274
6275
  * Jodit Editor (https://xdsoft.net/jodit/)
@@ -6649,6 +6650,59 @@ function normalizeCssValue(key, value) {
6649
6650
  };
6650
6651
 
6651
6652
 
6653
+ /***/ }),
6654
+
6655
+ /***/ 2373:
6656
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
6657
+
6658
+ "use strict";
6659
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
6660
+ /* harmony export */ getFixedPositionOffset: function() { return /* binding */ getFixedPositionOffset; }
6661
+ /* harmony export */ });
6662
+ /*!
6663
+ * Jodit Editor (https://xdsoft.net/jodit/)
6664
+ * Released under MIT see LICENSE.txt in the project root for license information.
6665
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
6666
+ */ /**
6667
+ * @module helpers/size
6668
+ */ /**
6669
+ * Whether the element establishes a containing block for its
6670
+ * `position: fixed` descendants, so their coordinates become relative to it
6671
+ * instead of the viewport.
6672
+ */ function isContainingBlockForFixed(style) {
6673
+ return style.transform !== '' && style.transform !== 'none' || style.perspective !== '' && style.perspective !== 'none' || style.filter !== '' && style.filter !== 'none' || style.willChange === 'transform' || style.willChange === 'perspective' || style.willChange === 'filter' || style.contain === 'paint' || style.contain === 'layout' || style.contain === 'strict' || style.contain === 'content';
6674
+ }
6675
+ /**
6676
+ * Returns the viewport offset of the containing block of a `position: fixed`
6677
+ * descendant of `elm`. A fixed element is normally positioned relative to the
6678
+ * viewport, but an ancestor with `transform`, `filter`, `perspective`, etc.
6679
+ * establishes a new containing block, shifting the fixed element by that
6680
+ * ancestor's top-left corner. The returned offset should be subtracted from
6681
+ * the desired viewport coordinates before applying them.
6682
+ *
6683
+ * Returns `{ x: 0, y: 0 }` when no such ancestor exists (the common case), so
6684
+ * call sites keep their previous behaviour unchanged.
6685
+ */ function getFixedPositionOffset(elm) {
6686
+ var _elm_ownerDocument;
6687
+ const win = (_elm_ownerDocument = elm.ownerDocument) === null || _elm_ownerDocument === void 0 ? void 0 : _elm_ownerDocument.defaultView;
6688
+ let node = elm.parentElement;
6689
+ while(win && node){
6690
+ if (isContainingBlockForFixed(win.getComputedStyle(node))) {
6691
+ const rect = node.getBoundingClientRect();
6692
+ return {
6693
+ x: rect.left,
6694
+ y: rect.top
6695
+ };
6696
+ }
6697
+ node = node.parentElement;
6698
+ }
6699
+ return {
6700
+ x: 0,
6701
+ y: 0
6702
+ };
6703
+ }
6704
+
6705
+
6652
6706
  /***/ }),
6653
6707
 
6654
6708
  /***/ 34027:
@@ -6692,18 +6746,20 @@ function getScrollParent(node) {
6692
6746
  "use strict";
6693
6747
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
6694
6748
  /* harmony export */ getContentWidth: function() { return /* reexport safe */ _get_content_width__WEBPACK_IMPORTED_MODULE_0__.getContentWidth; },
6695
- /* harmony export */ getScrollParent: function() { return /* reexport safe */ _get_scroll_parent__WEBPACK_IMPORTED_MODULE_1__.getScrollParent; },
6696
- /* harmony export */ innerWidth: function() { return /* reexport safe */ _inner_width__WEBPACK_IMPORTED_MODULE_2__.innerWidth; },
6697
- /* harmony export */ offset: function() { return /* reexport safe */ _offset__WEBPACK_IMPORTED_MODULE_4__.offset; },
6698
- /* harmony export */ position: function() { return /* reexport safe */ _position__WEBPACK_IMPORTED_MODULE_5__.position; },
6699
- /* harmony export */ size: function() { return /* reexport safe */ _object_size__WEBPACK_IMPORTED_MODULE_3__.size; }
6749
+ /* harmony export */ getFixedPositionOffset: function() { return /* reexport safe */ _get_fixed_position_offset__WEBPACK_IMPORTED_MODULE_1__.getFixedPositionOffset; },
6750
+ /* harmony export */ getScrollParent: function() { return /* reexport safe */ _get_scroll_parent__WEBPACK_IMPORTED_MODULE_2__.getScrollParent; },
6751
+ /* harmony export */ innerWidth: function() { return /* reexport safe */ _inner_width__WEBPACK_IMPORTED_MODULE_3__.innerWidth; },
6752
+ /* harmony export */ offset: function() { return /* reexport safe */ _offset__WEBPACK_IMPORTED_MODULE_5__.offset; },
6753
+ /* harmony export */ position: function() { return /* reexport safe */ _position__WEBPACK_IMPORTED_MODULE_6__.position; },
6754
+ /* harmony export */ size: function() { return /* reexport safe */ _object_size__WEBPACK_IMPORTED_MODULE_4__.size; }
6700
6755
  /* harmony export */ });
6701
6756
  /* harmony import */ var _get_content_width__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(54447);
6702
- /* harmony import */ var _get_scroll_parent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(34027);
6703
- /* harmony import */ var _inner_width__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(83215);
6704
- /* harmony import */ var _object_size__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(18073);
6705
- /* harmony import */ var _offset__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(69143);
6706
- /* harmony import */ var _position__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(23599);
6757
+ /* harmony import */ var _get_fixed_position_offset__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2373);
6758
+ /* harmony import */ var _get_scroll_parent__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(34027);
6759
+ /* harmony import */ var _inner_width__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(83215);
6760
+ /* harmony import */ var _object_size__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(18073);
6761
+ /* harmony import */ var _offset__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(69143);
6762
+ /* harmony import */ var _position__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(23599);
6707
6763
  /*!
6708
6764
  * Jodit Editor (https://xdsoft.net/jodit/)
6709
6765
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -6718,6 +6774,7 @@ function getScrollParent(node) {
6718
6774
 
6719
6775
 
6720
6776
 
6777
+
6721
6778
  /***/ }),
6722
6779
 
6723
6780
  /***/ 83215:
@@ -13801,9 +13858,10 @@ UIButtonGroup = (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decor
13801
13858
  /* harmony import */ var jodit_core_decorators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(84839);
13802
13859
  /* harmony import */ var jodit_core_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(27795);
13803
13860
  /* harmony import */ var jodit_core_global__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(28077);
13804
- /* harmony import */ var jodit_core_helpers_size_position__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(23599);
13805
- /* harmony import */ var jodit_core_helpers_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(93640);
13806
- /* harmony import */ var jodit_core_ui_element__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(96007);
13861
+ /* harmony import */ var jodit_core_helpers_size_get_fixed_position_offset__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(2373);
13862
+ /* harmony import */ var jodit_core_helpers_size_position__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(23599);
13863
+ /* harmony import */ var jodit_core_helpers_utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(93640);
13864
+ /* harmony import */ var jodit_core_ui_element__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(96007);
13807
13865
  /*!
13808
13866
  * Jodit Editor (https://xdsoft.net/jodit/)
13809
13867
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -13822,6 +13880,7 @@ UIButtonGroup = (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decor
13822
13880
 
13823
13881
 
13824
13882
 
13883
+
13825
13884
  const WINDOW_EVENTS_ON_HIDE = [
13826
13885
  'scroll.tooltip',
13827
13886
  'joditCloseDialog',
@@ -13836,7 +13895,7 @@ const JODIT_EVENTS_ON_HIDE = [
13836
13895
  'beforePopupClose.tooltip',
13837
13896
  'closeAllPopups.tooltip'
13838
13897
  ];
13839
- class UITooltip extends jodit_core_ui_element__WEBPACK_IMPORTED_MODULE_8__.UIElement {
13898
+ class UITooltip extends jodit_core_ui_element__WEBPACK_IMPORTED_MODULE_9__.UIElement {
13840
13899
  className() {
13841
13900
  return 'UITooltip';
13842
13901
  }
@@ -13882,11 +13941,11 @@ class UITooltip extends jodit_core_ui_element__WEBPACK_IMPORTED_MODULE_8__.UIEle
13882
13941
  if (!jodit_core_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.isHTMLElement(e.target)) {
13883
13942
  return;
13884
13943
  }
13885
- const tooltip = (0,jodit_core_helpers_utils__WEBPACK_IMPORTED_MODULE_7__.attr)(e.target, 'aria-label');
13944
+ const tooltip = (0,jodit_core_helpers_utils__WEBPACK_IMPORTED_MODULE_8__.attr)(e.target, 'aria-label');
13886
13945
  if (!tooltip) {
13887
13946
  return;
13888
13947
  }
13889
- const disabled = Boolean((0,jodit_core_helpers_utils__WEBPACK_IMPORTED_MODULE_7__.attr)(e.target, 'disabled'));
13948
+ const disabled = Boolean((0,jodit_core_helpers_utils__WEBPACK_IMPORTED_MODULE_8__.attr)(e.target, 'disabled'));
13890
13949
  if (disabled) {
13891
13950
  return;
13892
13951
  }
@@ -13897,7 +13956,7 @@ class UITooltip extends jodit_core_ui_element__WEBPACK_IMPORTED_MODULE_8__.UIEle
13897
13956
  this.__currentTarget = e.target;
13898
13957
  const target = e.target;
13899
13958
  this.__open(()=>{
13900
- const pos = (0,jodit_core_helpers_size_position__WEBPACK_IMPORTED_MODULE_6__.position)(target);
13959
+ const pos = (0,jodit_core_helpers_size_position__WEBPACK_IMPORTED_MODULE_7__.position)(target);
13901
13960
  return {
13902
13961
  x: pos.left + pos.width / 2,
13903
13962
  y: pos.top + pos.height
@@ -13921,18 +13980,23 @@ class UITooltip extends jodit_core_ui_element__WEBPACK_IMPORTED_MODULE_8__.UIEle
13921
13980
  this.setMod('above', false);
13922
13981
  this.getElm('content').innerHTML = content;
13923
13982
  const point = getPoint();
13924
- (0,jodit_core_helpers_utils__WEBPACK_IMPORTED_MODULE_7__.css)(this.container, {
13925
- left: point.x,
13926
- top: point.y
13927
- });
13928
- const tooltipPos = (0,jodit_core_helpers_size_position__WEBPACK_IMPORTED_MODULE_6__.position)(this.container);
13983
+ // The tooltip is `position: fixed`. If it is rendered inside an ancestor
13984
+ // with a `transform` (e.g. an editor placed in a modal/flyout), that
13985
+ // ancestor becomes the containing block, so viewport coordinates must be
13986
+ // shifted by its offset. Returns `{0, 0}` when there is no such ancestor.
13987
+ const offset = (0,jodit_core_helpers_size_get_fixed_position_offset__WEBPACK_IMPORTED_MODULE_6__.getFixedPositionOffset)(this.container);
13988
+ (0,jodit_core_helpers_utils__WEBPACK_IMPORTED_MODULE_8__.css)(this.container, {
13989
+ left: point.x - offset.x,
13990
+ top: point.y - offset.y
13991
+ });
13992
+ const tooltipPos = (0,jodit_core_helpers_size_position__WEBPACK_IMPORTED_MODULE_7__.position)(this.container);
13929
13993
  const viewHeight = this.j.ow.innerHeight;
13930
13994
  // If tooltip overflows below viewport, show it above the target
13931
13995
  if (tooltipPos.top + tooltipPos.height > viewHeight) {
13932
- const targetPos = (0,jodit_core_helpers_size_position__WEBPACK_IMPORTED_MODULE_6__.position)(this.__currentTarget);
13996
+ const targetPos = (0,jodit_core_helpers_size_position__WEBPACK_IMPORTED_MODULE_7__.position)(this.__currentTarget);
13933
13997
  this.setMod('above', true);
13934
- (0,jodit_core_helpers_utils__WEBPACK_IMPORTED_MODULE_7__.css)(this.container, {
13935
- top: targetPos.top - tooltipPos.height
13998
+ (0,jodit_core_helpers_utils__WEBPACK_IMPORTED_MODULE_8__.css)(this.container, {
13999
+ top: targetPos.top - tooltipPos.height - offset.y
13936
14000
  });
13937
14001
  }
13938
14002
  }
@@ -13944,7 +14008,7 @@ class UITooltip extends jodit_core_ui_element__WEBPACK_IMPORTED_MODULE_8__.UIEle
13944
14008
  this.__isOpened = false;
13945
14009
  this.setMod('visible', false);
13946
14010
  this.getElm('content').innerHTML = '';
13947
- (0,jodit_core_helpers_utils__WEBPACK_IMPORTED_MODULE_7__.css)(this.container, {
14011
+ (0,jodit_core_helpers_utils__WEBPACK_IMPORTED_MODULE_8__.css)(this.container, {
13948
14012
  left: -5000
13949
14013
  });
13950
14014
  }
@@ -15904,9 +15968,13 @@ class Popup extends jodit_core_ui_group_group__WEBPACK_IMPORTED_MODULE_11__.UIGr
15904
15968
  }
15905
15969
  const [pos, strategy] = this.__calculatePosition(this.__targetBound(), this.viewBound(), (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_8__.position)(this.container, this.j));
15906
15970
  this.setMod('strategy', strategy);
15971
+ // The popup is `position: fixed`; shift by the containing-block offset
15972
+ // when it is rendered inside a transformed ancestor (e.g. a modal),
15973
+ // otherwise `{0, 0}` keeps the viewport coordinates unchanged.
15974
+ const offset = (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_8__.getFixedPositionOffset)(this.container);
15907
15975
  (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_8__.css)(this.container, {
15908
- left: pos.left,
15909
- top: pos.top
15976
+ left: pos.left - offset.x,
15977
+ top: pos.top - offset.y
15910
15978
  });
15911
15979
  this.__childrenPopups.forEach((popup)=>popup.updatePosition());
15912
15980
  return this;
@@ -22768,8 +22836,22 @@ class Table extends jodit_core_component__WEBPACK_IMPORTED_MODULE_2__.ViewCompon
22768
22836
  }
22769
22837
  const nextRow = jodit_core_dom__WEBPACK_IMPORTED_MODULE_5__.Dom.next(cell.parentNode, (elm)=>jodit_core_dom__WEBPACK_IMPORTED_MODULE_5__.Dom.isTag(elm, 'tr'), table);
22770
22838
  if (nextRow) {
22771
- if (box[rowIndex + 1][nextCell]) {
22772
- nextRow.insertBefore(cell, box[rowIndex + 1][nextCell]);
22839
+ // `box[rowIndex + 1][nextCell]` is the cell that
22840
+ // logically follows the moved cell in the next row, but
22841
+ // it may physically belong to an earlier `<tr>` (when it
22842
+ // spans down from a row above). Inserting before such a
22843
+ // cell throws `NotFoundError`, so look for the first
22844
+ // following cell that is actually a child of `nextRow`.
22845
+ let referenceCell = null;
22846
+ for(let nextColumn = nextCell; nextColumn < box[rowIndex + 1].length; nextColumn += 1){
22847
+ const candidate = box[rowIndex + 1][nextColumn];
22848
+ if (candidate && candidate.parentNode === nextRow) {
22849
+ referenceCell = candidate;
22850
+ break;
22851
+ }
22852
+ }
22853
+ if (referenceCell) {
22854
+ nextRow.insertBefore(cell, referenceCell);
22773
22855
  } else {
22774
22856
  nextRow.appendChild(cell);
22775
22857
  }