@tsparticles/fireworks 3.0.0-beta.1 → 3.0.0-beta.3
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/README.md +15 -15
- package/package.json +12 -12
- package/report.html +23 -5
- package/tsparticles.fireworks.bundle.js +96 -75
- package/tsparticles.fireworks.bundle.min.js +1 -1
- package/tsparticles.fireworks.bundle.min.js.LICENSE.txt +1 -1
- package/tsparticles.fireworks.js +1 -1
- package/tsparticles.fireworks.min.js.LICENSE.txt +1 -1
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Demo / Generator : https://particles.js.org/
|
|
5
5
|
* GitHub : https://www.github.com/matteobruni/tsparticles
|
|
6
6
|
* How to use? : Check the GitHub README
|
|
7
|
-
* v3.0.0-beta.
|
|
7
|
+
* v3.0.0-beta.3
|
|
8
8
|
*/
|
|
9
9
|
(function webpackUniversalModuleDefinition(root, factory) {
|
|
10
10
|
if(typeof exports === 'object' && typeof module === 'object')
|
|
@@ -206,6 +206,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
206
206
|
rectBounce: () => (/* reexport */ rectBounce),
|
|
207
207
|
resizeEvent: () => (/* reexport */ resizeEvent),
|
|
208
208
|
rgbToHsl: () => (/* reexport */ rgbToHsl),
|
|
209
|
+
safeIntersectionObserver: () => (/* reexport */ safeIntersectionObserver),
|
|
209
210
|
safeMatchMedia: () => (/* reexport */ safeMatchMedia),
|
|
210
211
|
safeMutationObserver: () => (/* reexport */ safeMutationObserver),
|
|
211
212
|
setLogger: () => (/* reexport */ setLogger),
|
|
@@ -572,6 +573,12 @@ function safeMatchMedia(query) {
|
|
|
572
573
|
}
|
|
573
574
|
return matchMedia(query);
|
|
574
575
|
}
|
|
576
|
+
function safeIntersectionObserver(callback) {
|
|
577
|
+
if (isSsr() || typeof IntersectionObserver === "undefined") {
|
|
578
|
+
return;
|
|
579
|
+
}
|
|
580
|
+
return new IntersectionObserver(callback);
|
|
581
|
+
}
|
|
575
582
|
function safeMutationObserver(callback) {
|
|
576
583
|
if (isSsr() || typeof MutationObserver === "undefined") {
|
|
577
584
|
return;
|
|
@@ -1231,7 +1238,15 @@ function drawParticle(data) {
|
|
|
1231
1238
|
if (colorStyles.stroke) {
|
|
1232
1239
|
context.strokeStyle = colorStyles.stroke;
|
|
1233
1240
|
}
|
|
1234
|
-
|
|
1241
|
+
const drawData = {
|
|
1242
|
+
container,
|
|
1243
|
+
context,
|
|
1244
|
+
particle,
|
|
1245
|
+
radius,
|
|
1246
|
+
opacity,
|
|
1247
|
+
delta
|
|
1248
|
+
};
|
|
1249
|
+
drawShape(drawData);
|
|
1235
1250
|
if (strokeWidth > 0) {
|
|
1236
1251
|
context.stroke();
|
|
1237
1252
|
}
|
|
@@ -1241,11 +1256,19 @@ function drawParticle(data) {
|
|
|
1241
1256
|
if (particle.fill) {
|
|
1242
1257
|
context.fill();
|
|
1243
1258
|
}
|
|
1244
|
-
drawShapeAfterEffect(
|
|
1259
|
+
drawShapeAfterEffect(drawData);
|
|
1245
1260
|
context.globalCompositeOperation = "source-over";
|
|
1246
1261
|
context.setTransform(1, 0, 0, 1, 0, 0);
|
|
1247
1262
|
}
|
|
1248
|
-
function drawShape(
|
|
1263
|
+
function drawShape(data) {
|
|
1264
|
+
const {
|
|
1265
|
+
container,
|
|
1266
|
+
context,
|
|
1267
|
+
particle,
|
|
1268
|
+
radius,
|
|
1269
|
+
opacity,
|
|
1270
|
+
delta
|
|
1271
|
+
} = data;
|
|
1249
1272
|
if (!particle.shape) {
|
|
1250
1273
|
return;
|
|
1251
1274
|
}
|
|
@@ -1253,9 +1276,24 @@ function drawShape(container, context, particle, radius, opacity, delta) {
|
|
|
1253
1276
|
if (!drawer) {
|
|
1254
1277
|
return;
|
|
1255
1278
|
}
|
|
1256
|
-
drawer.draw(
|
|
1279
|
+
drawer.draw({
|
|
1280
|
+
context,
|
|
1281
|
+
particle,
|
|
1282
|
+
radius,
|
|
1283
|
+
opacity,
|
|
1284
|
+
delta,
|
|
1285
|
+
pixelRatio: container.retina.pixelRatio
|
|
1286
|
+
});
|
|
1257
1287
|
}
|
|
1258
|
-
function drawShapeAfterEffect(
|
|
1288
|
+
function drawShapeAfterEffect(data) {
|
|
1289
|
+
const {
|
|
1290
|
+
container,
|
|
1291
|
+
context,
|
|
1292
|
+
particle,
|
|
1293
|
+
radius,
|
|
1294
|
+
opacity,
|
|
1295
|
+
delta
|
|
1296
|
+
} = data;
|
|
1259
1297
|
if (!particle.shape) {
|
|
1260
1298
|
return;
|
|
1261
1299
|
}
|
|
@@ -1263,7 +1301,14 @@ function drawShapeAfterEffect(container, context, particle, radius, opacity, del
|
|
|
1263
1301
|
if (!drawer || !drawer.afterEffect) {
|
|
1264
1302
|
return;
|
|
1265
1303
|
}
|
|
1266
|
-
drawer.afterEffect(
|
|
1304
|
+
drawer.afterEffect({
|
|
1305
|
+
context,
|
|
1306
|
+
particle,
|
|
1307
|
+
radius,
|
|
1308
|
+
opacity,
|
|
1309
|
+
delta,
|
|
1310
|
+
pixelRatio: container.retina.pixelRatio
|
|
1311
|
+
});
|
|
1267
1312
|
}
|
|
1268
1313
|
function drawPlugin(context, plugin, delta) {
|
|
1269
1314
|
if (!plugin.draw) {
|
|
@@ -3647,7 +3692,17 @@ class InteractionManager {
|
|
|
3647
3692
|
|
|
3648
3693
|
|
|
3649
3694
|
|
|
3650
|
-
|
|
3695
|
+
function loadShapeData(shape, shapeOptions, id, reduceDuplicates) {
|
|
3696
|
+
const shapeData = shapeOptions.options[shape];
|
|
3697
|
+
if (!shapeData) {
|
|
3698
|
+
return;
|
|
3699
|
+
}
|
|
3700
|
+
return deepExtend({
|
|
3701
|
+
close: shapeOptions.close,
|
|
3702
|
+
fill: shapeOptions.fill
|
|
3703
|
+
}, itemFromSingleOrMultiple(shapeData, id, reduceDuplicates));
|
|
3704
|
+
}
|
|
3705
|
+
function fixOutMode(data) {
|
|
3651
3706
|
if (!isInArray(data.outMode, data.checkModes)) {
|
|
3652
3707
|
return;
|
|
3653
3708
|
}
|
|
@@ -3657,7 +3712,7 @@ const fixOutMode = data => {
|
|
|
3657
3712
|
} else if (data.coord < diameter) {
|
|
3658
3713
|
data.setCb(data.radius);
|
|
3659
3714
|
}
|
|
3660
|
-
}
|
|
3715
|
+
}
|
|
3661
3716
|
class Particle {
|
|
3662
3717
|
constructor(engine, id, container, position, overrideOptions, group) {
|
|
3663
3718
|
this.container = container;
|
|
@@ -3782,16 +3837,6 @@ class Particle {
|
|
|
3782
3837
|
}
|
|
3783
3838
|
this.offset = Vector.origin;
|
|
3784
3839
|
};
|
|
3785
|
-
this._loadShapeData = (shapeOptions, reduceDuplicates) => {
|
|
3786
|
-
const shapeData = shapeOptions.options[this.shape];
|
|
3787
|
-
if (!shapeData) {
|
|
3788
|
-
return;
|
|
3789
|
-
}
|
|
3790
|
-
return deepExtend({
|
|
3791
|
-
close: shapeOptions.close,
|
|
3792
|
-
fill: shapeOptions.fill
|
|
3793
|
-
}, itemFromSingleOrMultiple(shapeData, this.id, reduceDuplicates));
|
|
3794
|
-
};
|
|
3795
3840
|
this._engine = engine;
|
|
3796
3841
|
this.init(id, position, overrideOptions, group);
|
|
3797
3842
|
}
|
|
@@ -3880,7 +3925,7 @@ class Particle {
|
|
|
3880
3925
|
shapeOptions.load(overrideOptions.shape);
|
|
3881
3926
|
}
|
|
3882
3927
|
}
|
|
3883
|
-
this.shapeData = this.
|
|
3928
|
+
this.shapeData = loadShapeData(this.shape, shapeOptions, this.id, reduceDuplicates);
|
|
3884
3929
|
particlesOptions.load(overrideOptions);
|
|
3885
3930
|
const shapeData = this.shapeData;
|
|
3886
3931
|
if (shapeData) {
|
|
@@ -4191,8 +4236,9 @@ class Particles {
|
|
|
4191
4236
|
return false;
|
|
4192
4237
|
}
|
|
4193
4238
|
particle.destroy(override);
|
|
4239
|
+
const zIdx = this._zArray.indexOf(particle);
|
|
4194
4240
|
this._array.splice(index, 1);
|
|
4195
|
-
this._zArray
|
|
4241
|
+
this._zArray.splice(zIdx, 1);
|
|
4196
4242
|
this.pool.push(particle);
|
|
4197
4243
|
this._engine.dispatchEvent("particleRemoved", {
|
|
4198
4244
|
container: this._container,
|
|
@@ -4299,7 +4345,7 @@ class Particles {
|
|
|
4299
4345
|
this.addManualParticles();
|
|
4300
4346
|
if (!handled) {
|
|
4301
4347
|
const particlesOptions = options.particles,
|
|
4302
|
-
groups =
|
|
4348
|
+
groups = particlesOptions.groups;
|
|
4303
4349
|
for (const group in groups) {
|
|
4304
4350
|
const groupOptions = groups[group];
|
|
4305
4351
|
for (let i = this.count, j = 0; j < groupOptions.number?.value && i < particlesOptions.number.value; i++, j++) {
|
|
@@ -4475,7 +4521,6 @@ function loadContainerOptions(engine, container, ...sourceOptionsArr) {
|
|
|
4475
4521
|
}
|
|
4476
4522
|
class Container {
|
|
4477
4523
|
constructor(engine, id, sourceOptions) {
|
|
4478
|
-
this.id = id;
|
|
4479
4524
|
this._intersectionManager = entries => {
|
|
4480
4525
|
if (!guardCheck(this) || !this.actualOptions.pauseOnOutsideViewport) {
|
|
4481
4526
|
return;
|
|
@@ -4514,6 +4559,7 @@ class Container {
|
|
|
4514
4559
|
}
|
|
4515
4560
|
};
|
|
4516
4561
|
this._engine = engine;
|
|
4562
|
+
this.id = Symbol(id);
|
|
4517
4563
|
this.fpsLimit = 120;
|
|
4518
4564
|
this.smooth = false;
|
|
4519
4565
|
this._delay = 0;
|
|
@@ -4543,9 +4589,7 @@ class Container {
|
|
|
4543
4589
|
this._options = loadContainerOptions(this._engine, this);
|
|
4544
4590
|
this.actualOptions = loadContainerOptions(this._engine, this);
|
|
4545
4591
|
this._eventListeners = new EventListeners(this);
|
|
4546
|
-
|
|
4547
|
-
this._intersectionObserver = new IntersectionObserver(entries => this._intersectionManager(entries));
|
|
4548
|
-
}
|
|
4592
|
+
this._intersectionObserver = safeIntersectionObserver(entries => this._intersectionManager(entries));
|
|
4549
4593
|
this._engine.dispatchEvent("containerBuilt", {
|
|
4550
4594
|
container: this
|
|
4551
4595
|
});
|
|
@@ -4988,17 +5032,17 @@ class Engine {
|
|
|
4988
5032
|
return res;
|
|
4989
5033
|
}
|
|
4990
5034
|
get version() {
|
|
4991
|
-
return "3.0.0-beta.
|
|
5035
|
+
return "3.0.0-beta.3";
|
|
4992
5036
|
}
|
|
4993
|
-
addConfig(
|
|
4994
|
-
|
|
4995
|
-
|
|
4996
|
-
|
|
4997
|
-
|
|
5037
|
+
addConfig(config) {
|
|
5038
|
+
const name = config.name ?? "default";
|
|
5039
|
+
this._configs.set(name, config);
|
|
5040
|
+
this._eventDispatcher.dispatchEvent("configAdded", {
|
|
5041
|
+
data: {
|
|
5042
|
+
name,
|
|
5043
|
+
config
|
|
4998
5044
|
}
|
|
4999
|
-
}
|
|
5000
|
-
this._configs.set(nameOrConfig.name ?? "default", nameOrConfig);
|
|
5001
|
-
}
|
|
5045
|
+
});
|
|
5002
5046
|
}
|
|
5003
5047
|
addEventListener(type, listener) {
|
|
5004
5048
|
this._eventDispatcher.addEventListener(type, listener);
|
|
@@ -5027,44 +5071,11 @@ class Engine {
|
|
|
5027
5071
|
(override || !this.getPreset(preset)) && this.presets.set(preset, options);
|
|
5028
5072
|
await this.refresh(refresh);
|
|
5029
5073
|
}
|
|
5030
|
-
async addShape(shape, drawer,
|
|
5031
|
-
let customDrawer;
|
|
5032
|
-
let realRefresh = refresh,
|
|
5033
|
-
realInit,
|
|
5034
|
-
realAfterEffect,
|
|
5035
|
-
realDestroy;
|
|
5036
|
-
if (isBoolean(initOrRefresh)) {
|
|
5037
|
-
realRefresh = initOrRefresh;
|
|
5038
|
-
realInit = undefined;
|
|
5039
|
-
} else {
|
|
5040
|
-
realInit = initOrRefresh;
|
|
5041
|
-
}
|
|
5042
|
-
if (isBoolean(afterEffectOrRefresh)) {
|
|
5043
|
-
realRefresh = afterEffectOrRefresh;
|
|
5044
|
-
realAfterEffect = undefined;
|
|
5045
|
-
} else {
|
|
5046
|
-
realAfterEffect = afterEffectOrRefresh;
|
|
5047
|
-
}
|
|
5048
|
-
if (isBoolean(destroyOrRefresh)) {
|
|
5049
|
-
realRefresh = destroyOrRefresh;
|
|
5050
|
-
realDestroy = undefined;
|
|
5051
|
-
} else {
|
|
5052
|
-
realDestroy = destroyOrRefresh;
|
|
5053
|
-
}
|
|
5054
|
-
if (isFunction(drawer)) {
|
|
5055
|
-
customDrawer = {
|
|
5056
|
-
afterEffect: realAfterEffect,
|
|
5057
|
-
destroy: realDestroy,
|
|
5058
|
-
draw: drawer,
|
|
5059
|
-
init: realInit
|
|
5060
|
-
};
|
|
5061
|
-
} else {
|
|
5062
|
-
customDrawer = drawer;
|
|
5063
|
-
}
|
|
5074
|
+
async addShape(shape, drawer, refresh = true) {
|
|
5064
5075
|
executeOnSingleOrMultiple(shape, type => {
|
|
5065
|
-
!this.getShapeDrawer(type) && this.drawers.set(type,
|
|
5076
|
+
!this.getShapeDrawer(type) && this.drawers.set(type, drawer);
|
|
5066
5077
|
});
|
|
5067
|
-
await this.refresh(
|
|
5078
|
+
await this.refresh(refresh);
|
|
5068
5079
|
}
|
|
5069
5080
|
clearPlugins(container) {
|
|
5070
5081
|
this.updaters.delete(container);
|
|
@@ -5142,7 +5153,7 @@ class Engine {
|
|
|
5142
5153
|
}
|
|
5143
5154
|
const currentOptions = itemFromSingleOrMultiple(options, index),
|
|
5144
5155
|
dom = this.dom(),
|
|
5145
|
-
oldIndex = dom.findIndex(v => v.id === id);
|
|
5156
|
+
oldIndex = dom.findIndex(v => v.id.description === id);
|
|
5146
5157
|
if (oldIndex >= 0) {
|
|
5147
5158
|
const old = this.domItem(oldIndex);
|
|
5148
5159
|
if (old && !old.destroyed) {
|
|
@@ -5681,7 +5692,12 @@ async function loadBaseMover(engine, refresh = true) {
|
|
|
5681
5692
|
;// CONCATENATED MODULE: ../../shapes/circle/dist/browser/CircleDrawer.js
|
|
5682
5693
|
|
|
5683
5694
|
class CircleDrawer {
|
|
5684
|
-
draw(
|
|
5695
|
+
draw(data) {
|
|
5696
|
+
const {
|
|
5697
|
+
context,
|
|
5698
|
+
particle,
|
|
5699
|
+
radius
|
|
5700
|
+
} = data;
|
|
5685
5701
|
if (!particle.circleRange) {
|
|
5686
5702
|
particle.circleRange = {
|
|
5687
5703
|
min: 0,
|
|
@@ -7481,8 +7497,13 @@ async function loadLifeUpdater(engine, refresh = true) {
|
|
|
7481
7497
|
}
|
|
7482
7498
|
;// CONCATENATED MODULE: ../../shapes/line/dist/browser/LineDrawer.js
|
|
7483
7499
|
class LineDrawer {
|
|
7484
|
-
draw(
|
|
7485
|
-
const
|
|
7500
|
+
draw(data) {
|
|
7501
|
+
const {
|
|
7502
|
+
context,
|
|
7503
|
+
particle,
|
|
7504
|
+
radius
|
|
7505
|
+
} = data,
|
|
7506
|
+
shapeData = particle.shapeData;
|
|
7486
7507
|
context.moveTo(-radius / 2, 0);
|
|
7487
7508
|
context.lineTo(radius / 2, 0);
|
|
7488
7509
|
context.lineCap = shapeData?.cap ?? "butt";
|