diff --git a/src/dom_components/model/ComponentTextNode.js b/src/dom_components/model/ComponentTextNode.js index 02837b12d..d642b7759 100644 --- a/src/dom_components/model/ComponentTextNode.js +++ b/src/dom_components/model/ComponentTextNode.js @@ -1,5 +1,5 @@ import Component from './Component'; -import { escape } from 'utils/mixins'; +import { escapeNodeContent } from 'utils/mixins'; export default class ComponentTextNode extends Component { get defaults() { @@ -15,8 +15,12 @@ export default class ComponentTextNode extends Component { toHTML() { const parent = this.parent(); - const cnt = this.get('content'); - return parent && parent.is('script') ? cnt : escape(cnt); + const content = this.get('content'); + return parent?.is('script') ? content : this.__escapeContent(content); + } + + __escapeContent(content) { + return escapeNodeContent(content); } } diff --git a/src/utils/mixins.ts b/src/utils/mixins.ts index 9c2998b4d..de65cb0e9 100644 --- a/src/utils/mixins.ts +++ b/src/utils/mixins.ts @@ -194,6 +194,10 @@ export const escape = (str = '') => { .replace(/`/g, '`'); }; +export const escapeNodeContent = (str = '') => { + return `${str}`.replace(/&/g, '&').replace(//g, '>'); +}; + export const deepMerge = (...args: Record[]) => { const target = { ...args[0] };