aboutsummaryrefslogtreecommitdiff
path: root/node_modules/jsdom/lib/jsdom/living/helpers/svg/render.js
diff options
context:
space:
mode:
authorJoel Kronqvist <joel.h.kronqvist@gmail.com>2022-03-05 19:02:27 +0200
committerJoel Kronqvist <joel.h.kronqvist@gmail.com>2022-03-05 19:02:27 +0200
commit5d309ff52cd399a6b71968a6b9a70c8ac0b98981 (patch)
tree360f7eb50f956e2367ef38fa1fc6ac7ac5258042 /node_modules/jsdom/lib/jsdom/living/helpers/svg/render.js
parentb500a50f1b97d93c98b36ed9a980f8188d648147 (diff)
downloadLYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.tar.gz
LYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.zip
Added node_modules for the updating to work properly.
Diffstat (limited to 'node_modules/jsdom/lib/jsdom/living/helpers/svg/render.js')
-rw-r--r--node_modules/jsdom/lib/jsdom/living/helpers/svg/render.js46
1 files changed, 46 insertions, 0 deletions
diff --git a/node_modules/jsdom/lib/jsdom/living/helpers/svg/render.js b/node_modules/jsdom/lib/jsdom/living/helpers/svg/render.js
new file mode 100644
index 0000000..651568d
--- /dev/null
+++ b/node_modules/jsdom/lib/jsdom/living/helpers/svg/render.js
@@ -0,0 +1,46 @@
+"use strict";
+const { SVG_NS } = require("../namespaces");
+
+// https://svgwg.org/svg2-draft/render.html#TermNeverRenderedElement
+const neverRenderedElements = new Set([
+ "clipPath",
+ "defs",
+ "desc",
+ "linearGradient",
+ "marker",
+ "mask",
+ "metadata",
+ "pattern",
+ "radialGradient",
+ "script",
+ "style",
+ "title",
+ "symbol"
+]);
+
+// https://svgwg.org/svg2-draft/render.html#Rendered-vs-NonRendered
+exports.isRenderedElement = elImpl => {
+ if (neverRenderedElements.has(elImpl._localName)) {
+ return false;
+ }
+
+ // This does not check for elements excluded because of conditional processing attributes or ‘switch’ structures,
+ // because conditional processing is not implemented.
+ // https://svgwg.org/svg2-draft/struct.html#ConditionalProcessing
+
+ // This does not check for computed style of display being none, since that is not yet implemented for HTML
+ // focusability either (and there are no tests yet).
+
+ if (!elImpl.isConnected) {
+ return false;
+ }
+
+ // The spec is unclear about how to deal with non-SVG parents, so we only perform this check for SVG-namespace
+ // parents.
+ if (elImpl.parentElement && elImpl.parentElement._namespaceURI === SVG_NS &&
+ !exports.isRenderedElement(elImpl.parentNode)) {
+ return false;
+ }
+
+ return true;
+};