Skip to content

Commit 7c42b63

Browse files
committed
feat(svelte): enable reactivity of options via svelte action
1 parent 462a6d7 commit 7c42b63

File tree

2 files changed

+43
-9
lines changed

2 files changed

+43
-9
lines changed

packages/svelte/README.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,35 @@
11
# @fireworks-js/svelte
22

33
> https://github.com/crashmax-dev/fireworks-js
4+
5+
## Installation
6+
7+
```sh
8+
npm install @fireworks-js/svelte
9+
```
10+
11+
## Usage
12+
13+
#### [`fireworks-js`](https://github.com/crashmax-dev/fireworks-js/tree/master/examples/with-svelte)
14+
15+
```svelte
16+
<script lang="ts">
17+
import { Fireworks } from '@fireworks-js/svelte'
18+
import type { FireworksOptions } from '@fireworks-js/svelte'
19+
20+
let fw: Fireworks
21+
let options: FireworksOptions = {
22+
opacity: 0.5
23+
}
24+
25+
function toggleFireworks() {
26+
const fireworks = fw.fireworksInstance()
27+
if (fireworks.isRunning) {
28+
fireworks.waitStop()
29+
} else {
30+
fireworks.start()
31+
}
32+
}
33+
</script>
34+
<Fireworks bind:this={fw} autostart={false} {options} class="fireworks" />
35+
```
Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
<script lang="ts">
2-
import { onMount, onDestroy } from 'svelte'
32
import { Fireworks } from 'fireworks-js'
43
import type { FireworksOptions } from 'fireworks-js'
54
@@ -9,25 +8,28 @@
98
export let style: string = ''
109
export let options: FireworksOptions = {}
1110
12-
let container: HTMLDivElement
1311
let fireworks: Fireworks
1412
1513
export function fireworksInstance() {
1614
return fireworks
1715
}
1816
19-
onMount(() => {
17+
function setup(container:HTMLDivElement, options: FireworksOptions) {
2018
fireworks = new Fireworks(container, options)
2119
if (autostart) {
2220
fireworks.start()
2321
}
24-
})
25-
26-
onDestroy(() => {
27-
fireworks?.stop()
28-
})
22+
return {
23+
update(options: FireworksOptions) {
24+
fireworks.updateOptions(options)
25+
},
26+
destroy() {
27+
fireworks.stop()
28+
}
29+
}
30+
}
2931
</script>
3032

31-
<div bind:this={container} class={className} {style}>
33+
<div class={className} {style} use:setup={options}>
3234
<slot></slot>
3335
</div>

0 commit comments

Comments
 (0)