Skip to content

Commit 595a08c

Browse files
Svelte: Support latest prerelease
1 parent b94ad44 commit 595a08c

File tree

4 files changed

+10
-5
lines changed

4 files changed

+10
-5
lines changed

code/frameworks/svelte-webpack5/templates/SlotDecorator.svelte

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<script>
22
import { onMount } from 'svelte';
3+
export let svelteVersion;
34
export let decorator;
45
export let decoratorProps = {};
56
export let component;
@@ -14,7 +15,7 @@
1415
return instance || decoratorInstance;
1516
}
1617
17-
if (on) {
18+
if (on && svelteVersion < 5) {
1819
// Attach svelte event listeners.
1920
Object.keys(on).forEach((eventName) => {
2021
onMount(() => getInstance().$on(eventName, on[eventName]));

code/renderers/svelte/src/components/PreviewRender.svelte

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import SlotDecorator from './SlotDecorator.svelte';
33
import { dedent } from 'ts-dedent';
44
5+
export let svelteVersion;
56
export let name;
67
export let title;
78
export let storyFn;
@@ -55,4 +56,4 @@
5556
}
5657
</script>
5758

58-
<SlotDecorator {Component} {props} on={{ ...eventsFromArgTypes, ...on }} />
59+
<SlotDecorator {svelteVersion} {Component} {props} on={{ ...eventsFromArgTypes, ...on }} />

code/renderers/svelte/src/components/SlotDecorator.svelte

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<script>
22
import { onMount } from 'svelte';
33
4+
export let svelteVersion;
45
export let decorator = undefined;
56
export let Component;
67
export let props = {};
@@ -9,16 +10,16 @@
910
let instance;
1011
let decoratorInstance;
1112
12-
if (on) {
13+
if (on && svelteVersion < 5) {
1314
// Attach Svelte event listeners in Svelte v4
1415
// In Svelte v5 this is not possible anymore as instances are no longer classes with $on() properties, so it will be a no-op
15-
onMount(() => {
16+
onMount(() => {
1617
Object.entries(on).forEach(([eventName, eventCallback]) => {
1718
// instance can be undefined if a decorator doesn't have <slot/>
1819
const inst = instance ?? decoratorInstance;
1920
inst?.$on?.(eventName, eventCallback)
2021
});
21-
});
22+
});
2223
}
2324
</script>
2425

code/renderers/svelte/src/render.ts

+2
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ function renderToCanvasV4(
7777
const mountedComponent = new PreviewRender({
7878
target: canvasElement,
7979
props: {
80+
svelteVersion: 4,
8081
storyFn,
8182
storyContext,
8283
name,
@@ -148,6 +149,7 @@ function renderToCanvasV5(
148149
name,
149150
title,
150151
showError,
152+
svelteVersion: 5,
151153
});
152154
const mountedComponent = svelte.mount(PreviewRender, {
153155
target: canvasElement,

0 commit comments

Comments
 (0)