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/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,
|
|
@@ -29386,7 +29397,14 @@ function filterStyleProperties(style, allowed) {
|
|
|
29386
29397
|
// a pending-format marker the user is about to type into (#1291). `current`
|
|
29387
29398
|
// is captured before a click moves the caret, so also check the live caret.
|
|
29388
29399
|
const liveCaret = jodit.s.isCollapsed() ? jodit.s.range.startContainer : null;
|
|
29389
|
-
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));
|
|
29400
|
+
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));
|
|
29401
|
+
}
|
|
29402
|
+
/**
|
|
29403
|
+
* An element with an `id`, or an `<a>` with a `name`, is where an in-page link
|
|
29404
|
+
* (`#fragment`) lands. It is usually empty (`<a name="top"></a>`), and removing
|
|
29405
|
+
* it silently breaks every link that points at it.
|
|
29406
|
+
*/ function isFragmentTarget(element) {
|
|
29407
|
+
return element.hasAttribute('id') || element.nodeName === 'A' && element.hasAttribute('name');
|
|
29390
29408
|
}
|
|
29391
29409
|
|
|
29392
29410
|
|
|
@@ -37366,10 +37384,12 @@ jodit_config__WEBPACK_IMPORTED_MODULE_3__.Config.prototype.controls.dots = {
|
|
|
37366
37384
|
|
|
37367
37385
|
"use strict";
|
|
37368
37386
|
/* unused harmony export mobile */
|
|
37369
|
-
/* harmony import */ var
|
|
37370
|
-
/* harmony import */ var
|
|
37371
|
-
/* harmony import */ var
|
|
37372
|
-
/* harmony import */ var
|
|
37387
|
+
/* harmony import */ var jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(23211);
|
|
37388
|
+
/* harmony import */ var jodit_core_global__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(28077);
|
|
37389
|
+
/* harmony import */ var jodit_core_helpers___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(65946);
|
|
37390
|
+
/* harmony import */ var jodit_core_helpers_checker_is_string__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(85932);
|
|
37391
|
+
/* harmony import */ var jodit_core_ui_helpers_buttons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(2496);
|
|
37392
|
+
/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(3244);
|
|
37373
37393
|
/*!
|
|
37374
37394
|
* Jodit Editor (https://xdsoft.net/jodit/)
|
|
37375
37395
|
* Released under MIT see LICENSE.txt in the project root for license information.
|
|
@@ -37382,6 +37402,8 @@ jodit_config__WEBPACK_IMPORTED_MODULE_3__.Config.prototype.controls.dots = {
|
|
|
37382
37402
|
|
|
37383
37403
|
|
|
37384
37404
|
|
|
37405
|
+
|
|
37406
|
+
|
|
37385
37407
|
const isButtonSeparator = (item)=>item === '|' || item === '---' || item === '\n';
|
|
37386
37408
|
/**
|
|
37387
37409
|
* Constrain a responsive breakpoint set (`buttonsMD/SM/XS`) to the buttons the
|
|
@@ -37395,13 +37417,13 @@ const isButtonSeparator = (item)=>item === '|' || item === '---' || item === '\n
|
|
|
37395
37417
|
* the standard grouped mobile layout — groups, separators and `dots` — is
|
|
37396
37418
|
* preserved. See #1389.
|
|
37397
37419
|
*/ function fitToButtons(list, editor) {
|
|
37398
|
-
const allowed = (0,
|
|
37420
|
+
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);
|
|
37399
37421
|
const groups = editor.getRegisteredButtonGroups();
|
|
37400
37422
|
let changed = false;
|
|
37401
37423
|
let hadDots = false;
|
|
37402
37424
|
const flat = [];
|
|
37403
37425
|
for (const item of list){
|
|
37404
|
-
if ((0,
|
|
37426
|
+
if ((0,jodit_core_ui_helpers_buttons__WEBPACK_IMPORTED_MODULE_4__.isButtonGroup)(item)) {
|
|
37405
37427
|
const members = [
|
|
37406
37428
|
...item.buttons,
|
|
37407
37429
|
...groups[item.group] ?? []
|
|
@@ -37438,17 +37460,31 @@ const isButtonSeparator = (item)=>item === '|' || item === '---' || item === '\n
|
|
|
37438
37460
|
// Keep the "show all" overflow button only if some requested button is still
|
|
37439
37461
|
// hidden at this breakpoint.
|
|
37440
37462
|
if (hadDots) {
|
|
37441
|
-
const shown = (0,
|
|
37442
|
-
if ((0,
|
|
37463
|
+
const shown = (0,jodit_core_ui_helpers_buttons__WEBPACK_IMPORTED_MODULE_4__.flatButtonsSet)(cleaned, editor);
|
|
37464
|
+
if ((0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_2__.toArray)(allowed).some((button)=>!shown.has(button))) {
|
|
37443
37465
|
cleaned.push('dots');
|
|
37444
37466
|
}
|
|
37445
37467
|
}
|
|
37446
37468
|
return cleaned;
|
|
37447
37469
|
}
|
|
37470
|
+
/**
|
|
37471
|
+
* The width that decides which breakpoint set the toolbar uses. A toolbar
|
|
37472
|
+
* rendered into an external container (`toolbar` set to an element or a
|
|
37473
|
+
* selector) lays out in that container, so its width is what matters there.
|
|
37474
|
+
*/ function adaptiveWidth(editor) {
|
|
37475
|
+
const { toolbar } = editor.o;
|
|
37476
|
+
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)) {
|
|
37477
|
+
const width = editor.toolbarContainer.offsetWidth;
|
|
37478
|
+
if (width) {
|
|
37479
|
+
return width;
|
|
37480
|
+
}
|
|
37481
|
+
}
|
|
37482
|
+
return (editor.container.parentElement ?? editor.container).offsetWidth;
|
|
37483
|
+
}
|
|
37448
37484
|
/**
|
|
37449
37485
|
* Rebuild toolbar in depends on editor's width
|
|
37450
37486
|
*/ function mobile(editor) {
|
|
37451
|
-
let timeout = 0, store = (0,
|
|
37487
|
+
let timeout = 0, store = (0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_2__.splitArray)(editor.o.buttons);
|
|
37452
37488
|
if (editor.o.mobileTapTimeout) {
|
|
37453
37489
|
// Emulate double tap
|
|
37454
37490
|
editor.e.on('touchend', (e)=>{
|
|
@@ -37465,8 +37501,8 @@ const isButtonSeparator = (item)=>item === '|' || item === '---' || item === '\n
|
|
|
37465
37501
|
}
|
|
37466
37502
|
editor.e.on('getDiffButtons.mobile', (toolbar)=>{
|
|
37467
37503
|
if (toolbar === editor.toolbar) {
|
|
37468
|
-
const buttons = (0,
|
|
37469
|
-
return (0,
|
|
37504
|
+
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);
|
|
37505
|
+
return (0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_2__.toArray)(buttons).reduce((acc, item)=>{
|
|
37470
37506
|
if (!flatStore.has(item)) {
|
|
37471
37507
|
acc.push(item);
|
|
37472
37508
|
}
|
|
@@ -37479,18 +37515,21 @@ const isButtonSeparator = (item)=>item === '|' || item === '---' || item === '\n
|
|
|
37479
37515
|
if (!editor.o.toolbar) {
|
|
37480
37516
|
return;
|
|
37481
37517
|
}
|
|
37482
|
-
const width = (editor.container.parentElement ?? editor.container).offsetWidth;
|
|
37483
37518
|
const newStore = (()=>{
|
|
37484
|
-
if (editor.isFullSize
|
|
37485
|
-
return (0,
|
|
37519
|
+
if (editor.isFullSize) {
|
|
37520
|
+
return (0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_2__.splitArray)(editor.o.buttons);
|
|
37521
|
+
}
|
|
37522
|
+
const width = adaptiveWidth(editor);
|
|
37523
|
+
if (width >= editor.o.sizeLG) {
|
|
37524
|
+
return (0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_2__.splitArray)(editor.o.buttons);
|
|
37486
37525
|
}
|
|
37487
37526
|
if (width >= editor.o.sizeMD) {
|
|
37488
|
-
return fitToButtons((0,
|
|
37527
|
+
return fitToButtons((0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_2__.splitArray)(editor.o.buttonsMD), editor);
|
|
37489
37528
|
}
|
|
37490
37529
|
if (width >= editor.o.sizeSM) {
|
|
37491
|
-
return fitToButtons((0,
|
|
37530
|
+
return fitToButtons((0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_2__.splitArray)(editor.o.buttonsSM), editor);
|
|
37492
37531
|
}
|
|
37493
|
-
return fitToButtons((0,
|
|
37532
|
+
return fitToButtons((0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_2__.splitArray)(editor.o.buttonsXS), editor);
|
|
37494
37533
|
})();
|
|
37495
37534
|
if (newStore.toString() !== store.toString()) {
|
|
37496
37535
|
store = newStore;
|
|
@@ -37500,7 +37539,7 @@ const isButtonSeparator = (item)=>item === '|' || item === '---' || item === '\n
|
|
|
37500
37539
|
}).on(editor.ow, 'load resize', ()=>editor.e.fire('recalcAdaptive'));
|
|
37501
37540
|
}
|
|
37502
37541
|
}
|
|
37503
|
-
|
|
37542
|
+
jodit_core_global__WEBPACK_IMPORTED_MODULE_1__.pluginSystem.add('mobile', mobile);
|
|
37504
37543
|
|
|
37505
37544
|
|
|
37506
37545
|
/***/ }),
|
|
@@ -46379,25 +46418,20 @@ function __rewriteRelativeImportExtension(path, preserveJsx) {
|
|
|
46379
46418
|
/******/ /* webpack/runtime/chunk loaded */
|
|
46380
46419
|
/******/ !function() {
|
|
46381
46420
|
/******/ var deferred = [];
|
|
46382
|
-
/******/ __webpack_require__.O = function(result, chunkIds, fn
|
|
46421
|
+
/******/ __webpack_require__.O = function(result, chunkIds, fn) {
|
|
46383
46422
|
/******/ if(chunkIds) {
|
|
46384
|
-
/******/
|
|
46385
|
-
/******/ for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];
|
|
46386
|
-
/******/ deferred[i] = [chunkIds, fn, priority];
|
|
46423
|
+
/******/ deferred.push([chunkIds, fn]);
|
|
46387
46424
|
/******/ return;
|
|
46388
46425
|
/******/ }
|
|
46389
|
-
/******/ var notFulfilled = Infinity;
|
|
46390
46426
|
/******/ for (var i = 0; i < deferred.length; i++) {
|
|
46391
46427
|
/******/ var chunkIds = deferred[i][0];
|
|
46392
46428
|
/******/ var fn = deferred[i][1];
|
|
46393
|
-
/******/ var priority = deferred[i][2];
|
|
46394
46429
|
/******/ var fulfilled = true;
|
|
46395
46430
|
/******/ for (var j = 0; j < chunkIds.length; j++) {
|
|
46396
|
-
/******/ if (
|
|
46431
|
+
/******/ if (__webpack_require__.O.j(chunkIds[j])) {
|
|
46397
46432
|
/******/ chunkIds.splice(j--, 1);
|
|
46398
46433
|
/******/ } else {
|
|
46399
46434
|
/******/ fulfilled = false;
|
|
46400
|
-
/******/ if(priority < notFulfilled) notFulfilled = priority;
|
|
46401
46435
|
/******/ }
|
|
46402
46436
|
/******/ }
|
|
46403
46437
|
/******/ if(fulfilled) {
|