jodit 4.15.7 → 4.15.8

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 (57) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/es2015/jodit.css +1 -1
  3. package/es2015/jodit.fat.min.js +4 -4
  4. package/es2015/jodit.js +50 -22
  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 +49 -21
  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 +49 -21
  29. package/es2021.en/jodit.min.js +5 -5
  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 +50 -22
  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/config.d.ts +2 -1
  51. package/esm/core/constants.js +1 -1
  52. package/esm/plugins/clean-html/config.d.ts +2 -1
  53. package/esm/plugins/clean-html/helpers/visitor/filters/try-remove-node.js +10 -0
  54. package/esm/plugins/mobile/mobile.js +25 -4
  55. package/package.json +1 -1
  56. package/types/config.d.ts +2 -1
  57. 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.7
4
+ * Version: v4.15.8
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.7";
1782
+ */ const APP_VERSION = "4.15.8";
1783
1783
  // prettier-ignore
1784
1784
  const ES = "es2021";
1785
1785
  const IS_ES_MODERN = true;
@@ -29386,7 +29386,14 @@ function filterStyleProperties(style, allowed) {
29386
29386
  // a pending-format marker the user is about to type into (#1291). `current`
29387
29387
  // is captured before a click moves the caret, so also check the live caret.
29388
29388
  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));
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) && !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));
29390
+ }
29391
+ /**
29392
+ * An element with an `id`, or an `<a>` with a `name`, is where an in-page link
29393
+ * (`#fragment`) lands. It is usually empty (`<a name="top"></a>`), and removing
29394
+ * it silently breaks every link that points at it.
29395
+ */ function isFragmentTarget(element) {
29396
+ return element.hasAttribute('id') || element.nodeName === 'A' && element.hasAttribute('name');
29390
29397
  }
29391
29398
 
29392
29399
 
@@ -37366,10 +37373,12 @@ jodit_config__WEBPACK_IMPORTED_MODULE_3__.Config.prototype.controls.dots = {
37366
37373
 
37367
37374
  "use strict";
37368
37375
  /* unused harmony export mobile */
37369
- /* harmony import */ var jodit_core_global__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(28077);
37370
- /* harmony import */ var jodit_core_helpers___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65946);
37371
- /* harmony import */ var jodit_core_ui_helpers_buttons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2496);
37372
- /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3244);
37376
+ /* harmony import */ var jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(23211);
37377
+ /* harmony import */ var jodit_core_global__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(28077);
37378
+ /* harmony import */ var jodit_core_helpers___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(65946);
37379
+ /* harmony import */ var jodit_core_helpers_checker_is_string__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(85932);
37380
+ /* harmony import */ var jodit_core_ui_helpers_buttons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(2496);
37381
+ /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(3244);
37373
37382
  /*!
37374
37383
  * Jodit Editor (https://xdsoft.net/jodit/)
37375
37384
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -37382,6 +37391,8 @@ jodit_config__WEBPACK_IMPORTED_MODULE_3__.Config.prototype.controls.dots = {
37382
37391
 
37383
37392
 
37384
37393
 
37394
+
37395
+
37385
37396
  const isButtonSeparator = (item)=>item === '|' || item === '---' || item === '\n';
37386
37397
  /**
37387
37398
  * Constrain a responsive breakpoint set (`buttonsMD/SM/XS`) to the buttons the
@@ -37395,13 +37406,13 @@ const isButtonSeparator = (item)=>item === '|' || item === '---' || item === '\n
37395
37406
  * the standard grouped mobile layout — groups, separators and `dots` — is
37396
37407
  * preserved. See #1389.
37397
37408
  */ function fitToButtons(list, editor) {
37398
- const allowed = (0,jodit_core_ui_helpers_buttons__WEBPACK_IMPORTED_MODULE_2__.flatButtonsSet)((0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_1__.splitArray)(editor.o.buttons), editor);
37409
+ 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
37410
  const groups = editor.getRegisteredButtonGroups();
37400
37411
  let changed = false;
37401
37412
  let hadDots = false;
37402
37413
  const flat = [];
37403
37414
  for (const item of list){
37404
- if ((0,jodit_core_ui_helpers_buttons__WEBPACK_IMPORTED_MODULE_2__.isButtonGroup)(item)) {
37415
+ if ((0,jodit_core_ui_helpers_buttons__WEBPACK_IMPORTED_MODULE_4__.isButtonGroup)(item)) {
37405
37416
  const members = [
37406
37417
  ...item.buttons,
37407
37418
  ...groups[item.group] ?? []
@@ -37438,17 +37449,31 @@ const isButtonSeparator = (item)=>item === '|' || item === '---' || item === '\n
37438
37449
  // Keep the "show all" overflow button only if some requested button is still
37439
37450
  // hidden at this breakpoint.
37440
37451
  if (hadDots) {
37441
- const shown = (0,jodit_core_ui_helpers_buttons__WEBPACK_IMPORTED_MODULE_2__.flatButtonsSet)(cleaned, editor);
37442
- if ((0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_1__.toArray)(allowed).some((button)=>!shown.has(button))) {
37452
+ const shown = (0,jodit_core_ui_helpers_buttons__WEBPACK_IMPORTED_MODULE_4__.flatButtonsSet)(cleaned, editor);
37453
+ if ((0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_2__.toArray)(allowed).some((button)=>!shown.has(button))) {
37443
37454
  cleaned.push('dots');
37444
37455
  }
37445
37456
  }
37446
37457
  return cleaned;
37447
37458
  }
37459
+ /**
37460
+ * The width that decides which breakpoint set the toolbar uses. A toolbar
37461
+ * rendered into an external container (`toolbar` set to an element or a
37462
+ * selector) lays out in that container, so its width is what matters there.
37463
+ */ function adaptiveWidth(editor) {
37464
+ const { toolbar } = editor.o;
37465
+ 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)) {
37466
+ const width = editor.toolbarContainer.offsetWidth;
37467
+ if (width) {
37468
+ return width;
37469
+ }
37470
+ }
37471
+ return (editor.container.parentElement ?? editor.container).offsetWidth;
37472
+ }
37448
37473
  /**
37449
37474
  * Rebuild toolbar in depends on editor's width
37450
37475
  */ function mobile(editor) {
37451
- let timeout = 0, store = (0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_1__.splitArray)(editor.o.buttons);
37476
+ let timeout = 0, store = (0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_2__.splitArray)(editor.o.buttons);
37452
37477
  if (editor.o.mobileTapTimeout) {
37453
37478
  // Emulate double tap
37454
37479
  editor.e.on('touchend', (e)=>{
@@ -37465,8 +37490,8 @@ const isButtonSeparator = (item)=>item === '|' || item === '---' || item === '\n
37465
37490
  }
37466
37491
  editor.e.on('getDiffButtons.mobile', (toolbar)=>{
37467
37492
  if (toolbar === editor.toolbar) {
37468
- const buttons = (0,jodit_core_ui_helpers_buttons__WEBPACK_IMPORTED_MODULE_2__.flatButtonsSet)((0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_1__.splitArray)(editor.o.buttons), editor), flatStore = (0,jodit_core_ui_helpers_buttons__WEBPACK_IMPORTED_MODULE_2__.flatButtonsSet)(store, editor);
37469
- return (0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_1__.toArray)(buttons).reduce((acc, item)=>{
37493
+ 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);
37494
+ return (0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_2__.toArray)(buttons).reduce((acc, item)=>{
37470
37495
  if (!flatStore.has(item)) {
37471
37496
  acc.push(item);
37472
37497
  }
@@ -37479,18 +37504,21 @@ const isButtonSeparator = (item)=>item === '|' || item === '---' || item === '\n
37479
37504
  if (!editor.o.toolbar) {
37480
37505
  return;
37481
37506
  }
37482
- const width = (editor.container.parentElement ?? editor.container).offsetWidth;
37483
37507
  const newStore = (()=>{
37484
- if (editor.isFullSize || width >= editor.o.sizeLG) {
37485
- return (0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_1__.splitArray)(editor.o.buttons);
37508
+ if (editor.isFullSize) {
37509
+ return (0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_2__.splitArray)(editor.o.buttons);
37510
+ }
37511
+ const width = adaptiveWidth(editor);
37512
+ if (width >= editor.o.sizeLG) {
37513
+ return (0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_2__.splitArray)(editor.o.buttons);
37486
37514
  }
37487
37515
  if (width >= editor.o.sizeMD) {
37488
- return fitToButtons((0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_1__.splitArray)(editor.o.buttonsMD), editor);
37516
+ return fitToButtons((0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_2__.splitArray)(editor.o.buttonsMD), editor);
37489
37517
  }
37490
37518
  if (width >= editor.o.sizeSM) {
37491
- return fitToButtons((0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_1__.splitArray)(editor.o.buttonsSM), editor);
37519
+ return fitToButtons((0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_2__.splitArray)(editor.o.buttonsSM), editor);
37492
37520
  }
37493
- return fitToButtons((0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_1__.splitArray)(editor.o.buttonsXS), editor);
37521
+ return fitToButtons((0,jodit_core_helpers___WEBPACK_IMPORTED_MODULE_2__.splitArray)(editor.o.buttonsXS), editor);
37494
37522
  })();
37495
37523
  if (newStore.toString() !== store.toString()) {
37496
37524
  store = newStore;
@@ -37500,7 +37528,7 @@ const isButtonSeparator = (item)=>item === '|' || item === '---' || item === '\n
37500
37528
  }).on(editor.ow, 'load resize', ()=>editor.e.fire('recalcAdaptive'));
37501
37529
  }
37502
37530
  }
37503
- jodit_core_global__WEBPACK_IMPORTED_MODULE_0__.pluginSystem.add('mobile', mobile);
37531
+ jodit_core_global__WEBPACK_IMPORTED_MODULE_1__.pluginSystem.add('mobile', mobile);
37504
37532
 
37505
37533
 
37506
37534
  /***/ }),