Skip to content

Commit 945fbcb

Browse files
committed
chore(packages/svelte): refactor svelte wrapper
1 parent 3f05741 commit 945fbcb

File tree

3 files changed

+64
-11
lines changed

3 files changed

+64
-11
lines changed

examples/with-svelte/src/App.svelte

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,40 @@
11
<script lang="ts">
22
import { Fireworks } from '@fireworks-js/svelte'
33
import type { FireworksOptions } from '@fireworks-js/svelte'
4+
import { onMount } from 'svelte'
45
6+
let fw: Fireworks
57
let enabled = true
68
let options: FireworksOptions = {
79
opacity: 0.5
810
}
11+
12+
function toggleFireworks() {
13+
const fireworks = fw.fireworksInstance()
14+
if (fireworks.isRunning) {
15+
fireworks.waitStop()
16+
} else {
17+
fireworks.start()
18+
}
19+
}
20+
21+
onMount(() => {
22+
const fireworks = fw.fireworksInstance()
23+
console.log(fireworks)
24+
})
925
</script>
1026

1127
<main>
12-
<button on:click={() => (enabled = !enabled)} class="btn">
13-
{enabled ? 'Enabled' : 'Disabled'}
14-
</button>
28+
<div class="buttons">
29+
<button on:click={() => (enabled = !enabled)}>
30+
{enabled ? 'Enabled' : 'Disabled'}
31+
</button>
32+
<button on:click={() => toggleFireworks()}>
33+
Toggle
34+
</button>
35+
</div>
1536
{#if enabled}
16-
<Fireworks {options} class="fireworks" />
37+
<Fireworks bind:this={fw} autostart={false} {options} class="fireworks" />
1738
{/if}
1839
</main>
1940

@@ -27,7 +48,9 @@
2748
background: #000;
2849
}
2950
30-
.btn {
51+
.buttons {
52+
display: flex;
53+
gap: 4px;
3154
position: absolute;
3255
z-index: 1;
3356
}

packages/svelte/src/lib/fireworks.svelte

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,22 @@
55
66
let className = ''
77
export { className as class }
8+
export let autostart = true
89
export let style: string = ''
910
export let options: FireworksOptions = {}
1011
1112
let container: HTMLDivElement
1213
let fireworks: Fireworks
1314
15+
export function fireworksInstance() {
16+
return fireworks
17+
}
18+
1419
onMount(() => {
1520
fireworks = new Fireworks(container, options)
16-
fireworks.start()
21+
if (autostart) {
22+
fireworks.start()
23+
}
1724
})
1825
1926
onDestroy(() => {

packages/svelte/src/routes/+page.svelte

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,40 @@
11
<script lang="ts">
22
import { Fireworks } from '../lib'
33
import type { FireworksOptions } from '../lib'
4+
import { onMount } from 'svelte'
45
6+
let fw: Fireworks
57
let enabled = true
68
let options: FireworksOptions = {
79
opacity: 0.5
810
}
11+
12+
function toggleFireworks() {
13+
const fireworks = fw.fireworksInstance()
14+
if (fireworks.isRunning) {
15+
fireworks.waitStop()
16+
} else {
17+
fireworks.start()
18+
}
19+
}
20+
21+
onMount(() => {
22+
const fireworks = fw.fireworksInstance()
23+
console.log(fireworks)
24+
})
925
</script>
1026

1127
<main>
12-
<button on:click={() => (enabled = !enabled)} class="btn">
13-
{enabled ? 'Enabled' : 'Disabled'}
14-
</button>
28+
<div class="buttons">
29+
<button on:click={() => (enabled = !enabled)}>
30+
{enabled ? 'Enabled' : 'Disabled'}
31+
</button>
32+
<button on:click={() => toggleFireworks()}>
33+
Toggle
34+
</button>
35+
</div>
1536
{#if enabled}
16-
<Fireworks {options} class="fireworks" />
37+
<Fireworks bind:this={fw} autostart={false} {options} class="fireworks" />
1738
{/if}
1839
</main>
1940

@@ -27,7 +48,9 @@
2748
background: #000;
2849
}
2950
30-
.btn {
51+
.buttons {
52+
display: flex;
53+
gap: 4px;
3154
position: absolute;
3255
z-index: 1;
3356
}

0 commit comments

Comments
 (0)