diff --git a/.changeset/good-parrots-act.md b/.changeset/good-parrots-act.md new file mode 100644 index 000000000000..ea0bb9f28012 --- /dev/null +++ b/.changeset/good-parrots-act.md @@ -0,0 +1,5 @@ +--- +"@sveltejs/enhanced-img": patch +--- + +fix: support shorthand attribute syntax diff --git a/packages/enhanced-img/src/preprocessor.js b/packages/enhanced-img/src/preprocessor.js index 0575f88c5259..5dcc54431d8e 100644 --- a/packages/enhanced-img/src/preprocessor.js +++ b/packages/enhanced-img/src/preprocessor.js @@ -53,6 +53,10 @@ export function image(opts) { .trim(); s.update(node.start, node.end, dynamic_img_to_picture(content, node, src_var_name)); return; + } else if (src_attribute.type === 'AttributeShorthand') { + const src_var_name = content.substring(src_attribute.start, src_attribute.end).trim(); + s.update(node.start, node.end, dynamic_img_to_picture(content, node, src_var_name)); + return; } const original_url = src_attribute.raw.trim(); diff --git a/packages/enhanced-img/test/Input.svelte b/packages/enhanced-img/test/Input.svelte index 72b12eefc365..84e067bbb941 100644 --- a/packages/enhanced-img/test/Input.svelte +++ b/packages/enhanced-img/test/Input.svelte @@ -2,6 +2,7 @@ import manual_image1 from './no.png'; import manual_image2 from './no.svg'; + const src = manual_image1; const images = [manual_image1, manual_image2]; let foo: string = 'bar'; @@ -31,6 +32,8 @@ + + {#each images as image} diff --git a/packages/enhanced-img/test/Output.svelte b/packages/enhanced-img/test/Output.svelte index fe7caca8a830..8873ec20a811 100644 --- a/packages/enhanced-img/test/Output.svelte +++ b/packages/enhanced-img/test/Output.svelte @@ -5,6 +5,7 @@ import manual_image2 from './no.svg'; + const src = manual_image1; const images = [manual_image1, manual_image2]; let foo: string = 'bar'; @@ -30,6 +31,17 @@ absolute path test +{#if typeof src === 'string'} + attribute shorthand test +{:else} + + {#each Object.entries(src.sources) as [format, srcset]} + + {/each} + attribute shorthand test + +{/if} + svg test {#each images as image}