jodit 4.15.8 → 4.15.10

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 +12 -0
  2. package/es2015/jodit.css +1 -1
  3. package/es2015/jodit.fat.min.js +3 -3
  4. package/es2015/jodit.js +39 -12
  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 +3 -3
  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 +4 -4
  18. package/es2021/jodit.js +39 -12
  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 +4 -4
  28. package/es2021.en/jodit.js +39 -12
  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 +42 -12
  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/selection/selection.d.ts +11 -0
  52. package/esm/core/selection/selection.js +24 -1
  53. package/esm/jodit.d.ts +6 -0
  54. package/esm/jodit.js +9 -2
  55. package/package.json +1 -1
  56. package/types/core/selection/selection.d.ts +11 -0
  57. package/types/jodit.d.ts +6 -0
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.8
4
+ * Version: v4.15.10
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.8";
1782
+ */ const APP_VERSION = "4.15.10";
1783
1783
  // prettier-ignore
1784
1784
  const ES = "es2021";
1785
1785
  const IS_ES_MODERN = true;
@@ -11529,10 +11529,31 @@ class Selection {
11529
11529
  if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.up(node, (elm)=>elm === this.area || elm && elm.parentNode === this.area, this.area)) {
11530
11530
  throw (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.error)('Node element must be in editor');
11531
11531
  }
11532
+ const target = !inward && this.__closestNotEditable(node) || node;
11532
11533
  const range = this.createRange();
11533
- range[inward || node === this.area ? 'selectNodeContents' : 'selectNode'](node);
11534
+ range[inward || target === this.area ? 'selectNodeContents' : 'selectNode'](target);
11534
11535
  return this.selectRange(range);
11535
11536
  }
11537
+ /**
11538
+ * The outermost `contenteditable="false"` ancestor of the node inside the
11539
+ * editable area, if there is one.
11540
+ *
11541
+ * A range can be put inside such an island (e.g. on an `<img>` wrapped in a
11542
+ * `<picture contenteditable="false">`), but the browser cannot place a caret
11543
+ * there: the arrow keys then have nothing to move from and the selection
11544
+ * cannot be escaped. Selecting the island itself keeps the range in editable
11545
+ * content, so the caret can step over it. See #1184
11546
+ */ __closestNotEditable(node) {
11547
+ const { area } = this;
11548
+ let result = null, elm = node.parentNode;
11549
+ while(elm && elm !== area && area.contains(elm)){
11550
+ if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.isElement(elm) && elm.getAttribute('contenteditable') === 'false') {
11551
+ result = elm;
11552
+ }
11553
+ elm = elm.parentNode;
11554
+ }
11555
+ return result;
11556
+ }
11536
11557
  /**
11537
11558
  * Return current selected HTML
11538
11559
  * @example
@@ -17844,13 +17865,20 @@ class Jodit extends jodit_modules__WEBPACK_IMPORTED_MODULE_10__.ViewWithToolbar
17844
17865
  /**
17845
17866
  * Return source element value
17846
17867
  */ getElementValue() {
17868
+ if (this.element === this.container && this.__inlineElementValue !== undefined) {
17869
+ return this.__inlineElementValue;
17870
+ }
17847
17871
  return this.element.value !== undefined ? this.element.value : this.element.innerHTML;
17848
17872
  }
17849
17873
  __setElementValue(value) {
17850
17874
  if (!(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.isString)(value)) {
17851
17875
  throw (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.error)('value must be string');
17852
17876
  }
17853
- if (this.element !== this.container && value !== this.getElementValue()) {
17877
+ if (this.element === this.container) {
17878
+ this.__inlineElementValue = value;
17879
+ return;
17880
+ }
17881
+ if (value !== this.getElementValue()) {
17854
17882
  const data = {
17855
17883
  value
17856
17884
  };
@@ -18575,6 +18603,10 @@ class Jodit extends jodit_modules__WEBPACK_IMPORTED_MODULE_10__.ViewWithToolbar
18575
18603
  */ (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
18604
  * Editor has focus in this time
18577
18605
  */ (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), /**
18606
+ * In inline mode the source element is the editor container, so its
18607
+ * `innerHTML` is the editor's own markup rather than the value. Keep the
18608
+ * value last synchronised to it here instead.
18609
+ */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__inlineElementValue", void 0), /**
18578
18610
  * Don't raise a change event
18579
18611
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__isSilentChange", false), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "currentPlace", {
18580
18612
  options: this.__options,
@@ -46407,25 +46439,20 @@ function __rewriteRelativeImportExtension(path, preserveJsx) {
46407
46439
  /******/ /* webpack/runtime/chunk loaded */
46408
46440
  /******/ !function() {
46409
46441
  /******/ var deferred = [];
46410
- /******/ __webpack_require__.O = function(result, chunkIds, fn, priority) {
46442
+ /******/ __webpack_require__.O = function(result, chunkIds, fn) {
46411
46443
  /******/ if(chunkIds) {
46412
- /******/ priority = priority || 0;
46413
- /******/ for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];
46414
- /******/ deferred[i] = [chunkIds, fn, priority];
46444
+ /******/ deferred.push([chunkIds, fn]);
46415
46445
  /******/ return;
46416
46446
  /******/ }
46417
- /******/ var notFulfilled = Infinity;
46418
46447
  /******/ for (var i = 0; i < deferred.length; i++) {
46419
46448
  /******/ var chunkIds = deferred[i][0];
46420
46449
  /******/ var fn = deferred[i][1];
46421
- /******/ var priority = deferred[i][2];
46422
46450
  /******/ var fulfilled = true;
46423
46451
  /******/ for (var j = 0; j < chunkIds.length; j++) {
46424
- /******/ if (((priority & 1) === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {
46452
+ /******/ if (__webpack_require__.O.j(chunkIds[j])) {
46425
46453
  /******/ chunkIds.splice(j--, 1);
46426
46454
  /******/ } else {
46427
46455
  /******/ fulfilled = false;
46428
- /******/ if(priority < notFulfilled) notFulfilled = priority;
46429
46456
  /******/ }
46430
46457
  /******/ }
46431
46458
  /******/ if(fulfilled) {