11import { Fireworks as FireworksJs } from 'fireworks-js'
2- import type { FireworksOptions } from 'fireworks-js'
2+ import type { FireworksHandlers , FireworksOptions } from 'fireworks-js'
33import React , { useEffect , useImperativeHandle , useRef } from 'react'
44
55interface FireworksProps extends React . HTMLAttributes < HTMLDivElement > {
66 children ?: React . ReactNode
7- autostart ?: boolean
87 options ?: FireworksOptions
98}
109
11- interface FireworksHandlers
12- extends Pick <
13- FireworksJs ,
14- 'isRunning' | 'start' | 'pause' | 'clear' | 'updateOptions' | 'updateSize'
15- > {
16- stop ( ) : void
17- }
18-
1910const Fireworks = React . forwardRef < FireworksHandlers , FireworksProps > (
20- ( { children, options, autostart = true , ...rest } , ref ) => {
11+ ( { children, options, ...rest } , ref ) => {
2112 const container = useRef < HTMLDivElement > ( null )
2213 const fireworks = useRef < FireworksJs | null > ( null )
2314
@@ -29,7 +20,10 @@ const Fireworks = React.forwardRef<FireworksHandlers, FireworksProps>(
2920 fireworks . current ! . start ( )
3021 } ,
3122 stop ( ) {
32- fireworks . current ! . stop ( )
23+ fireworks . current ! . stop ( true )
24+ } ,
25+ async waitStop ( ) {
26+ await fireworks . current ! . waitStop ( true )
3327 } ,
3428 pause ( ) {
3529 fireworks . current ! . pause ( )
@@ -42,14 +36,15 @@ const Fireworks = React.forwardRef<FireworksHandlers, FireworksProps>(
4236 } ,
4337 updateSize ( size ) {
4438 fireworks . current ! . updateSize ( size )
39+ } ,
40+ updateBoundaries ( boundaries ) {
41+ fireworks . current ! . updateBoundaries ( boundaries )
4542 }
4643 } ) )
4744
4845 useEffect ( ( ) => {
4946 fireworks . current = new FireworksJs ( container . current ! , options )
50- if ( autostart ) {
51- fireworks . current . start ( )
52- }
47+ fireworks . current . start ( )
5348
5449 return ( ) => {
5550 fireworks . current ! . stop ( true )
0 commit comments