From 4b1bd3b71fc82713a2dd4463220a4cccbfef5e0c Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Thu, 20 Oct 2022 15:03:07 +0400 Subject: [PATCH] Update ComponentTextNode escape --- src/dom_components/model/ComponentTextNode.js | 10 +++++++--- src/utils/mixins.ts | 4 ++++ 2 files changed, 11 insertions(+), 3 deletions(-) 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] };