jodit 4.13.3 → 4.13.6

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 (54) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/es2015/jodit.css +1 -1
  3. package/es2015/jodit.fat.min.js +14 -14
  4. package/es2015/jodit.js +17 -8
  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 +17 -8
  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 +17 -8
  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 +17 -8
  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/html/safe-html.js +3 -2
  52. package/esm/modules/toolbar/button/button.js +2 -1
  53. package/esm/plugins/clean-html/helpers/visitor/filters/try-remove-node.js +10 -3
  54. package/package.json +1 -1
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.13.3
4
+ * Version: v4.13.6
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.3";
1846
+ */ const APP_VERSION = "4.13.6";
1847
1847
  // prettier-ignore
1848
1848
  const ES = "es2021";
1849
1849
  const IS_ES_MODERN = true;
@@ -6156,7 +6156,7 @@ const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';
6156
6156
  // markup into a live node.
6157
6157
  const foreign = box.querySelectorAll('math *, svg *');
6158
6158
  for(let i = 0; i < foreign.length; i++){
6159
- if (foreign[i].isConnected && isSmuggledForeignHtml(foreign[i])) {
6159
+ if (box.contains(foreign[i]) && isSmuggledForeignHtml(foreign[i])) {
6160
6160
  jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(foreign[i]);
6161
6161
  }
6162
6162
  }
@@ -6264,7 +6264,8 @@ function sanitizeHTMLElement(elm, { safeJavaScriptLink, removeOnError } = {
6264
6264
  // scheme (e.g. `java\tscript:`) — all of which the browser still resolves to
6265
6265
  // `javascript:` on click. See GHSA-j839-gqq4-gf9j.
6266
6266
  if (safeJavaScriptLink && href && isDangerousUrl(href, tagName)) {
6267
- (0,jodit_core_helpers_utils__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, 'href', location.protocol + '//' + href);
6267
+ const protocol = typeof location !== 'undefined' ? location.protocol : 'http:';
6268
+ (0,jodit_core_helpers_utils__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, 'href', protocol + '//' + href);
6268
6269
  effected = true;
6269
6270
  }
6270
6271
  if (safeJavaScriptLink) {
@@ -23821,7 +23822,8 @@ class ToolbarButton extends jodit_core_ui_button__WEBPACK_IMPORTED_MODULE_18__.U
23821
23822
  button.classList.remove(cn);
23822
23823
  button.classList.add(cn + '__button');
23823
23824
  Object.defineProperty(button, 'component', {
23824
- value: this
23825
+ value: this,
23826
+ configurable: true
23825
23827
  });
23826
23828
  container.appendChild(button);
23827
23829
  const trigger = this.j.c.fromHTML(`<span role="button" aria-haspopup="true" aria-expanded="false" class="${cn}__trigger">${jodit_core_ui_icon__WEBPACK_IMPORTED_MODULE_20__.Icon.get('chevron')}</span>`);
@@ -28719,15 +28721,22 @@ function filterStyleProperties(style, allowed) {
28719
28721
  * @private
28720
28722
  */ function isRemovableNode(jodit, node, current, allow, deny) {
28721
28723
  if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.isText(node)) {
28722
- if (allow && !allow[node.nodeName]) {
28724
+ // The allow/deny hashes are keyed by upper-cased tag name. HTML
28725
+ // `nodeName` is already upper-case, but foreign (SVG/MathML) elements
28726
+ // keep their original case — an SVG `<script>` reports `"script"`, so a
28727
+ // case-sensitive lookup let it slip past `denyTags` and execute. Normalise
28728
+ // to upper case so namespace can't bypass the filter. See
28729
+ // GHSA-45qg-252v-3f7p.
28730
+ const name = node.nodeName.toUpperCase();
28731
+ if (allow && !allow[name]) {
28723
28732
  return true;
28724
28733
  }
28725
28734
  // A YouTube/Vimeo player inserted through the Video button is trusted
28726
28735
  // editor content, so keep it even though `iframe` is denied by default
28727
28736
  // — otherwise the embed is stripped ~300ms after insertion (#1381).
28728
28737
  // Arbitrary/bare iframes stay denied.
28729
- 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') || '');
28730
- if (!allow && deny && deny[node.nodeName] && !isTrustedEmbed) {
28738
+ const isTrustedEmbed = name === 'IFRAME' && (0,_is_allowed_media_embed__WEBPACK_IMPORTED_MODULE_4__.isAllowedMediaEmbed)((0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_3__.attr)(node, 'src') || '');
28739
+ if (!allow && deny && deny[name] && !isTrustedEmbed) {
28731
28740
  return true;
28732
28741
  }
28733
28742
  }