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
@@ -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,
@@ -44748,25 +44780,20 @@ function __rewriteRelativeImportExtension(path, preserveJsx) {
44748
44780
  /******/ /* webpack/runtime/chunk loaded */
44749
44781
  /******/ !function() {
44750
44782
  /******/ var deferred = [];
44751
- /******/ __webpack_require__.O = function(result, chunkIds, fn, priority) {
44783
+ /******/ __webpack_require__.O = function(result, chunkIds, fn) {
44752
44784
  /******/ if(chunkIds) {
44753
- /******/ priority = priority || 0;
44754
- /******/ for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];
44755
- /******/ deferred[i] = [chunkIds, fn, priority];
44785
+ /******/ deferred.push([chunkIds, fn]);
44756
44786
  /******/ return;
44757
44787
  /******/ }
44758
- /******/ var notFulfilled = Infinity;
44759
44788
  /******/ for (var i = 0; i < deferred.length; i++) {
44760
44789
  /******/ var chunkIds = deferred[i][0];
44761
44790
  /******/ var fn = deferred[i][1];
44762
- /******/ var priority = deferred[i][2];
44763
44791
  /******/ var fulfilled = true;
44764
44792
  /******/ for (var j = 0; j < chunkIds.length; j++) {
44765
- /******/ if (((priority & 1) === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {
44793
+ /******/ if (__webpack_require__.O.j(chunkIds[j])) {
44766
44794
  /******/ chunkIds.splice(j--, 1);
44767
44795
  /******/ } else {
44768
44796
  /******/ fulfilled = false;
44769
- /******/ if(priority < notFulfilled) notFulfilled = priority;
44770
44797
  /******/ }
44771
44798
  /******/ }
44772
44799
  /******/ if(fulfilled) {