jodit 4.13.23 → 4.13.25

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 (56) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/es2015/jodit.css +1 -1
  3. package/es2015/jodit.fat.min.js +2 -2
  4. package/es2015/jodit.js +51 -10
  5. package/es2015/jodit.min.js +2 -2
  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 +2 -2
  13. package/es2018/jodit.min.js +2 -2
  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 +3 -3
  18. package/es2021/jodit.js +51 -9
  19. package/es2021/jodit.min.js +3 -3
  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 +3 -3
  28. package/es2021.en/jodit.js +51 -9
  29. package/es2021.en/jodit.min.js +3 -3
  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 +53 -10
  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/decorators/cache/cache.js +21 -3
  52. package/esm/core/selection/style/api/wrap.d.ts +2 -1
  53. package/esm/core/selection/style/api/wrap.js +12 -2
  54. package/esm/core/selection/style/transactions.js +18 -4
  55. package/package.json +1 -1
  56. package/types/core/selection/style/api/wrap.d.ts +2 -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.23
4
+ * Version: v4.13.25
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.23";
2110
+ var APP_VERSION = "4.13.25";
2111
2111
  // prettier-ignore
2112
2112
  var ES = "es5";
2113
2113
  var IS_ES_MODERN = false;
@@ -2764,24 +2764,45 @@ var Create = /*#__PURE__*/ function() {
2764
2764
  return value;
2765
2765
  };
2766
2766
  }
2767
+ function getOwnerDocument(component) {
2768
+ var od = component.od;
2769
+ return od !== null && od !== void 0 ? od : document;
2770
+ }
2767
2771
  function cacheHTML(target, _, descriptor) {
2768
2772
  var fn = descriptor.value;
2769
2773
  if (!(0,jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_2__.isFunction)(fn)) {
2770
2774
  throw (0,jodit_core_helpers_utils_error_error__WEBPACK_IMPORTED_MODULE_3__.error)('Handler must be a Function');
2771
2775
  }
2772
2776
  var useCache = true;
2773
- var cached = new WeakMap();
2777
+ /**
2778
+ * The cache is keyed by the owner document first and only then by the
2779
+ * component class. A page can create editors inside different documents
2780
+ * (iframes) and destroy those documents later: a template cached from a
2781
+ * dead document would otherwise be cloned for every subsequent editor,
2782
+ * whose buttons then never react to clicks.
2783
+ */ var cached = new WeakMap();
2774
2784
  descriptor.value = function() {
2775
2785
  for(var _len = arguments.length, attrs = new Array(_len), _key = 0; _key < _len; _key++){
2776
2786
  attrs[_key] = arguments[_key];
2777
2787
  }
2778
- if (useCache && cached.has(this.constructor)) {
2779
- var _cached_get;
2780
- return (_cached_get = cached.get(this.constructor)) === null || _cached_get === void 0 ? void 0 : _cached_get.cloneNode(true);
2788
+ var doc = getOwnerDocument(this);
2789
+ var docCache = cached.get(doc);
2790
+ if (useCache && (docCache === null || docCache === void 0 ? void 0 : docCache.has(this.constructor))) {
2791
+ var _docCache_get;
2792
+ return (_docCache_get = docCache.get(this.constructor)) === null || _docCache_get === void 0 ? void 0 : _docCache_get.cloneNode(true);
2781
2793
  }
2782
2794
  var value = fn.apply(this, attrs);
2783
2795
  if (useCache && jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.isElement(value)) {
2784
- cached.set(this.constructor, value);
2796
+ if (docCache) {
2797
+ docCache.set(this.constructor, value);
2798
+ } else {
2799
+ cached.set(doc, new WeakMap([
2800
+ [
2801
+ this.constructor,
2802
+ value
2803
+ ]
2804
+ ]));
2805
+ }
2785
2806
  }
2786
2807
  return useCache ? value.cloneNode(true) : value;
2787
2808
  };
@@ -13804,6 +13825,7 @@ if (jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.globalDocument) {
13804
13825
  "use strict";
13805
13826
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
13806
13827
  /* harmony export */ FiniteStateMachine: function() { return /* reexport safe */ _finite_state_machine__WEBPACK_IMPORTED_MODULE_1__.FiniteStateMachine; },
13828
+ /* harmony export */ WRAP_NODES: function() { return /* reexport safe */ _wrap__WEBPACK_IMPORTED_MODULE_13__.WRAP_NODES; },
13807
13829
  /* harmony export */ extractSelectedPart: function() { return /* reexport safe */ _extract__WEBPACK_IMPORTED_MODULE_0__.extractSelectedPart; },
13808
13830
  /* harmony export */ getSuitChild: function() { return /* reexport safe */ _get_suit_child__WEBPACK_IMPORTED_MODULE_2__.getSuitChild; },
13809
13831
  /* harmony export */ getSuitParent: function() { return /* reexport safe */ _get_suit_parent__WEBPACK_IMPORTED_MODULE_3__.getSuitParent; },
@@ -14480,6 +14502,7 @@ function toggleAttribute(jodit, value, elm, key, dry, mode) {
14480
14502
 
14481
14503
  "use strict";
14482
14504
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
14505
+ /* harmony export */ WRAP_NODES: function() { return /* binding */ WRAP_NODES; },
14483
14506
  /* harmony export */ wrap: function() { return /* binding */ wrap; }
14484
14507
  /* harmony export */ });
14485
14508
  /* harmony import */ var jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(27795);
@@ -14535,7 +14558,7 @@ var WRAP_NODES = new Set([
14535
14558
  */ function findOrCreateWrapper(commitStyle, font, jodit) {
14536
14559
  if (commitStyle.elementIsBlock) {
14537
14560
  var box = jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.up(font, function(node) {
14538
- return jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(node) && !jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(node, WRAP_NODES);
14561
+ return jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(node) && !jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(node, WRAP_NODES) && !hasBlockChildren(node);
14539
14562
  }, jodit.editor);
14540
14563
  if (box) {
14541
14564
  return box;
@@ -14545,6 +14568,15 @@ var WRAP_NODES = new Set([
14545
14568
  (0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_1__.attr)(font, 'size', null);
14546
14569
  return font;
14547
14570
  }
14571
+ /**
14572
+ * A block that itself contains block-level children is a layout container:
14573
+ * replacing it wholesale would merge all its blocks into the new element,
14574
+ * so the selection must be wrapped in a new block inside it instead.
14575
+ */ function hasBlockChildren(node) {
14576
+ return Array.from(node.childNodes).some(function(child) {
14577
+ return jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(child);
14578
+ });
14579
+ }
14548
14580
 
14549
14581
 
14550
14582
  /***/ }),
@@ -14948,12 +14980,23 @@ var transactions = (_obj = {}, (0,_swc_helpers_define_property__WEBPACK_IMPORTED
14948
14980
  }
14949
14981
  }), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(_obj, states.UNWRAP, {
14950
14982
  exec: function exec(value) {
14951
- if (value.element.attributes.length && jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.isTag(value.element, value.style.element)) {
14983
+ var element = value.element, style = value.style, jodit = value.jodit;
14984
+ if (element.attributes.length && jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.isTag(element, style.element)) {
14985
+ return (0,_swc_helpers_object_spread_props__WEBPACK_IMPORTED_MODULE_2__._)((0,_swc_helpers_object_spread__WEBPACK_IMPORTED_MODULE_1__._)({}, value), {
14986
+ next: states.REPLACE_DEFAULT
14987
+ });
14988
+ }
14989
+ // Unwrapping a block inside a container (e.g. an h3 inside a div)
14990
+ // leaves bare inline content there: the wrapNodes plugin restores
14991
+ // paragraphs only at the editor root. Replace such a block with
14992
+ // the default tag instead.
14993
+ var parent = element.parentElement;
14994
+ if (style.elementIsBlock && !style.elementIsDefault && parent && parent !== jodit.editor && jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.isBlock(parent) && !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.isTag(parent, jodit_core_selection_style_api__WEBPACK_IMPORTED_MODULE_6__.WRAP_NODES)) {
14952
14995
  return (0,_swc_helpers_object_spread_props__WEBPACK_IMPORTED_MODULE_2__._)((0,_swc_helpers_object_spread__WEBPACK_IMPORTED_MODULE_1__._)({}, value), {
14953
14996
  next: states.REPLACE_DEFAULT
14954
14997
  });
14955
14998
  }
14956
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.unwrap(value.element);
14999
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.unwrap(element);
14957
15000
  return (0,_swc_helpers_object_spread_props__WEBPACK_IMPORTED_MODULE_2__._)((0,_swc_helpers_object_spread__WEBPACK_IMPORTED_MODULE_1__._)({}, value), {
14958
15001
  mode: jodit_core_selection_style_constants__WEBPACK_IMPORTED_MODULE_7__.UNWRAP,
14959
15002
  next: states.END
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.23
4
+ * Version: v4.13.25
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.23
11
+ * Version: v4.13.25
12
12
  * Url: https://xdsoft.net/jodit/
13
13
  * License(s): MIT
14
14
  */