jodit 4.13.25 → 4.13.27

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 (55) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/es2015/jodit.css +1 -1
  3. package/es2015/jodit.fat.min.js +4 -4
  4. package/es2015/jodit.js +44 -11
  5. package/es2015/jodit.min.js +4 -4
  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 +4 -4
  13. package/es2018/jodit.min.js +4 -4
  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 +5 -5
  18. package/es2021/jodit.js +43 -11
  19. package/es2021/jodit.min.js +5 -5
  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 +5 -5
  28. package/es2021.en/jodit.js +43 -11
  29. package/es2021.en/jodit.min.js +25 -25
  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 +44 -11
  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/selection/style/api/get-suit-parent.js +10 -0
  52. package/esm/core/ui/popup/popup.js +13 -1
  53. package/esm/modules/toolbar/button/button.js +19 -11
  54. package/esm/modules/widget/color-picker/color-picker.js +8 -0
  55. package/package.json +1 -1
package/es5/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.13.25
4
+ * Version: v4.13.27
5
5
  * Url: https://xdsoft.net/jodit/
6
6
  * License(s): MIT
7
7
  */
@@ -2107,7 +2107,7 @@ __webpack_require__.r(__webpack_exports__);
2107
2107
  * @packageDocumentation
2108
2108
  * @module constants
2109
2109
  */
2110
- var APP_VERSION = "4.13.25";
2110
+ var APP_VERSION = "4.13.27";
2111
2111
  // prettier-ignore
2112
2112
  var ES = "es5";
2113
2113
  var IS_ES_MODERN = false;
@@ -13722,6 +13722,7 @@ var Selection = /*#__PURE__*/ function() {
13722
13722
  * @param root - editor root
13723
13723
  * @private
13724
13724
  */ function getSuitParent(style, node, root) {
13725
+ var _style_options_attributes;
13725
13726
  var parentNode = node.parentNode;
13726
13727
  if (parentNode === root || !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isHTMLElement(parentNode) || jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.next(node, _is_normal_node__WEBPACK_IMPORTED_MODULE_1__.isNormalNode, parentNode) || jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.prev(node, _is_normal_node__WEBPACK_IMPORTED_MODULE_1__.isNormalNode, parentNode)) {
13727
13728
  return null;
@@ -13730,6 +13731,13 @@ var Selection = /*#__PURE__*/ function() {
13730
13731
  if (style.isElementCommit && style.elementIsBlock && !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(parentNode)) {
13731
13732
  return getSuitParent(style, parentNode, root);
13732
13733
  }
13734
+ // <li>|test|</li> => apply the CSS style to the <li> itself, so the
13735
+ // list marker (bullet/number) gets the same color and size as the text.
13736
+ // Only for pure style commits: bold/italic keep wrapping the content.
13737
+ // See #1460
13738
+ if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(parentNode, 'li') && !style.isElementCommit && ((_style_options_attributes = style.options.attributes) === null || _style_options_attributes === void 0 ? void 0 : _style_options_attributes.style)) {
13739
+ return parentNode;
13740
+ }
13733
13741
  if ((0,_is_suit_element__WEBPACK_IMPORTED_MODULE_2__.isSuitElement)(style, parentNode, false) && (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(parentNode) || style.elementIsBlock)) {
13734
13742
  return parentNode;
13735
13743
  }
@@ -19910,6 +19918,15 @@ var Popup = /*#__PURE__*/ function(UIGroup) {
19910
19918
  this.j.e.fire(this, 'beforeClose');
19911
19919
  this.j.e.fire('beforePopupClose', this);
19912
19920
  this.__removeGlobalListeners();
19921
+ // Blur a focused control (e.g. the color picker hex input) before
19922
+ // the container goes away. Chrome fires `blur`/`change` for a
19923
+ // removed focused element in the middle of `removeChild`, Firefox
19924
+ // does not fire them at all. Blurring first makes both browsers
19925
+ // run those handlers while the popup is still in the DOM. See #1458
19926
+ var activeElement = this.od.activeElement;
19927
+ if (activeElement && activeElement !== this.container && jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_13__.Dom.isOrContains(this.container, activeElement) && (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_15__.isFunction)(activeElement.blur)) {
19928
+ activeElement.blur();
19929
+ }
19913
19930
  jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_13__.Dom.safeRemove(this.container);
19914
19931
  return this;
19915
19932
  }
@@ -29215,15 +29232,23 @@ var ToolbarButton = /*#__PURE__*/ function(UIButton) {
29215
29232
  {
29216
29233
  key: "__closePopup",
29217
29234
  value: function __closePopup() {
29218
- if (this.openedPopup) {
29219
- this.j.e.off(this.ow, 'mousedown touchstart', this.onOutsideClick).off('escape closeAllPopups', this.onOutsideClick);
29220
- this.state.activated = false;
29221
- this.openedPopup.close();
29222
- this.openedPopup.destruct();
29223
- this.openedPopup = null;
29224
- if (this.trigger) {
29225
- (0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_27__.attr)(this.trigger, 'aria-expanded', false);
29226
- }
29235
+ var popup = this.openedPopup;
29236
+ if (!popup) {
29237
+ return;
29238
+ }
29239
+ // Detach first: removing a popup that holds the focused element
29240
+ // makes Chrome fire `blur`/`change` on it synchronously, and a
29241
+ // handler there may call the popup's `close` callback again.
29242
+ // A re-entrant call must be a no-op, otherwise it destructs the
29243
+ // popup while the outer `removeChild` is still running and Chrome
29244
+ // throws NotFoundError. See #1458
29245
+ this.openedPopup = null;
29246
+ this.j.e.off(this.ow, 'mousedown touchstart', this.onOutsideClick).off('escape closeAllPopups', this.onOutsideClick);
29247
+ this.state.activated = false;
29248
+ popup.close();
29249
+ popup.destruct();
29250
+ if (this.trigger) {
29251
+ (0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_27__.attr)(this.trigger, 'aria-expanded', false);
29227
29252
  }
29228
29253
  }
29229
29254
  },
@@ -30820,8 +30845,15 @@ jodit_core_ui__WEBPACK_IMPORTED_MODULE_2__.Icon.set('palette', (_palette_svg__WE
30820
30845
  var extra = (0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_1__.refs)(form).extra;
30821
30846
  extra.appendChild(editor.c.fromHTML('<div class="'.concat(cn, '__hex"><input data-ref="hexInput" type="text" spellcheck="false" aria-label="HEX" placeholder="#FF0000" value="').concat(valueHex || '', '"/></div>')));
30822
30847
  var hexInput = (0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_1__.refs)(form).hexInput;
30848
+ // Enter applies the value and closes the popup; removing the focused
30849
+ // input then makes Chrome fire `change` on it, which would apply the
30850
+ // same color a second time and toggle it off again. See #1459
30851
+ var appliedHexValue = null;
30823
30852
  var applyHexInput = function applyHexInput() {
30824
30853
  var raw = hexInput.value.trim();
30854
+ if (raw === appliedHexValue) {
30855
+ return;
30856
+ }
30825
30857
  var isHex = /^#?[0-9a-f]{3}(?:[0-9a-f]{3})?$/i.test(raw);
30826
30858
  var isRgb = /^rgba?\([\d\s.,%]+\)$/i.test(raw);
30827
30859
  if (!isHex && !isRgb) {
@@ -30829,6 +30861,7 @@ jodit_core_ui__WEBPACK_IMPORTED_MODULE_2__.Icon.set('palette', (_palette_svg__WE
30829
30861
  }
30830
30862
  var color = (0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_1__.normalizeColor)(isHex && !raw.startsWith('#') ? '#' + raw : raw);
30831
30863
  if (color && (0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_1__.isFunction)(callback)) {
30864
+ appliedHexValue = raw;
30832
30865
  callback(color);
30833
30866
  }
30834
30867
  };
package/es5/jodit.min.css CHANGED
@@ -1,14 +1,14 @@
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.13.25
4
+ * Version: v4.13.27
5
5
  * Url: https://xdsoft.net/jodit/
6
6
  * License(s): MIT
7
7
  */
8
8
  /*!
9
9
  * jodit - Jodit is an awesome and useful wysiwyg editor with filebrowser
10
10
  * Author: Chupurnov <chupurnov@gmail.com> (https://xdsoft.net/jodit/)
11
- * Version: v4.13.25
11
+ * Version: v4.13.27
12
12
  * Url: https://xdsoft.net/jodit/
13
13
  * License(s): MIT
14
14
  */