11import { Fireworks as FireworksJS } from 'fireworks-js'
2- import type { FireworksOptions } from 'fireworks-js'
3- import { onCleanup , onMount } from 'solid-js'
2+ import type { FireworksHandlers , FireworksOptions } from 'fireworks-js'
3+ import { mergeProps , onCleanup , onMount } from 'solid-js'
44import type { JSX , ParentComponent } from 'solid-js'
55
6- type FireworksProps = {
6+ interface FireworksProps
7+ extends Omit < JSX . HTMLAttributes < HTMLDivElement > , 'ref' > {
78 options ?: FireworksOptions
8- style ?: JSX . CSSProperties
9+ autostart ?: boolean
10+ ref ?: ( handlers : FireworksHandlers ) => void
911}
1012
11- const Fireworks : ParentComponent < FireworksProps > = ( {
12- options,
13- style ,
14- children
15- } ) => {
13+ const Fireworks : ParentComponent < FireworksProps > = ( props ) => {
14+ const { autostart , options, children , ref , ... rest } = mergeProps (
15+ { autostart : true } ,
16+ props
17+ )
1618 let container : HTMLDivElement | undefined
1719 let fireworks : FireworksJS | undefined
1820
1921 onMount ( ( ) => {
2022 fireworks = new FireworksJS ( container ! , options )
21- fireworks . start ( )
23+ if ( autostart ) {
24+ fireworks . start ( )
25+ }
26+
27+ if ( ref ) {
28+ ref ( fireworks )
29+ }
2230
2331 onCleanup ( ( ) => {
2432 fireworks ! . stop ( )
@@ -28,7 +36,7 @@ const Fireworks: ParentComponent<FireworksProps> = ({
2836 return (
2937 < div
3038 ref = { container }
31- style = { style }
39+ { ... rest }
3240 >
3341 { children }
3442 </ div >
@@ -37,4 +45,4 @@ const Fireworks: ParentComponent<FireworksProps> = ({
3745
3846export { Fireworks }
3947export default Fireworks
40- export type { FireworksOptions }
48+ export type { FireworksOptions , FireworksHandlers }
0 commit comments