import type { ISourceOptions , RecursivePartial } from "tsparticles" ; import { ConfettiOptions } from "./ConfettiOptions" ; import type { IConfettiOptions } from "./IConfettiOptions" ; export const loadOptions = ( confettiOptions ) : ISourceOptions => { const actualOptions = new ConfettiOptions ( ) ; actualOptions . load ( confettiOptions ) ; return { fullScreen : { enable : true , zIndex : actualOptions . zIndex , } , fpsLimit : 60 , particles : { number : { value : 0 , } , color : { value : actualOptions . colors , } , shape : { type : actualOptions . shapes , } , opacity : { value : 1 , animation : { enable : true , minimumValue : 0 , speed : 0.5 , startValue : "max" , destroy : "min" , } , } , size : { value : 5 * actualOptions . scalar , } , links : { enable : false , } , life : { duration : { sync : true , value : actualOptions . ticks / 60 , } , count : 1 , } , move : { angle : { value : actualOptions . spread , offset : 0 , } , drift : { min : - actualOptions . drift , max : actualOptions . drift , } , enable : true , gravity : { enable : true , acceleration : actualOptions . gravity * 9.81 , } , speed : actualOptions . startVelocity , decay : 1 - actualOptions . decay , direction : - actualOptions . angle , random : true , straight : false , outModes : { default : "none" , bottom : "destroy" , } , } , rotate : { value : { min : 0 , max : 360 , } , direction : "random" , animation : { enable : true , speed : 60 , } , } , tilt : { direction : "random" , enable : true , value : { min : 0 , max : 360 , } , animation : { enable : true , speed : 60 , } , } , roll : { darken : { enable : true , value : 25 , } , enable : true , speed : { min : 15 , max : 25 , } , } , wobble : { distance : 30 , enable : true , speed : { min : - 15 , max : 15 , } , } , } , detectRetina : true , motion : { disable : actualOptions . disableForReducedMotion , } , emitters : { startCount : actualOptions . count , position : actualOptions . position , size : { width : 0 , height : 0 , } , rate : { delay : 0 , quantity : 0 , } , life : { duration : 0.1 , count : 1 , } , } , } ; } ;