jodit 4.15.7 → 4.15.9
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 +13 -0
- package/es2015/jodit.css +1 -1
- package/es2015/jodit.fat.min.js +5 -5
- package/es2015/jodit.js +65 -31
- package/es2015/jodit.min.js +6 -6
- 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 +5 -5
- package/es2018/jodit.min.js +6 -6
- 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 +6 -6
- package/es2021/jodit.js +64 -30
- package/es2021/jodit.min.js +7 -7
- 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 +6 -6
- package/es2021.en/jodit.js +64 -30
- package/es2021.en/jodit.min.js +7 -7
- 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 +65 -31
- 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/config.d.ts +2 -1
- package/esm/core/constants.js +1 -1
- package/esm/jodit.d.ts +6 -0
- package/esm/jodit.js +9 -2
- package/esm/plugins/clean-html/config.d.ts +2 -1
- package/esm/plugins/clean-html/helpers/visitor/filters/try-remove-node.js +10 -0
- package/esm/plugins/mobile/mobile.js +25 -4
- package/package.json +1 -1
- package/types/config.d.ts +2 -1
- package/types/jodit.d.ts +6 -0
- package/types/plugins/clean-html/config.d.ts +2 -1
package/es2021.en/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.15.
|
|
4
|
+
* Version: v4.15.9
|
|
5
5
|
* Url: https://xdsoft.net/jodit/
|
|
6
6
|
* License(s): MIT
|
|
7
7
|
*/
|
|
@@ -1779,7 +1779,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1779
1779
|
* ```
|
|
1780
1780
|
* @packageDocumentation
|
|
1781
1781
|
* @module constants
|
|
1782
|
-
*/ const APP_VERSION = "4.15.
|
|
1782
|
+
*/ const APP_VERSION = "4.15.9";
|
|
1783
1783
|
// prettier-ignore
|
|
1784
1784
|
const ES = "es2021";
|
|
1785
1785
|
const IS_ES_MODERN = true;
|
|
@@ -17844,13 +17844,20 @@ class Jodit extends jodit_modules__WEBPACK_IMPORTED_MODULE_10__.ViewWithToolbar
|
|
|
17844
17844
|
/**
|
|
17845
17845
|
* Return source element value
|
|
17846
17846
|
*/ getElementValue() {
|
|
17847
|
+
if (this.element === this.container && this.__inlineElementValue !== undefined) {
|
|
17848
|
+
return this.__inlineElementValue;
|
|
17849
|
+
}
|
|
17847
17850
|
return this.element.value !== undefined ? this.element.value : this.element.innerHTML;
|
|
17848
17851
|
}
|
|
17849
17852
|
__setElementValue(value) {
|
|
17850
17853
|
if (!(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.isString)(value)) {
|
|
17851
17854
|
throw (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.error)('value must be string');
|
|
17852
17855
|
}
|
|
17853
|
-
if (this.element
|
|
17856
|
+
if (this.element === this.container) {
|
|
17857
|
+
this.__inlineElementValue = value;
|
|
17858
|
+
return;
|
|
17859
|
+
}
|
|
17860
|
+
if (value !== this.getElementValue()) {
|
|
17854
17861
|
const data = {
|
|
17855
17862
|
value
|
|
17856
17863
|
};
|
|
@@ -18575,6 +18582,10 @@ class Jodit extends jodit_modules__WEBPACK_IMPORTED_MODULE_10__.ViewWithToolbar
|
|
|
18575
18582
|
*/ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "isJodit", true), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "commands", new Map()), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__selectionLocked", null), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__wasReadOnly", false), /**
|
|
18576
18583
|
* Editor has focus in this time
|
|
18577
18584
|
*/ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "editorIsActive", false), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "selection", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__mode", jodit_core_constants__WEBPACK_IMPORTED_MODULE_2__.MODE_WYSIWYG), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__callChangeCount", 0), /**
|
|
18585
|
+
* In inline mode the source element is the editor container, so its
|
|
18586
|
+
* `innerHTML` is the editor's own markup rather than the value. Keep the
|
|
18587
|
+
* value last synchronised to it here instead.
|
|
18588
|
+
*/ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__inlineElementValue", void 0), /**
|
|
18578
18589
|
* Don't raise a change event
|
|
18579
18590
|
*/ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__isSilentChange", false), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "currentPlace", {
|
|
18580
18591
|
options: this.__options,
|
|
@@ -29312,7 +29323,14 @@ function filterStyleProperties(style, allowed) {
|
|
|
29312
29323
|
// a pending-format marker the user is about to type into (#1291). `current`
|
|
29313
29324
|
// is captured before a click moves the caret, so also check the live caret.
|
|
29314
29325
|
const liveCaret = jodit.s.isCollapsed() ? jodit.s.range.startContainer : null;
|
|
29315
|
-
return jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.isElement(node) && node.nodeName.match(jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.IS_INLINE) != null && !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.isTemporary(node) && (0,jodit_core_helpers_string_trim__WEBPACK_IMPORTED_MODULE_2__.trimInv)(node.innerHTML).length === 0 && (current == null || !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.isOrContains(node, current)) && (liveCaret == null || !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.isOrContains(node, liveCaret));
|
|
29326
|
+
return jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.isElement(node) && node.nodeName.match(jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.IS_INLINE) != null && !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.isTemporary(node) && !isFragmentTarget(node) && (0,jodit_core_helpers_string_trim__WEBPACK_IMPORTED_MODULE_2__.trimInv)(node.innerHTML).length === 0 && (current == null || !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.isOrContains(node, current)) && (liveCaret == null || !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.isOrContains(node, liveCaret));
|
|
29327
|
+
}
|
|
29328
|
+
/**
|
|
29329
|
+
* An element with an `id`, or an `<a>` with a `name`, is where an in-page link
|
|
29330
|
+
* (`#fragment`) lands. It is usually empty (`<a name="top"></a>`), and removing
|
|
29331
|
+
* it silently breaks every link that points at it.
|
|
29332
|
+
*/ function isFragmentTarget(element) {
|
|
29333
|
+
return element.hasAttribute('id') || element.nodeName === 'A' && element.hasAttribute('name');
|
|
29316
29334
|
}
|
|
29317
29335
|
|
|
29318
29336
|
|
|
@@ -36613,10 +36631,12 @@ jodit_config__WEBPACK_IMPORTED_MODULE_3__.Config.prototype.controls.dots = {
|
|
|
36613
36631
|
|
|
36614
36632
|
"use strict";
|
|
36615
36633
|
/* unused harmony export mobile */
|
|
36616
|
-
/* harmony import */ var
|
|
36617
|
-
/* harmony import */ var
|
|
36618
|
-
/* harmony import */ var
|
|
36619
|
-
/* harmony import */ var
|
|
36634
|
+
/* harmony import */ var jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(23211);
|
|
36635
|
+
/* harmony import */ var jodit_core_global__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(28077);
|
|
36636
|
+
/* harmony import */ var jodit_core_helpers___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(65946);
|
|
36637
|
+
/* harmony import */ var jodit_core_helpers_checker_is_string__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(85932);
|
|
36638
|
+
/* harmony import */ var jodit_core_ui_helpers_buttons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(2496);
|
|
36639
|
+
/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(3244);
|
|
36620
36640
|
/*!
|
|
36621
36641
|
* Jodit Editor (https://xdsoft.net/jodit/)
|
|
36622
36642
|
* Released under MIT see LICENSE.txt in the project root for license information.
|
|
@@ -36629,6 +36649,8 @@ jodit_config__WEBPACK_IMPORTED_MODULE_3__.Config.prototype.controls.dots = {
|
|
|
36629
36649
|
|
|
36630
36650
|
|
|
36631
36651
|
|
|
36652
|
+
|
|
36653
|
+
|
|
36632
36654
|
const isButtonSeparator = (item)=>item === '|' || item === '---' || item === '\n';
|
|
36633
36655
|
/**
|
|
36634
36656
|
* Constrain a responsive breakpoint set (`buttonsMD/SM/XS`) to the buttons the
|
|
@@ -36642,13 +36664,13 @@ const isButtonSeparator = (item)=>item === '|' || item === '---' || item === '\n
|
|
|
36642
36664
|
* the standard grouped mobile layout — groups, separators and `dots` — is
|
|
36643
36665
|
* preserved. See #1389.
|
|
36644
36666
|
*/ function fitToButtons(list, editor) {
|
|
36645
|
-
const allowed = (0,
|
|
36667
|
+
const allowed = (0,jodit_core_ui_helpers_buttons__WEBPACK_IMPORTED_MODULE_4__.flatButtonsSet)((0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_2__.splitArray)(editor.o.buttons), editor);
|
|
36646
36668
|
const groups = editor.getRegisteredButtonGroups();
|
|
36647
36669
|
let changed = false;
|
|
36648
36670
|
let hadDots = false;
|
|
36649
36671
|
const flat = [];
|
|
36650
36672
|
for (const item of list){
|
|
36651
|
-
if ((0,
|
|
36673
|
+
if ((0,jodit_core_ui_helpers_buttons__WEBPACK_IMPORTED_MODULE_4__.isButtonGroup)(item)) {
|
|
36652
36674
|
const members = [
|
|
36653
36675
|
...item.buttons,
|
|
36654
36676
|
...groups[item.group] ?? []
|
|
@@ -36685,17 +36707,31 @@ const isButtonSeparator = (item)=>item === '|' || item === '---' || item === '\n
|
|
|
36685
36707
|
// Keep the "show all" overflow button only if some requested button is still
|
|
36686
36708
|
// hidden at this breakpoint.
|
|
36687
36709
|
if (hadDots) {
|
|
36688
|
-
const shown = (0,
|
|
36689
|
-
if ((0,
|
|
36710
|
+
const shown = (0,jodit_core_ui_helpers_buttons__WEBPACK_IMPORTED_MODULE_4__.flatButtonsSet)(cleaned, editor);
|
|
36711
|
+
if ((0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_2__.toArray)(allowed).some((button)=>!shown.has(button))) {
|
|
36690
36712
|
cleaned.push('dots');
|
|
36691
36713
|
}
|
|
36692
36714
|
}
|
|
36693
36715
|
return cleaned;
|
|
36694
36716
|
}
|
|
36717
|
+
/**
|
|
36718
|
+
* The width that decides which breakpoint set the toolbar uses. A toolbar
|
|
36719
|
+
* rendered into an external container (`toolbar` set to an element or a
|
|
36720
|
+
* selector) lays out in that container, so its width is what matters there.
|
|
36721
|
+
*/ function adaptiveWidth(editor) {
|
|
36722
|
+
const { toolbar } = editor.o;
|
|
36723
|
+
if ((0,jodit_core_helpers_checker_is_string__WEBPACK_IMPORTED_MODULE_3__.isString)(toolbar) || jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isHTMLElement(toolbar)) {
|
|
36724
|
+
const width = editor.toolbarContainer.offsetWidth;
|
|
36725
|
+
if (width) {
|
|
36726
|
+
return width;
|
|
36727
|
+
}
|
|
36728
|
+
}
|
|
36729
|
+
return (editor.container.parentElement ?? editor.container).offsetWidth;
|
|
36730
|
+
}
|
|
36695
36731
|
/**
|
|
36696
36732
|
* Rebuild toolbar in depends on editor's width
|
|
36697
36733
|
*/ function mobile(editor) {
|
|
36698
|
-
let timeout = 0, store = (0,
|
|
36734
|
+
let timeout = 0, store = (0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_2__.splitArray)(editor.o.buttons);
|
|
36699
36735
|
if (editor.o.mobileTapTimeout) {
|
|
36700
36736
|
// Emulate double tap
|
|
36701
36737
|
editor.e.on('touchend', (e)=>{
|
|
@@ -36712,8 +36748,8 @@ const isButtonSeparator = (item)=>item === '|' || item === '---' || item === '\n
|
|
|
36712
36748
|
}
|
|
36713
36749
|
editor.e.on('getDiffButtons.mobile', (toolbar)=>{
|
|
36714
36750
|
if (toolbar === editor.toolbar) {
|
|
36715
|
-
const buttons = (0,
|
|
36716
|
-
return (0,
|
|
36751
|
+
const buttons = (0,jodit_core_ui_helpers_buttons__WEBPACK_IMPORTED_MODULE_4__.flatButtonsSet)((0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_2__.splitArray)(editor.o.buttons), editor), flatStore = (0,jodit_core_ui_helpers_buttons__WEBPACK_IMPORTED_MODULE_4__.flatButtonsSet)(store, editor);
|
|
36752
|
+
return (0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_2__.toArray)(buttons).reduce((acc, item)=>{
|
|
36717
36753
|
if (!flatStore.has(item)) {
|
|
36718
36754
|
acc.push(item);
|
|
36719
36755
|
}
|
|
@@ -36726,18 +36762,21 @@ const isButtonSeparator = (item)=>item === '|' || item === '---' || item === '\n
|
|
|
36726
36762
|
if (!editor.o.toolbar) {
|
|
36727
36763
|
return;
|
|
36728
36764
|
}
|
|
36729
|
-
const width = (editor.container.parentElement ?? editor.container).offsetWidth;
|
|
36730
36765
|
const newStore = (()=>{
|
|
36731
|
-
if (editor.isFullSize
|
|
36732
|
-
return (0,
|
|
36766
|
+
if (editor.isFullSize) {
|
|
36767
|
+
return (0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_2__.splitArray)(editor.o.buttons);
|
|
36768
|
+
}
|
|
36769
|
+
const width = adaptiveWidth(editor);
|
|
36770
|
+
if (width >= editor.o.sizeLG) {
|
|
36771
|
+
return (0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_2__.splitArray)(editor.o.buttons);
|
|
36733
36772
|
}
|
|
36734
36773
|
if (width >= editor.o.sizeMD) {
|
|
36735
|
-
return fitToButtons((0,
|
|
36774
|
+
return fitToButtons((0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_2__.splitArray)(editor.o.buttonsMD), editor);
|
|
36736
36775
|
}
|
|
36737
36776
|
if (width >= editor.o.sizeSM) {
|
|
36738
|
-
return fitToButtons((0,
|
|
36777
|
+
return fitToButtons((0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_2__.splitArray)(editor.o.buttonsSM), editor);
|
|
36739
36778
|
}
|
|
36740
|
-
return fitToButtons((0,
|
|
36779
|
+
return fitToButtons((0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_2__.splitArray)(editor.o.buttonsXS), editor);
|
|
36741
36780
|
})();
|
|
36742
36781
|
if (newStore.toString() !== store.toString()) {
|
|
36743
36782
|
store = newStore;
|
|
@@ -36747,7 +36786,7 @@ const isButtonSeparator = (item)=>item === '|' || item === '---' || item === '\n
|
|
|
36747
36786
|
}).on(editor.ow, 'load resize', ()=>editor.e.fire('recalcAdaptive'));
|
|
36748
36787
|
}
|
|
36749
36788
|
}
|
|
36750
|
-
|
|
36789
|
+
jodit_core_global__WEBPACK_IMPORTED_MODULE_1__.pluginSystem.add('mobile', mobile);
|
|
36751
36790
|
|
|
36752
36791
|
|
|
36753
36792
|
/***/ }),
|
|
@@ -44720,25 +44759,20 @@ function __rewriteRelativeImportExtension(path, preserveJsx) {
|
|
|
44720
44759
|
/******/ /* webpack/runtime/chunk loaded */
|
|
44721
44760
|
/******/ !function() {
|
|
44722
44761
|
/******/ var deferred = [];
|
|
44723
|
-
/******/ __webpack_require__.O = function(result, chunkIds, fn
|
|
44762
|
+
/******/ __webpack_require__.O = function(result, chunkIds, fn) {
|
|
44724
44763
|
/******/ if(chunkIds) {
|
|
44725
|
-
/******/
|
|
44726
|
-
/******/ for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];
|
|
44727
|
-
/******/ deferred[i] = [chunkIds, fn, priority];
|
|
44764
|
+
/******/ deferred.push([chunkIds, fn]);
|
|
44728
44765
|
/******/ return;
|
|
44729
44766
|
/******/ }
|
|
44730
|
-
/******/ var notFulfilled = Infinity;
|
|
44731
44767
|
/******/ for (var i = 0; i < deferred.length; i++) {
|
|
44732
44768
|
/******/ var chunkIds = deferred[i][0];
|
|
44733
44769
|
/******/ var fn = deferred[i][1];
|
|
44734
|
-
/******/ var priority = deferred[i][2];
|
|
44735
44770
|
/******/ var fulfilled = true;
|
|
44736
44771
|
/******/ for (var j = 0; j < chunkIds.length; j++) {
|
|
44737
|
-
/******/ if (
|
|
44772
|
+
/******/ if (__webpack_require__.O.j(chunkIds[j])) {
|
|
44738
44773
|
/******/ chunkIds.splice(j--, 1);
|
|
44739
44774
|
/******/ } else {
|
|
44740
44775
|
/******/ fulfilled = false;
|
|
44741
|
-
/******/ if(priority < notFulfilled) notFulfilled = priority;
|
|
44742
44776
|
/******/ }
|
|
44743
44777
|
/******/ }
|
|
44744
44778
|
/******/ if(fulfilled) {
|