jodit 4.13.21 → 4.13.23

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 (66) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/es2015/jodit.css +1 -1
  3. package/es2015/jodit.fat.min.css +1 -1
  4. package/es2015/jodit.fat.min.js +4 -4
  5. package/es2015/jodit.js +29 -34
  6. package/es2015/jodit.min.css +1 -1
  7. package/es2015/jodit.min.js +4 -4
  8. package/es2015/plugins/debug/debug.css +1 -1
  9. package/es2015/plugins/debug/debug.js +1 -1
  10. package/es2015/plugins/debug/debug.min.js +1 -1
  11. package/es2015/plugins/speech-recognize/speech-recognize.css +1 -1
  12. package/es2015/plugins/speech-recognize/speech-recognize.js +1 -1
  13. package/es2015/plugins/speech-recognize/speech-recognize.min.js +1 -1
  14. package/es2018/jodit.fat.min.css +1 -1
  15. package/es2018/jodit.fat.min.js +4 -4
  16. package/es2018/jodit.min.css +1 -1
  17. package/es2018/jodit.min.js +4 -4
  18. package/es2018/plugins/debug/debug.min.js +1 -1
  19. package/es2018/plugins/speech-recognize/speech-recognize.min.js +1 -1
  20. package/es2021/jodit.css +1 -1
  21. package/es2021/jodit.fat.min.css +1 -1
  22. package/es2021/jodit.fat.min.js +4 -4
  23. package/es2021/jodit.js +27 -34
  24. package/es2021/jodit.min.css +1 -1
  25. package/es2021/jodit.min.js +4 -4
  26. package/es2021/plugins/debug/debug.css +1 -1
  27. package/es2021/plugins/debug/debug.js +1 -1
  28. package/es2021/plugins/debug/debug.min.js +1 -1
  29. package/es2021/plugins/speech-recognize/speech-recognize.css +1 -1
  30. package/es2021/plugins/speech-recognize/speech-recognize.js +1 -1
  31. package/es2021/plugins/speech-recognize/speech-recognize.min.js +1 -1
  32. package/es2021.en/jodit.css +1 -1
  33. package/es2021.en/jodit.fat.min.css +1 -1
  34. package/es2021.en/jodit.fat.min.js +4 -4
  35. package/es2021.en/jodit.js +27 -34
  36. package/es2021.en/jodit.min.css +1 -1
  37. package/es2021.en/jodit.min.js +4 -4
  38. package/es2021.en/plugins/debug/debug.css +1 -1
  39. package/es2021.en/plugins/debug/debug.js +1 -1
  40. package/es2021.en/plugins/debug/debug.min.js +1 -1
  41. package/es2021.en/plugins/speech-recognize/speech-recognize.css +1 -1
  42. package/es2021.en/plugins/speech-recognize/speech-recognize.js +1 -1
  43. package/es2021.en/plugins/speech-recognize/speech-recognize.min.js +1 -1
  44. package/es5/jodit.css +2 -2
  45. package/es5/jodit.fat.min.css +1 -1
  46. package/es5/jodit.fat.min.js +2 -2
  47. package/es5/jodit.js +55 -34
  48. package/es5/jodit.min.css +3 -3
  49. package/es5/jodit.min.js +2 -2
  50. package/es5/plugins/debug/debug.css +1 -1
  51. package/es5/plugins/debug/debug.js +1 -1
  52. package/es5/plugins/debug/debug.min.js +1 -1
  53. package/es5/plugins/speech-recognize/speech-recognize.css +1 -1
  54. package/es5/plugins/speech-recognize/speech-recognize.js +1 -1
  55. package/es5/plugins/speech-recognize/speech-recognize.min.js +1 -1
  56. package/es5/polyfills.fat.min.js +2 -2
  57. package/es5/polyfills.js +213 -87
  58. package/es5/polyfills.min.js +2 -2
  59. package/esm/core/constants.js +1 -1
  60. package/esm/modules/uploader/helpers/data-uri-to-blob.d.ts +3 -1
  61. package/esm/modules/uploader/helpers/data-uri-to-blob.js +7 -8
  62. package/esm/plugins/clean-html/helpers/visitor/filters/remove-empty-text-node.js +7 -1
  63. package/esm/plugins/clean-html/helpers/visitor/filters/remove-inv-text-nodes.js +4 -1
  64. package/esm/plugins/image-processor/image-processor.js +11 -19
  65. package/package.json +1 -1
  66. package/types/modules/uploader/helpers/data-uri-to-blob.d.ts +3 -1
@@ -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.21
4
+ * Version: v4.13.23
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.21";
1846
+ */ const APP_VERSION = "4.13.23";
1847
1847
  // prettier-ignore
1848
1848
  const ES = "es2021";
1849
1849
  const IS_ES_MODERN = true;
@@ -24784,13 +24784,11 @@ function buildData(uploader, data) {
24784
24784
  */ /**
24785
24785
  * @module modules/uploader
24786
24786
  */ /**
24787
- * Convert dataURI to Blob
24787
+ * Convert dataURI to Blob. Both base64 and percent-encoded payloads are
24788
+ * supported — `data:image/svg+xml,%3Csvg...` is as valid as
24789
+ * `data:image/png;base64,...`
24788
24790
  */ function dataURItoBlob(dataURI) {
24789
- // convert base64 to raw binary data held in a string
24790
- // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this
24791
- const byteString = atob(dataURI.split(',')[1]), // separate out the mime component
24792
- mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0], // write the bytes of the string to an ArrayBuffer
24793
- ab = new ArrayBuffer(byteString.length), ia = new Uint8Array(ab);
24791
+ const [header, ...rest] = dataURI.split(','), payload = rest.join(','), mimeString = header.split(':')[1]?.split(';')[0] ?? '', byteString = /;base64/i.test(header) ? atob(payload) : decodeURIComponent(payload), ab = new ArrayBuffer(byteString.length), ia = new Uint8Array(ab);
24794
24792
  for(let i = 0; i < byteString.length; i += 1){
24795
24793
  ia[i] = byteString.charCodeAt(i);
24796
24794
  }
@@ -28405,7 +28403,11 @@ __webpack_require__.r(__webpack_exports__);
28405
28403
  * @private
28406
28404
  */ function removeEmptyTextNode(jodit, node, hadEffect, arg, argi, currentNode) {
28407
28405
  if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isText(node) && !node.nodeValue) {
28408
- if (node === currentNode && jodit.s.isCollapsed()) {
28406
+ // Restore the caret only while the editor owns focus. The walker runs
28407
+ // asynchronously, so the user may have already tabbed away — moving the
28408
+ // selection here would call `focus()` and steal focus back from the
28409
+ // element the user navigated to (e.g. Shift+Tab accessibility flow).
28410
+ if (node === currentNode && jodit.s.isFocused() && jodit.s.isCollapsed()) {
28409
28411
  jodit.s.setCursorAfter(node);
28410
28412
  }
28411
28413
  jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(node);
@@ -28448,7 +28450,10 @@ __webpack_require__.r(__webpack_exports__);
28448
28450
  return hadEffect;
28449
28451
  }
28450
28452
  node.nodeValue = node.nodeValue.replace((0,jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.INVISIBLE_SPACE_REG_EXP)(), '');
28451
- if (node === currentNode && jodit.s.isCollapsed()) {
28453
+ // Same guard as in `removeEmptyTextNode`: the walker is asynchronous, so
28454
+ // never move the selection (it re-focuses the editor) once the user has
28455
+ // moved focus elsewhere.
28456
+ if (node === currentNode && jodit.s.isFocused() && jodit.s.isCollapsed()) {
28452
28457
  jodit.s.setCursorAfter(node);
28453
28458
  }
28454
28459
  if (!node.nodeValue) {
@@ -31891,7 +31896,8 @@ jodit_config__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.imageProcessor = {
31891
31896
  /* harmony import */ var jodit_core_global__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(28077);
31892
31897
  /* harmony import */ var jodit_core_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(65946);
31893
31898
  /* harmony import */ var jodit_core_plugin__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(91206);
31894
- /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(51034);
31899
+ /* harmony import */ var jodit_modules_uploader_helpers_data_uri_to_blob__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(23112);
31900
+ /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(51034);
31895
31901
  /*!
31896
31902
  * Jodit Editor (https://xdsoft.net/jodit/)
31897
31903
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -31907,6 +31913,7 @@ jodit_config__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.imageProcessor = {
31907
31913
 
31908
31914
 
31909
31915
 
31916
+
31910
31917
  const JODIT_IMAGE_PROCESSOR_BINDED = '__jodit_imageprocessor_binded';
31911
31918
  const JODIT_IMAGE_BLOB_ID = JODIT_IMAGE_PROCESSOR_BINDED + 'blob-id';
31912
31919
  /**
@@ -31989,7 +31996,15 @@ function replaceDataURIToBlobUUID(editor, elm) {
31989
31996
  if (typeof ArrayBuffer === 'undefined' || typeof URL === 'undefined') {
31990
31997
  return;
31991
31998
  }
31992
- const dataUri = elm.src, blob = dataURItoBlob(dataUri);
31999
+ const dataUri = elm.src;
32000
+ let blob;
32001
+ try {
32002
+ blob = (0,jodit_modules_uploader_helpers_data_uri_to_blob__WEBPACK_IMPORTED_MODULE_6__.dataURItoBlob)(dataUri);
32003
+ } catch {
32004
+ // A data URI the browser accepts but we cannot decode is not worth
32005
+ // breaking the editor over — keep the image as it is
32006
+ return;
32007
+ }
31993
32008
  elm.src = URL.createObjectURL(blob);
31994
32009
  editor.e.fire('internalUpdate');
31995
32010
  const { buffer } = editor;
@@ -31997,28 +32012,6 @@ function replaceDataURIToBlobUUID(editor, elm) {
31997
32012
  list[elm.src] = dataUri;
31998
32013
  editor.buffer.set(JODIT_IMAGE_BLOB_ID, list);
31999
32014
  }
32000
- // https://stackoverflow.com/a/12300351
32001
- function dataURItoBlob(dataURI) {
32002
- // convert base64 to raw binary data held in a string
32003
- // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this
32004
- const byteString = atob(dataURI.split(',')[1]);
32005
- // separate out the mime component
32006
- const mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
32007
- // write the bytes of the string to an ArrayBuffer
32008
- const ab = new ArrayBuffer(byteString.length);
32009
- // create a view into the buffer
32010
- const ia = new Uint8Array(ab);
32011
- // set the bytes of the buffer to the correct values
32012
- for(let i = 0; i < byteString.length; i++){
32013
- ia[i] = byteString.charCodeAt(i);
32014
- }
32015
- // write the ArrayBuffer to a blob, and you're done
32016
- return new Blob([
32017
- ab
32018
- ], {
32019
- type: mimeString
32020
- });
32021
- }
32022
32015
  jodit_core_global__WEBPACK_IMPORTED_MODULE_3__.pluginSystem.add('imageProcessor', imageProcessor);
32023
32016
 
32024
32017