1+ //
[email protected] downloaded from https://unpkg.com/
[email protected] /dist/trix.umd.js
2+
13/*
2- Trix 2.1.14
4+ Trix 2.1.15
35Copyright © 2025 37signals, LLC
46 */
57(function (global, factory) {
@@ -9,7 +11,7 @@ Copyright © 2025 37signals, LLC
911})(this, (function () { 'use strict';
1012
1113 var name = "trix";
12- var version = "2.1.14 ";
14+ var version = "2.1.15 ";
1315 var description = "A rich text editor for everyday writing";
1416 var main = "dist/trix.umd.min.js";
1517 var module = "dist/trix.esm.min.js";
30913093 const DEFAULT_FORBIDDEN_PROTOCOLS = "javascript:".split(" ");
30923094 const DEFAULT_FORBIDDEN_ELEMENTS = "script iframe form noscript".split(" ");
30933095 class HTMLSanitizer extends BasicObject {
3094- static setHTML(element, html) {
3095- const sanitizedElement = new this(html).sanitize();
3096+ static setHTML(element, html, options ) {
3097+ const sanitizedElement = new this(html, options ).sanitize();
30963098 const sanitizedHtml = sanitizedElement.getHTML ? sanitizedElement.getHTML() : sanitizedElement.outerHTML;
30973099 element.innerHTML = sanitizedHtml;
30983100 }
@@ -3105,18 +3107,21 @@ $\
31053107 let {
31063108 allowedAttributes,
31073109 forbiddenProtocols,
3108- forbiddenElements
3110+ forbiddenElements,
3111+ purifyOptions
31093112 } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
31103113 super(...arguments);
31113114 this.allowedAttributes = allowedAttributes || DEFAULT_ALLOWED_ATTRIBUTES;
31123115 this.forbiddenProtocols = forbiddenProtocols || DEFAULT_FORBIDDEN_PROTOCOLS;
31133116 this.forbiddenElements = forbiddenElements || DEFAULT_FORBIDDEN_ELEMENTS;
3117+ this.purifyOptions = purifyOptions || {};
31143118 this.body = createBodyElementForHTML(html);
31153119 }
31163120 sanitize() {
31173121 this.sanitizeElements();
31183122 this.normalizeListElementNesting();
3119- purify.setConfig(dompurify);
3123+ const purifyConfig = Object.assign({}, dompurify, this.purifyOptions);
3124+ purify.setConfig(purifyConfig);
31203125 this.body = purify.sanitize(this.body);
31213126 return this.body;
31223127 }
@@ -8369,11 +8374,13 @@ $\
83698374 }
83708375 constructor(html) {
83718376 let {
8372- referenceElement
8377+ referenceElement,
8378+ purifyOptions
83738379 } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
83748380 super(...arguments);
83758381 this.html = html;
83768382 this.referenceElement = referenceElement;
8383+ this.purifyOptions = purifyOptions;
83778384 this.blocks = [];
83788385 this.blockElements = [];
83798386 this.processedElements = [];
83878394 parse() {
83888395 try {
83898396 this.createHiddenContainer();
8390- HTMLSanitizer.setHTML(this.containerElement, this.html);
8397+ HTMLSanitizer.setHTML(this.containerElement, this.html, {
8398+ purifyOptions: this.purifyOptions
8399+ });
83918400 const walker = walkTree(this.containerElement, {
83928401 usingFilter: nodeFilter
83938402 });
@@ -9067,7 +9076,11 @@ $\
90679076 }
90689077 }
90699078 insertHTML(html) {
9070- const document = HTMLParser.parse(html).getDocument();
9079+ const document = HTMLParser.parse(html, {
9080+ purifyOptions: {
9081+ SAFE_FOR_XML: true
9082+ }
9083+ }).getDocument();
90719084 const selectedRange = this.getSelectedRange();
90729085 this.setDocument(this.document.mergeDocumentAtRange(document, selectedRange));
90739086 const startPosition = selectedRange[0];
0 commit comments