jodit 4.13.22 → 4.13.24
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.
- package/CHANGELOG.md +12 -0
- package/es2015/jodit.css +1 -1
- package/es2015/jodit.fat.min.js +3 -3
- package/es2015/jodit.js +34 -7
- package/es2015/jodit.min.js +3 -3
- package/es2015/plugins/debug/debug.css +1 -1
- package/es2015/plugins/debug/debug.js +1 -1
- package/es2015/plugins/debug/debug.min.js +1 -1
- package/es2015/plugins/speech-recognize/speech-recognize.css +1 -1
- package/es2015/plugins/speech-recognize/speech-recognize.js +1 -1
- package/es2015/plugins/speech-recognize/speech-recognize.min.js +1 -1
- package/es2018/jodit.fat.min.js +3 -3
- package/es2018/jodit.min.js +3 -3
- package/es2018/plugins/debug/debug.min.js +1 -1
- package/es2018/plugins/speech-recognize/speech-recognize.min.js +1 -1
- package/es2021/jodit.css +1 -1
- package/es2021/jodit.fat.min.js +4 -4
- package/es2021/jodit.js +35 -7
- package/es2021/jodit.min.js +4 -4
- package/es2021/plugins/debug/debug.css +1 -1
- package/es2021/plugins/debug/debug.js +1 -1
- package/es2021/plugins/debug/debug.min.js +1 -1
- package/es2021/plugins/speech-recognize/speech-recognize.css +1 -1
- package/es2021/plugins/speech-recognize/speech-recognize.js +1 -1
- package/es2021/plugins/speech-recognize/speech-recognize.min.js +1 -1
- package/es2021.en/jodit.css +1 -1
- package/es2021.en/jodit.fat.min.js +4 -4
- package/es2021.en/jodit.js +35 -7
- package/es2021.en/jodit.min.js +4 -4
- package/es2021.en/plugins/debug/debug.css +1 -1
- package/es2021.en/plugins/debug/debug.js +1 -1
- package/es2021.en/plugins/debug/debug.min.js +1 -1
- package/es2021.en/plugins/speech-recognize/speech-recognize.css +1 -1
- package/es2021.en/plugins/speech-recognize/speech-recognize.js +1 -1
- package/es2021.en/plugins/speech-recognize/speech-recognize.min.js +1 -1
- package/es5/jodit.css +2 -2
- package/es5/jodit.fat.min.js +2 -2
- package/es5/jodit.js +36 -7
- package/es5/jodit.min.css +2 -2
- package/es5/jodit.min.js +2 -2
- package/es5/plugins/debug/debug.css +1 -1
- package/es5/plugins/debug/debug.js +1 -1
- package/es5/plugins/debug/debug.min.js +1 -1
- package/es5/plugins/speech-recognize/speech-recognize.css +1 -1
- package/es5/plugins/speech-recognize/speech-recognize.js +1 -1
- package/es5/plugins/speech-recognize/speech-recognize.min.js +1 -1
- package/es5/polyfills.fat.min.js +1 -1
- package/es5/polyfills.js +1 -1
- package/es5/polyfills.min.js +1 -1
- package/esm/core/constants.js +1 -1
- package/esm/core/selection/style/api/wrap.d.ts +2 -1
- package/esm/core/selection/style/api/wrap.js +12 -2
- package/esm/core/selection/style/transactions.js +18 -4
- package/esm/plugins/clean-html/helpers/visitor/filters/remove-empty-text-node.js +7 -1
- package/esm/plugins/clean-html/helpers/visitor/filters/remove-inv-text-nodes.js +4 -1
- package/package.json +1 -1
- package/types/core/selection/style/api/wrap.d.ts +2 -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.13.
|
|
4
|
+
* Version: v4.13.24
|
|
5
5
|
* Url: https://xdsoft.net/jodit/
|
|
6
6
|
* License(s): MIT
|
|
7
7
|
*/
|
|
@@ -1849,7 +1849,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1849
1849
|
* ```
|
|
1850
1850
|
* @packageDocumentation
|
|
1851
1851
|
* @module constants
|
|
1852
|
-
*/ const APP_VERSION = "4.13.
|
|
1852
|
+
*/ const APP_VERSION = "4.13.24";
|
|
1853
1853
|
// prettier-ignore
|
|
1854
1854
|
const ES = "es2015";
|
|
1855
1855
|
const IS_ES_MODERN = true;
|
|
@@ -12060,6 +12060,7 @@ if (jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.globalDocument) {
|
|
|
12060
12060
|
"use strict";
|
|
12061
12061
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
12062
12062
|
/* harmony export */ FiniteStateMachine: function() { return /* reexport safe */ _finite_state_machine__WEBPACK_IMPORTED_MODULE_1__.FiniteStateMachine; },
|
|
12063
|
+
/* harmony export */ WRAP_NODES: function() { return /* reexport safe */ _wrap__WEBPACK_IMPORTED_MODULE_13__.WRAP_NODES; },
|
|
12063
12064
|
/* harmony export */ extractSelectedPart: function() { return /* reexport safe */ _extract__WEBPACK_IMPORTED_MODULE_0__.extractSelectedPart; },
|
|
12064
12065
|
/* harmony export */ getSuitChild: function() { return /* reexport safe */ _get_suit_child__WEBPACK_IMPORTED_MODULE_2__.getSuitChild; },
|
|
12065
12066
|
/* harmony export */ getSuitParent: function() { return /* reexport safe */ _get_suit_parent__WEBPACK_IMPORTED_MODULE_3__.getSuitParent; },
|
|
@@ -12726,6 +12727,7 @@ function toggleAttribute(jodit, value, elm, key, dry, mode) {
|
|
|
12726
12727
|
|
|
12727
12728
|
"use strict";
|
|
12728
12729
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
12730
|
+
/* harmony export */ WRAP_NODES: function() { return /* binding */ WRAP_NODES; },
|
|
12729
12731
|
/* harmony export */ wrap: function() { return /* binding */ wrap; }
|
|
12730
12732
|
/* harmony export */ });
|
|
12731
12733
|
/* harmony import */ var jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(27795);
|
|
@@ -12780,7 +12782,7 @@ const WRAP_NODES = new Set([
|
|
|
12780
12782
|
* otherwise it wraps free text in an element.
|
|
12781
12783
|
*/ function findOrCreateWrapper(commitStyle, font, jodit) {
|
|
12782
12784
|
if (commitStyle.elementIsBlock) {
|
|
12783
|
-
const box = jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.up(font, (node)=>jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(node) && !jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(node, WRAP_NODES), jodit.editor);
|
|
12785
|
+
const box = jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.up(font, (node)=>jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(node) && !jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(node, WRAP_NODES) && !hasBlockChildren(node), jodit.editor);
|
|
12784
12786
|
if (box) {
|
|
12785
12787
|
return box;
|
|
12786
12788
|
}
|
|
@@ -12789,6 +12791,13 @@ const WRAP_NODES = new Set([
|
|
|
12789
12791
|
(0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_1__.attr)(font, 'size', null);
|
|
12790
12792
|
return font;
|
|
12791
12793
|
}
|
|
12794
|
+
/**
|
|
12795
|
+
* A block that itself contains block-level children is a layout container:
|
|
12796
|
+
* replacing it wholesale would merge all its blocks into the new element,
|
|
12797
|
+
* so the selection must be wrapped in a new block inside it instead.
|
|
12798
|
+
*/ function hasBlockChildren(node) {
|
|
12799
|
+
return Array.from(node.childNodes).some((child)=>jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(child));
|
|
12800
|
+
}
|
|
12792
12801
|
|
|
12793
12802
|
|
|
12794
12803
|
/***/ }),
|
|
@@ -13162,12 +13171,23 @@ const transactions = {
|
|
|
13162
13171
|
},
|
|
13163
13172
|
[states.UNWRAP]: {
|
|
13164
13173
|
exec (value) {
|
|
13165
|
-
|
|
13174
|
+
const { element, style, jodit } = value;
|
|
13175
|
+
if (element.attributes.length && jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_3__.Dom.isTag(element, style.element)) {
|
|
13176
|
+
return (0,_swc_helpers_object_spread_props__WEBPACK_IMPORTED_MODULE_1__._)((0,_swc_helpers_object_spread__WEBPACK_IMPORTED_MODULE_0__._)({}, value), {
|
|
13177
|
+
next: states.REPLACE_DEFAULT
|
|
13178
|
+
});
|
|
13179
|
+
}
|
|
13180
|
+
// Unwrapping a block inside a container (e.g. an h3 inside a div)
|
|
13181
|
+
// leaves bare inline content there: the wrapNodes plugin restores
|
|
13182
|
+
// paragraphs only at the editor root. Replace such a block with
|
|
13183
|
+
// the default tag instead.
|
|
13184
|
+
const parent = element.parentElement;
|
|
13185
|
+
if (style.elementIsBlock && !style.elementIsDefault && parent && parent !== jodit.editor && jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_3__.Dom.isBlock(parent) && !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_3__.Dom.isTag(parent, jodit_core_selection_style_api__WEBPACK_IMPORTED_MODULE_5__.WRAP_NODES)) {
|
|
13166
13186
|
return (0,_swc_helpers_object_spread_props__WEBPACK_IMPORTED_MODULE_1__._)((0,_swc_helpers_object_spread__WEBPACK_IMPORTED_MODULE_0__._)({}, value), {
|
|
13167
13187
|
next: states.REPLACE_DEFAULT
|
|
13168
13188
|
});
|
|
13169
13189
|
}
|
|
13170
|
-
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_3__.Dom.unwrap(
|
|
13190
|
+
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_3__.Dom.unwrap(element);
|
|
13171
13191
|
return (0,_swc_helpers_object_spread_props__WEBPACK_IMPORTED_MODULE_1__._)((0,_swc_helpers_object_spread__WEBPACK_IMPORTED_MODULE_0__._)({}, value), {
|
|
13172
13192
|
mode: jodit_core_selection_style_constants__WEBPACK_IMPORTED_MODULE_6__.UNWRAP,
|
|
13173
13193
|
next: states.END
|
|
@@ -28683,7 +28703,11 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
28683
28703
|
* @private
|
|
28684
28704
|
*/ function removeEmptyTextNode(jodit, node, hadEffect, arg, argi, currentNode) {
|
|
28685
28705
|
if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isText(node) && !node.nodeValue) {
|
|
28686
|
-
|
|
28706
|
+
// Restore the caret only while the editor owns focus. The walker runs
|
|
28707
|
+
// asynchronously, so the user may have already tabbed away — moving the
|
|
28708
|
+
// selection here would call `focus()` and steal focus back from the
|
|
28709
|
+
// element the user navigated to (e.g. Shift+Tab accessibility flow).
|
|
28710
|
+
if (node === currentNode && jodit.s.isFocused() && jodit.s.isCollapsed()) {
|
|
28687
28711
|
jodit.s.setCursorAfter(node);
|
|
28688
28712
|
}
|
|
28689
28713
|
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(node);
|
|
@@ -28726,7 +28750,10 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
28726
28750
|
return hadEffect;
|
|
28727
28751
|
}
|
|
28728
28752
|
node.nodeValue = node.nodeValue.replace((0,jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.INVISIBLE_SPACE_REG_EXP)(), '');
|
|
28729
|
-
|
|
28753
|
+
// Same guard as in `removeEmptyTextNode`: the walker is asynchronous, so
|
|
28754
|
+
// never move the selection (it re-focuses the editor) once the user has
|
|
28755
|
+
// moved focus elsewhere.
|
|
28756
|
+
if (node === currentNode && jodit.s.isFocused() && jodit.s.isCollapsed()) {
|
|
28730
28757
|
jodit.s.setCursorAfter(node);
|
|
28731
28758
|
}
|
|
28732
28759
|
if (!node.nodeValue) {
|