@tsparticles/confetti 3.0.0-beta.2 → 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/package.json +17 -17
- package/report.html +2 -2
- package/tsparticles.confetti.bundle.js +144 -94
- package/tsparticles.confetti.bundle.min.js +1 -1
- package/tsparticles.confetti.bundle.min.js.LICENSE.txt +1 -1
- package/tsparticles.confetti.js +1 -1
- package/tsparticles.confetti.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) {
|
|
@@ -4476,7 +4521,6 @@ function loadContainerOptions(engine, container, ...sourceOptionsArr) {
|
|
|
4476
4521
|
}
|
|
4477
4522
|
class Container {
|
|
4478
4523
|
constructor(engine, id, sourceOptions) {
|
|
4479
|
-
this.id = id;
|
|
4480
4524
|
this._intersectionManager = entries => {
|
|
4481
4525
|
if (!guardCheck(this) || !this.actualOptions.pauseOnOutsideViewport) {
|
|
4482
4526
|
return;
|
|
@@ -4515,6 +4559,7 @@ class Container {
|
|
|
4515
4559
|
}
|
|
4516
4560
|
};
|
|
4517
4561
|
this._engine = engine;
|
|
4562
|
+
this.id = Symbol(id);
|
|
4518
4563
|
this.fpsLimit = 120;
|
|
4519
4564
|
this.smooth = false;
|
|
4520
4565
|
this._delay = 0;
|
|
@@ -4544,9 +4589,7 @@ class Container {
|
|
|
4544
4589
|
this._options = loadContainerOptions(this._engine, this);
|
|
4545
4590
|
this.actualOptions = loadContainerOptions(this._engine, this);
|
|
4546
4591
|
this._eventListeners = new EventListeners(this);
|
|
4547
|
-
|
|
4548
|
-
this._intersectionObserver = new IntersectionObserver(entries => this._intersectionManager(entries));
|
|
4549
|
-
}
|
|
4592
|
+
this._intersectionObserver = safeIntersectionObserver(entries => this._intersectionManager(entries));
|
|
4550
4593
|
this._engine.dispatchEvent("containerBuilt", {
|
|
4551
4594
|
container: this
|
|
4552
4595
|
});
|
|
@@ -4989,17 +5032,17 @@ class Engine {
|
|
|
4989
5032
|
return res;
|
|
4990
5033
|
}
|
|
4991
5034
|
get version() {
|
|
4992
|
-
return "3.0.0-beta.
|
|
5035
|
+
return "3.0.0-beta.3";
|
|
4993
5036
|
}
|
|
4994
|
-
addConfig(
|
|
4995
|
-
|
|
4996
|
-
|
|
4997
|
-
|
|
4998
|
-
|
|
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
|
|
4999
5044
|
}
|
|
5000
|
-
}
|
|
5001
|
-
this._configs.set(nameOrConfig.name ?? "default", nameOrConfig);
|
|
5002
|
-
}
|
|
5045
|
+
});
|
|
5003
5046
|
}
|
|
5004
5047
|
addEventListener(type, listener) {
|
|
5005
5048
|
this._eventDispatcher.addEventListener(type, listener);
|
|
@@ -5028,44 +5071,11 @@ class Engine {
|
|
|
5028
5071
|
(override || !this.getPreset(preset)) && this.presets.set(preset, options);
|
|
5029
5072
|
await this.refresh(refresh);
|
|
5030
5073
|
}
|
|
5031
|
-
async addShape(shape, drawer,
|
|
5032
|
-
let customDrawer;
|
|
5033
|
-
let realRefresh = refresh,
|
|
5034
|
-
realInit,
|
|
5035
|
-
realAfterEffect,
|
|
5036
|
-
realDestroy;
|
|
5037
|
-
if (isBoolean(initOrRefresh)) {
|
|
5038
|
-
realRefresh = initOrRefresh;
|
|
5039
|
-
realInit = undefined;
|
|
5040
|
-
} else {
|
|
5041
|
-
realInit = initOrRefresh;
|
|
5042
|
-
}
|
|
5043
|
-
if (isBoolean(afterEffectOrRefresh)) {
|
|
5044
|
-
realRefresh = afterEffectOrRefresh;
|
|
5045
|
-
realAfterEffect = undefined;
|
|
5046
|
-
} else {
|
|
5047
|
-
realAfterEffect = afterEffectOrRefresh;
|
|
5048
|
-
}
|
|
5049
|
-
if (isBoolean(destroyOrRefresh)) {
|
|
5050
|
-
realRefresh = destroyOrRefresh;
|
|
5051
|
-
realDestroy = undefined;
|
|
5052
|
-
} else {
|
|
5053
|
-
realDestroy = destroyOrRefresh;
|
|
5054
|
-
}
|
|
5055
|
-
if (isFunction(drawer)) {
|
|
5056
|
-
customDrawer = {
|
|
5057
|
-
afterEffect: realAfterEffect,
|
|
5058
|
-
destroy: realDestroy,
|
|
5059
|
-
draw: drawer,
|
|
5060
|
-
init: realInit
|
|
5061
|
-
};
|
|
5062
|
-
} else {
|
|
5063
|
-
customDrawer = drawer;
|
|
5064
|
-
}
|
|
5074
|
+
async addShape(shape, drawer, refresh = true) {
|
|
5065
5075
|
executeOnSingleOrMultiple(shape, type => {
|
|
5066
|
-
!this.getShapeDrawer(type) && this.drawers.set(type,
|
|
5076
|
+
!this.getShapeDrawer(type) && this.drawers.set(type, drawer);
|
|
5067
5077
|
});
|
|
5068
|
-
await this.refresh(
|
|
5078
|
+
await this.refresh(refresh);
|
|
5069
5079
|
}
|
|
5070
5080
|
clearPlugins(container) {
|
|
5071
5081
|
this.updaters.delete(container);
|
|
@@ -5143,7 +5153,7 @@ class Engine {
|
|
|
5143
5153
|
}
|
|
5144
5154
|
const currentOptions = itemFromSingleOrMultiple(options, index),
|
|
5145
5155
|
dom = this.dom(),
|
|
5146
|
-
oldIndex = dom.findIndex(v => v.id === id);
|
|
5156
|
+
oldIndex = dom.findIndex(v => v.id.description === id);
|
|
5147
5157
|
if (oldIndex >= 0) {
|
|
5148
5158
|
const old = this.domItem(oldIndex);
|
|
5149
5159
|
if (old && !old.destroyed) {
|
|
@@ -5734,7 +5744,12 @@ async function loadBaseMover(engine, refresh = true) {
|
|
|
5734
5744
|
;// CONCATENATED MODULE: ../../shapes/circle/dist/browser/CircleDrawer.js
|
|
5735
5745
|
|
|
5736
5746
|
class CircleDrawer {
|
|
5737
|
-
draw(
|
|
5747
|
+
draw(data) {
|
|
5748
|
+
const {
|
|
5749
|
+
context,
|
|
5750
|
+
particle,
|
|
5751
|
+
radius
|
|
5752
|
+
} = data;
|
|
5738
5753
|
if (!particle.circleRange) {
|
|
5739
5754
|
particle.circleRange = {
|
|
5740
5755
|
min: 0,
|
|
@@ -6429,18 +6444,22 @@ async function loadBasic(engine, refresh = true) {
|
|
|
6429
6444
|
await engine.refresh(refresh);
|
|
6430
6445
|
}
|
|
6431
6446
|
;// CONCATENATED MODULE: ../../shapes/cards/dist/browser/Utils.js
|
|
6432
|
-
function drawPath(
|
|
6447
|
+
function drawPath(data, path) {
|
|
6433
6448
|
if (!path.segments.length || !path.segments[0].values.length) {
|
|
6434
6449
|
return;
|
|
6435
6450
|
}
|
|
6436
|
-
|
|
6451
|
+
const {
|
|
6452
|
+
context,
|
|
6453
|
+
radius
|
|
6454
|
+
} = data;
|
|
6455
|
+
context.moveTo(path.segments[0].values[0].x * radius, path.segments[0].values[0].y * radius);
|
|
6437
6456
|
for (let i = 0; i < path.segments.length; i++) {
|
|
6438
6457
|
const segment = path.segments[i];
|
|
6439
|
-
|
|
6458
|
+
context.bezierCurveTo(segment.values[1].x * radius, segment.values[1].y * radius, segment.values[2].x * radius, segment.values[2].y * radius, segment.values[3].x * radius, segment.values[3].y * radius);
|
|
6440
6459
|
}
|
|
6441
6460
|
for (let i = path.segments.length - 1; i >= 0; i--) {
|
|
6442
6461
|
const segment = path.segments[i];
|
|
6443
|
-
|
|
6462
|
+
context.bezierCurveTo(-segment.values[2].x * radius, segment.values[2].y * radius, -segment.values[1].x * radius, segment.values[1].y * radius, -segment.values[0].x * radius, segment.values[0].y * radius);
|
|
6444
6463
|
}
|
|
6445
6464
|
}
|
|
6446
6465
|
const n = 1.0 / 2;
|
|
@@ -6685,23 +6704,23 @@ const paths = {
|
|
|
6685
6704
|
;// CONCATENATED MODULE: ../../shapes/cards/dist/browser/CardsSuitsDrawers.js
|
|
6686
6705
|
|
|
6687
6706
|
class SpadeDrawer {
|
|
6688
|
-
draw(
|
|
6689
|
-
drawPath(
|
|
6707
|
+
draw(data) {
|
|
6708
|
+
drawPath(data, paths.spade);
|
|
6690
6709
|
}
|
|
6691
6710
|
}
|
|
6692
6711
|
class HeartDrawer {
|
|
6693
|
-
draw(
|
|
6694
|
-
drawPath(
|
|
6712
|
+
draw(data) {
|
|
6713
|
+
drawPath(data, paths.heart);
|
|
6695
6714
|
}
|
|
6696
6715
|
}
|
|
6697
6716
|
class DiamondDrawer {
|
|
6698
|
-
draw(
|
|
6699
|
-
drawPath(
|
|
6717
|
+
draw(data) {
|
|
6718
|
+
drawPath(data, paths.diamond);
|
|
6700
6719
|
}
|
|
6701
6720
|
}
|
|
6702
6721
|
class ClubDrawer {
|
|
6703
|
-
draw(
|
|
6704
|
-
drawPath(
|
|
6722
|
+
draw(data) {
|
|
6723
|
+
drawPath(data, paths.club);
|
|
6705
6724
|
}
|
|
6706
6725
|
}
|
|
6707
6726
|
;// CONCATENATED MODULE: ../../shapes/cards/dist/browser/index.js
|
|
@@ -7396,7 +7415,11 @@ async function loadEmittersPlugin(engine, refresh = true) {
|
|
|
7396
7415
|
|
|
7397
7416
|
;// CONCATENATED MODULE: ../../shapes/heart/dist/browser/HeartDrawer.js
|
|
7398
7417
|
class HeartDrawer_HeartDrawer {
|
|
7399
|
-
draw(
|
|
7418
|
+
draw(data) {
|
|
7419
|
+
const {
|
|
7420
|
+
context,
|
|
7421
|
+
radius
|
|
7422
|
+
} = data;
|
|
7400
7423
|
const x = -radius,
|
|
7401
7424
|
y = -radius;
|
|
7402
7425
|
context.moveTo(x, y + radius / 2);
|
|
@@ -7966,8 +7989,15 @@ class ImageDrawer {
|
|
|
7966
7989
|
}
|
|
7967
7990
|
this._engine.images.push(image);
|
|
7968
7991
|
}
|
|
7969
|
-
draw(
|
|
7970
|
-
const
|
|
7992
|
+
draw(data) {
|
|
7993
|
+
const {
|
|
7994
|
+
context,
|
|
7995
|
+
radius,
|
|
7996
|
+
particle,
|
|
7997
|
+
opacity,
|
|
7998
|
+
delta
|
|
7999
|
+
} = data,
|
|
8000
|
+
image = particle.image,
|
|
7971
8001
|
element = image?.element;
|
|
7972
8002
|
if (!image) {
|
|
7973
8003
|
return;
|
|
@@ -8508,8 +8538,13 @@ async function loadMotionPlugin(engine, refresh = true) {
|
|
|
8508
8538
|
;// CONCATENATED MODULE: ../../shapes/polygon/dist/browser/PolygonDrawerBase.js
|
|
8509
8539
|
|
|
8510
8540
|
class PolygonDrawerBase {
|
|
8511
|
-
draw(
|
|
8512
|
-
const
|
|
8541
|
+
draw(data) {
|
|
8542
|
+
const {
|
|
8543
|
+
context,
|
|
8544
|
+
particle,
|
|
8545
|
+
radius
|
|
8546
|
+
} = data,
|
|
8547
|
+
start = this.getCenter(particle, radius),
|
|
8513
8548
|
side = this.getSidesData(particle, radius),
|
|
8514
8549
|
sideCount = side.count.numerator * side.count.denominator,
|
|
8515
8550
|
decimalSides = side.count.numerator / side.count.denominator,
|
|
@@ -8887,8 +8922,12 @@ async function loadRotateUpdater(engine, refresh = true) {
|
|
|
8887
8922
|
;// CONCATENATED MODULE: ../../shapes/square/dist/browser/SquareDrawer.js
|
|
8888
8923
|
const fixFactor = Math.sqrt(2);
|
|
8889
8924
|
class SquareDrawer {
|
|
8890
|
-
draw(
|
|
8891
|
-
const
|
|
8925
|
+
draw(data) {
|
|
8926
|
+
const {
|
|
8927
|
+
context,
|
|
8928
|
+
radius
|
|
8929
|
+
} = data,
|
|
8930
|
+
fixedRadius = radius / fixFactor,
|
|
8892
8931
|
fixedDiameter = fixedRadius * 2;
|
|
8893
8932
|
context.rect(-fixedRadius, -fixedRadius, fixedDiameter, fixedDiameter);
|
|
8894
8933
|
}
|
|
@@ -8904,8 +8943,13 @@ async function loadSquareShape(engine, refresh = true) {
|
|
|
8904
8943
|
;// CONCATENATED MODULE: ../../shapes/star/dist/browser/StarDrawer.js
|
|
8905
8944
|
|
|
8906
8945
|
class StarDrawer {
|
|
8907
|
-
draw(
|
|
8908
|
-
const
|
|
8946
|
+
draw(data) {
|
|
8947
|
+
const {
|
|
8948
|
+
context,
|
|
8949
|
+
particle,
|
|
8950
|
+
radius
|
|
8951
|
+
} = data,
|
|
8952
|
+
sides = particle.sides,
|
|
8909
8953
|
inset = particle.starInset ?? 2;
|
|
8910
8954
|
context.moveTo(0, 0 - radius);
|
|
8911
8955
|
for (let i = 0; i < sides; i++) {
|
|
@@ -8933,8 +8977,14 @@ async function loadStarShape(engine, refresh = true) {
|
|
|
8933
8977
|
|
|
8934
8978
|
const validTypes = ["text", "character", "char"];
|
|
8935
8979
|
class TextDrawer {
|
|
8936
|
-
draw(
|
|
8937
|
-
const
|
|
8980
|
+
draw(data) {
|
|
8981
|
+
const {
|
|
8982
|
+
context,
|
|
8983
|
+
particle,
|
|
8984
|
+
radius,
|
|
8985
|
+
opacity
|
|
8986
|
+
} = data,
|
|
8987
|
+
character = particle.shapeData;
|
|
8938
8988
|
if (character === undefined) {
|
|
8939
8989
|
return;
|
|
8940
8990
|
}
|