@tsparticles/preset-fireworks 3.2.0 → 4.0.0-alpha.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.
Files changed (143) hide show
  1. package/125.min.js +2 -0
  2. package/125.min.js.LICENSE.txt +1 -0
  3. package/171.min.js +2 -0
  4. package/171.min.js.LICENSE.txt +1 -0
  5. package/213.min.js +2 -0
  6. package/213.min.js.LICENSE.txt +1 -0
  7. package/22.min.js +2 -0
  8. package/22.min.js.LICENSE.txt +1 -0
  9. package/226.min.js +2 -0
  10. package/226.min.js.LICENSE.txt +1 -0
  11. package/237.min.js +2 -0
  12. package/237.min.js.LICENSE.txt +1 -0
  13. package/264.min.js +2 -0
  14. package/264.min.js.LICENSE.txt +1 -0
  15. package/267.min.js +2 -0
  16. package/267.min.js.LICENSE.txt +1 -0
  17. package/280.min.js +2 -0
  18. package/280.min.js.LICENSE.txt +1 -0
  19. package/283.min.js +2 -0
  20. package/283.min.js.LICENSE.txt +1 -0
  21. package/301.min.js +2 -0
  22. package/301.min.js.LICENSE.txt +1 -0
  23. package/313.min.js +2 -0
  24. package/313.min.js.LICENSE.txt +1 -0
  25. package/319.min.js +2 -0
  26. package/319.min.js.LICENSE.txt +1 -0
  27. package/349.min.js +2 -0
  28. package/349.min.js.LICENSE.txt +1 -0
  29. package/389.min.js +2 -0
  30. package/389.min.js.LICENSE.txt +1 -0
  31. package/397.min.js +2 -0
  32. package/397.min.js.LICENSE.txt +1 -0
  33. package/418.min.js +2 -0
  34. package/418.min.js.LICENSE.txt +1 -0
  35. package/453.min.js +2 -0
  36. package/453.min.js.LICENSE.txt +1 -0
  37. package/455.min.js +2 -0
  38. package/455.min.js.LICENSE.txt +1 -0
  39. package/459.min.js +2 -0
  40. package/459.min.js.LICENSE.txt +1 -0
  41. package/477.min.js +2 -0
  42. package/477.min.js.LICENSE.txt +1 -0
  43. package/481.min.js +2 -0
  44. package/481.min.js.LICENSE.txt +1 -0
  45. package/488.min.js +2 -0
  46. package/488.min.js.LICENSE.txt +1 -0
  47. package/49.min.js +2 -0
  48. package/49.min.js.LICENSE.txt +1 -0
  49. package/509.min.js +2 -0
  50. package/509.min.js.LICENSE.txt +1 -0
  51. package/527.min.js +2 -0
  52. package/527.min.js.LICENSE.txt +1 -0
  53. package/541.min.js +2 -0
  54. package/541.min.js.LICENSE.txt +1 -0
  55. package/597.min.js +2 -0
  56. package/597.min.js.LICENSE.txt +1 -0
  57. package/633.min.js +2 -0
  58. package/633.min.js.LICENSE.txt +1 -0
  59. package/637.min.js +2 -0
  60. package/637.min.js.LICENSE.txt +1 -0
  61. package/669.min.js +2 -0
  62. package/669.min.js.LICENSE.txt +1 -0
  63. package/751.min.js +2 -0
  64. package/751.min.js.LICENSE.txt +1 -0
  65. package/802.min.js +2 -0
  66. package/802.min.js.LICENSE.txt +1 -0
  67. package/803.min.js +2 -0
  68. package/803.min.js.LICENSE.txt +1 -0
  69. package/819.min.js +2 -0
  70. package/819.min.js.LICENSE.txt +1 -0
  71. package/829.min.js +2 -0
  72. package/829.min.js.LICENSE.txt +1 -0
  73. package/890.min.js +2 -0
  74. package/890.min.js.LICENSE.txt +1 -0
  75. package/908.min.js +2 -0
  76. package/908.min.js.LICENSE.txt +1 -0
  77. package/926.min.js +2 -0
  78. package/926.min.js.LICENSE.txt +1 -0
  79. package/98.min.js +2 -0
  80. package/98.min.js.LICENSE.txt +1 -0
  81. package/browser/bundle.js +2 -3
  82. package/browser/index.js +18 -22
  83. package/browser/options.js +99 -38
  84. package/cjs/bundle.js +2 -7
  85. package/cjs/index.js +18 -26
  86. package/cjs/options.js +112 -55
  87. package/dist_browser_options_js.js +30 -0
  88. package/esm/bundle.js +2 -3
  89. package/esm/index.js +18 -22
  90. package/esm/options.js +99 -38
  91. package/node_modules_pnpm_tsparticles_basic_4_0_0-alpha_2_node_modules_tsparticles_basic_browser_index_js.js +30 -0
  92. package/node_modules_pnpm_tsparticles_effect-trail_4_0_0-alpha_2_node_modules_tsparticles_effect-trai-3395e5.js +30 -0
  93. package/node_modules_pnpm_tsparticles_effect-trail_4_0_0-alpha_2_node_modules_tsparticles_effect-trai-8c7216.js +30 -0
  94. package/node_modules_pnpm_tsparticles_move-base_4_0_0-alpha_2_node_modules_tsparticles_move-base_brow-7d79eb.js +40 -0
  95. package/node_modules_pnpm_tsparticles_move-base_4_0_0-alpha_2_node_modules_tsparticles_move-base_brow-fb148a.js +30 -0
  96. package/node_modules_pnpm_tsparticles_plugin-emitters-shape-square_4_0_0-alpha_2_node_modules_tsparti-cafd8c.js +30 -0
  97. package/node_modules_pnpm_tsparticles_plugin-emitters-shape-square_4_0_0-alpha_2_node_modules_tsparti-cf2f58.js +70 -0
  98. package/node_modules_pnpm_tsparticles_plugin-emitters_4_0_0-alpha_2_node_modules_tsparticles_plugin-e-122a51.js +30 -0
  99. package/node_modules_pnpm_tsparticles_plugin-emitters_4_0_0-alpha_2_node_modules_tsparticles_plugin-e-6bd6f8.js +50 -0
  100. package/node_modules_pnpm_tsparticles_plugin-hex-color_4_0_0-alpha_2_node_modules_tsparticles_plugin--91288b.js +30 -0
  101. package/node_modules_pnpm_tsparticles_plugin-hex-color_4_0_0-alpha_2_node_modules_tsparticles_plugin--d06b2a.js +30 -0
  102. package/node_modules_pnpm_tsparticles_plugin-hsl-color_4_0_0-alpha_2_node_modules_tsparticles_plugin--70976c.js +30 -0
  103. package/node_modules_pnpm_tsparticles_plugin-hsl-color_4_0_0-alpha_2_node_modules_tsparticles_plugin--e141e9.js +30 -0
  104. package/node_modules_pnpm_tsparticles_plugin-rgb-color_4_0_0-alpha_2_node_modules_tsparticles_plugin--60c9df.js +30 -0
  105. package/node_modules_pnpm_tsparticles_plugin-rgb-color_4_0_0-alpha_2_node_modules_tsparticles_plugin--732407.js +30 -0
  106. package/node_modules_pnpm_tsparticles_plugin-sounds_4_0_0-alpha_2_node_modules_tsparticles_plugin-sou-6e6a34.js +30 -0
  107. package/node_modules_pnpm_tsparticles_shape-circle_4_0_0-alpha_2_node_modules_tsparticles_shape-circl-c98489.js +40 -0
  108. package/node_modules_pnpm_tsparticles_shape-circle_4_0_0-alpha_2_node_modules_tsparticles_shape-circl-ce96e8.js +30 -0
  109. package/node_modules_pnpm_tsparticles_shape-line_4_0_0-alpha_2_node_modules_tsparticles_shape-line_br-01d607.js +30 -0
  110. package/node_modules_pnpm_tsparticles_shape-line_4_0_0-alpha_2_node_modules_tsparticles_shape-line_br-eb7b65.js +40 -0
  111. package/node_modules_pnpm_tsparticles_updater-color_4_0_0-alpha_2_node_modules_tsparticles_updater-co-210bd6.js +30 -0
  112. package/node_modules_pnpm_tsparticles_updater-color_4_0_0-alpha_2_node_modules_tsparticles_updater-co-6ff909.js +30 -0
  113. package/node_modules_pnpm_tsparticles_updater-destroy_4_0_0-alpha_2_node_modules_tsparticles_updater--cef2d9.js +100 -0
  114. package/node_modules_pnpm_tsparticles_updater-destroy_4_0_0-alpha_2_node_modules_tsparticles_updater--f71d4c.js +30 -0
  115. package/node_modules_pnpm_tsparticles_updater-life_4_0_0-alpha_2_node_modules_tsparticles_updater-lif-50f821.js +30 -0
  116. package/node_modules_pnpm_tsparticles_updater-life_4_0_0-alpha_2_node_modules_tsparticles_updater-lif-dbf90f.js +70 -0
  117. package/node_modules_pnpm_tsparticles_updater-opacity_4_0_0-alpha_2_node_modules_tsparticles_updater--4e8c57.js +30 -0
  118. package/node_modules_pnpm_tsparticles_updater-opacity_4_0_0-alpha_2_node_modules_tsparticles_updater--ac14ff.js +30 -0
  119. package/node_modules_pnpm_tsparticles_updater-out-modes_4_0_0-alpha_2_node_modules_tsparticles_update-cd317f.js +30 -0
  120. package/node_modules_pnpm_tsparticles_updater-rotate_4_0_0-alpha_2_node_modules_tsparticles_updater-r-0de212.js +30 -0
  121. package/node_modules_pnpm_tsparticles_updater-rotate_4_0_0-alpha_2_node_modules_tsparticles_updater-r-e97427.js +50 -0
  122. package/node_modules_pnpm_tsparticles_updater-size_4_0_0-alpha_2_node_modules_tsparticles_updater-siz-53e0fe.js +30 -0
  123. package/node_modules_pnpm_tsparticles_updater-size_4_0_0-alpha_2_node_modules_tsparticles_updater-siz-aaa117.js +30 -0
  124. package/node_modules_pnpm_tsparticles_updater-stroke-color_4_0_0-alpha_2_node_modules_tsparticles_upd-74b323.js +30 -0
  125. package/node_modules_pnpm_tsparticles_updater-stroke-color_4_0_0-alpha_2_node_modules_tsparticles_upd-ca004c.js +30 -0
  126. package/package.json +30 -13
  127. package/report.html +5 -4
  128. package/tsparticles.preset.fireworks.bundle.js +774 -2583
  129. package/tsparticles.preset.fireworks.bundle.min.js +1 -1
  130. package/tsparticles.preset.fireworks.bundle.min.js.LICENSE.txt +1 -1
  131. package/tsparticles.preset.fireworks.js +306 -57
  132. package/tsparticles.preset.fireworks.min.js +1 -1
  133. package/tsparticles.preset.fireworks.min.js.LICENSE.txt +1 -1
  134. package/types/bundle.d.ts +2 -3
  135. package/types/index.d.ts +1 -1
  136. package/types/options.d.ts +3 -2
  137. package/umd/bundle.js +2 -2
  138. package/umd/index.js +54 -25
  139. package/umd/options.js +100 -39
  140. package/vendors-node_modules_pnpm_tsparticles_engine_4_0_0-alpha_2_node_modules_tsparticles_engine_br-9c0a0f.js +100 -0
  141. package/vendors-node_modules_pnpm_tsparticles_plugin-emitters_4_0_0-alpha_2_node_modules_tsparticles_-1e60b5.js +110 -0
  142. package/vendors-node_modules_pnpm_tsparticles_plugin-sounds_4_0_0-alpha_2_node_modules_tsparticles_pl-a36589.js +140 -0
  143. package/vendors-node_modules_pnpm_tsparticles_updater-out-modes_4_0_0-alpha_2_node_modules_tsparticle-124574.js +80 -0
package/browser/index.js CHANGED
@@ -1,23 +1,19 @@
1
- import { initOptions } from "./options.js";
2
- import { loadBasic } from "@tsparticles/basic";
3
- import { loadDestroyUpdater } from "@tsparticles/updater-destroy";
4
- import { loadEmittersPlugin } from "@tsparticles/plugin-emitters";
5
- import { loadEmittersShapeSquare } from "@tsparticles/plugin-emitters-shape-square";
6
- import { loadLifeUpdater } from "@tsparticles/updater-life";
7
- import { loadLineShape } from "@tsparticles/shape-line";
8
- import { loadRotateUpdater } from "@tsparticles/updater-rotate";
9
- import { loadSoundsPlugin } from "@tsparticles/plugin-sounds";
10
- import { loadStrokeColorUpdater } from "@tsparticles/updater-stroke-color";
11
- export async function loadFireworksPreset(engine, refresh = true) {
12
- await loadBasic(engine, false);
13
- await loadEmittersPlugin(engine, false);
14
- await loadEmittersShapeSquare(engine, false);
15
- await loadSoundsPlugin(engine, false);
16
- await loadLineShape(engine, false);
17
- await loadRotateUpdater(engine, false);
18
- await loadDestroyUpdater(engine, false);
19
- await loadLifeUpdater(engine, false);
20
- await loadStrokeColorUpdater(engine, false);
21
- await engine.addPreset("fireworks", initOptions(engine), false);
22
- await engine.refresh(refresh);
1
+ export function loadFireworksPreset(engine) {
2
+ engine.register(async (e) => {
3
+ const { loadBasic } = await import("@tsparticles/basic"), { loadEmittersPlugin } = await import("@tsparticles/plugin-emitters"), { loadTrailEffect } = await import("@tsparticles/effect-trail"), { loadEmittersShapeSquare } = await import("@tsparticles/plugin-emitters-shape-square"), { loadHexColorPlugin } = await import("@tsparticles/plugin-hex-color"), { loadHslColorPlugin } = await import("@tsparticles/plugin-hsl-color"), { loadRgbColorPlugin } = await import("@tsparticles/plugin-rgb-color"), { loadSoundsPlugin } = await import("@tsparticles/plugin-sounds"), { loadLineShape } = await import("@tsparticles/shape-line"), { loadRotateUpdater } = await import("@tsparticles/updater-rotate"), { loadDestroyUpdater } = await import("@tsparticles/updater-destroy"), { loadLifeUpdater } = await import("@tsparticles/updater-life"), { loadStrokeColorUpdater } = await import("@tsparticles/updater-stroke-color"), { initOptions, presetName } = await import("./options.js");
4
+ loadBasic(e);
5
+ loadHexColorPlugin(e);
6
+ loadHslColorPlugin(e);
7
+ loadRgbColorPlugin(e);
8
+ loadEmittersPlugin(e);
9
+ loadTrailEffect(e);
10
+ loadEmittersShapeSquare(e);
11
+ loadSoundsPlugin(e);
12
+ loadLineShape(e);
13
+ loadRotateUpdater(e);
14
+ loadDestroyUpdater(e);
15
+ loadLifeUpdater(e);
16
+ loadStrokeColorUpdater(e);
17
+ e.addPreset(presetName, initOptions(), false);
18
+ });
23
19
  }
@@ -1,8 +1,9 @@
1
- import { DestroyType, EventType, MoveDirection, OutMode, StartValueType, rgbToHsl, setRangeValue, stringToRgb, } from "@tsparticles/engine";
2
- export function initOptions(engine) {
1
+ import { DestroyType, EventType, MoveDirection, OutMode, StartValueType, defaultAlpha, getLogger, none, rgbToHsl, setRangeValue, } from "@tsparticles/engine";
2
+ export const presetName = "fireworks";
3
+ export function initOptions() {
3
4
  const explodeSoundCheck = (args) => {
4
5
  const data = args.data;
5
- return data.particle.shape === "line";
6
+ return data.particle.options.move.gravity.inverse;
6
7
  }, fixRange = (value, min, max) => {
7
8
  const minValue = 0, diffSMax = value.max > max ? value.max - max : minValue;
8
9
  let res = setRangeValue(value);
@@ -14,16 +15,76 @@ export function initOptions(engine) {
14
15
  res = setRangeValue(minValue, value.max + diffSMin);
15
16
  }
16
17
  return res;
18
+ }, hexToRgba = (hex) => {
19
+ let hexValue = hex;
20
+ const shortRegex = /^#?([a-f\d])([a-f\d])([a-f\d])([a-f\d])?$/i;
21
+ if (shortRegex.test(hexValue)) {
22
+ hexValue = hexValue.replace(shortRegex, (_m, r, g, b, a) => r + r + g + g + b + b + (a ? a + a : ""));
23
+ }
24
+ const regex = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i, result = regex.exec(hexValue);
25
+ if (!result) {
26
+ return undefined;
27
+ }
28
+ result.shift();
29
+ const indexes = {
30
+ a: 3,
31
+ b: 2,
32
+ g: 1,
33
+ r: 0,
34
+ }, values = {
35
+ a: result[indexes.a],
36
+ b: result[indexes.b],
37
+ g: result[indexes.g],
38
+ r: result[indexes.r],
39
+ }, hexRadix = 16;
40
+ return {
41
+ r: values.r ? Number.parseInt(values.r, hexRadix) : none,
42
+ g: values.g ? Number.parseInt(values.g, hexRadix) : none,
43
+ b: values.b ? Number.parseInt(values.b, hexRadix) : none,
44
+ a: values.a ? Number.parseInt(values.a, hexRadix) : defaultAlpha,
45
+ };
17
46
  }, fireworksOptions = [
18
- "#ff595e",
19
- "#ffca3a",
20
- "#8ac926",
21
- "#1982c4",
22
- "#6a4c93",
47
+ "#FF0000",
48
+ "#FF2A00",
49
+ "#FF5500",
50
+ "#FF8000",
51
+ "#FFAA00",
52
+ "#FFD400",
53
+ "#FFFF00",
54
+ "#D4FF00",
55
+ "#AAFF00",
56
+ "#80FF00",
57
+ "#55FF00",
58
+ "#2AFF00",
59
+ "#00FF00",
60
+ "#00FF2A",
61
+ "#00FF55",
62
+ "#00FF80",
63
+ "#00FFAA",
64
+ "#00FFD4",
65
+ "#00FFFF",
66
+ "#00D4FF",
67
+ "#00AAFF",
68
+ "#0080FF",
69
+ "#0055FF",
70
+ "#002AFF",
71
+ "#0000FF",
72
+ "#2A00FF",
73
+ "#5500FF",
74
+ "#8000FF",
75
+ "#AA00FF",
76
+ "#D400FF",
77
+ "#FF00FF",
78
+ "#FF00D4",
79
+ "#FF00AA",
80
+ "#FF0080",
81
+ "#FF0055",
82
+ "#FF002A",
23
83
  ]
24
84
  .map(color => {
25
- const rgb = stringToRgb(engine, color);
85
+ const rgb = hexToRgba(color);
26
86
  if (!rgb) {
87
+ getLogger().log("color not found", color);
27
88
  return undefined;
28
89
  }
29
90
  const hsl = rgbToHsl(rgb), sOffset = 30, lOffset = 30, sBounds = {
@@ -33,6 +94,7 @@ export function initOptions(engine) {
33
94
  min: 0,
34
95
  max: 100,
35
96
  }, sRange = fixRange({ min: hsl.s - sOffset, max: hsl.s + sOffset }, sBounds.min, sBounds.max), lRange = fixRange({ min: hsl.l - lOffset, max: hsl.l + lOffset }, lBounds.min, lBounds.max);
97
+ getLogger().log(hsl.h, sRange, lRange);
36
98
  return {
37
99
  color: {
38
100
  value: {
@@ -63,6 +125,17 @@ export function initOptions(engine) {
63
125
  shape: {
64
126
  type: "circle",
65
127
  },
128
+ effect: {
129
+ type: "trail",
130
+ options: {
131
+ trail: {
132
+ length: {
133
+ min: 5,
134
+ max: 10,
135
+ },
136
+ },
137
+ },
138
+ },
66
139
  size: {
67
140
  value: { min: 1, max: 2 },
68
141
  animation: {
@@ -106,13 +179,8 @@ export function initOptions(engine) {
106
179
  fpsLimit: 120,
107
180
  emitters: {
108
181
  direction: MoveDirection.top,
109
- life: {
110
- count: 0,
111
- duration: 0.1,
112
- delay: 0.1,
113
- },
114
182
  rate: {
115
- delay: 0.05,
183
+ delay: 0.3,
116
184
  quantity: 1,
117
185
  },
118
186
  size: {
@@ -131,7 +199,7 @@ export function initOptions(engine) {
131
199
  destroy: {
132
200
  mode: "split",
133
201
  bounds: {
134
- top: { min: 10, max: 30 },
202
+ top: { min: 15, max: 35 },
135
203
  },
136
204
  split: {
137
205
  sizeOffset: false,
@@ -149,30 +217,30 @@ export function initOptions(engine) {
149
217
  count: 1,
150
218
  },
151
219
  shape: {
152
- type: "line",
220
+ type: "circle",
153
221
  },
154
- size: {
155
- value: {
156
- min: 0.1,
157
- max: 50,
158
- },
159
- animation: {
160
- enable: true,
161
- sync: true,
162
- speed: 90,
163
- startValue: StartValueType.max,
164
- destroy: DestroyType.min,
222
+ effect: {
223
+ type: "trail",
224
+ options: {
225
+ trail: {
226
+ length: {
227
+ min: 5,
228
+ max: 15,
229
+ },
230
+ minWidth: 1,
231
+ maxWidth: 1,
232
+ },
165
233
  },
166
234
  },
235
+ size: {
236
+ value: 1,
237
+ },
167
238
  stroke: {
168
239
  color: {
169
240
  value: "#ffffff",
170
241
  },
171
242
  width: 1,
172
243
  },
173
- rotate: {
174
- path: true,
175
- },
176
244
  move: {
177
245
  enable: true,
178
246
  gravity: {
@@ -189,13 +257,6 @@ export function initOptions(engine) {
189
257
  default: OutMode.destroy,
190
258
  top: OutMode.none,
191
259
  },
192
- trail: {
193
- fill: {
194
- color: "#000",
195
- },
196
- enable: true,
197
- length: 10,
198
- },
199
260
  },
200
261
  },
201
262
  sounds: {
package/cjs/bundle.js CHANGED
@@ -1,7 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.tsParticles = exports.loadFireworksPreset = void 0;
4
- const index_js_1 = require("./index.js");
5
- Object.defineProperty(exports, "loadFireworksPreset", { enumerable: true, get: function () { return index_js_1.loadFireworksPreset; } });
6
- const engine_1 = require("@tsparticles/engine");
7
- Object.defineProperty(exports, "tsParticles", { enumerable: true, get: function () { return engine_1.tsParticles; } });
1
+ export { loadFireworksPreset } from "./index.js";
2
+ export { tsParticles } from "@tsparticles/engine";
package/cjs/index.js CHANGED
@@ -1,27 +1,19 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.loadFireworksPreset = void 0;
4
- const options_js_1 = require("./options.js");
5
- const basic_1 = require("@tsparticles/basic");
6
- const updater_destroy_1 = require("@tsparticles/updater-destroy");
7
- const plugin_emitters_1 = require("@tsparticles/plugin-emitters");
8
- const plugin_emitters_shape_square_1 = require("@tsparticles/plugin-emitters-shape-square");
9
- const updater_life_1 = require("@tsparticles/updater-life");
10
- const shape_line_1 = require("@tsparticles/shape-line");
11
- const updater_rotate_1 = require("@tsparticles/updater-rotate");
12
- const plugin_sounds_1 = require("@tsparticles/plugin-sounds");
13
- const updater_stroke_color_1 = require("@tsparticles/updater-stroke-color");
14
- async function loadFireworksPreset(engine, refresh = true) {
15
- await (0, basic_1.loadBasic)(engine, false);
16
- await (0, plugin_emitters_1.loadEmittersPlugin)(engine, false);
17
- await (0, plugin_emitters_shape_square_1.loadEmittersShapeSquare)(engine, false);
18
- await (0, plugin_sounds_1.loadSoundsPlugin)(engine, false);
19
- await (0, shape_line_1.loadLineShape)(engine, false);
20
- await (0, updater_rotate_1.loadRotateUpdater)(engine, false);
21
- await (0, updater_destroy_1.loadDestroyUpdater)(engine, false);
22
- await (0, updater_life_1.loadLifeUpdater)(engine, false);
23
- await (0, updater_stroke_color_1.loadStrokeColorUpdater)(engine, false);
24
- await engine.addPreset("fireworks", (0, options_js_1.initOptions)(engine), false);
25
- await engine.refresh(refresh);
1
+ export function loadFireworksPreset(engine) {
2
+ engine.register(async (e) => {
3
+ const { loadBasic } = await import("@tsparticles/basic"), { loadEmittersPlugin } = await import("@tsparticles/plugin-emitters"), { loadTrailEffect } = await import("@tsparticles/effect-trail"), { loadEmittersShapeSquare } = await import("@tsparticles/plugin-emitters-shape-square"), { loadHexColorPlugin } = await import("@tsparticles/plugin-hex-color"), { loadHslColorPlugin } = await import("@tsparticles/plugin-hsl-color"), { loadRgbColorPlugin } = await import("@tsparticles/plugin-rgb-color"), { loadSoundsPlugin } = await import("@tsparticles/plugin-sounds"), { loadLineShape } = await import("@tsparticles/shape-line"), { loadRotateUpdater } = await import("@tsparticles/updater-rotate"), { loadDestroyUpdater } = await import("@tsparticles/updater-destroy"), { loadLifeUpdater } = await import("@tsparticles/updater-life"), { loadStrokeColorUpdater } = await import("@tsparticles/updater-stroke-color"), { initOptions, presetName } = await import("./options.js");
4
+ loadBasic(e);
5
+ loadHexColorPlugin(e);
6
+ loadHslColorPlugin(e);
7
+ loadRgbColorPlugin(e);
8
+ loadEmittersPlugin(e);
9
+ loadTrailEffect(e);
10
+ loadEmittersShapeSquare(e);
11
+ loadSoundsPlugin(e);
12
+ loadLineShape(e);
13
+ loadRotateUpdater(e);
14
+ loadDestroyUpdater(e);
15
+ loadLifeUpdater(e);
16
+ loadStrokeColorUpdater(e);
17
+ e.addPreset(presetName, initOptions(), false);
18
+ });
26
19
  }
27
- exports.loadFireworksPreset = loadFireworksPreset;
package/cjs/options.js CHANGED
@@ -1,41 +1,100 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.initOptions = void 0;
4
- const engine_1 = require("@tsparticles/engine");
5
- function initOptions(engine) {
1
+ import { DestroyType, EventType, MoveDirection, OutMode, StartValueType, defaultAlpha, getLogger, none, rgbToHsl, setRangeValue, } from "@tsparticles/engine";
2
+ export const presetName = "fireworks";
3
+ export function initOptions() {
6
4
  const explodeSoundCheck = (args) => {
7
5
  const data = args.data;
8
- return data.particle.shape === "line";
6
+ return data.particle.options.move.gravity.inverse;
9
7
  }, fixRange = (value, min, max) => {
10
8
  const minValue = 0, diffSMax = value.max > max ? value.max - max : minValue;
11
- let res = (0, engine_1.setRangeValue)(value);
9
+ let res = setRangeValue(value);
12
10
  if (diffSMax) {
13
- res = (0, engine_1.setRangeValue)(value.min - diffSMax, max);
11
+ res = setRangeValue(value.min - diffSMax, max);
14
12
  }
15
13
  const diffSMin = value.min < min ? value.min : minValue;
16
14
  if (diffSMin) {
17
- res = (0, engine_1.setRangeValue)(minValue, value.max + diffSMin);
15
+ res = setRangeValue(minValue, value.max + diffSMin);
18
16
  }
19
17
  return res;
18
+ }, hexToRgba = (hex) => {
19
+ let hexValue = hex;
20
+ const shortRegex = /^#?([a-f\d])([a-f\d])([a-f\d])([a-f\d])?$/i;
21
+ if (shortRegex.test(hexValue)) {
22
+ hexValue = hexValue.replace(shortRegex, (_m, r, g, b, a) => r + r + g + g + b + b + (a ? a + a : ""));
23
+ }
24
+ const regex = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i, result = regex.exec(hexValue);
25
+ if (!result) {
26
+ return undefined;
27
+ }
28
+ result.shift();
29
+ const indexes = {
30
+ a: 3,
31
+ b: 2,
32
+ g: 1,
33
+ r: 0,
34
+ }, values = {
35
+ a: result[indexes.a],
36
+ b: result[indexes.b],
37
+ g: result[indexes.g],
38
+ r: result[indexes.r],
39
+ }, hexRadix = 16;
40
+ return {
41
+ r: values.r ? Number.parseInt(values.r, hexRadix) : none,
42
+ g: values.g ? Number.parseInt(values.g, hexRadix) : none,
43
+ b: values.b ? Number.parseInt(values.b, hexRadix) : none,
44
+ a: values.a ? Number.parseInt(values.a, hexRadix) : defaultAlpha,
45
+ };
20
46
  }, fireworksOptions = [
21
- "#ff595e",
22
- "#ffca3a",
23
- "#8ac926",
24
- "#1982c4",
25
- "#6a4c93",
47
+ "#FF0000",
48
+ "#FF2A00",
49
+ "#FF5500",
50
+ "#FF8000",
51
+ "#FFAA00",
52
+ "#FFD400",
53
+ "#FFFF00",
54
+ "#D4FF00",
55
+ "#AAFF00",
56
+ "#80FF00",
57
+ "#55FF00",
58
+ "#2AFF00",
59
+ "#00FF00",
60
+ "#00FF2A",
61
+ "#00FF55",
62
+ "#00FF80",
63
+ "#00FFAA",
64
+ "#00FFD4",
65
+ "#00FFFF",
66
+ "#00D4FF",
67
+ "#00AAFF",
68
+ "#0080FF",
69
+ "#0055FF",
70
+ "#002AFF",
71
+ "#0000FF",
72
+ "#2A00FF",
73
+ "#5500FF",
74
+ "#8000FF",
75
+ "#AA00FF",
76
+ "#D400FF",
77
+ "#FF00FF",
78
+ "#FF00D4",
79
+ "#FF00AA",
80
+ "#FF0080",
81
+ "#FF0055",
82
+ "#FF002A",
26
83
  ]
27
84
  .map(color => {
28
- const rgb = (0, engine_1.stringToRgb)(engine, color);
85
+ const rgb = hexToRgba(color);
29
86
  if (!rgb) {
87
+ getLogger().log("color not found", color);
30
88
  return undefined;
31
89
  }
32
- const hsl = (0, engine_1.rgbToHsl)(rgb), sOffset = 30, lOffset = 30, sBounds = {
90
+ const hsl = rgbToHsl(rgb), sOffset = 30, lOffset = 30, sBounds = {
33
91
  min: 0,
34
92
  max: 100,
35
93
  }, lBounds = {
36
94
  min: 0,
37
95
  max: 100,
38
96
  }, sRange = fixRange({ min: hsl.s - sOffset, max: hsl.s + sOffset }, sBounds.min, sBounds.max), lRange = fixRange({ min: hsl.l - lOffset, max: hsl.l + lOffset }, lBounds.min, lBounds.max);
97
+ getLogger().log(hsl.h, sRange, lRange);
39
98
  return {
40
99
  color: {
41
100
  value: {
@@ -59,13 +118,24 @@ function initOptions(engine) {
59
118
  enable: true,
60
119
  speed: 0.7,
61
120
  sync: false,
62
- startValue: engine_1.StartValueType.max,
63
- destroy: engine_1.DestroyType.min,
121
+ startValue: StartValueType.max,
122
+ destroy: DestroyType.min,
64
123
  },
65
124
  },
66
125
  shape: {
67
126
  type: "circle",
68
127
  },
128
+ effect: {
129
+ type: "trail",
130
+ options: {
131
+ trail: {
132
+ length: {
133
+ min: 5,
134
+ max: 10,
135
+ },
136
+ },
137
+ },
138
+ },
69
139
  size: {
70
140
  value: { min: 1, max: 2 },
71
141
  animation: {
@@ -73,8 +143,8 @@ function initOptions(engine) {
73
143
  speed: 5,
74
144
  count: 1,
75
145
  sync: false,
76
- startValue: engine_1.StartValueType.min,
77
- destroy: engine_1.DestroyType.none,
146
+ startValue: StartValueType.min,
147
+ destroy: DestroyType.none,
78
148
  },
79
149
  },
80
150
  life: {
@@ -96,7 +166,7 @@ function initOptions(engine) {
96
166
  },
97
167
  speed: { min: 5, max: 15 },
98
168
  direction: "none",
99
- outModes: engine_1.OutMode.destroy,
169
+ outModes: OutMode.destroy,
100
170
  },
101
171
  };
102
172
  })
@@ -108,14 +178,9 @@ function initOptions(engine) {
108
178
  },
109
179
  fpsLimit: 120,
110
180
  emitters: {
111
- direction: engine_1.MoveDirection.top,
112
- life: {
113
- count: 0,
114
- duration: 0.1,
115
- delay: 0.1,
116
- },
181
+ direction: MoveDirection.top,
117
182
  rate: {
118
- delay: 0.05,
183
+ delay: 0.3,
119
184
  quantity: 1,
120
185
  },
121
186
  size: {
@@ -134,7 +199,7 @@ function initOptions(engine) {
134
199
  destroy: {
135
200
  mode: "split",
136
201
  bounds: {
137
- top: { min: 10, max: 30 },
202
+ top: { min: 15, max: 35 },
138
203
  },
139
204
  split: {
140
205
  sizeOffset: false,
@@ -152,30 +217,30 @@ function initOptions(engine) {
152
217
  count: 1,
153
218
  },
154
219
  shape: {
155
- type: "line",
220
+ type: "circle",
156
221
  },
157
- size: {
158
- value: {
159
- min: 0.1,
160
- max: 50,
161
- },
162
- animation: {
163
- enable: true,
164
- sync: true,
165
- speed: 90,
166
- startValue: engine_1.StartValueType.max,
167
- destroy: engine_1.DestroyType.min,
222
+ effect: {
223
+ type: "trail",
224
+ options: {
225
+ trail: {
226
+ length: {
227
+ min: 5,
228
+ max: 15,
229
+ },
230
+ minWidth: 1,
231
+ maxWidth: 1,
232
+ },
168
233
  },
169
234
  },
235
+ size: {
236
+ value: 1,
237
+ },
170
238
  stroke: {
171
239
  color: {
172
240
  value: "#ffffff",
173
241
  },
174
242
  width: 1,
175
243
  },
176
- rotate: {
177
- path: true,
178
- },
179
244
  move: {
180
245
  enable: true,
181
246
  gravity: {
@@ -189,15 +254,8 @@ function initOptions(engine) {
189
254
  max: 20,
190
255
  },
191
256
  outModes: {
192
- default: engine_1.OutMode.destroy,
193
- top: engine_1.OutMode.none,
194
- },
195
- trail: {
196
- fill: {
197
- color: "#000",
198
- },
199
- enable: true,
200
- length: 10,
257
+ default: OutMode.destroy,
258
+ top: OutMode.none,
201
259
  },
202
260
  },
203
261
  },
@@ -205,7 +263,7 @@ function initOptions(engine) {
205
263
  enable: true,
206
264
  events: [
207
265
  {
208
- event: engine_1.EventType.particleRemoved,
266
+ event: EventType.particleRemoved,
209
267
  filter: explodeSoundCheck,
210
268
  audio: [
211
269
  "https://particles.js.org/audio/explosion0.mp3",
@@ -218,4 +276,3 @@ function initOptions(engine) {
218
276
  },
219
277
  };
220
278
  }
221
- exports.initOptions = initOptions;
@@ -0,0 +1,30 @@
1
+ /*!
2
+ * Author : Matteo Bruni
3
+ * MIT license: https://opensource.org/licenses/MIT
4
+ * Demo / Generator : https://particles.js.org/
5
+ * GitHub : https://www.github.com/matteobruni/tsparticles
6
+ * How to use? : Check the GitHub README
7
+ * v4.0.0-alpha.0
8
+ */
9
+ "use strict";
10
+ /*
11
+ * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
12
+ * This devtool is neither made for production nor for readable output files.
13
+ * It uses "eval()" calls to create a separate source file in the browser devtools.
14
+ * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
15
+ * or disable the default devtool with "devtool: false".
16
+ * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
17
+ */
18
+ (this["webpackChunk_tsparticles_preset_fireworks"] = this["webpackChunk_tsparticles_preset_fireworks"] || []).push([["dist_browser_options_js"],{
19
+
20
+ /***/ "./dist/browser/options.js"
21
+ /*!*********************************!*\
22
+ !*** ./dist/browser/options.js ***!
23
+ \*********************************/
24
+ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
25
+
26
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ initOptions: () => (/* binding */ initOptions),\n/* harmony export */ presetName: () => (/* binding */ presetName)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../node_modules/.pnpm/@tsparticles+engine@4.0.0-alpha.2/node_modules/@tsparticles/engine/browser/index.js\");\n\nconst presetName = \"fireworks\";\nfunction initOptions() {\n const explodeSoundCheck = args => {\n const data = args.data;\n return data.particle.options.move.gravity.inverse;\n },\n fixRange = (value, min, max) => {\n const minValue = 0,\n diffSMax = value.max > max ? value.max - max : minValue;\n let res = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.setRangeValue)(value);\n if (diffSMax) {\n res = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.setRangeValue)(value.min - diffSMax, max);\n }\n const diffSMin = value.min < min ? value.min : minValue;\n if (diffSMin) {\n res = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.setRangeValue)(minValue, value.max + diffSMin);\n }\n return res;\n },\n hexToRgba = hex => {\n let hexValue = hex;\n const shortRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])([a-f\\d])?$/i;\n if (shortRegex.test(hexValue)) {\n hexValue = hexValue.replace(shortRegex, (_m, r, g, b, a) => r + r + g + g + b + b + (a ? a + a : \"\"));\n }\n const regex = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})?$/i,\n result = regex.exec(hexValue);\n if (!result) {\n return undefined;\n }\n result.shift();\n const indexes = {\n a: 3,\n b: 2,\n g: 1,\n r: 0\n },\n values = {\n a: result[indexes.a],\n b: result[indexes.b],\n g: result[indexes.g],\n r: result[indexes.r]\n },\n hexRadix = 16;\n return {\n r: values.r ? Number.parseInt(values.r, hexRadix) : _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.none,\n g: values.g ? Number.parseInt(values.g, hexRadix) : _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.none,\n b: values.b ? Number.parseInt(values.b, hexRadix) : _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.none,\n a: values.a ? Number.parseInt(values.a, hexRadix) : _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.defaultAlpha\n };\n },\n fireworksOptions = [\"#FF0000\", \"#FF2A00\", \"#FF5500\", \"#FF8000\", \"#FFAA00\", \"#FFD400\", \"#FFFF00\", \"#D4FF00\", \"#AAFF00\", \"#80FF00\", \"#55FF00\", \"#2AFF00\", \"#00FF00\", \"#00FF2A\", \"#00FF55\", \"#00FF80\", \"#00FFAA\", \"#00FFD4\", \"#00FFFF\", \"#00D4FF\", \"#00AAFF\", \"#0080FF\", \"#0055FF\", \"#002AFF\", \"#0000FF\", \"#2A00FF\", \"#5500FF\", \"#8000FF\", \"#AA00FF\", \"#D400FF\", \"#FF00FF\", \"#FF00D4\", \"#FF00AA\", \"#FF0080\", \"#FF0055\", \"#FF002A\"].map(color => {\n const rgb = hexToRgba(color);\n if (!rgb) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getLogger)().log(\"color not found\", color);\n return undefined;\n }\n const hsl = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.rgbToHsl)(rgb),\n sOffset = 30,\n lOffset = 30,\n sBounds = {\n min: 0,\n max: 100\n },\n lBounds = {\n min: 0,\n max: 100\n },\n sRange = fixRange({\n min: hsl.s - sOffset,\n max: hsl.s + sOffset\n }, sBounds.min, sBounds.max),\n lRange = fixRange({\n min: hsl.l - lOffset,\n max: hsl.l + lOffset\n }, lBounds.min, lBounds.max);\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getLogger)().log(hsl.h, sRange, lRange);\n return {\n color: {\n value: {\n h: hsl.h,\n s: sRange,\n l: lRange\n }\n },\n stroke: {\n width: 0\n },\n number: {\n value: 0\n },\n opacity: {\n value: {\n min: 0.1,\n max: 1\n },\n animation: {\n enable: true,\n speed: 0.7,\n sync: false,\n startValue: _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.StartValueType.max,\n destroy: _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.DestroyType.min\n }\n },\n shape: {\n type: \"circle\"\n },\n effect: {\n type: \"trail\",\n options: {\n trail: {\n length: {\n min: 5,\n max: 10\n }\n }\n }\n },\n size: {\n value: {\n min: 1,\n max: 2\n },\n animation: {\n enable: true,\n speed: 5,\n count: 1,\n sync: false,\n startValue: _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.StartValueType.min,\n destroy: _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.DestroyType.none\n }\n },\n life: {\n count: 1,\n duration: {\n value: {\n min: 1,\n max: 2\n }\n }\n },\n move: {\n decay: {\n min: 0.075,\n max: 0.1\n },\n enable: true,\n gravity: {\n enable: true,\n inverse: false,\n acceleration: 5\n },\n speed: {\n min: 5,\n max: 15\n },\n direction: \"none\",\n outModes: _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.OutMode.destroy\n }\n };\n }).filter(t => t !== undefined);\n return {\n detectRetina: true,\n background: {\n color: \"#000\"\n },\n fpsLimit: 120,\n emitters: {\n direction: _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.MoveDirection.top,\n rate: {\n delay: 0.3,\n quantity: 1\n },\n size: {\n width: 100,\n height: 0\n },\n position: {\n y: 100,\n x: 50\n }\n },\n particles: {\n number: {\n value: 0\n },\n destroy: {\n mode: \"split\",\n bounds: {\n top: {\n min: 15,\n max: 35\n }\n },\n split: {\n sizeOffset: false,\n count: 1,\n factor: {\n value: 0.333333\n },\n rate: {\n value: {\n min: 75,\n max: 150\n }\n },\n particles: fireworksOptions\n }\n },\n life: {\n count: 1\n },\n shape: {\n type: \"circle\"\n },\n effect: {\n type: \"trail\",\n options: {\n trail: {\n length: {\n min: 5,\n max: 15\n },\n minWidth: 1,\n maxWidth: 1\n }\n }\n },\n size: {\n value: 1\n },\n stroke: {\n color: {\n value: \"#ffffff\"\n },\n width: 1\n },\n move: {\n enable: true,\n gravity: {\n acceleration: 15,\n enable: true,\n inverse: true,\n maxSpeed: 100\n },\n speed: {\n min: 10,\n max: 20\n },\n outModes: {\n default: _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.OutMode.destroy,\n top: _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.OutMode.none\n }\n }\n },\n sounds: {\n enable: true,\n events: [{\n event: _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.EventType.particleRemoved,\n filter: explodeSoundCheck,\n audio: [\"https://particles.js.org/audio/explosion0.mp3\", \"https://particles.js.org/audio/explosion1.mp3\", \"https://particles.js.org/audio/explosion2.mp3\"]\n }],\n volume: 50\n }\n };\n}\n\n//# sourceURL=webpack://@tsparticles/preset-fireworks/./dist/browser/options.js?\n}");
27
+
28
+ /***/ }
29
+
30
+ }]);
package/esm/bundle.js CHANGED
@@ -1,3 +1,2 @@
1
- import { loadFireworksPreset } from "./index.js";
2
- import { tsParticles } from "@tsparticles/engine";
3
- export { loadFireworksPreset, tsParticles };
1
+ export { loadFireworksPreset } from "./index.js";
2
+ export { tsParticles } from "@tsparticles/engine";