From ef8c56e9e55891af4757115669cff2a275de8fc1 Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Wed, 18 Dec 2024 22:44:46 +0000 Subject: [PATCH] address feedback --- .../2-analyze/visitors/RegularElement.js | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/RegularElement.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/RegularElement.js index bde49bcdba..9a891c0c49 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/RegularElement.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/RegularElement.js @@ -86,10 +86,23 @@ export function RegularElement(node, context) { (attribute) => attribute.type === 'SpreadAttribute' ); - node.metadata.svg = - is_svg(node.name) || - (node.name === 'a' && - context.path.some((n) => n.type === 'RegularElement' && n.name === 'svg')); + const is_svg_element = () => { + if (is_svg(node.name)) { + return true; + } + if (node.name === 'a') { + for (let i = context.path.length - 1; i >= 0; i--) { + const ancestor = context.path[i]; + if (ancestor.type === 'RegularElement') { + return ancestor.metadata.svg; + } + } + } + + return false; + }; + + node.metadata.svg = is_svg_element(); node.metadata.mathml = is_mathml(node.name); if (is_custom_element_node(node) && node.attributes.length > 0) {