@basmilius/sparkle 2.0.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +1053 -28
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +4840 -400
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -2
- package/src/aurora/consts.ts +3 -0
- package/src/aurora/index.ts +10 -0
- package/src/aurora/layer.ts +180 -0
- package/src/aurora/types.ts +13 -0
- package/src/balloons/consts.ts +3 -0
- package/src/balloons/index.ts +12 -0
- package/src/balloons/layer.ts +169 -0
- package/src/balloons/particle.ts +110 -0
- package/src/balloons/types.ts +14 -0
- package/src/bubbles/consts.ts +3 -0
- package/src/bubbles/index.ts +10 -0
- package/src/bubbles/layer.ts +246 -0
- package/src/bubbles/types.ts +21 -0
- package/src/canvas.ts +32 -1
- package/src/color.ts +19 -0
- package/src/confetti/consts.ts +13 -13
- package/src/confetti/index.ts +20 -2
- package/src/confetti/layer.ts +155 -0
- package/src/confetti/particle.ts +106 -0
- package/src/confetti/shapes.ts +104 -0
- package/src/confetti/types.ts +4 -1
- package/src/distance.ts +1 -1
- package/src/donuts/consts.ts +19 -0
- package/src/donuts/donut.ts +12 -0
- package/src/donuts/index.ts +9 -0
- package/src/donuts/layer.ts +301 -0
- package/src/effect.ts +107 -0
- package/src/fade.ts +87 -0
- package/src/fireflies/consts.ts +3 -0
- package/src/fireflies/index.ts +12 -0
- package/src/fireflies/layer.ts +169 -0
- package/src/fireflies/particle.ts +124 -0
- package/src/fireflies/types.ts +17 -0
- package/src/firepit/consts.ts +3 -0
- package/src/firepit/index.ts +10 -0
- package/src/firepit/layer.ts +193 -0
- package/src/firepit/types.ts +20 -0
- package/src/fireworks/create-explosion.ts +237 -0
- package/src/fireworks/explosion.ts +9 -9
- package/src/fireworks/firework.ts +9 -8
- package/src/fireworks/index.ts +19 -3
- package/src/fireworks/layer.ts +203 -0
- package/src/fireworks/spark.ts +9 -9
- package/src/fireworks/types.ts +2 -2
- package/src/glitter/consts.ts +13 -0
- package/src/glitter/index.ts +9 -0
- package/src/glitter/layer.ts +181 -0
- package/src/glitter/types.ts +33 -0
- package/src/index.ts +27 -0
- package/src/lanterns/consts.ts +13 -0
- package/src/lanterns/index.ts +9 -0
- package/src/lanterns/layer.ts +178 -0
- package/src/lanterns/types.ts +22 -0
- package/src/layer.ts +26 -0
- package/src/leaves/consts.ts +16 -0
- package/src/leaves/index.ts +9 -0
- package/src/leaves/layer.ts +258 -0
- package/src/leaves/types.ts +25 -0
- package/src/lightning/consts.ts +3 -0
- package/src/lightning/index.ts +11 -0
- package/src/lightning/layer.ts +41 -0
- package/src/lightning/system.ts +196 -0
- package/src/lightning/types.ts +20 -0
- package/src/matrix/consts.ts +5 -0
- package/src/matrix/index.ts +9 -0
- package/src/matrix/layer.ts +154 -0
- package/src/matrix/types.ts +17 -0
- package/src/orbits/consts.ts +13 -0
- package/src/orbits/index.ts +9 -0
- package/src/orbits/layer.ts +213 -0
- package/src/orbits/types.ts +27 -0
- package/src/particles/consts.ts +3 -0
- package/src/particles/index.ts +10 -0
- package/src/particles/layer.ts +360 -0
- package/src/particles/types.ts +10 -0
- package/src/petals/consts.ts +13 -0
- package/src/petals/index.ts +10 -0
- package/src/petals/layer.ts +174 -0
- package/src/petals/types.ts +15 -0
- package/src/plasma/consts.ts +3 -0
- package/src/plasma/index.ts +10 -0
- package/src/plasma/layer.ts +107 -0
- package/src/plasma/types.ts +5 -0
- package/src/rain/consts.ts +3 -0
- package/src/rain/index.ts +12 -0
- package/src/rain/layer.ts +194 -0
- package/src/rain/particle.ts +132 -0
- package/src/rain/types.ts +22 -0
- package/src/sandstorm/consts.ts +3 -0
- package/src/sandstorm/index.ts +10 -0
- package/src/sandstorm/layer.ts +152 -0
- package/src/sandstorm/types.ts +10 -0
- package/src/scene.ts +201 -0
- package/src/shooting-stars/index.ts +3 -0
- package/src/shooting-stars/system.ts +151 -0
- package/src/shooting-stars/types.ts +11 -0
- package/src/simulation-canvas.ts +83 -0
- package/src/snow/consts.ts +2 -2
- package/src/snow/index.ts +9 -2
- package/src/snow/{simulation.ts → layer.ts} +64 -89
- package/src/sparklers/consts.ts +3 -0
- package/src/sparklers/index.ts +16 -0
- package/src/sparklers/layer.ts +220 -0
- package/src/sparklers/particle.ts +89 -0
- package/src/sparklers/types.ts +13 -0
- package/src/stars/consts.ts +3 -0
- package/src/stars/index.ts +10 -0
- package/src/stars/layer.ts +139 -0
- package/src/stars/types.ts +12 -0
- package/src/streamers/consts.ts +14 -0
- package/src/streamers/index.ts +10 -0
- package/src/streamers/layer.ts +223 -0
- package/src/streamers/types.ts +14 -0
- package/src/trail.ts +140 -0
- package/src/waves/consts.ts +3 -0
- package/src/waves/index.ts +10 -0
- package/src/waves/layer.ts +164 -0
- package/src/waves/types.ts +10 -0
- package/src/wormhole/consts.ts +3 -0
- package/src/wormhole/index.ts +10 -0
- package/src/wormhole/layer.ts +197 -0
- package/src/wormhole/types.ts +10 -0
- package/src/confetti/simulation.ts +0 -221
- package/src/fireworks/simulation.ts +0 -493
package/dist/index.d.mts
CHANGED
|
@@ -1,10 +1,214 @@
|
|
|
1
|
+
//#region src/layer.d.ts
|
|
2
|
+
type EdgeFadeSide = number | [number, number];
|
|
3
|
+
type EdgeFade = {
|
|
4
|
+
readonly top?: EdgeFadeSide;
|
|
5
|
+
readonly bottom?: EdgeFadeSide;
|
|
6
|
+
readonly left?: EdgeFadeSide;
|
|
7
|
+
readonly right?: EdgeFadeSide;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Internal interface implemented by all Effect subclasses. Used by SimulationCanvas
|
|
11
|
+
* and Scene to drive rendering without depending on the generic Effect<TConfig> type.
|
|
12
|
+
*/
|
|
13
|
+
interface SimulationLayer {
|
|
14
|
+
fade: EdgeFade | null;
|
|
15
|
+
tick(dt: number, width: number, height: number): void;
|
|
16
|
+
draw(ctx: CanvasRenderingContext2D, width: number, height: number): void;
|
|
17
|
+
onResize(width: number, height: number): void;
|
|
18
|
+
onMount(canvas: HTMLCanvasElement): void;
|
|
19
|
+
onUnmount(canvas: HTMLCanvasElement): void;
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
//#region src/effect.d.ts
|
|
23
|
+
/**
|
|
24
|
+
* Base class for all visual effects. Implements the internal SimulationLayer interface
|
|
25
|
+
* so that effects can be used both standalone (via mount()) and composed in a Scene.
|
|
26
|
+
*
|
|
27
|
+
* @example Standalone usage
|
|
28
|
+
* const snow = new Snow({ particles: 200 });
|
|
29
|
+
* snow.mount(canvas).start();
|
|
30
|
+
*
|
|
31
|
+
* @example Scene composition
|
|
32
|
+
* const scene = new Scene()
|
|
33
|
+
* .mount(canvas)
|
|
34
|
+
* .layer(new Aurora())
|
|
35
|
+
* .layer(new Snow())
|
|
36
|
+
* .start();
|
|
37
|
+
*/
|
|
38
|
+
declare abstract class Effect<TConfig = Record<string, unknown>> implements SimulationLayer {
|
|
39
|
+
#private;
|
|
40
|
+
fade: EdgeFade | null;
|
|
41
|
+
abstract tick(dt: number, width: number, height: number): void;
|
|
42
|
+
abstract draw(ctx: CanvasRenderingContext2D, width: number, height: number): void;
|
|
43
|
+
configure(_config: Partial<TConfig>): void;
|
|
44
|
+
onResize(_width: number, _height: number): void;
|
|
45
|
+
onMount(_canvas: HTMLCanvasElement): void;
|
|
46
|
+
onUnmount(_canvas: HTMLCanvasElement): void;
|
|
47
|
+
/**
|
|
48
|
+
* Apply an edge fade mask when rendering this effect standalone or in a Scene.
|
|
49
|
+
*/
|
|
50
|
+
withFade(fade: EdgeFade): this;
|
|
51
|
+
/**
|
|
52
|
+
* Mount this effect to a canvas element or CSS selector, creating the render loop.
|
|
53
|
+
* Must be called before start().
|
|
54
|
+
*/
|
|
55
|
+
mount(canvas: HTMLCanvasElement | string, options?: CanvasRenderingContext2DSettings): this;
|
|
56
|
+
/**
|
|
57
|
+
* Remove this effect from its canvas and clean up the render loop.
|
|
58
|
+
*/
|
|
59
|
+
unmount(): this;
|
|
60
|
+
/**
|
|
61
|
+
* Start the render loop. Call mount() first.
|
|
62
|
+
*/
|
|
63
|
+
start(): this;
|
|
64
|
+
/**
|
|
65
|
+
* Pause rendering without destroying state. Use resume() to continue.
|
|
66
|
+
*/
|
|
67
|
+
pause(): this;
|
|
68
|
+
/**
|
|
69
|
+
* Resume rendering after a pause().
|
|
70
|
+
*/
|
|
71
|
+
resume(): this;
|
|
72
|
+
/**
|
|
73
|
+
* Stop rendering and call onUnmount(). Safe to call multiple times.
|
|
74
|
+
*/
|
|
75
|
+
destroy(): void;
|
|
76
|
+
}
|
|
77
|
+
//#endregion
|
|
78
|
+
//#region src/aurora/layer.d.ts
|
|
79
|
+
interface AuroraConfig {
|
|
80
|
+
readonly bands?: number;
|
|
81
|
+
readonly colors?: string[];
|
|
82
|
+
readonly speed?: number;
|
|
83
|
+
readonly intensity?: number;
|
|
84
|
+
readonly waveAmplitude?: number;
|
|
85
|
+
readonly verticalPosition?: number;
|
|
86
|
+
readonly scale?: number;
|
|
87
|
+
}
|
|
88
|
+
//#endregion
|
|
89
|
+
//#region src/aurora/types.d.ts
|
|
90
|
+
type AuroraBand = {
|
|
91
|
+
x: number;
|
|
92
|
+
baseY: number;
|
|
93
|
+
height: number;
|
|
94
|
+
sigma: number;
|
|
95
|
+
phase1: number;
|
|
96
|
+
phase2: number;
|
|
97
|
+
amplitude1: number;
|
|
98
|
+
frequency1: number;
|
|
99
|
+
speed: number;
|
|
100
|
+
hue: number;
|
|
101
|
+
opacity: number;
|
|
102
|
+
};
|
|
103
|
+
//#endregion
|
|
104
|
+
//#region src/aurora/index.d.ts
|
|
105
|
+
declare function createAurora(config?: AuroraConfig): Effect<AuroraConfig>;
|
|
106
|
+
//#endregion
|
|
107
|
+
//#region src/balloons/layer.d.ts
|
|
108
|
+
interface BalloonsConfig {
|
|
109
|
+
readonly count?: number;
|
|
110
|
+
readonly colors?: string[];
|
|
111
|
+
readonly sizeRange?: [number, number];
|
|
112
|
+
readonly speed?: number;
|
|
113
|
+
readonly driftAmount?: number;
|
|
114
|
+
readonly stringLength?: number;
|
|
115
|
+
readonly scale?: number;
|
|
116
|
+
}
|
|
117
|
+
//#endregion
|
|
118
|
+
//#region src/point.d.ts
|
|
119
|
+
type Point = {
|
|
120
|
+
x: number;
|
|
121
|
+
y: number;
|
|
122
|
+
};
|
|
123
|
+
//#endregion
|
|
124
|
+
//#region src/balloons/particle.d.ts
|
|
125
|
+
interface BalloonParticleConfig {
|
|
126
|
+
readonly driftAmp?: number;
|
|
127
|
+
readonly driftFreq?: number;
|
|
128
|
+
readonly driftPhase?: number;
|
|
129
|
+
readonly radiusX?: number;
|
|
130
|
+
readonly radiusY?: number;
|
|
131
|
+
readonly riseSpeed?: number;
|
|
132
|
+
readonly rotationSpeed?: number;
|
|
133
|
+
readonly scale?: number;
|
|
134
|
+
readonly stringLength?: number;
|
|
135
|
+
}
|
|
136
|
+
declare class BalloonParticle {
|
|
137
|
+
#private;
|
|
138
|
+
get isDone(): boolean;
|
|
139
|
+
get position(): Point;
|
|
140
|
+
constructor(position: Point, color: [number, number, number], config?: BalloonParticleConfig);
|
|
141
|
+
draw(ctx: CanvasRenderingContext2D): void;
|
|
142
|
+
tick(dt?: number): void;
|
|
143
|
+
}
|
|
144
|
+
//#endregion
|
|
145
|
+
//#region src/balloons/types.d.ts
|
|
146
|
+
type Balloon = {
|
|
147
|
+
x: number;
|
|
148
|
+
y: number;
|
|
149
|
+
radiusX: number;
|
|
150
|
+
radiusY: number;
|
|
151
|
+
color: [number, number, number];
|
|
152
|
+
driftPhase: number;
|
|
153
|
+
driftFreq: number;
|
|
154
|
+
driftAmp: number;
|
|
155
|
+
riseSpeed: number;
|
|
156
|
+
rotation: number;
|
|
157
|
+
rotationSpeed: number;
|
|
158
|
+
stringLength: number;
|
|
159
|
+
};
|
|
160
|
+
//#endregion
|
|
161
|
+
//#region src/balloons/index.d.ts
|
|
162
|
+
declare function createBalloons(config?: BalloonsConfig): Effect<BalloonsConfig>;
|
|
163
|
+
//#endregion
|
|
164
|
+
//#region src/bubbles/layer.d.ts
|
|
165
|
+
interface BubblesConfig {
|
|
166
|
+
readonly count?: number;
|
|
167
|
+
readonly sizeRange?: [number, number];
|
|
168
|
+
readonly speed?: number;
|
|
169
|
+
readonly popOnClick?: boolean;
|
|
170
|
+
readonly popRadius?: number;
|
|
171
|
+
readonly colors?: string[];
|
|
172
|
+
readonly wobbleAmount?: number;
|
|
173
|
+
readonly scale?: number;
|
|
174
|
+
}
|
|
175
|
+
//#endregion
|
|
176
|
+
//#region src/bubbles/types.d.ts
|
|
177
|
+
type Bubble = {
|
|
178
|
+
x: number;
|
|
179
|
+
y: number;
|
|
180
|
+
radius: number;
|
|
181
|
+
speed: number;
|
|
182
|
+
hue: number;
|
|
183
|
+
wobblePhase: number;
|
|
184
|
+
wobbleFreq: number;
|
|
185
|
+
wobbleAmp: number;
|
|
186
|
+
opacity: number;
|
|
187
|
+
};
|
|
188
|
+
type PopParticle = {
|
|
189
|
+
x: number;
|
|
190
|
+
y: number;
|
|
191
|
+
vx: number;
|
|
192
|
+
vy: number;
|
|
193
|
+
alpha: number;
|
|
194
|
+
size: number;
|
|
195
|
+
decay: number;
|
|
196
|
+
};
|
|
197
|
+
//#endregion
|
|
198
|
+
//#region src/bubbles/index.d.ts
|
|
199
|
+
declare function createBubbles(config?: BubblesConfig): Effect<BubblesConfig>;
|
|
200
|
+
//#endregion
|
|
1
201
|
//#region src/canvas.d.ts
|
|
2
202
|
declare class LimitedFrameRateCanvas {
|
|
3
203
|
#private;
|
|
204
|
+
static get globalSpeed(): number;
|
|
205
|
+
static set globalSpeed(value: number);
|
|
4
206
|
get canvas(): HTMLCanvasElement;
|
|
5
207
|
get context(): CanvasRenderingContext2D;
|
|
6
208
|
get delta(): number;
|
|
7
209
|
get deltaFactor(): number;
|
|
210
|
+
get speed(): number;
|
|
211
|
+
set speed(value: number);
|
|
8
212
|
get frameRate(): number;
|
|
9
213
|
get isSmall(): boolean;
|
|
10
214
|
get isTicking(): boolean;
|
|
@@ -15,6 +219,8 @@ declare class LimitedFrameRateCanvas {
|
|
|
15
219
|
loop(): void;
|
|
16
220
|
start(): void;
|
|
17
221
|
stop(): void;
|
|
222
|
+
pause(): void;
|
|
223
|
+
resume(): void;
|
|
18
224
|
draw(): void;
|
|
19
225
|
tick(): void;
|
|
20
226
|
destroy(): void;
|
|
@@ -22,12 +228,21 @@ declare class LimitedFrameRateCanvas {
|
|
|
22
228
|
onVisibilityChange(): void;
|
|
23
229
|
}
|
|
24
230
|
//#endregion
|
|
231
|
+
//#region src/color.d.ts
|
|
232
|
+
declare function parseColor(fillStyle: string): {
|
|
233
|
+
r: number;
|
|
234
|
+
g: number;
|
|
235
|
+
b: number;
|
|
236
|
+
a: number;
|
|
237
|
+
};
|
|
238
|
+
//#endregion
|
|
25
239
|
//#region src/confetti/types.d.ts
|
|
26
240
|
type Config = {
|
|
27
241
|
readonly angle: number;
|
|
28
242
|
readonly colors: string[];
|
|
29
243
|
readonly decay: number;
|
|
30
244
|
readonly gravity: number;
|
|
245
|
+
readonly palette: Palette;
|
|
31
246
|
readonly particles: number;
|
|
32
247
|
readonly shapes: Shape[];
|
|
33
248
|
readonly spread: number;
|
|
@@ -36,63 +251,873 @@ type Config = {
|
|
|
36
251
|
readonly x: number;
|
|
37
252
|
readonly y: number;
|
|
38
253
|
};
|
|
39
|
-
type
|
|
254
|
+
type Palette = "classic" | "pastel" | "vibrant" | "warm";
|
|
255
|
+
type Shape = "bowtie" | "circle" | "crescent" | "diamond" | "heart" | "hexagon" | "ribbon" | "ring" | "square" | "star" | "triangle";
|
|
40
256
|
//#endregion
|
|
41
|
-
//#region src/confetti/
|
|
42
|
-
interface
|
|
257
|
+
//#region src/confetti/layer.d.ts
|
|
258
|
+
interface ConfettiConfig {
|
|
43
259
|
readonly scale?: number;
|
|
44
|
-
readonly canvasOptions?: CanvasRenderingContext2DSettings;
|
|
45
260
|
}
|
|
46
|
-
|
|
261
|
+
//#endregion
|
|
262
|
+
//#region src/confetti/particle.d.ts
|
|
263
|
+
interface ConfettiParticleConfig {
|
|
264
|
+
readonly decay?: number;
|
|
265
|
+
readonly gravity?: number;
|
|
266
|
+
readonly scale?: number;
|
|
267
|
+
readonly spread?: number;
|
|
268
|
+
readonly startVelocity?: number;
|
|
269
|
+
readonly ticks?: number;
|
|
270
|
+
}
|
|
271
|
+
declare class ConfettiParticle {
|
|
47
272
|
#private;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
273
|
+
get isDead(): boolean;
|
|
274
|
+
get position(): Point;
|
|
275
|
+
constructor(position: Point, direction: number, shape: Shape, color: string, config?: ConfettiParticleConfig);
|
|
276
|
+
draw(ctx: CanvasRenderingContext2D): void;
|
|
277
|
+
tick(dt?: number): void;
|
|
53
278
|
}
|
|
54
279
|
//#endregion
|
|
55
|
-
//#region src/
|
|
56
|
-
|
|
280
|
+
//#region src/confetti/consts.d.ts
|
|
281
|
+
declare const PALETTES: Record<Palette, string[]>;
|
|
282
|
+
//#endregion
|
|
283
|
+
//#region src/confetti/shapes.d.ts
|
|
284
|
+
declare const SHAPE_PATHS: Record<Shape, Path2D>;
|
|
285
|
+
//#endregion
|
|
286
|
+
//#region src/confetti/index.d.ts
|
|
287
|
+
interface ConfettiInstance extends Effect<ConfettiConfig> {
|
|
288
|
+
burst(config: Partial<Config>): void;
|
|
289
|
+
}
|
|
290
|
+
declare function createConfetti(config?: ConfettiConfig): ConfettiInstance;
|
|
291
|
+
//#endregion
|
|
292
|
+
//#region src/donuts/layer.d.ts
|
|
293
|
+
interface DonutsConfig {
|
|
294
|
+
readonly background?: string;
|
|
295
|
+
readonly collisionPadding?: number;
|
|
296
|
+
readonly colors?: string[];
|
|
297
|
+
readonly count?: number;
|
|
298
|
+
readonly mouseAvoidance?: boolean;
|
|
299
|
+
readonly mouseAvoidanceRadius?: number;
|
|
300
|
+
readonly mouseAvoidanceStrength?: number;
|
|
301
|
+
readonly radiusRange?: [number, number];
|
|
302
|
+
readonly repulsionStrength?: number;
|
|
303
|
+
readonly rotationSpeedRange?: [number, number];
|
|
304
|
+
readonly scale?: number;
|
|
305
|
+
readonly speedRange?: [number, number];
|
|
306
|
+
readonly thickness?: number;
|
|
307
|
+
}
|
|
308
|
+
//#endregion
|
|
309
|
+
//#region src/donuts/index.d.ts
|
|
310
|
+
declare function createDonuts(config?: DonutsConfig): Effect<DonutsConfig>;
|
|
311
|
+
//#endregion
|
|
312
|
+
//#region src/fireflies/layer.d.ts
|
|
313
|
+
interface FirefliesConfig {
|
|
314
|
+
readonly count?: number;
|
|
315
|
+
readonly color?: string;
|
|
316
|
+
readonly size?: number;
|
|
317
|
+
readonly speed?: number;
|
|
318
|
+
readonly glowSpeed?: number;
|
|
319
|
+
readonly scale?: number;
|
|
320
|
+
}
|
|
321
|
+
//#endregion
|
|
322
|
+
//#region src/fireflies/particle.d.ts
|
|
323
|
+
interface FireflyParticleConfig {
|
|
324
|
+
readonly glowSpeed?: number;
|
|
325
|
+
readonly scale?: number;
|
|
326
|
+
readonly size?: number;
|
|
327
|
+
readonly speed?: number;
|
|
328
|
+
}
|
|
329
|
+
declare function createFireflySprite(color: string, size?: number): HTMLCanvasElement;
|
|
330
|
+
declare class FireflyParticle {
|
|
331
|
+
#private;
|
|
332
|
+
get position(): {
|
|
333
|
+
x: number;
|
|
334
|
+
y: number;
|
|
335
|
+
};
|
|
336
|
+
constructor(x: number, y: number, bounds: {
|
|
337
|
+
width: number;
|
|
338
|
+
height: number;
|
|
339
|
+
}, sprite: HTMLCanvasElement, config?: FireflyParticleConfig);
|
|
340
|
+
draw(ctx: CanvasRenderingContext2D): void;
|
|
341
|
+
tick(dt?: number): void;
|
|
342
|
+
}
|
|
343
|
+
//#endregion
|
|
344
|
+
//#region src/fireflies/types.d.ts
|
|
345
|
+
type Firefly = {
|
|
346
|
+
x: number;
|
|
347
|
+
y: number;
|
|
348
|
+
size: number;
|
|
349
|
+
phase: number;
|
|
350
|
+
glowSpeed: number;
|
|
351
|
+
freqX1: number;
|
|
352
|
+
freqX2: number;
|
|
353
|
+
freqY1: number;
|
|
354
|
+
freqY2: number;
|
|
355
|
+
phaseX1: number;
|
|
356
|
+
phaseX2: number;
|
|
357
|
+
phaseY1: number;
|
|
358
|
+
phaseY2: number;
|
|
359
|
+
amplitudeX: number;
|
|
360
|
+
amplitudeY: number;
|
|
361
|
+
};
|
|
362
|
+
//#endregion
|
|
363
|
+
//#region src/fireflies/index.d.ts
|
|
364
|
+
declare function createFireflies(config?: FirefliesConfig): Effect<FirefliesConfig>;
|
|
365
|
+
//#endregion
|
|
366
|
+
//#region src/firepit/layer.d.ts
|
|
367
|
+
interface FirepitConfig {
|
|
368
|
+
readonly embers?: number;
|
|
369
|
+
readonly flameWidth?: number;
|
|
370
|
+
readonly flameHeight?: number;
|
|
371
|
+
readonly intensity?: number;
|
|
372
|
+
readonly scale?: number;
|
|
373
|
+
}
|
|
374
|
+
//#endregion
|
|
375
|
+
//#region src/firepit/types.d.ts
|
|
376
|
+
type Ember = {
|
|
57
377
|
x: number;
|
|
58
378
|
y: number;
|
|
379
|
+
vx: number;
|
|
380
|
+
vy: number;
|
|
381
|
+
size: number;
|
|
382
|
+
life: number;
|
|
383
|
+
maxLife: number;
|
|
384
|
+
brightness: number;
|
|
385
|
+
flicker: number;
|
|
386
|
+
};
|
|
387
|
+
type FlameLayer = {
|
|
388
|
+
x: number;
|
|
389
|
+
phase: number;
|
|
390
|
+
speed: number;
|
|
391
|
+
amplitude: number;
|
|
392
|
+
width: number;
|
|
393
|
+
height: number;
|
|
59
394
|
};
|
|
60
395
|
//#endregion
|
|
396
|
+
//#region src/firepit/index.d.ts
|
|
397
|
+
declare function createFirepit(config?: FirepitConfig): Effect<FirepitConfig>;
|
|
398
|
+
//#endregion
|
|
61
399
|
//#region src/fireworks/types.d.ts
|
|
62
400
|
type ExplosionType = "peony" | "chrysanthemum" | "willow" | "ring" | "palm" | "crackle" | "crossette" | "dahlia" | "brocade" | "horsetail" | "strobe" | "heart" | "spiral" | "flower";
|
|
63
401
|
type FireworkVariant = ExplosionType | "saturn" | "concentric";
|
|
64
402
|
type ParticleShape = "line" | "circle" | "star" | "diamond";
|
|
65
|
-
interface
|
|
403
|
+
interface ExplosionConfig {
|
|
404
|
+
readonly particleCount: [number, number];
|
|
405
|
+
readonly speed: [number, number];
|
|
406
|
+
readonly friction: number;
|
|
407
|
+
readonly gravity: number;
|
|
408
|
+
readonly decay: [number, number];
|
|
409
|
+
readonly trailMemory: number;
|
|
410
|
+
readonly hueVariation: number;
|
|
411
|
+
readonly brightness: [number, number];
|
|
412
|
+
readonly lineWidthScale: number;
|
|
413
|
+
readonly shape: ParticleShape;
|
|
414
|
+
readonly sparkle: boolean;
|
|
415
|
+
readonly strobe: boolean;
|
|
416
|
+
readonly spread3d: boolean;
|
|
417
|
+
readonly glowSize: number;
|
|
418
|
+
}
|
|
419
|
+
interface FireworksConfig {
|
|
66
420
|
readonly scale?: number;
|
|
67
421
|
readonly autoSpawn?: boolean;
|
|
68
|
-
readonly
|
|
422
|
+
readonly variants?: FireworkVariant[];
|
|
69
423
|
}
|
|
70
424
|
declare const FIREWORK_VARIANTS: FireworkVariant[];
|
|
425
|
+
declare const EXPLOSION_CONFIGS: Record<ExplosionType, ExplosionConfig>;
|
|
71
426
|
//#endregion
|
|
72
|
-
//#region src/fireworks/
|
|
73
|
-
declare class
|
|
427
|
+
//#region src/fireworks/explosion.d.ts
|
|
428
|
+
declare class Explosion {
|
|
74
429
|
#private;
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
430
|
+
get angle(): number;
|
|
431
|
+
get hue(): number;
|
|
432
|
+
get isDead(): boolean;
|
|
433
|
+
get position(): Point;
|
|
434
|
+
get type(): ExplosionType;
|
|
435
|
+
constructor(position: Point, hue: number, lineWidth: number, type: ExplosionType, scale?: number, angle?: number, speed?: number, vz?: number);
|
|
436
|
+
checkCrackle(): boolean;
|
|
437
|
+
checkSplit(): boolean;
|
|
438
|
+
draw(ctx: CanvasRenderingContext2D): void;
|
|
439
|
+
tick(dt: number): void;
|
|
440
|
+
}
|
|
441
|
+
//#endregion
|
|
442
|
+
//#region src/fireworks/create-explosion.d.ts
|
|
443
|
+
/**
|
|
444
|
+
* Creates an array of {@link Explosion} particles for the given firework variant.
|
|
445
|
+
* Use this to fire a fully formed explosion burst in your own render loop without
|
|
446
|
+
* needing a {@link Fireworks} instance.
|
|
447
|
+
*
|
|
448
|
+
* @param variant - The firework variant to create.
|
|
449
|
+
* @param position - The center position of the explosion in canvas pixels.
|
|
450
|
+
* @param hue - Base hue in degrees (0–360).
|
|
451
|
+
* @param options - Optional overrides for `lineWidth` (default `5`) and `scale` (default `1`).
|
|
452
|
+
* @param rng - RNG function returning values in [0, 1). Defaults to `Math.random`.
|
|
453
|
+
*/
|
|
454
|
+
declare function createExplosion(variant: FireworkVariant, position: Point, hue: number, options?: {
|
|
455
|
+
lineWidth?: number;
|
|
456
|
+
scale?: number;
|
|
457
|
+
}, rng?: () => number): Explosion[];
|
|
458
|
+
//#endregion
|
|
459
|
+
//#region src/fireworks/spark.d.ts
|
|
460
|
+
declare class Spark {
|
|
461
|
+
#private;
|
|
462
|
+
get isDead(): boolean;
|
|
463
|
+
get position(): Point;
|
|
464
|
+
constructor(position: Point, hue: number, velocityX?: number, velocityY?: number);
|
|
465
|
+
draw(ctx: CanvasRenderingContext2D): void;
|
|
466
|
+
tick(dt: number): void;
|
|
467
|
+
}
|
|
468
|
+
//#endregion
|
|
469
|
+
//#region src/fireworks/firework.d.ts
|
|
470
|
+
declare class Firework extends EventTarget {
|
|
471
|
+
#private;
|
|
472
|
+
get position(): Point;
|
|
473
|
+
get hue(): number;
|
|
474
|
+
constructor(start: Point, target: Point, hue: number, tailWidth: number, baseSize: number);
|
|
475
|
+
collectSparks(): Spark[];
|
|
476
|
+
draw(ctx: CanvasRenderingContext2D): void;
|
|
477
|
+
tick(dt: number): void;
|
|
478
|
+
}
|
|
479
|
+
//#endregion
|
|
480
|
+
//#region src/fireworks/index.d.ts
|
|
481
|
+
interface FireworksInstance extends Effect<FireworksConfig> {
|
|
482
|
+
launch(variant: FireworkVariant, position?: Point): void;
|
|
483
|
+
}
|
|
484
|
+
declare function createFireworks(config?: FireworksConfig): FireworksInstance;
|
|
485
|
+
//#endregion
|
|
486
|
+
//#region src/glitter/types.d.ts
|
|
487
|
+
interface GlitterConfig {
|
|
488
|
+
readonly count?: number;
|
|
489
|
+
readonly colors?: string[];
|
|
490
|
+
readonly size?: number;
|
|
491
|
+
readonly speed?: number;
|
|
492
|
+
readonly groundLevel?: number;
|
|
493
|
+
readonly maxSettled?: number;
|
|
494
|
+
readonly scale?: number;
|
|
495
|
+
}
|
|
496
|
+
type FallingGlitter = {
|
|
497
|
+
x: number;
|
|
498
|
+
y: number;
|
|
499
|
+
vy: number;
|
|
500
|
+
size: number;
|
|
501
|
+
rotation: number;
|
|
502
|
+
rotationSpeed: number;
|
|
503
|
+
flipAngle: number;
|
|
504
|
+
flipSpeed: number;
|
|
505
|
+
sparkle: number;
|
|
506
|
+
colorIndex: number;
|
|
507
|
+
settled: boolean;
|
|
508
|
+
};
|
|
509
|
+
type SettledGlitter = {
|
|
510
|
+
x: number;
|
|
511
|
+
y: number;
|
|
512
|
+
size: number;
|
|
513
|
+
rotation: number;
|
|
514
|
+
sparklePhase: number;
|
|
515
|
+
sparkleSpeed: number;
|
|
516
|
+
colorIndex: number;
|
|
517
|
+
};
|
|
518
|
+
//#endregion
|
|
519
|
+
//#region src/glitter/index.d.ts
|
|
520
|
+
declare function createGlitter(config?: GlitterConfig): Effect<GlitterConfig>;
|
|
521
|
+
//#endregion
|
|
522
|
+
//#region src/lanterns/types.d.ts
|
|
523
|
+
interface LanternsConfig {
|
|
524
|
+
readonly count?: number;
|
|
525
|
+
readonly colors?: string[];
|
|
526
|
+
readonly size?: number;
|
|
527
|
+
readonly speed?: number;
|
|
528
|
+
readonly scale?: number;
|
|
529
|
+
}
|
|
530
|
+
type Lantern = {
|
|
531
|
+
x: number;
|
|
532
|
+
y: number;
|
|
533
|
+
vx: number;
|
|
534
|
+
vy: number;
|
|
535
|
+
size: number;
|
|
536
|
+
glowPhase: number;
|
|
537
|
+
glowSpeed: number;
|
|
538
|
+
swayPhase: number;
|
|
539
|
+
swaySpeed: number;
|
|
540
|
+
swayAmplitude: number;
|
|
541
|
+
colorIndex: number;
|
|
542
|
+
opacity: number;
|
|
543
|
+
};
|
|
544
|
+
//#endregion
|
|
545
|
+
//#region src/lanterns/index.d.ts
|
|
546
|
+
declare function createLanterns(config?: LanternsConfig): Effect<LanternsConfig>;
|
|
547
|
+
//#endregion
|
|
548
|
+
//#region src/leaves/types.d.ts
|
|
549
|
+
interface LeavesConfig {
|
|
550
|
+
readonly count?: number;
|
|
551
|
+
readonly colors?: string[];
|
|
552
|
+
readonly size?: number;
|
|
553
|
+
readonly speed?: number;
|
|
554
|
+
readonly wind?: number;
|
|
555
|
+
readonly scale?: number;
|
|
556
|
+
}
|
|
557
|
+
type Leaf = {
|
|
558
|
+
x: number;
|
|
559
|
+
y: number;
|
|
560
|
+
size: number;
|
|
561
|
+
depth: number;
|
|
562
|
+
rotation: number;
|
|
563
|
+
rotationSpeed: number;
|
|
564
|
+
flipAngle: number;
|
|
565
|
+
flipSpeed: number;
|
|
566
|
+
swingAmplitude: number;
|
|
567
|
+
swingFrequency: number;
|
|
568
|
+
swingOffset: number;
|
|
569
|
+
fallSpeed: number;
|
|
570
|
+
shape: number;
|
|
571
|
+
colorIndex: number;
|
|
572
|
+
};
|
|
573
|
+
//#endregion
|
|
574
|
+
//#region src/leaves/index.d.ts
|
|
575
|
+
declare function createLeaves(config?: LeavesConfig): Effect<LeavesConfig>;
|
|
576
|
+
//#endregion
|
|
577
|
+
//#region src/lightning/types.d.ts
|
|
578
|
+
interface LightningConfig {
|
|
579
|
+
readonly frequency?: number;
|
|
580
|
+
readonly color?: string;
|
|
581
|
+
readonly branches?: boolean;
|
|
582
|
+
readonly flash?: boolean;
|
|
583
|
+
readonly scale?: number;
|
|
584
|
+
}
|
|
585
|
+
type LightningBranch = {
|
|
586
|
+
segments: {
|
|
587
|
+
x: number;
|
|
588
|
+
y: number;
|
|
589
|
+
}[];
|
|
590
|
+
alpha: number;
|
|
591
|
+
};
|
|
592
|
+
type LightningBolt = {
|
|
593
|
+
segments: {
|
|
594
|
+
x: number;
|
|
595
|
+
y: number;
|
|
596
|
+
}[];
|
|
597
|
+
branches: LightningBranch[];
|
|
598
|
+
alpha: number;
|
|
599
|
+
lifetime: number;
|
|
600
|
+
ticksAlive: number;
|
|
601
|
+
};
|
|
602
|
+
//#endregion
|
|
603
|
+
//#region src/lightning/system.d.ts
|
|
604
|
+
interface LightningSystemConfig {
|
|
605
|
+
readonly frequency?: number;
|
|
606
|
+
readonly color?: [number, number, number];
|
|
607
|
+
readonly branches?: boolean;
|
|
608
|
+
readonly flash?: boolean;
|
|
609
|
+
readonly scale?: number;
|
|
610
|
+
readonly groundLevel?: number;
|
|
611
|
+
}
|
|
612
|
+
declare class LightningSystem {
|
|
613
|
+
#private;
|
|
614
|
+
get flashAlpha(): number;
|
|
615
|
+
constructor(config: LightningSystemConfig, rng: () => number);
|
|
616
|
+
tick(dt: number): void;
|
|
617
|
+
draw(ctx: CanvasRenderingContext2D, width: number, height: number): void;
|
|
79
618
|
}
|
|
80
619
|
//#endregion
|
|
81
|
-
//#region src/
|
|
82
|
-
|
|
620
|
+
//#region src/lightning/index.d.ts
|
|
621
|
+
declare function createLightning(config?: LightningConfig): Effect<LightningConfig>;
|
|
622
|
+
//#endregion
|
|
623
|
+
//#region src/matrix/types.d.ts
|
|
624
|
+
interface MatrixConfig {
|
|
625
|
+
readonly columns?: number;
|
|
626
|
+
readonly speed?: number;
|
|
627
|
+
readonly color?: string;
|
|
628
|
+
readonly fontSize?: number;
|
|
629
|
+
readonly trailLength?: number;
|
|
630
|
+
readonly scale?: number;
|
|
631
|
+
}
|
|
632
|
+
type MatrixColumn = {
|
|
633
|
+
x: number;
|
|
634
|
+
y: number;
|
|
635
|
+
speed: number;
|
|
636
|
+
chars: string[];
|
|
637
|
+
length: number;
|
|
638
|
+
headBrightness: number;
|
|
639
|
+
};
|
|
640
|
+
//#endregion
|
|
641
|
+
//#region src/matrix/index.d.ts
|
|
642
|
+
declare function createMatrix(config?: MatrixConfig): Effect<MatrixConfig>;
|
|
643
|
+
//#endregion
|
|
644
|
+
//#region src/orbits/types.d.ts
|
|
645
|
+
interface OrbitsConfig {
|
|
646
|
+
readonly centers?: number;
|
|
647
|
+
readonly orbitersPerCenter?: number;
|
|
648
|
+
readonly speed?: number;
|
|
649
|
+
readonly colors?: string[];
|
|
650
|
+
readonly trailLength?: number;
|
|
651
|
+
readonly showCenters?: boolean;
|
|
652
|
+
readonly scale?: number;
|
|
653
|
+
}
|
|
654
|
+
type OrbitalCenter = {
|
|
655
|
+
x: number;
|
|
656
|
+
y: number;
|
|
657
|
+
};
|
|
658
|
+
type Orbiter = {
|
|
659
|
+
centerIndex: number;
|
|
660
|
+
angle: number;
|
|
661
|
+
angularSpeed: number;
|
|
662
|
+
radiusX: number;
|
|
663
|
+
radiusY: number;
|
|
664
|
+
tilt: number;
|
|
665
|
+
size: number;
|
|
666
|
+
color: string;
|
|
667
|
+
trail: {
|
|
668
|
+
x: number;
|
|
669
|
+
y: number;
|
|
670
|
+
}[];
|
|
671
|
+
trailHead: number;
|
|
672
|
+
};
|
|
673
|
+
//#endregion
|
|
674
|
+
//#region src/orbits/index.d.ts
|
|
675
|
+
declare function createOrbits(config?: OrbitsConfig): Effect<OrbitsConfig>;
|
|
676
|
+
//#endregion
|
|
677
|
+
//#region src/particles/types.d.ts
|
|
678
|
+
type ParticleMouseMode = "attract" | "repel" | "connect" | "none";
|
|
679
|
+
type NetworkParticle = {
|
|
680
|
+
x: number;
|
|
681
|
+
y: number;
|
|
682
|
+
vx: number;
|
|
683
|
+
vy: number;
|
|
684
|
+
radius: number;
|
|
685
|
+
baseSpeed: number;
|
|
686
|
+
};
|
|
687
|
+
//#endregion
|
|
688
|
+
//#region src/particles/layer.d.ts
|
|
689
|
+
interface ParticlesConfig {
|
|
690
|
+
readonly count?: number;
|
|
691
|
+
readonly color?: string;
|
|
692
|
+
readonly lineColor?: string;
|
|
693
|
+
readonly size?: [number, number];
|
|
694
|
+
readonly speed?: [number, number];
|
|
695
|
+
readonly connectionDistance?: number;
|
|
696
|
+
readonly lineWidth?: number;
|
|
697
|
+
readonly mouseMode?: ParticleMouseMode;
|
|
698
|
+
readonly mouseRadius?: number;
|
|
699
|
+
readonly mouseStrength?: number;
|
|
700
|
+
readonly particleForces?: boolean;
|
|
701
|
+
readonly glow?: boolean;
|
|
702
|
+
readonly background?: string | null;
|
|
703
|
+
readonly scale?: number;
|
|
704
|
+
}
|
|
705
|
+
//#endregion
|
|
706
|
+
//#region src/particles/index.d.ts
|
|
707
|
+
declare function createParticles(config?: ParticlesConfig): Effect<ParticlesConfig>;
|
|
708
|
+
//#endregion
|
|
709
|
+
//#region src/petals/layer.d.ts
|
|
710
|
+
interface PetalsConfig {
|
|
711
|
+
readonly count?: number;
|
|
712
|
+
readonly colors?: string[];
|
|
713
|
+
readonly size?: number;
|
|
714
|
+
readonly speed?: number;
|
|
715
|
+
readonly wind?: number;
|
|
716
|
+
readonly scale?: number;
|
|
717
|
+
}
|
|
718
|
+
//#endregion
|
|
719
|
+
//#region src/petals/types.d.ts
|
|
720
|
+
type Petal = {
|
|
721
|
+
x: number;
|
|
722
|
+
y: number;
|
|
723
|
+
size: number;
|
|
724
|
+
depth: number;
|
|
725
|
+
rotation: number;
|
|
726
|
+
rotationSpeed: number;
|
|
727
|
+
flipAngle: number;
|
|
728
|
+
flipSpeed: number;
|
|
729
|
+
swingAmplitude: number;
|
|
730
|
+
swingFrequency: number;
|
|
731
|
+
swingOffset: number;
|
|
732
|
+
fallSpeed: number;
|
|
733
|
+
colorIndex: number;
|
|
734
|
+
};
|
|
735
|
+
//#endregion
|
|
736
|
+
//#region src/petals/index.d.ts
|
|
737
|
+
declare function createPetals(config?: PetalsConfig): Effect<PetalsConfig>;
|
|
738
|
+
//#endregion
|
|
739
|
+
//#region src/plasma/types.d.ts
|
|
740
|
+
type PlasmaColor = {
|
|
741
|
+
r: number;
|
|
742
|
+
g: number;
|
|
743
|
+
b: number;
|
|
744
|
+
};
|
|
745
|
+
//#endregion
|
|
746
|
+
//#region src/plasma/layer.d.ts
|
|
747
|
+
interface PlasmaConfig {
|
|
748
|
+
readonly speed?: number;
|
|
749
|
+
readonly scale?: number;
|
|
750
|
+
readonly resolution?: number;
|
|
751
|
+
readonly palette?: PlasmaColor[];
|
|
752
|
+
}
|
|
753
|
+
//#endregion
|
|
754
|
+
//#region src/plasma/index.d.ts
|
|
755
|
+
declare function createPlasma(config?: PlasmaConfig): Effect<PlasmaConfig>;
|
|
756
|
+
//#endregion
|
|
757
|
+
//#region src/rain/types.d.ts
|
|
758
|
+
type RainVariant = "drizzle" | "downpour" | "thunderstorm";
|
|
759
|
+
type Raindrop = {
|
|
760
|
+
x: number;
|
|
761
|
+
y: number;
|
|
762
|
+
vx: number;
|
|
763
|
+
vy: number;
|
|
764
|
+
length: number;
|
|
765
|
+
speed: number;
|
|
766
|
+
depth: number;
|
|
767
|
+
opacity: number;
|
|
768
|
+
};
|
|
769
|
+
type Splash = {
|
|
770
|
+
x: number;
|
|
771
|
+
y: number;
|
|
772
|
+
vx: number;
|
|
773
|
+
vy: number;
|
|
774
|
+
alpha: number;
|
|
775
|
+
size: number;
|
|
776
|
+
gravity: number;
|
|
777
|
+
};
|
|
778
|
+
//#endregion
|
|
779
|
+
//#region src/rain/layer.d.ts
|
|
780
|
+
interface RainConfig {
|
|
781
|
+
readonly variant?: RainVariant;
|
|
782
|
+
readonly drops?: number;
|
|
783
|
+
readonly wind?: number;
|
|
784
|
+
readonly speed?: number;
|
|
785
|
+
readonly splashes?: boolean;
|
|
786
|
+
readonly color?: string;
|
|
787
|
+
readonly groundLevel?: number;
|
|
788
|
+
readonly scale?: number;
|
|
789
|
+
}
|
|
790
|
+
//#endregion
|
|
791
|
+
//#region src/rain/particle.d.ts
|
|
792
|
+
interface RaindropParticleConfig {
|
|
793
|
+
readonly depth?: number;
|
|
794
|
+
readonly groundY?: number;
|
|
795
|
+
readonly length?: number;
|
|
796
|
+
readonly scale?: number;
|
|
797
|
+
}
|
|
798
|
+
interface SplashParticleConfig {
|
|
799
|
+
readonly gravity?: number;
|
|
800
|
+
readonly scale?: number;
|
|
801
|
+
readonly size?: number;
|
|
802
|
+
}
|
|
803
|
+
declare class RaindropParticle {
|
|
804
|
+
#private;
|
|
805
|
+
get isDead(): boolean;
|
|
806
|
+
get position(): Point;
|
|
807
|
+
constructor(position: Point, velocity: Point, color: [number, number, number], config?: RaindropParticleConfig);
|
|
808
|
+
draw(ctx: CanvasRenderingContext2D): void;
|
|
809
|
+
tick(dt?: number): void;
|
|
810
|
+
}
|
|
811
|
+
declare class SplashParticle {
|
|
812
|
+
#private;
|
|
813
|
+
get isDead(): boolean;
|
|
814
|
+
get position(): Point;
|
|
815
|
+
constructor(position: Point, velocity: Point, color: [number, number, number], config?: SplashParticleConfig);
|
|
816
|
+
static burst(position: Point, color: [number, number, number], config?: SplashParticleConfig): SplashParticle[];
|
|
817
|
+
draw(ctx: CanvasRenderingContext2D): void;
|
|
818
|
+
tick(dt?: number): void;
|
|
819
|
+
}
|
|
820
|
+
//#endregion
|
|
821
|
+
//#region src/rain/index.d.ts
|
|
822
|
+
declare function createRain(config?: RainConfig): Effect<RainConfig>;
|
|
823
|
+
//#endregion
|
|
824
|
+
//#region src/sandstorm/layer.d.ts
|
|
825
|
+
interface SandstormConfig {
|
|
826
|
+
readonly count?: number;
|
|
827
|
+
readonly wind?: number;
|
|
828
|
+
readonly turbulence?: number;
|
|
829
|
+
readonly color?: string;
|
|
830
|
+
readonly hazeOpacity?: number;
|
|
831
|
+
readonly scale?: number;
|
|
832
|
+
}
|
|
833
|
+
//#endregion
|
|
834
|
+
//#region src/sandstorm/types.d.ts
|
|
835
|
+
type SandGrain = {
|
|
836
|
+
x: number;
|
|
837
|
+
y: number;
|
|
838
|
+
vx: number;
|
|
839
|
+
vy: number;
|
|
840
|
+
size: number;
|
|
841
|
+
depth: number;
|
|
842
|
+
opacity: number;
|
|
843
|
+
turbulenceOffset: number;
|
|
844
|
+
};
|
|
845
|
+
//#endregion
|
|
846
|
+
//#region src/sandstorm/index.d.ts
|
|
847
|
+
declare function createSandstorm(config?: SandstormConfig): Effect<SandstormConfig>;
|
|
848
|
+
//#endregion
|
|
849
|
+
//#region src/scene.d.ts
|
|
850
|
+
/**
|
|
851
|
+
* Composable canvas that renders multiple Effect layers in order (first = bottom, last = top).
|
|
852
|
+
*
|
|
853
|
+
* @example
|
|
854
|
+
* const scene = new Scene()
|
|
855
|
+
* .mount(canvas)
|
|
856
|
+
* .layer(new Aurora({ bands: 5 }))
|
|
857
|
+
* .layer(new Stars().withFade({ bottom: 0.4 }))
|
|
858
|
+
* .start();
|
|
859
|
+
*/
|
|
860
|
+
declare class Scene {
|
|
861
|
+
#private;
|
|
862
|
+
constructor(frameRate?: number, options?: CanvasRenderingContext2DSettings);
|
|
863
|
+
/**
|
|
864
|
+
* Mount the scene to a canvas element or CSS selector.
|
|
865
|
+
*/
|
|
866
|
+
mount(canvas: HTMLCanvasElement | string, options?: CanvasRenderingContext2DSettings): this;
|
|
867
|
+
/**
|
|
868
|
+
* Add an effect layer. Layers are rendered in the order they are added.
|
|
869
|
+
* If the scene is already running, the layer is mounted immediately.
|
|
870
|
+
*/
|
|
871
|
+
layer(effect: SimulationLayer): this;
|
|
872
|
+
/**
|
|
873
|
+
* Start the render loop.
|
|
874
|
+
*/
|
|
875
|
+
start(): this;
|
|
876
|
+
/**
|
|
877
|
+
* Pause rendering without destroying state. Use resume() to continue.
|
|
878
|
+
*/
|
|
879
|
+
pause(): this;
|
|
880
|
+
/**
|
|
881
|
+
* Resume rendering after pause().
|
|
882
|
+
*/
|
|
883
|
+
resume(): this;
|
|
884
|
+
/**
|
|
885
|
+
* Stop and destroy all layers.
|
|
886
|
+
*/
|
|
887
|
+
destroy(): void;
|
|
888
|
+
get speed(): number;
|
|
889
|
+
set speed(value: number);
|
|
890
|
+
get isTicking(): boolean;
|
|
891
|
+
}
|
|
892
|
+
/**
|
|
893
|
+
* Factory alternative to `new Scene()`. Call .mount() and .layer() on the returned instance.
|
|
894
|
+
*/
|
|
895
|
+
declare function createScene(frameRate?: number, options?: CanvasRenderingContext2DSettings): Scene;
|
|
896
|
+
//#endregion
|
|
897
|
+
//#region src/shooting-stars/system.d.ts
|
|
898
|
+
interface ShootingStarSystemConfig {
|
|
899
|
+
readonly interval: [number, number];
|
|
900
|
+
readonly color?: [number, number, number];
|
|
901
|
+
readonly trailLength?: number;
|
|
902
|
+
readonly trailAlphaFactor?: number;
|
|
903
|
+
readonly speed?: number;
|
|
904
|
+
readonly scale?: number;
|
|
905
|
+
readonly alphaMin?: number;
|
|
906
|
+
readonly alphaRange?: number;
|
|
907
|
+
readonly decayMin?: number;
|
|
908
|
+
readonly decayRange?: number;
|
|
909
|
+
}
|
|
910
|
+
declare class ShootingStarSystem {
|
|
911
|
+
#private;
|
|
912
|
+
constructor(config: ShootingStarSystemConfig, rng: () => number);
|
|
913
|
+
tick(dt: number, width: number, height: number): void;
|
|
914
|
+
draw(ctx: CanvasRenderingContext2D): void;
|
|
915
|
+
}
|
|
916
|
+
//#endregion
|
|
917
|
+
//#region src/shooting-stars/types.d.ts
|
|
918
|
+
type ShootingStar = {
|
|
919
|
+
x: number;
|
|
920
|
+
y: number;
|
|
921
|
+
vx: number;
|
|
922
|
+
vy: number;
|
|
923
|
+
alpha: number;
|
|
924
|
+
size: number;
|
|
925
|
+
decay: number;
|
|
926
|
+
trail: {
|
|
927
|
+
x: number;
|
|
928
|
+
y: number;
|
|
929
|
+
}[];
|
|
930
|
+
trailHead: number;
|
|
931
|
+
};
|
|
932
|
+
//#endregion
|
|
933
|
+
//#region src/snow/layer.d.ts
|
|
934
|
+
interface SnowConfig {
|
|
83
935
|
readonly fillStyle?: string;
|
|
84
936
|
readonly particles?: number;
|
|
85
937
|
readonly scale?: number;
|
|
86
938
|
readonly size?: number;
|
|
87
939
|
readonly speed?: number;
|
|
88
|
-
readonly canvasOptions?: CanvasRenderingContext2DSettings;
|
|
89
940
|
}
|
|
90
|
-
|
|
941
|
+
//#endregion
|
|
942
|
+
//#region src/snow/index.d.ts
|
|
943
|
+
declare function createSnow(config?: SnowConfig): Effect<SnowConfig>;
|
|
944
|
+
//#endregion
|
|
945
|
+
//#region src/sparklers/layer.d.ts
|
|
946
|
+
interface SparklersConfig {
|
|
947
|
+
readonly emitRate?: number;
|
|
948
|
+
readonly maxSparks?: number;
|
|
949
|
+
readonly colors?: string[];
|
|
950
|
+
readonly speed?: [number, number];
|
|
951
|
+
readonly friction?: number;
|
|
952
|
+
readonly gravity?: number;
|
|
953
|
+
readonly decay?: [number, number];
|
|
954
|
+
readonly trailLength?: number;
|
|
955
|
+
readonly hoverMode?: boolean;
|
|
956
|
+
readonly scale?: number;
|
|
957
|
+
}
|
|
958
|
+
//#endregion
|
|
959
|
+
//#region src/sparklers/particle.d.ts
|
|
960
|
+
interface SparklerParticleConfig {
|
|
961
|
+
readonly decay?: number;
|
|
962
|
+
readonly friction?: number;
|
|
963
|
+
readonly gravity?: number;
|
|
964
|
+
readonly scale?: number;
|
|
965
|
+
readonly size?: number;
|
|
966
|
+
readonly trailLength?: number;
|
|
967
|
+
}
|
|
968
|
+
declare class SparklerParticle {
|
|
91
969
|
#private;
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
970
|
+
get isDead(): boolean;
|
|
971
|
+
get position(): Point;
|
|
972
|
+
constructor(position: Point, velocity: Point, color: [number, number, number], config?: SparklerParticleConfig);
|
|
973
|
+
draw(ctx: CanvasRenderingContext2D): void;
|
|
974
|
+
tick(dt?: number): void;
|
|
975
|
+
}
|
|
976
|
+
//#endregion
|
|
977
|
+
//#region src/sparklers/types.d.ts
|
|
978
|
+
type SparklerSpark = {
|
|
979
|
+
x: number;
|
|
980
|
+
y: number;
|
|
981
|
+
vx: number;
|
|
982
|
+
vy: number;
|
|
983
|
+
alpha: number;
|
|
984
|
+
color: [number, number, number];
|
|
985
|
+
size: number;
|
|
986
|
+
decay: number;
|
|
987
|
+
trail: Point[];
|
|
988
|
+
};
|
|
989
|
+
//#endregion
|
|
990
|
+
//#region src/sparklers/index.d.ts
|
|
991
|
+
interface SparklersInstance extends Effect<SparklersConfig> {
|
|
992
|
+
moveTo(x: number, y: number): void;
|
|
993
|
+
}
|
|
994
|
+
declare function createSparklers(config?: SparklersConfig): SparklersInstance;
|
|
995
|
+
//#endregion
|
|
996
|
+
//#region src/stars/types.d.ts
|
|
997
|
+
type StarMode = "sky" | "shooting" | "both";
|
|
998
|
+
type Star = {
|
|
999
|
+
x: number;
|
|
1000
|
+
y: number;
|
|
1001
|
+
size: number;
|
|
1002
|
+
twinklePhase: number;
|
|
1003
|
+
twinkleSpeed: number;
|
|
1004
|
+
brightness: number;
|
|
1005
|
+
};
|
|
1006
|
+
//#endregion
|
|
1007
|
+
//#region src/stars/layer.d.ts
|
|
1008
|
+
interface StarsConfig {
|
|
1009
|
+
readonly mode?: StarMode;
|
|
1010
|
+
readonly starCount?: number;
|
|
1011
|
+
readonly shootingInterval?: [number, number];
|
|
1012
|
+
readonly shootingSpeed?: number;
|
|
1013
|
+
readonly twinkleSpeed?: number;
|
|
1014
|
+
readonly color?: string;
|
|
1015
|
+
readonly shootingColor?: string;
|
|
1016
|
+
readonly trailLength?: number;
|
|
1017
|
+
readonly scale?: number;
|
|
1018
|
+
}
|
|
1019
|
+
//#endregion
|
|
1020
|
+
//#region src/stars/index.d.ts
|
|
1021
|
+
declare function createStars(config?: StarsConfig): Effect<StarsConfig>;
|
|
1022
|
+
//#endregion
|
|
1023
|
+
//#region src/streamers/layer.d.ts
|
|
1024
|
+
interface StreamersConfig {
|
|
1025
|
+
readonly count?: number;
|
|
1026
|
+
readonly colors?: string[];
|
|
1027
|
+
readonly speed?: number;
|
|
1028
|
+
readonly scale?: number;
|
|
95
1029
|
}
|
|
96
1030
|
//#endregion
|
|
97
|
-
|
|
1031
|
+
//#region src/streamers/types.d.ts
|
|
1032
|
+
type Streamer = {
|
|
1033
|
+
x: number;
|
|
1034
|
+
y: number;
|
|
1035
|
+
length: number;
|
|
1036
|
+
width: number;
|
|
1037
|
+
segments: {
|
|
1038
|
+
x: number;
|
|
1039
|
+
y: number;
|
|
1040
|
+
}[];
|
|
1041
|
+
fallSpeed: number;
|
|
1042
|
+
swayPhase: number;
|
|
1043
|
+
swaySpeed: number;
|
|
1044
|
+
swayAmplitude: number;
|
|
1045
|
+
color: string;
|
|
1046
|
+
curl: number;
|
|
1047
|
+
depth: number;
|
|
1048
|
+
};
|
|
1049
|
+
//#endregion
|
|
1050
|
+
//#region src/streamers/index.d.ts
|
|
1051
|
+
declare function createStreamers(config?: StreamersConfig): Effect<StreamersConfig>;
|
|
1052
|
+
//#endregion
|
|
1053
|
+
//#region src/trail.d.ts
|
|
1054
|
+
interface TrailConfig {
|
|
1055
|
+
readonly acceleration?: number;
|
|
1056
|
+
readonly brightness?: number;
|
|
1057
|
+
readonly glow?: number;
|
|
1058
|
+
readonly hue?: number;
|
|
1059
|
+
readonly length?: number;
|
|
1060
|
+
readonly speed?: number;
|
|
1061
|
+
readonly width?: number;
|
|
1062
|
+
}
|
|
1063
|
+
declare class Trail {
|
|
1064
|
+
#private;
|
|
1065
|
+
get hue(): number;
|
|
1066
|
+
get isDone(): boolean;
|
|
1067
|
+
get position(): Point;
|
|
1068
|
+
collectSparks(): Spark[];
|
|
1069
|
+
constructor(start: Point, end: Point, config?: TrailConfig);
|
|
1070
|
+
draw(ctx: CanvasRenderingContext2D): void;
|
|
1071
|
+
tick(dt?: number): void;
|
|
1072
|
+
}
|
|
1073
|
+
//#endregion
|
|
1074
|
+
//#region src/waves/layer.d.ts
|
|
1075
|
+
interface WavesConfig {
|
|
1076
|
+
readonly layers?: number;
|
|
1077
|
+
readonly speed?: number;
|
|
1078
|
+
readonly colors?: string[];
|
|
1079
|
+
readonly foamColor?: string;
|
|
1080
|
+
readonly foamAmount?: number;
|
|
1081
|
+
readonly scale?: number;
|
|
1082
|
+
}
|
|
1083
|
+
//#endregion
|
|
1084
|
+
//#region src/waves/types.d.ts
|
|
1085
|
+
type Wave = {
|
|
1086
|
+
amplitude: number;
|
|
1087
|
+
frequency: number;
|
|
1088
|
+
speed: number;
|
|
1089
|
+
phase: number;
|
|
1090
|
+
baseY: number;
|
|
1091
|
+
color: string;
|
|
1092
|
+
foamThreshold: number;
|
|
1093
|
+
rgb: [number, number, number];
|
|
1094
|
+
};
|
|
1095
|
+
//#endregion
|
|
1096
|
+
//#region src/waves/index.d.ts
|
|
1097
|
+
declare function createWaves(config?: WavesConfig): Effect<WavesConfig>;
|
|
1098
|
+
//#endregion
|
|
1099
|
+
//#region src/wormhole/types.d.ts
|
|
1100
|
+
type WormholeDirection = "inward" | "outward";
|
|
1101
|
+
type WormholeParticle = {
|
|
1102
|
+
angle: number;
|
|
1103
|
+
distance: number;
|
|
1104
|
+
speed: number;
|
|
1105
|
+
size: number;
|
|
1106
|
+
brightness: number;
|
|
1107
|
+
trail: number;
|
|
1108
|
+
};
|
|
1109
|
+
//#endregion
|
|
1110
|
+
//#region src/wormhole/layer.d.ts
|
|
1111
|
+
interface WormholeConfig {
|
|
1112
|
+
readonly count?: number;
|
|
1113
|
+
readonly speed?: number;
|
|
1114
|
+
readonly color?: string;
|
|
1115
|
+
readonly direction?: WormholeDirection;
|
|
1116
|
+
readonly scale?: number;
|
|
1117
|
+
}
|
|
1118
|
+
//#endregion
|
|
1119
|
+
//#region src/wormhole/index.d.ts
|
|
1120
|
+
declare function createWormhole(config?: WormholeConfig): Effect<WormholeConfig>;
|
|
1121
|
+
//#endregion
|
|
1122
|
+
export { type AuroraBand, type AuroraConfig, type Balloon, BalloonParticle, type BalloonParticleConfig, type BalloonsConfig, type Bubble, type BubblesConfig, type Config as ConfettiBurstConfig, type ConfettiConfig, ConfettiInstance, ConfettiParticle, type ConfettiParticleConfig, type Shape as ConfettiShape, type DonutsConfig, EXPLOSION_CONFIGS, type EdgeFade, type EdgeFadeSide, Effect, type Ember, Explosion, type ExplosionConfig, type ExplosionType, FIREWORK_VARIANTS, type FallingGlitter, type FirefliesConfig, type Firefly, FireflyParticle, type FireflyParticleConfig, type FirepitConfig, Firework, type FireworkVariant, type FireworksConfig, FireworksInstance, type FlameLayer, type GlitterConfig, type Lantern, type LanternsConfig, type Leaf, type LeavesConfig, type LightningBolt, type LightningBranch, type LightningConfig, LightningSystem, type LightningSystemConfig, LimitedFrameRateCanvas, type MatrixColumn, type MatrixConfig, type NetworkParticle, type OrbitalCenter, type Orbiter, type OrbitsConfig, PALETTES, type Palette, type ParticleMouseMode, type ParticleShape, type ParticlesConfig, type Petal, type PetalsConfig, type PlasmaColor, type PlasmaConfig, type PopParticle, type RainConfig, type RainVariant, type Raindrop, RaindropParticle, type RaindropParticleConfig, SHAPE_PATHS, type SandGrain, type SandstormConfig, Scene, type SettledGlitter, type ShootingStar, ShootingStarSystem, ShootingStarSystemConfig, type SnowConfig, Spark, SparklerParticle, type SparklerParticleConfig, type SparklerSpark, type SparklersConfig, SparklersInstance, type Splash, SplashParticle, type SplashParticleConfig, type Star, type StarMode, type StarsConfig, type Streamer, type StreamersConfig, Trail, TrailConfig, type Wave, type WavesConfig, type WormholeConfig, type WormholeDirection, type WormholeParticle, createAurora, createBalloons, createBubbles, createConfetti, createDonuts, createExplosion, createFireflies, createFireflySprite, createFirepit, createFireworks, createGlitter, createLanterns, createLeaves, createLightning, createMatrix, createOrbits, createParticles, createPetals, createPlasma, createRain, createSandstorm, createScene, createSnow, createSparklers, createStars, createStreamers, createWaves, createWormhole, parseColor };
|
|
98
1123
|
//# sourceMappingURL=index.d.mts.map
|