From b6c118b34a870c5663233b8da885e7865618cb49 Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Fri, 25 Oct 2024 20:24:26 +0100 Subject: [PATCH 1/3] fix: ensure SVG element attributes have case preserved --- .changeset/gentle-bulldogs-cough.md | 5 +++++ .../phases/3-transform/client/visitors/SvelteElement.js | 2 +- .../svelte/src/internal/client/dom/elements/attributes.js | 1 + .../runtime-runes/samples/svg-attribute-case/_config.js | 5 +++++ .../runtime-runes/samples/svg-attribute-case/main.svelte | 4 ++++ 5 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 .changeset/gentle-bulldogs-cough.md create mode 100644 packages/svelte/tests/runtime-runes/samples/svg-attribute-case/_config.js create mode 100644 packages/svelte/tests/runtime-runes/samples/svg-attribute-case/main.svelte diff --git a/.changeset/gentle-bulldogs-cough.md b/.changeset/gentle-bulldogs-cough.md new file mode 100644 index 000000000000..3f6f86225915 --- /dev/null +++ b/.changeset/gentle-bulldogs-cough.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: ensure SVG element attributes have case preserved diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteElement.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteElement.js index d95f03d1d47c..ba66fe29d691 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteElement.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteElement.js @@ -101,7 +101,7 @@ export function SvelteElement(node, context) { node, element_id, attributes_id, - b.binary('!==', b.member(element_id, 'namespaceURI'), b.id('$.NAMESPACE_SVG')), + b.binary('===', b.member(element_id, 'namespaceURI'), b.id('$.NAMESPACE_SVG')), b.call(b.member(b.member(element_id, 'nodeName'), 'includes'), b.literal('-')), context.state ); diff --git a/packages/svelte/src/internal/client/dom/elements/attributes.js b/packages/svelte/src/internal/client/dom/elements/attributes.js index b05dd8f9aa62..95db5304d325 100644 --- a/packages/svelte/src/internal/client/dom/elements/attributes.js +++ b/packages/svelte/src/internal/client/dom/elements/attributes.js @@ -170,6 +170,7 @@ export function set_attributes( var current = prev || {}; var is_option_element = element.tagName === 'OPTION'; + for (var key in prev) { if (!(key in next)) { next[key] = null; diff --git a/packages/svelte/tests/runtime-runes/samples/svg-attribute-case/_config.js b/packages/svelte/tests/runtime-runes/samples/svg-attribute-case/_config.js new file mode 100644 index 000000000000..76ff5adc10eb --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/svg-attribute-case/_config.js @@ -0,0 +1,5 @@ +import { test } from '../../test'; + +export default test({ + html: ` + + + \ No newline at end of file From 0ba610236a8d956f067a50262e22d41f409c5153 Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Fri, 25 Oct 2024 20:24:56 +0100 Subject: [PATCH 2/3] fix: ensure SVG element attributes have case preserved --- packages/svelte/src/internal/client/dom/elements/attributes.js | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/svelte/src/internal/client/dom/elements/attributes.js b/packages/svelte/src/internal/client/dom/elements/attributes.js index 95db5304d325..b05dd8f9aa62 100644 --- a/packages/svelte/src/internal/client/dom/elements/attributes.js +++ b/packages/svelte/src/internal/client/dom/elements/attributes.js @@ -170,7 +170,6 @@ export function set_attributes( var current = prev || {}; var is_option_element = element.tagName === 'OPTION'; - for (var key in prev) { if (!(key in next)) { next[key] = null; From 785c18603d8d543f2c0b16efeba0e44a135afe72 Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Fri, 25 Oct 2024 20:26:18 +0100 Subject: [PATCH 3/3] fix: ensure SVG element attributes have case preserved --- .../tests/runtime-runes/samples/svg-attribute-case/_config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/svelte/tests/runtime-runes/samples/svg-attribute-case/_config.js b/packages/svelte/tests/runtime-runes/samples/svg-attribute-case/_config.js index 76ff5adc10eb..a863250c74bc 100644 --- a/packages/svelte/tests/runtime-runes/samples/svg-attribute-case/_config.js +++ b/packages/svelte/tests/runtime-runes/samples/svg-attribute-case/_config.js @@ -1,5 +1,5 @@ import { test } from '../../test'; export default test({ - html: `` });