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/es2015/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
  */
@@ -1785,7 +1785,7 @@ __webpack_require__.r(__webpack_exports__);
1785
1785
  * ```
1786
1786
  * @packageDocumentation
1787
1787
  * @module constants
1788
- */ const APP_VERSION = "4.15.8";
1788
+ */ const APP_VERSION = "4.15.10";
1789
1789
  // prettier-ignore
1790
1790
  const ES = "es2015";
1791
1791
  const IS_ES_MODERN = true;
@@ -11598,10 +11598,31 @@ class Selection {
11598
11598
  if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.up(node, (elm)=>elm === this.area || elm && elm.parentNode === this.area, this.area)) {
11599
11599
  throw (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.error)('Node element must be in editor');
11600
11600
  }
11601
+ const target = !inward && this.__closestNotEditable(node) || node;
11601
11602
  const range = this.createRange();
11602
- range[inward || node === this.area ? 'selectNodeContents' : 'selectNode'](node);
11603
+ range[inward || target === this.area ? 'selectNodeContents' : 'selectNode'](target);
11603
11604
  return this.selectRange(range);
11604
11605
  }
11606
+ /**
11607
+ * The outermost `contenteditable="false"` ancestor of the node inside the
11608
+ * editable area, if there is one.
11609
+ *
11610
+ * A range can be put inside such an island (e.g. on an `<img>` wrapped in a
11611
+ * `<picture contenteditable="false">`), but the browser cannot place a caret
11612
+ * there: the arrow keys then have nothing to move from and the selection
11613
+ * cannot be escaped. Selecting the island itself keeps the range in editable
11614
+ * content, so the caret can step over it. See #1184
11615
+ */ __closestNotEditable(node) {
11616
+ const { area } = this;
11617
+ let result = null, elm = node.parentNode;
11618
+ while(elm && elm !== area && area.contains(elm)){
11619
+ if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.isElement(elm) && elm.getAttribute('contenteditable') === 'false') {
11620
+ result = elm;
11621
+ }
11622
+ elm = elm.parentNode;
11623
+ }
11624
+ return result;
11625
+ }
11605
11626
  /**
11606
11627
  * Return current selected HTML
11607
11628
  * @example
@@ -17984,13 +18005,20 @@ class Jodit extends jodit_modules__WEBPACK_IMPORTED_MODULE_11__.ViewWithToolbar
17984
18005
  /**
17985
18006
  * Return source element value
17986
18007
  */ getElementValue() {
18008
+ if (this.element === this.container && this.__inlineElementValue !== undefined) {
18009
+ return this.__inlineElementValue;
18010
+ }
17987
18011
  return this.element.value !== undefined ? this.element.value : this.element.innerHTML;
17988
18012
  }
17989
18013
  __setElementValue(value) {
17990
18014
  if (!(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_6__.isString)(value)) {
17991
18015
  throw (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_6__.error)('value must be string');
17992
18016
  }
17993
- if (this.element !== this.container && value !== this.getElementValue()) {
18017
+ if (this.element === this.container) {
18018
+ this.__inlineElementValue = value;
18019
+ return;
18020
+ }
18021
+ if (value !== this.getElementValue()) {
17994
18022
  const data = {
17995
18023
  value
17996
18024
  };
@@ -18716,6 +18744,10 @@ class Jodit extends jodit_modules__WEBPACK_IMPORTED_MODULE_11__.ViewWithToolbar
18716
18744
  */ (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), /**
18717
18745
  * Editor has focus in this time
18718
18746
  */ (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_3__.MODE_WYSIWYG), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__callChangeCount", 0), /**
18747
+ * In inline mode the source element is the editor container, so its
18748
+ * `innerHTML` is the editor's own markup rather than the value. Keep the
18749
+ * value last synchronised to it here instead.
18750
+ */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__inlineElementValue", void 0), /**
18719
18751
  * Don't raise a change event
18720
18752
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__isSilentChange", false), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "currentPlace", {
18721
18753
  options: this.__options,
@@ -46989,25 +47021,20 @@ function __rewriteRelativeImportExtension(path, preserveJsx) {
46989
47021
  /******/ /* webpack/runtime/chunk loaded */
46990
47022
  /******/ !function() {
46991
47023
  /******/ var deferred = [];
46992
- /******/ __webpack_require__.O = function(result, chunkIds, fn, priority) {
47024
+ /******/ __webpack_require__.O = function(result, chunkIds, fn) {
46993
47025
  /******/ if(chunkIds) {
46994
- /******/ priority = priority || 0;
46995
- /******/ for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];
46996
- /******/ deferred[i] = [chunkIds, fn, priority];
47026
+ /******/ deferred.push([chunkIds, fn]);
46997
47027
  /******/ return;
46998
47028
  /******/ }
46999
- /******/ var notFulfilled = Infinity;
47000
47029
  /******/ for (var i = 0; i < deferred.length; i++) {
47001
47030
  /******/ var chunkIds = deferred[i][0];
47002
47031
  /******/ var fn = deferred[i][1];
47003
- /******/ var priority = deferred[i][2];
47004
47032
  /******/ var fulfilled = true;
47005
47033
  /******/ for (var j = 0; j < chunkIds.length; j++) {
47006
- /******/ if (((priority & 1) === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {
47034
+ /******/ if (__webpack_require__.O.j(chunkIds[j])) {
47007
47035
  /******/ chunkIds.splice(j--, 1);
47008
47036
  /******/ } else {
47009
47037
  /******/ fulfilled = false;
47010
- /******/ if(priority < notFulfilled) notFulfilled = priority;
47011
47038
  /******/ }
47012
47039
  /******/ }
47013
47040
  /******/ if(fulfilled) {