/
types.ts
112 lines (99 loc) 路 1.88 KB
/
types.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import type { Fireworks } from './fireworks.js'
export type LineStyle = 'round' | 'square'
export interface IFireworksOptions {
hue: MinMax
rocketsPoint: MinMax
opacity: number
acceleration: number
friction: number
gravity: number
particles: number
explosion: number
mouse: IMouse
boundaries: IBoundaries
sound: ISounds
delay: MinMax
brightness: MinMax
decay: MinMax
flickering: number
intensity: number
traceLength: number
traceSpeed: number
lineWidth: LineWidth
lineStyle: LineStyle
autoresize: boolean
}
export type FireworksOptions = RecursivePartial<IFireworksOptions>
export interface IMouse {
click: boolean
move: boolean
max: number
}
export interface IBoundaries {
x: number
y: number
width: number
height: number
}
export interface ISounds {
enabled: boolean
files: string[]
volume: MinMax
}
export interface LineWidth {
explosion: MinMax
trace: MinMax
}
export interface MinMax {
min: number
max: number
}
export interface Sizes {
width: number
height: number
}
export interface TraceOptions {
x: number
y: number
dx: number
dy: number
ctx: CanvasRenderingContext2D
hue: number
speed: number
acceleration: number
traceLength: number
}
export interface ExplosionOptions {
x: number
y: number
ctx: CanvasRenderingContext2D
hue: number
friction: number
gravity: number
explosionLength: number
flickering: boolean
lineWidth: number
brightness: MinMax
decay: MinMax
}
export type RecursivePartial<T> = {
[P in keyof T]?: T[P] extends (infer U)[]
? RecursivePartial<U>[]
: T[P] extends object
? RecursivePartial<T[P]>
: T[P]
}
export interface FireworksHandlers
extends Pick<
Fireworks,
| 'isRunning'
| 'start'
| 'pause'
| 'clear'
| 'updateOptions'
| 'updateBoundaries'
| 'updateSize'
> {
waitStop(): Promise<void>
stop(): void
}