jodit 4.12.41 → 4.12.43

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 (59) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/es2015/jodit.css +1 -1
  3. package/es2015/jodit.fat.min.js +3 -3
  4. package/es2015/jodit.js +57 -3
  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 +3 -3
  18. package/es2021/jodit.js +57 -3
  19. package/es2021/jodit.min.js +3 -3
  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 +3 -3
  28. package/es2021.en/jodit.js +57 -3
  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 +57 -3
  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/plugins/clean-html/helpers/index.d.ts +1 -0
  52. package/esm/plugins/clean-html/helpers/index.js +1 -0
  53. package/esm/plugins/clean-html/helpers/is-allowed-media-embed.d.ts +15 -0
  54. package/esm/plugins/clean-html/helpers/is-allowed-media-embed.js +28 -0
  55. package/esm/plugins/clean-html/helpers/visitor/filters/sandbox-iframes-in-content.js +7 -0
  56. package/esm/plugins/clean-html/helpers/visitor/filters/try-remove-node.js +9 -1
  57. package/package.json +1 -1
  58. package/types/plugins/clean-html/helpers/index.d.ts +1 -0
  59. package/types/plugins/clean-html/helpers/is-allowed-media-embed.d.ts +15 -0
package/es2021/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.12.41
4
+ * Version: v4.12.43
5
5
  * Url: https://xdsoft.net/jodit/
6
6
  * License(s): MIT
7
7
  */
@@ -1823,7 +1823,7 @@ __webpack_require__.r(__webpack_exports__);
1823
1823
  * ```
1824
1824
  * @packageDocumentation
1825
1825
  * @module constants
1826
- */ const APP_VERSION = "4.12.41";
1826
+ */ const APP_VERSION = "4.12.43";
1827
1827
  // prettier-ignore
1828
1828
  const ES = "es2021";
1829
1829
  const IS_ES_MODERN = true;
@@ -27839,6 +27839,43 @@ jodit_core_ui_icon__WEBPACK_IMPORTED_MODULE_0__.Icon.set('eraser', (_eraser_svg_
27839
27839
 
27840
27840
 
27841
27841
 
27842
+
27843
+ /***/ }),
27844
+
27845
+ /***/ 28665:
27846
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
27847
+
27848
+ "use strict";
27849
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
27850
+ /* harmony export */ isAllowedMediaEmbed: function() { return /* binding */ isAllowedMediaEmbed; }
27851
+ /* harmony export */ });
27852
+ /*!
27853
+ * Jodit Editor (https://xdsoft.net/jodit/)
27854
+ * Released under MIT see LICENSE.txt in the project root for license information.
27855
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
27856
+ */ /**
27857
+ * @module plugins/clean-html
27858
+ */ // The embed URLs produced by the built-in Video button (see
27859
+ // `convertMediaUrlToVideoEmbed`): `//www.youtube.com/embed/<id>` and
27860
+ // `//player.vimeo.com/video/<id>`. `youtube-nocookie.com` is the privacy
27861
+ // variant YouTube offers for the same `/embed/` player. The `/embed/` and
27862
+ // `/video/` path prefixes are required so a bare provider link
27863
+ // (`youtube.com/@somebody`) is not treated as a player.
27864
+ const YOUTUBE_EMBED = /^(https?:)?\/\/(www\.|m\.|music\.)?youtube(-nocookie)?\.com\/embed\//i;
27865
+ const VIMEO_EMBED = /^(https?:)?\/\/player\.vimeo\.com\/video\//i;
27866
+ /**
27867
+ * Whether an `<iframe>` `src` points at a recognized YouTube/Vimeo video
27868
+ * player. Such iframes are inserted intentionally through the Video button, so
27869
+ * clean-html must not strip them (`denyTags` includes `iframe` by default) or
27870
+ * neutralize them with an empty `sandbox=""` (#1381). Arbitrary/bare iframes
27871
+ * are still removed.
27872
+ *
27873
+ * @private
27874
+ */ function isAllowedMediaEmbed(src) {
27875
+ return YOUTUBE_EMBED.test(src) || VIMEO_EMBED.test(src);
27876
+ }
27877
+
27878
+
27842
27879
  /***/ }),
27843
27880
 
27844
27881
  /***/ 37431:
@@ -28327,6 +28364,7 @@ __webpack_require__.r(__webpack_exports__);
28327
28364
  /* harmony export */ });
28328
28365
  /* harmony import */ var jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(23211);
28329
28366
  /* harmony import */ var jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7909);
28367
+ /* harmony import */ var _is_allowed_media_embed__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(28665);
28330
28368
  /*!
28331
28369
  * Jodit Editor (https://xdsoft.net/jodit/)
28332
28370
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -28335,6 +28373,7 @@ __webpack_require__.r(__webpack_exports__);
28335
28373
  * @module plugins/clean-html
28336
28374
  */
28337
28375
 
28376
+
28338
28377
  /**
28339
28378
  * Add `sandbox=""` attribute to all `<iframe>` elements in the editor content
28340
28379
  * @private
@@ -28343,6 +28382,12 @@ __webpack_require__.r(__webpack_exports__);
28343
28382
  return hadEffect;
28344
28383
  }
28345
28384
  const elm = nodeElm;
28385
+ // A trusted YouTube/Vimeo player (inserted via the Video button) must not
28386
+ // get an empty `sandbox=""` — that blocks scripts and stops playback. It
28387
+ // is served in its own third-party origin, so leave it as-is (#1381).
28388
+ if ((0,_is_allowed_media_embed__WEBPACK_IMPORTED_MODULE_2__.isAllowedMediaEmbed)((0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, 'src') || '')) {
28389
+ return hadEffect;
28390
+ }
28346
28391
  if (!elm.hasAttribute('sandbox')) {
28347
28392
  (0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, 'sandbox', '');
28348
28393
  return true;
@@ -28479,6 +28524,8 @@ function filterStyleProperties(style, allowed) {
28479
28524
  /* harmony import */ var jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81937);
28480
28525
  /* harmony import */ var jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(23211);
28481
28526
  /* harmony import */ var jodit_core_helpers_string_trim__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4040);
28527
+ /* harmony import */ var jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7909);
28528
+ /* harmony import */ var _is_allowed_media_embed__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(28665);
28482
28529
  /*!
28483
28530
  * Jodit Editor (https://xdsoft.net/jodit/)
28484
28531
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -28488,6 +28535,8 @@ function filterStyleProperties(style, allowed) {
28488
28535
  */
28489
28536
 
28490
28537
 
28538
+
28539
+
28491
28540
  /**
28492
28541
  * @private
28493
28542
  */ function tryRemoveNode(jodit, nodeElm, hadEffect, allowTags, denyTags, currentSelectionNode) {
@@ -28504,7 +28553,12 @@ function filterStyleProperties(style, allowed) {
28504
28553
  if (allow && !allow[node.nodeName]) {
28505
28554
  return true;
28506
28555
  }
28507
- if (!allow && deny && deny[node.nodeName]) {
28556
+ // A YouTube/Vimeo player inserted through the Video button is trusted
28557
+ // editor content, so keep it even though `iframe` is denied by default
28558
+ // — otherwise the embed is stripped ~300ms after insertion (#1381).
28559
+ // Arbitrary/bare iframes stay denied.
28560
+ const isTrustedEmbed = node.nodeName === 'IFRAME' && (0,_is_allowed_media_embed__WEBPACK_IMPORTED_MODULE_4__.isAllowedMediaEmbed)((0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_3__.attr)(node, 'src') || '');
28561
+ if (!allow && deny && deny[node.nodeName] && !isTrustedEmbed) {
28508
28562
  return true;
28509
28563
  }
28510
28564
  }