jodit 4.17.4 → 4.17.5

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 +3 -3
  4. package/es2015/jodit.js +47 -4
  5. package/es2015/jodit.min.js +3 -3
  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 +3 -3
  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 +43 -4
  19. package/es2021/jodit.min.js +4 -4
  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 +43 -4
  29. package/es2021.en/jodit.min.js +4 -4
  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 +53 -4
  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 +5 -0
  52. package/esm/core/selection/selection.js +25 -0
  53. package/esm/plugins/select/select.d.ts +7 -0
  54. package/esm/plugins/select/select.js +19 -1
  55. package/package.json +1 -1
  56. package/types/core/selection/selection.d.ts +5 -0
  57. package/types/plugins/select/select.d.ts +7 -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.17.4
4
+ * Version: v4.17.5
5
5
  * Url: https://xdsoft.net/jodit/
6
6
  * License(s): MIT
7
7
  */
@@ -1799,7 +1799,7 @@ __webpack_require__.r(__webpack_exports__);
1799
1799
  * ```
1800
1800
  * @packageDocumentation
1801
1801
  * @module constants
1802
- */ const APP_VERSION = "4.17.4";
1802
+ */ const APP_VERSION = "4.17.5";
1803
1803
  // prettier-ignore
1804
1804
  const ES = "es2021";
1805
1805
  const IS_ES_MODERN = true;
@@ -10957,6 +10957,16 @@ class Selection {
10957
10957
  }
10958
10958
  });
10959
10959
  }
10960
+ /**
10961
+ * How many ranges the browser's own selection holds right now, as opposed
10962
+ * to the composed view that [[sel]] may answer from.
10963
+ */ __nativeRangeCount() {
10964
+ const { shadowRoot } = this.j.o;
10965
+ if (shadowRoot && (0,jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_6__.isFunction)(shadowRoot.getSelection)) {
10966
+ return shadowRoot.getSelection()?.rangeCount ?? 0;
10967
+ }
10968
+ return this.win.getSelection()?.rangeCount ?? 0;
10969
+ }
10960
10970
  /**
10961
10971
  * Return first selected range or create new
10962
10972
  */ get range() {
@@ -11751,6 +11761,16 @@ class Selection {
11751
11761
  if (backward && ranges.length === 1) {
11752
11762
  const range = ranges[0];
11753
11763
  sel.setBaseAndExtent(range.endContainer, range.endOffset, range.startContainer, range.startOffset);
11764
+ } else if (ranges.length === 1 && !this.__nativeRangeCount() && (0,jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_6__.isFunction)(sel.setBaseAndExtent)) {
11765
+ // `addRange` is specified to ignore a range whose root is not
11766
+ // the document, which is every range inside a shadow tree.
11767
+ // Chrome's `ShadowRoot.getSelection()` takes them anyway, but
11768
+ // Safari has only the window selection, so after
11769
+ // `removeAllRanges` the caret is simply gone: a character was
11770
+ // deleted and nothing was left to type into. `setBaseAndExtent`
11771
+ // does accept nodes inside a shadow tree.
11772
+ const range = ranges[0];
11773
+ sel.setBaseAndExtent(range.startContainer, range.startOffset, range.endContainer, range.endOffset);
11754
11774
  }
11755
11775
  }
11756
11776
  /**
@@ -41023,13 +41043,22 @@ jodit_config__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.select = {
41023
41043
  j.e.fire(e.type + 'Editor', target, e);
41024
41044
  }
41025
41045
  }
41046
+ onOutsidePress(e) {
41047
+ this.__pressTarget = e.target;
41048
+ }
41026
41049
  /**
41027
41050
  * @event outsideClick(e) - when user clicked on the outside of editor
41028
41051
  */ onOutsideClick(e) {
41029
- const node = e.target;
41052
+ const node = e.target, pressed = this.__pressTarget;
41053
+ this.__pressTarget = null;
41030
41054
  if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.up(node, (elm)=>elm === this.j.editor)) {
41031
41055
  return;
41032
41056
  }
41057
+ // Selecting the text of a popup input with the mouse and releasing
41058
+ // the button past the popup's edge is not a click outside of it.
41059
+ if (pressed && jodit_core_ui__WEBPACK_IMPORTED_MODULE_8__.UIElement.closestElement(pressed, jodit_core_ui__WEBPACK_IMPORTED_MODULE_8__.Popup)) {
41060
+ return;
41061
+ }
41033
41062
  const box = jodit_core_ui__WEBPACK_IMPORTED_MODULE_8__.UIElement.closestElement(node, jodit_core_ui__WEBPACK_IMPORTED_MODULE_8__.Popup);
41034
41063
  if (!box) {
41035
41064
  this.j.e.fire('outsideClick', e);
@@ -41133,12 +41162,22 @@ jodit_config__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.select = {
41133
41162
  'touchstart',
41134
41163
  'mouseup',
41135
41164
  'touchend'
41136
- ]);
41165
+ ]), /**
41166
+ * Where the last press started. Chrome reports a drag that begins in one
41167
+ * element and ends in another as a `click` on their common ancestor, so a
41168
+ * press inside a popup is remembered to tell such a drag from a real click.
41169
+ */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__pressTarget", null);
41137
41170
  }
41138
41171
  }
41139
41172
  ;(0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decorate)([
41140
41173
  jodit_core_decorators__WEBPACK_IMPORTED_MODULE_3__.autobind
41141
41174
  ], select.prototype, "onStartSelection", null);
41175
+ (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decorate)([
41176
+ (0,jodit_core_decorators__WEBPACK_IMPORTED_MODULE_3__.watch)([
41177
+ 'ow:mousedown',
41178
+ 'ow:touchstart'
41179
+ ])
41180
+ ], select.prototype, "onOutsidePress", null);
41142
41181
  (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decorate)([
41143
41182
  (0,jodit_core_decorators__WEBPACK_IMPORTED_MODULE_3__.watch)('ow:click')
41144
41183
  ], select.prototype, "onOutsideClick", null);