jodit 4.13.14 → 4.13.16

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 +8 -8
  4. package/es2015/jodit.js +32 -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 +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 +32 -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 +5 -5
  28. package/es2021.en/jodit.js +32 -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 +32 -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/helpers/utils/scroll-into-view.js +18 -7
  52. package/esm/modules/uploader/config.js +1 -0
  53. package/esm/modules/widget/file-selector/file-selector.js +1 -0
  54. package/esm/plugins/enter/helpers/split-fragment.js +11 -2
  55. package/esm/types/uploader.d.ts +16 -0
  56. package/package.json +1 -1
  57. package/types/types/uploader.d.ts +16 -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.13.14
4
+ * Version: v4.13.16
5
5
  * Url: https://xdsoft.net/jodit/
6
6
  * License(s): MIT
7
7
  */
@@ -1843,7 +1843,7 @@ __webpack_require__.r(__webpack_exports__);
1843
1843
  * ```
1844
1844
  * @packageDocumentation
1845
1845
  * @module constants
1846
- */ const APP_VERSION = "4.13.14";
1846
+ */ const APP_VERSION = "4.13.16";
1847
1847
  // prettier-ignore
1848
1848
  const ES = "es2021";
1849
1849
  const IS_ES_MODERN = true;
@@ -9067,7 +9067,12 @@ const map = {};
9067
9067
  while(el && el !== root && el.parentNode){
9068
9068
  el = el.parentNode;
9069
9069
  rect = el.getBoundingClientRect();
9070
- if (!(top <= rect.bottom)) {
9070
+ // The element's bottom is clipped by the container's bottom edge: a
9071
+ // caret sitting on that line is invisible, so the element is not in
9072
+ // view even though its top still fits. The `top > rect.top` guard keeps
9073
+ // elements taller than the container (which can never fully fit) from
9074
+ // being treated as always out of view. See #1300
9075
+ if (top + height > rect.bottom && top > rect.top) {
9071
9076
  return false;
9072
9077
  }
9073
9078
  // Check if the element is out of view due to a container scrolling
@@ -9075,19 +9080,24 @@ const map = {};
9075
9080
  return false;
9076
9081
  }
9077
9082
  }
9078
- // Check it's within the document viewport: the element must not be below
9079
- // the viewport bottom, and (its bottom) must not be above the viewport top —
9080
- // the latter guard was missing, so an element scrolled above the top was
9081
- // wrongly reported as visible and never scrolled to. See #1279
9083
+ // Check it's within the document viewport: the element must fit above the
9084
+ // viewport bottom (same clipped-bottom rule as above), and its bottom must
9085
+ // not be above the viewport top — the latter guard was missing, so an
9086
+ // element scrolled above the top was wrongly reported as visible and never
9087
+ // scrolled to. See #1279
9082
9088
  const clientHeight = doc.documentElement && doc.documentElement.clientHeight || 0;
9083
- return top <= clientHeight && top + height >= 0;
9089
+ return (top + height <= clientHeight || top <= 0) && top + height >= 0;
9084
9090
  }
9085
9091
  /**
9086
9092
  * Scroll element into view if it is not in view
9087
9093
  */ function scrollIntoViewIfNeeded(elm, root, doc) {
9088
9094
  if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isHTMLElement(elm) && !inView(elm, root, doc)) {
9089
9095
  if (root.clientHeight !== root.scrollHeight) {
9090
- root.scrollTop = elm.offsetTop;
9096
+ // Scroll the minimal distance: when the element is below the
9097
+ // visible area align it to the bottom (natural typing flow),
9098
+ // otherwise align it to the top. See #1300
9099
+ const alignBottom = elm.offsetTop + elm.offsetHeight - root.clientHeight;
9100
+ root.scrollTop = root.scrollTop < alignBottom ? alignBottom : elm.offsetTop;
9091
9101
  }
9092
9102
  if (!inView(elm, root, doc)) {
9093
9103
  elm.scrollIntoView();
@@ -24603,6 +24613,7 @@ function makeSelect(view, control, target = null) {
24603
24613
  jodit_config__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.uploader = {
24604
24614
  url: '',
24605
24615
  insertImageAsBase64URI: false,
24616
+ showTabInFileSelector: true,
24606
24617
  imagesExtensions: [
24607
24618
  'jpg',
24608
24619
  'jpeg',
@@ -25431,7 +25442,7 @@ jodit_core_ui__WEBPACK_IMPORTED_MODULE_2__.Icon.set('palette', (_palette_svg__WE
25431
25442
  let currentImage;
25432
25443
  const tabs = [];
25433
25444
  const options = editor.o.uploader;
25434
- if (callbacks.upload && (options.url || options.insertImageAsBase64URI || options.customUploadFunction)) {
25445
+ if (callbacks.upload && options.showTabInFileSelector !== false && (options.url || options.insertImageAsBase64URI || options.customUploadFunction)) {
25435
25446
  const dragBox = editor.c.fromHTML('<div class="jodit-drag-and-drop__file-box">' + `<strong>${editor.i18n(isImage ? 'Drop image' : 'Drop file')}</strong>` + `<span><br>${editor.i18n('or click')}</span>` + `<input type="file" accept="${isImage ? 'image/*' : '*'}" tabindex="-1" dir="auto" multiple=""/>` + '</div>');
25436
25447
  editor.uploader.bind(dragBox, (resp)=>{
25437
25448
  const handler = (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_1__.isFunction)(callbacks.upload) ? callbacks.upload : options.defaultHandlerSuccess;
@@ -30676,8 +30687,17 @@ function brBefore(start) {
30676
30687
  }
30677
30688
  return;
30678
30689
  }
30679
- const newP = sel.splitSelection(block, fake);
30680
- (0,jodit_core_helpers_utils_scroll_into_view__WEBPACK_IMPORTED_MODULE_1__.scrollIntoViewIfNeeded)(newP, jodit.editor, jodit.ed);
30690
+ // Inserting the left half above the caret can trigger the browser's
30691
+ // scroll anchoring and shift the visible area — keep it stable. See #1300
30692
+ const { scrollTop } = jodit.editor;
30693
+ sel.splitSelection(block, fake);
30694
+ if (jodit.editor.scrollTop !== scrollTop) {
30695
+ jodit.editor.scrollTop = scrollTop;
30696
+ }
30697
+ // After the split the caret stays inside `block` (the right half) —
30698
+ // `splitSelection` returns the left half, which is above the caret and
30699
+ // usually already visible. Follow the caret, not the left half. See #1300
30700
+ (0,jodit_core_helpers_utils_scroll_into_view__WEBPACK_IMPORTED_MODULE_1__.scrollIntoViewIfNeeded)(block, jodit.editor, jodit.ed);
30681
30701
  }
30682
30702
 
30683
30703