diff --git a/package.json b/package.json
index 9f9f0d49a..1b3da55ab 100644
--- a/package.json
+++ b/package.json
@@ -52,7 +52,6 @@
"d3": "^5.7.0",
"dagre": "^0.8.4",
"dagre-d3": "^0.6.4",
- "entity-decode": "^2.0.2",
"graphlib": "^2.1.7",
"khroma": "^1.1.0",
"moment-mini": "^2.22.1",
diff --git a/src/mermaid.js b/src/mermaid.js
index 07728a5d3..12bf5bb91 100644
--- a/src/mermaid.js
+++ b/src/mermaid.js
@@ -2,7 +2,6 @@
* Web page integration module for the mermaid framework. It uses the mermaidAPI for mermaid functionality and to render
* the diagrams to svg code.
*/
-import decode from 'entity-decode/browser';
import { log } from './logger';
import mermaidAPI from './mermaidAPI';
import utils from './utils';
@@ -97,7 +96,8 @@ const init = function() {
txt = element.innerHTML;
// transforms the html to pure text
- txt = decode(txt)
+ txt = utils
+ .entityDecode(txt)
.trim()
.replace(/
/gi, '
');
diff --git a/src/utils.js b/src/utils.js
index 4cefe9044..531033e94 100644
--- a/src/utils.js
+++ b/src/utils.js
@@ -812,6 +812,20 @@ export const initIdGeneratior = class iterator {
}
};
+// Source https://github.com/shrpne/entity-decode/blob/master/browser.js
+let decoder;
+export const entityDecode = function(html) {
+ decoder = decoder || document.createElement('div');
+ // Escape HTML before decoding for HTML Entities
+ html = escape(html)
+ .replace(/%26/g, '&')
+ .replace(/%23/g, '#')
+ .replace(/%3B/g, ';');
+ // decoding
+ decoder.innerHTML = html;
+ return unescape(decoder.textContent);
+};
+
export default {
assignWithDepth,
wrapLabel,
@@ -834,5 +848,6 @@ export default {
random,
memoize,
runFunc,
+ entityDecode,
initIdGeneratior
};
diff --git a/yarn.lock b/yarn.lock
index 1c80409eb..4467cf145 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4181,12 +4181,15 @@ enhanced-resolve@^4.1.1, enhanced-resolve@^4.5.0:
memory-fs "^0.5.0"
tapable "^1.0.0"
-entity-decode@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/entity-decode/-/entity-decode-2.0.2.tgz#e4f807e52c3294246e9347d1f2b02b07fd5f92e7"
- integrity sha512-5CCY/3ci4MC1m2jlumNjWd7VBFt4VfFnmSqSNmVcXq4gxM3Vmarxtt+SvmBnzwLS669MWdVuXboNVj1qN2esVg==
- dependencies:
- he "^1.1.1"
+env-paths@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43"
+ integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==
+
+env-variable@0.0.x:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/env-variable/-/env-variable-0.0.6.tgz#74ab20b3786c545b62b4a4813ab8cf22726c9808"
+ integrity sha512-bHz59NlBbtS0NhftmR8+ExBEekE7br0e01jw+kk0NDro7TtZzBYZ5ScGPs3OmwnpyfHTHOtr1Y6uedCdrIldtg==
errno@^0.1.3, errno@~0.1.7:
version "0.1.8"
@@ -5524,7 +5527,7 @@ hast-util-whitespace@^1.0.0:
resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz#e4fe77c4a9ae1cb2e6c25e02df0043d0164f6e41"
integrity sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A==
-he@^1.1.0, he@^1.1.1, he@^1.2.0:
+he@^1.1.0, he@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==