Skip to content

Commit 800d3fe

Browse files
authored
(fix) infer svg element type (#448)
Using the same strategy as for `use:` #447
1 parent 6ebf1a4 commit 800d3fe

File tree

4 files changed

+11
-9
lines changed

4 files changed

+11
-9
lines changed

packages/svelte2tsx/src/htmlxtojsx/index.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ export function convertHtmlxToJsx(
205205
case 'InlineComponent':
206206
return getTypeForComponent(node);
207207
case 'Element':
208-
return 'HTMLElement';
208+
return `__sveltets_ctorOf(__sveltets_mapElementTag('${node.name}'))`;
209209
case 'Body':
210210
return 'HTMLBodyElement';
211211
default:
@@ -360,12 +360,13 @@ export function convertHtmlxToJsx(
360360
//skip Attribute shorthand, that is handled below
361361
const sapperNoScroll = attr.name === 'sapper:noscroll';
362362
if (
363-
attr.value !== true &&
364-
!(
365-
attr.value.length &&
366-
attr.value.length == 1 &&
367-
attr.value[0].type == 'AttributeShorthand'
368-
) || sapperNoScroll
363+
(attr.value !== true &&
364+
!(
365+
attr.value.length &&
366+
attr.value.length == 1 &&
367+
attr.value[0].type == 'AttributeShorthand'
368+
)) ||
369+
sapperNoScroll
369370
) {
370371
let name = attr.name;
371372
if (!svgAttributes.find((x) => x == name)) {

packages/svelte2tsx/svelte-shims.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ declare function __sveltets_ensureAction<U extends any[], El extends any>(
105105
declare function __sveltets_ensureTransition<U extends any[]>(transition: SvelteTransition<U>, ...args: U): {};
106106
declare function __sveltets_ensureFunction(expression: (e: Event & { detail?: any }) => unknown ): {};
107107
declare function __sveltets_ensureType<T>(type: AConstructorTypeOf<T>, el: T): {};
108+
declare function __sveltets_ctorOf<T>(type: T): AConstructorTypeOf<T>;
108109
declare function __sveltets_instanceOf<T>(type: AConstructorTypeOf<T>): T;
109110
declare function __sveltets_allPropsType(): SvelteAllProps
110111
declare function __sveltets_restPropsType(): SvelteRestProps
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<><input type="radio" {...__sveltets_ensureType(HTMLElement, element)} value="Plain"/></>
1+
<><input type="radio" {...__sveltets_ensureType(__sveltets_ctorOf(__sveltets_mapElementTag('input')), element)} value="Plain"/></>

packages/svelte2tsx/test/sourcemaps/repl.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@
136136
<TableOfContents sections={sections} slug={slug} selected={selected}/>
137137
</div>
138138

139-
<div class="chapter-markup" {...__sveltets_ensureType(HTMLElement, scrollable)}>
139+
<div class="chapter-markup" {...__sveltets_ensureType(__sveltets_ctorOf(__sveltets_mapElementTag('div')), scrollable)}>
140140
{ chapter.html}
141141

142142
<div class="controls">

0 commit comments

Comments
 (0)