@tsparticles/template-scaffold 4.3.2 → 4.5.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 (69) hide show
  1. package/CHANGELOG.md +12 -9
  2. package/package.json +12 -3
  3. package/scripts/prebuild.js +4 -11
  4. package/template/angular/package.json +13 -13
  5. package/template/angular/src/app/app.component.ts +1 -0
  6. package/template/angular/src/app/app.module.ts +2 -1
  7. package/template/angular-confetti/package.json +14 -14
  8. package/template/angular-confetti/src/app/app.component.html +1 -1
  9. package/template/angular-confetti/src/app/app.component.ts +34 -19
  10. package/template/angular-confetti/src/app/app.module.ts +3 -2
  11. package/template/angular-fireworks/package.json +14 -14
  12. package/template/angular-fireworks/src/app/app.component.html +1 -1
  13. package/template/angular-fireworks/src/app/app.component.ts +34 -21
  14. package/template/angular-fireworks/src/app/app.module.ts +3 -2
  15. package/template/astro/package.json +5 -5
  16. package/template/ember/.ember-cli +3 -0
  17. package/template/ember/app/app.js +12 -0
  18. package/template/ember/app/controllers/application.js +5 -5
  19. package/template/ember/app/index.html +23 -0
  20. package/template/ember/app/router.js +9 -0
  21. package/template/ember/app/styles/app.css +7 -0
  22. package/template/ember/app/templates/application.hbs +1 -1
  23. package/template/ember/config/environment.js +24 -0
  24. package/template/ember/config/optional-features.json +6 -0
  25. package/template/ember/config/targets.js +7 -0
  26. package/template/ember/ember-cli-build.js +9 -0
  27. package/template/ember/package.json +3 -6
  28. package/template/inferno/package.json +5 -6
  29. package/template/inferno/src/App.tsx +1 -1
  30. package/template/inferno/src/vite-env.d.ts +1 -0
  31. package/template/inferno/vite.config.ts +7 -5
  32. package/template/jquery/package.json +3 -2
  33. package/template/jquery/src/vite-env.d.ts +1 -0
  34. package/template/lit/package.json +3 -3
  35. package/template/lit/src/vite-env.d.ts +1 -0
  36. package/template/nextjs/package.json +4 -4
  37. package/template/nextjs/tsconfig.json +20 -0
  38. package/template/nuxt2/nuxt.config.js +19 -1
  39. package/template/nuxt2/package.json +12 -3
  40. package/template/nuxt2/pages/index.vue +1 -1
  41. package/template/nuxt2/utils/particlesInit.js +5 -0
  42. package/template/nuxt3/package.json +3 -3
  43. package/template/nuxt3/utils/particlesInit.ts +6 -0
  44. package/template/nuxt4/package.json +3 -3
  45. package/template/nuxt4/utils/particlesInit.ts +6 -0
  46. package/template/preact/package.json +2 -2
  47. package/template/preact/src/vite-env.d.ts +1 -0
  48. package/template/qwik/package.json +2 -2
  49. package/template/qwik/vite.config.ts +2 -2
  50. package/template/react/package.json +4 -2
  51. package/template/riot/package.json +3 -3
  52. package/template/riot/src/main.ts +6 -2
  53. package/template/riot/src/riot.d.ts +6 -0
  54. package/template/riot/src/vite-env.d.ts +1 -0
  55. package/template/solid/package.json +2 -2
  56. package/template/solid/src/vite-env.d.ts +1 -0
  57. package/template/stencil/package.json +3 -3
  58. package/template/stencil/src/components/app-home/app-home.css +29 -0
  59. package/template/stencil/stencil.config.ts +11 -0
  60. package/template/stencil/tsconfig.json +18 -0
  61. package/template/svelte/package.json +1 -1
  62. package/template/vanilla/src/vite-env.d.ts +1 -0
  63. package/template/vue2/package.json +3 -3
  64. package/template/vue2/src/env.d.ts +6 -0
  65. package/template/vue3/package.json +1 -1
  66. package/template/webcomponents/package.json +4 -2
  67. package/template/webcomponents/src/main.ts +4 -1
  68. package/template/webcomponents/src/vite-env.d.ts +1 -0
  69. package/template.json +5 -5
package/CHANGELOG.md CHANGED
@@ -3,32 +3,35 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- ## [4.3.2](https://github.com/tsparticles/tsparticles/compare/v4.3.1...v4.3.2) (2026-07-10)
6
+ # [4.5.0](https://github.com/tsparticles/tsparticles/compare/v4.4.0...v4.5.0) (2026-10-25)
7
7
 
8
- **Note:** Version bump only for package @tsparticles/template-scaffold
8
+ ### Bug Fixes
9
9
 
10
+ - fixed some issues in mcp server and some coderabbit reports ([4700d3e](https://github.com/tsparticles/tsparticles/commit/4700d3e953f3a3a1930db064a6b6b21d61233cdf))
10
11
 
12
+ # [4.4.0](https://github.com/tsparticles/tsparticles/compare/v4.3.3...v4.4.0) (2026-08-30)
11
13
 
14
+ ### Bug Fixes
12
15
 
16
+ - various fixes for 4.4.0 ([475d06d](https://github.com/tsparticles/tsparticles/commit/475d06da27e1497bb097c0822fcfcb72d7142456))
13
17
 
14
- ## [4.3.1](https://github.com/tsparticles/tsparticles/compare/v4.3.0...v4.3.1) (2026-07-01)
18
+ ## [4.3.3](https://github.com/tsparticles/tsparticles/compare/v4.3.2...v4.3.3) (2026-07-23)
15
19
 
16
20
  **Note:** Version bump only for package @tsparticles/template-scaffold
17
21
 
22
+ ## [4.3.2](https://github.com/tsparticles/tsparticles/compare/v4.3.1...v4.3.2) (2026-07-10)
18
23
 
24
+ **Note:** Version bump only for package @tsparticles/template-scaffold
19
25
 
26
+ ## [4.3.1](https://github.com/tsparticles/tsparticles/compare/v4.3.0...v4.3.1) (2026-07-01)
20
27
 
28
+ **Note:** Version bump only for package @tsparticles/template-scaffold
21
29
 
22
30
  # [4.3.0](https://github.com/tsparticles/tsparticles/compare/v4.2.1...v4.3.0) (2026-06-27)
23
31
 
24
-
25
32
  ### Bug Fixes
26
33
 
27
- * fixed angular confetti ([6f25a4a](https://github.com/tsparticles/tsparticles/commit/6f25a4a1eaa69c47f2668316e7b396fe55195f84))
28
-
29
-
30
-
31
-
34
+ - fixed angular confetti ([6f25a4a](https://github.com/tsparticles/tsparticles/commit/6f25a4a1eaa69c47f2668316e7b396fe55195f84))
32
35
 
33
36
  ## [4.2.1](https://github.com/tsparticles/tsparticles/compare/v4.2.0...v4.2.1) (2026-06-18)
34
37
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsparticles/template-scaffold",
3
- "version": "4.3.2",
3
+ "version": "4.5.0",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -14,7 +14,16 @@
14
14
  "prebuild": "node scripts/prebuild.js",
15
15
  "build": "pnpm run prebuild",
16
16
  "build:ci": "pnpm run prebuild",
17
- "version": "pnpm run build && git add template.json"
17
+ "version": "pnpm run build && git add template.json",
18
+ "prepack": "pnpm run build"
18
19
  },
19
- "gitHead": "527bc42f2324fbb9b93262efa3d90a5517532b8b"
20
+ "dependencies": {
21
+ "@tsparticles/configs": "4.5.0",
22
+ "@tsparticles/engine": "4.5.0",
23
+ "@tsparticles/slim": "4.5.0"
24
+ },
25
+ "devDependencies": {
26
+ "fs-extra": "^11.3.4"
27
+ },
28
+ "gitHead": "a637373a03c008ab38edaaecf6524ec4b8e332c0"
20
29
  }
@@ -1,5 +1,6 @@
1
1
  const fs = require("fs-extra");
2
2
 
3
+ const mainPackage = require("../package.json");
3
4
  const libPackage = "./template.json";
4
5
 
5
6
  const workspaceVersions = {
@@ -9,14 +10,7 @@ const workspaceVersions = {
9
10
  };
10
11
 
11
12
  function resolveWorkspaceDependency(name) {
12
- const libObj = JSON.parse(fs.readFileSync(libPackage, "utf-8"));
13
-
14
- const allDeps = {
15
- ...libObj.package.dependencies,
16
- ...libObj.package.devDependencies,
17
- };
18
-
19
- const spec = allDeps[name];
13
+ const spec = mainPackage.dependencies[name];
20
14
 
21
15
  if (!spec?.startsWith("workspace:")) {
22
16
  return spec;
@@ -42,8 +36,7 @@ fs.readFile(libPackage, function (error, data) {
42
36
  throw error;
43
37
  }
44
38
 
45
- const text = data.toString();
46
- const libObj = JSON.parse(text);
39
+ const libObj = JSON.parse(data.toString());
47
40
 
48
41
  for (const dep of Object.keys(libObj.package.dependencies)) {
49
42
  const resolved = resolveWorkspaceDependency(dep);
@@ -59,7 +52,7 @@ fs.readFile(libPackage, function (error, data) {
59
52
  }
60
53
  }
61
54
 
62
- fs.writeFile(libPackage, JSON.stringify(libObj, undefined, 2), "utf-8", function () {
55
+ fs.writeFile(libPackage, `${JSON.stringify(libObj, undefined, 2)}\n`, "utf-8", function () {
63
56
  console.log("template.json dependencies updated successfully");
64
57
  });
65
58
  });
@@ -11,23 +11,23 @@
11
11
  "watch": "ng build --watch --configuration development"
12
12
  },
13
13
  "dependencies": {
14
- "@angular/animations": "~22.0.0",
15
- "@angular/common": "~22.0.0",
16
- "@angular/compiler": "~22.0.0",
17
- "@angular/core": "~22.0.0",
18
- "@angular/forms": "~22.0.0",
19
- "@angular/platform-browser": "~22.0.0",
20
- "@angular/platform-browser-dynamic": "~22.0.0",
21
- "@angular/router": "~22.0.0",
22
- "@tsparticles/angular": "^4.1.3",
14
+ "@angular/animations": "~22.2.2",
15
+ "@angular/common": "~22.2.2",
16
+ "@angular/compiler": "~22.2.2",
17
+ "@angular/core": "~22.2.2",
18
+ "@angular/forms": "~22.2.2",
19
+ "@angular/platform-browser": "~22.2.2",
20
+ "@angular/platform-browser-dynamic": "~22.2.2",
21
+ "@angular/router": "~22.2.2",
22
+ "@tsparticles/angular": "^4.4.0",
23
23
  "rxjs": "~7.8.2",
24
24
  "tslib": "^2.8.1",
25
- "zone.js": "~0.16.2"
25
+ "zone.js": "~0.16.3"
26
26
  },
27
27
  "devDependencies": {
28
- "@angular-devkit/build-angular": "~22.0.0",
29
- "@angular/cli": "~22.0.0",
30
- "@angular/compiler-cli": "~22.0.0",
28
+ "@angular-devkit/build-angular": "~22.2.2",
29
+ "@angular/cli": "~22.2.2",
30
+ "@angular/compiler-cli": "~22.2.2",
31
31
  "typescript": "~6.0.3"
32
32
  }
33
33
  }
@@ -4,6 +4,7 @@ import { loadSlim } from "@tsparticles/slim";
4
4
  import type { ISourceOptions } from "@tsparticles/engine";
5
5
 
6
6
  @Component({
7
+ standalone: false,
7
8
  selector: "app-root",
8
9
  templateUrl: "./app.component.html",
9
10
  styleUrls: ["./app.component.css"],
@@ -1,11 +1,12 @@
1
1
  import { NgModule } from "@angular/core";
2
2
  import { BrowserModule } from "@angular/platform-browser";
3
+ import { FormsModule } from "@angular/forms";
3
4
  import { NgxParticlesModule } from "@tsparticles/angular";
4
5
  import { AppComponent } from "./app.component";
5
6
 
6
7
  @NgModule({
7
8
  declarations: [AppComponent],
8
- imports: [BrowserModule, NgxParticlesModule],
9
+ imports: [BrowserModule, FormsModule, NgxParticlesModule],
9
10
  providers: [],
10
11
  bootstrap: [AppComponent],
11
12
  })
@@ -11,24 +11,24 @@
11
11
  "watch": "ng build --watch --configuration development"
12
12
  },
13
13
  "dependencies": {
14
- "@angular/animations": "~22.0.0",
15
- "@angular/common": "~22.0.0",
16
- "@angular/compiler": "~22.0.0",
17
- "@angular/core": "~22.0.0",
18
- "@angular/forms": "~22.0.0",
19
- "@angular/platform-browser": "~22.0.0",
20
- "@angular/platform-browser-dynamic": "~22.0.0",
21
- "@angular/router": "~22.0.0",
22
- "angular-confetti": "^4.1.3",
23
- "@tsparticles/engine": "^4.1.3",
14
+ "@angular/animations": "~22.2.2",
15
+ "@angular/common": "~22.2.2",
16
+ "@angular/compiler": "~22.2.2",
17
+ "@angular/core": "~22.2.2",
18
+ "@angular/forms": "~22.2.2",
19
+ "@angular/platform-browser": "~22.2.2",
20
+ "@angular/platform-browser-dynamic": "~22.2.2",
21
+ "@angular/router": "~22.2.2",
22
+ "@tsparticles/angular": "^4.4.0",
23
+ "@tsparticles/engine": "^4.4.0",
24
24
  "rxjs": "~7.8.2",
25
25
  "tslib": "^2.8.1",
26
- "zone.js": "~0.16.2"
26
+ "zone.js": "~0.16.3"
27
27
  },
28
28
  "devDependencies": {
29
- "@angular-devkit/build-angular": "~22.0.0",
30
- "@angular/cli": "~22.0.0",
31
- "@angular/compiler-cli": "~22.0.0",
29
+ "@angular-devkit/build-angular": "~22.2.2",
30
+ "@angular/cli": "~22.2.2",
31
+ "@angular/compiler-cli": "~22.2.2",
32
32
  "typescript": "~6.0.3"
33
33
  }
34
34
  }
@@ -1,4 +1,4 @@
1
1
  <div id="app-content">
2
2
  <h1>Hello, tsParticles!</h1>
3
3
  </div>
4
- <ngx-confetti id="tsparticles" [options]="options" [fire]="true" />
4
+ <ngx-particles id="tsparticles" [options]="options" />
@@ -1,27 +1,42 @@
1
- import { Component } from "@angular/core";
2
- import type { ConfettiOptions } from "@tsparticles/confetti";
1
+ import { Component, OnInit } from "@angular/core";
2
+ import { NgParticlesService } from "@tsparticles/angular";
3
+ import { loadSlim } from "@tsparticles/slim";
4
+ import type { ISourceOptions } from "@tsparticles/engine";
3
5
 
4
6
  @Component({
7
+ standalone: false,
5
8
  selector: "app-root",
6
9
  templateUrl: "./app.component.html",
7
10
  styleUrls: ["./app.component.css"],
8
11
  })
9
- export class AppComponent {
10
- options: ConfettiOptions = {
11
- angle: 90,
12
- count: 50,
13
- spread: 45,
14
- startVelocity: 45,
15
- decay: 0.9,
16
- gravity: 1,
17
- drift: 0,
18
- ticks: 200,
19
- position: { x: 50, y: 50 },
20
- colors: ["#26ccff", "#a25afd", "#ff5e7e", "#88ff5a", "#fcff42", "#ffa62d", "#ff36ff"],
21
- shapes: ["square", "circle"],
22
- scalar: 1,
23
- zIndex: 100,
24
- disableForReducedMotion: true,
25
- flat: false,
12
+ export class AppComponent implements OnInit {
13
+ constructor(private readonly ngParticlesService: NgParticlesService) {}
14
+
15
+ options: ISourceOptions = {
16
+ fullScreen: { enable: true, zIndex: -1 },
17
+ background: { color: { value: "#1a1a2e" } },
18
+ fpsLimit: 60,
19
+ particles: {
20
+ number: { value: 80, density: { enable: true } },
21
+ color: { value: ["#6c5ce7", "#a29bfe", "#fd79a8"] },
22
+ shape: { type: "circle" },
23
+ opacity: { value: 0.5, random: true },
24
+ size: { value: { min: 1, max: 4 }, random: true },
25
+ move: {
26
+ enable: true,
27
+ speed: 2,
28
+ direction: "none",
29
+ random: false,
30
+ straight: false,
31
+ outModes: { default: "out" },
32
+ },
33
+ },
34
+ detectRetina: true,
26
35
  };
36
+
37
+ ngOnInit(): void {
38
+ void this.ngParticlesService.init(async (engine) => {
39
+ await loadSlim(engine);
40
+ });
41
+ }
27
42
  }
@@ -1,11 +1,12 @@
1
1
  import { NgModule } from "@angular/core";
2
2
  import { BrowserModule } from "@angular/platform-browser";
3
- import { NgxConfettiModule } from "angular-confetti";
3
+ import { FormsModule } from "@angular/forms";
4
+ import { NgxParticlesModule } from "@tsparticles/angular";
4
5
  import { AppComponent } from "./app.component";
5
6
 
6
7
  @NgModule({
7
8
  declarations: [AppComponent],
8
- imports: [BrowserModule, NgxConfettiModule],
9
+ imports: [BrowserModule, FormsModule, NgxParticlesModule],
9
10
  providers: [],
10
11
  bootstrap: [AppComponent],
11
12
  })
@@ -11,24 +11,24 @@
11
11
  "watch": "ng build --watch --configuration development"
12
12
  },
13
13
  "dependencies": {
14
- "@angular/animations": "~22.0.0",
15
- "@angular/common": "~22.0.0",
16
- "@angular/compiler": "~22.0.0",
17
- "@angular/core": "~22.0.0",
18
- "@angular/forms": "~22.0.0",
19
- "@angular/platform-browser": "~22.0.0",
20
- "@angular/platform-browser-dynamic": "~22.0.0",
21
- "@angular/router": "~22.0.0",
22
- "angular-fireworks": "^4.1.3",
23
- "@tsparticles/engine": "^4.1.3",
14
+ "@angular/animations": "~22.2.2",
15
+ "@angular/common": "~22.2.2",
16
+ "@angular/compiler": "~22.2.2",
17
+ "@angular/core": "~22.2.2",
18
+ "@angular/forms": "~22.2.2",
19
+ "@angular/platform-browser": "~22.2.2",
20
+ "@angular/platform-browser-dynamic": "~22.2.2",
21
+ "@angular/router": "~22.2.2",
22
+ "@tsparticles/angular": "^4.4.0",
23
+ "@tsparticles/engine": "^4.4.0",
24
24
  "rxjs": "~7.8.2",
25
25
  "tslib": "^2.8.1",
26
- "zone.js": "~0.16.2"
26
+ "zone.js": "~0.16.3"
27
27
  },
28
28
  "devDependencies": {
29
- "@angular-devkit/build-angular": "~22.0.0",
30
- "@angular/cli": "~22.0.0",
31
- "@angular/compiler-cli": "~22.0.0",
29
+ "@angular-devkit/build-angular": "~22.2.2",
30
+ "@angular/cli": "~22.2.2",
31
+ "@angular/compiler-cli": "~22.2.2",
32
32
  "typescript": "~6.0.3"
33
33
  }
34
34
  }
@@ -1,4 +1,4 @@
1
1
  <div id="app-content">
2
2
  <h1>Hello, tsParticles!</h1>
3
3
  </div>
4
- <ngx-fireworks id="tsparticles" [options]="options" />
4
+ <ngx-particles id="tsparticles" [options]="options" />
@@ -1,29 +1,42 @@
1
- import { Component } from "@angular/core";
2
- import type { FireworkOptions } from "@tsparticles/fireworks";
1
+ import { Component, OnInit } from "@angular/core";
2
+ import { NgParticlesService } from "@tsparticles/angular";
3
+ import { loadSlim } from "@tsparticles/slim";
4
+ import type { ISourceOptions } from "@tsparticles/engine";
3
5
 
4
6
  @Component({
7
+ standalone: false,
5
8
  selector: "app-root",
6
9
  templateUrl: "./app.component.html",
7
10
  styleUrls: ["./app.component.css"],
8
11
  })
9
- export class AppComponent {
10
- options: FireworkOptions = {
11
- background: "none",
12
- brightness: { min: -30, max: 30 },
13
- colors: [
14
- "#FF0000", "#FF2A00", "#FF5500", "#FF8000", "#FFAA00", "#FFD400",
15
- "#FFFF00", "#D4FF00", "#AAFF00", "#80FF00", "#55FF00", "#2AFF00",
16
- "#00FF00", "#00FF2A", "#00FF55", "#00FF80", "#00FFAA", "#00FFD4",
17
- "#00FFFF", "#00D4FF", "#00AAFF", "#0080FF", "#0055FF", "#002AFF",
18
- "#0000FF", "#2A00FF", "#5500FF", "#8000FF", "#AA00FF", "#D400FF",
19
- "#FF00FF", "#FF00D4", "#FF00AA", "#FF0080", "#FF0055", "#FF002A",
20
- ],
21
- gravity: 30,
22
- minHeight: { min: 10, max: 30 },
23
- rate: 10,
24
- saturation: { min: -30, max: 30 },
25
- sounds: true,
26
- speed: { min: 20, max: 40 },
27
- splitCount: 100,
12
+ export class AppComponent implements OnInit {
13
+ constructor(private readonly ngParticlesService: NgParticlesService) {}
14
+
15
+ options: ISourceOptions = {
16
+ fullScreen: { enable: true, zIndex: -1 },
17
+ background: { color: { value: "#1a1a2e" } },
18
+ fpsLimit: 60,
19
+ particles: {
20
+ number: { value: 80, density: { enable: true } },
21
+ color: { value: ["#6c5ce7", "#a29bfe", "#fd79a8"] },
22
+ shape: { type: "circle" },
23
+ opacity: { value: 0.5, random: true },
24
+ size: { value: { min: 1, max: 4 }, random: true },
25
+ move: {
26
+ enable: true,
27
+ speed: 2,
28
+ direction: "none",
29
+ random: false,
30
+ straight: false,
31
+ outModes: { default: "out" },
32
+ },
33
+ },
34
+ detectRetina: true,
28
35
  };
36
+
37
+ ngOnInit(): void {
38
+ void this.ngParticlesService.init(async (engine) => {
39
+ await loadSlim(engine);
40
+ });
41
+ }
29
42
  }
@@ -1,11 +1,12 @@
1
1
  import { NgModule } from "@angular/core";
2
2
  import { BrowserModule } from "@angular/platform-browser";
3
- import { NgxFireworksModule } from "angular-fireworks";
3
+ import { FormsModule } from "@angular/forms";
4
+ import { NgxParticlesModule } from "@tsparticles/angular";
4
5
  import { AppComponent } from "./app.component";
5
6
 
6
7
  @NgModule({
7
8
  declarations: [AppComponent],
8
- imports: [BrowserModule, NgxFireworksModule],
9
+ imports: [BrowserModule, FormsModule, NgxParticlesModule],
9
10
  providers: [],
10
11
  bootstrap: [AppComponent],
11
12
  })
@@ -9,11 +9,11 @@
9
9
  "preview": "astro preview"
10
10
  },
11
11
  "dependencies": {
12
- "@astrojs/check": "^0.9.4",
13
- "astro": "^5.7.10",
14
- "@tsparticles/astro": "^4.1.3",
15
- "@tsparticles/engine": "^4.1.3",
16
- "@tsparticles/slim": "^4.1.3"
12
+ "@astrojs/check": "^0.9.10",
13
+ "astro": "^7.3.2",
14
+ "@tsparticles/astro": "^4.4.0",
15
+ "@tsparticles/engine": "^4.4.0",
16
+ "@tsparticles/slim": "^4.4.0"
17
17
  },
18
18
  "devDependencies": {
19
19
  "typescript": "^6.0.3"
@@ -0,0 +1,3 @@
1
+ {
2
+ "disableAnalytics": false
3
+ }
@@ -0,0 +1,12 @@
1
+ import Application from "@ember/application";
2
+ import Resolver from "ember-resolver";
3
+ import loadInitializers from "ember-load-initializers";
4
+ import config from "{{packageName}}/config/environment";
5
+
6
+ export default class App extends Application {
7
+ modulePrefix = config.modulePrefix;
8
+ podModulePrefix = config.podModulePrefix;
9
+ Resolver = Resolver;
10
+ }
11
+
12
+ loadInitializers(App, config.modulePrefix);
@@ -1,6 +1,5 @@
1
1
  import Controller from "@ember/controller";
2
- import { action } from "@ember/object";
3
- import { initParticlesEngine } from "@tsparticles/ember";
2
+ import { initParticlesEngine } from "@tsparticles/ember/utils/init-particles-engine";
4
3
  import { loadSlim } from "@tsparticles/slim";
5
4
 
6
5
  export default class ApplicationController extends Controller {
@@ -26,9 +25,10 @@ export default class ApplicationController extends Controller {
26
25
  detectRetina: true,
27
26
  };
28
27
 
29
- @action
30
- async initParticles() {
31
- await initParticlesEngine(async (engine) => {
28
+ constructor() {
29
+ super();
30
+
31
+ void initParticlesEngine(async (engine) => {
32
32
  await loadSlim(engine);
33
33
  });
34
34
  }
@@ -0,0 +1,23 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>{{projectName}}</title>
6
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
7
+
8
+ {{content-for "head"}}
9
+
10
+ <link integrity="" rel="stylesheet" href="{{rootURL}}assets/vendor.css" />
11
+ <link integrity="" rel="stylesheet" href="{{rootURL}}assets/{{packageName}}.css" />
12
+
13
+ {{content-for "head-footer"}}
14
+ </head>
15
+ <body>
16
+ {{content-for "body"}}
17
+
18
+ <script src="{{rootURL}}assets/vendor.js"></script>
19
+ <script src="{{rootURL}}assets/{{packageName}}.js"></script>
20
+
21
+ {{content-for "body-footer"}}
22
+ </body>
23
+ </html>
@@ -0,0 +1,9 @@
1
+ import EmberRouter from "@ember/routing/router";
2
+ import config from "{{packageName}}/config/environment";
3
+
4
+ export default class Router extends EmberRouter {
5
+ location = config.locationType;
6
+ rootURL = config.rootURL;
7
+ }
8
+
9
+ Router.map(function () {});
@@ -0,0 +1,7 @@
1
+ /* global styles */
2
+
3
+ html,
4
+ body {
5
+ margin: 0;
6
+ padding: 0;
7
+ }
@@ -1,4 +1,4 @@
1
- <div id="particles-container" {{did-insert this.initParticles}} {{particles options=this.options}}>
1
+ <div id="particles-container" {{particles options=this.options}}>
2
2
  </div>
3
3
 
4
4
  <div id="app">
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ module.exports = function (environment) {
4
+ const ENV = {
5
+ modulePrefix: "{{packageName}}",
6
+ podModulePrefix: "",
7
+ environment,
8
+ rootURL: "/",
9
+ locationType: "history",
10
+ EmberENV: {
11
+ FEATURES: {},
12
+ EXTEND_PROTOTYPES: false,
13
+ },
14
+ APP: {},
15
+ };
16
+
17
+ if (environment === "test") {
18
+ ENV.locationType = "none";
19
+ ENV.APP.rootElement = "#ember-testing";
20
+ ENV.APP.autoboot = false;
21
+ }
22
+
23
+ return ENV;
24
+ };
@@ -0,0 +1,6 @@
1
+ {
2
+ "application-template-wrapper": false,
3
+ "default-async-observers": true,
4
+ "jquery-integration": false,
5
+ "template-only-glimmer-components": true
6
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ const browsers = ["last 1 Chrome versions", "last 1 Firefox versions", "last 1 Safari versions"];
4
+
5
+ module.exports = {
6
+ browsers,
7
+ };
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ const EmberApp = require("ember-cli/lib/broccoli/ember-app");
4
+
5
+ module.exports = function (defaults) {
6
+ const app = new EmberApp(defaults, {});
7
+
8
+ return app.toTree();
9
+ };
@@ -28,14 +28,11 @@
28
28
  "webpack": "^5.106.1"
29
29
  },
30
30
  "dependencies": {
31
- "@tsparticles/ember": "^4.1.3",
32
- "@tsparticles/engine": "^4.1.3",
33
- "@tsparticles/slim": "^4.1.3"
31
+ "@tsparticles/ember": "^4.4.0",
32
+ "@tsparticles/engine": "^4.4.0",
33
+ "@tsparticles/slim": "^4.4.0"
34
34
  },
35
35
  "ember": {
36
36
  "edition": "octane"
37
- },
38
- "ember-addon": {
39
- "configPath": "tests/dummy/config"
40
37
  }
41
38
  }
@@ -10,14 +10,13 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "inferno": "^9.1.0",
13
- "@tsparticles/inferno": "^4.1.3",
14
- "@tsparticles/engine": "^4.1.3",
15
- "@tsparticles/slim": "^4.1.3"
13
+ "inferno-create-element": "^9.1.0",
14
+ "@tsparticles/inferno": "^4.4.0",
15
+ "@tsparticles/engine": "^4.4.0",
16
+ "@tsparticles/slim": "^4.4.0"
16
17
  },
17
18
  "devDependencies": {
18
19
  "typescript": "^6.0.3",
19
- "vite": "^8.1.0",
20
- "babel-plugin-inferno": "^6.8.5",
21
- "vite-plugin-inferno": "^2.0.1"
20
+ "vite": "^8.3.1"
22
21
  }
23
22
  }
@@ -1,4 +1,4 @@
1
- import Particles, { ParticlesProvider } from "@tsparticles/inferno";
1
+ import { Particles, ParticlesProvider } from "@tsparticles/inferno";
2
2
  import { loadSlim } from "@tsparticles/slim";
3
3
  import type { Engine } from "@tsparticles/engine";
4
4
 
@@ -0,0 +1 @@
1
+ /// <reference types="vite/client" />
@@ -1,11 +1,13 @@
1
1
  import { defineConfig } from "vite";
2
- import inferno from "vite-plugin-inferno";
3
2
 
4
3
  export default defineConfig({
5
- plugins: [inferno()],
6
4
  base: "./",
7
- esbuild: {
8
- jsxFactory: "createElement",
9
- jsxFragment: "Fragment",
5
+ oxc: {
6
+ jsx: {
7
+ runtime: "classic",
8
+ pragma: "createElement",
9
+ pragmaFrag: "Fragment",
10
+ },
11
+ jsxInject: "import { createElement } from 'inferno-create-element';\nimport { Fragment } from 'inferno';",
10
12
  },
11
13
  });
@@ -10,10 +10,11 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "jquery": "^3.7.1",
13
- "@tsparticles/jquery": "^4.1.3"
13
+ "@tsparticles/jquery": "^4.4.0"
14
14
  },
15
15
  "devDependencies": {
16
16
  "typescript": "^5.7.2",
17
- "vite": "^6.0.0"
17
+ "vite": "^8.3.1",
18
+ "@types/jquery": "^3.5.32"
18
19
  }
19
20
  }
@@ -0,0 +1 @@
1
+ /// <reference types="vite/client" />
@@ -9,11 +9,11 @@
9
9
  "preview": "vite preview"
10
10
  },
11
11
  "dependencies": {
12
- "lit": "^3.5.0",
13
- "@tsparticles/lit": "^4.1.3"
12
+ "lit": "^3.3.0",
13
+ "@tsparticles/lit": "^4.4.0"
14
14
  },
15
15
  "devDependencies": {
16
16
  "typescript": "^5.7.2",
17
- "vite": "^6.0.0"
17
+ "vite": "^8.3.1"
18
18
  }
19
19
  }
@@ -0,0 +1 @@
1
+ /// <reference types="vite/client" />
@@ -11,13 +11,13 @@
11
11
  "next": "^15.3.2",
12
12
  "react": "^19.2.5",
13
13
  "react-dom": "^19.2.5",
14
- "@tsparticles/nextjs": "^4.1.3",
15
- "@tsparticles/engine": "^4.1.3",
16
- "@tsparticles/slim": "^4.1.3"
14
+ "@tsparticles/nextjs": "^4.4.0",
15
+ "@tsparticles/engine": "^4.4.0",
16
+ "@tsparticles/slim": "^4.4.0"
17
17
  },
18
18
  "devDependencies": {
19
19
  "typescript": "^6.0.3",
20
- "@types/node": "^22.15.3",
20
+ "@types/node": "^26.6.5",
21
21
  "@types/react": "^19.1.4",
22
22
  "@types/react-dom": "^19.1.3"
23
23
  }
@@ -0,0 +1,20 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2020",
4
+ "lib": ["dom", "dom.iterable", "esnext"],
5
+ "allowJs": true,
6
+ "skipLibCheck": true,
7
+ "strict": true,
8
+ "noEmit": true,
9
+ "incremental": true,
10
+ "module": "esnext",
11
+ "moduleResolution": "bundler",
12
+ "esModuleInterop": true,
13
+ "resolveJsonModule": true,
14
+ "isolatedModules": true,
15
+ "jsx": "preserve",
16
+ "plugins": [{ "name": "next" }]
17
+ },
18
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
19
+ "exclude": ["node_modules"]
20
+ }
@@ -1,3 +1,21 @@
1
1
  export default {
2
- buildModules: ["@tsparticles/nuxt2"],
2
+ // Nuxt 2 ships webpack 4, which predates the "exports" field of package.json.
3
+ // The tsParticles v4 packages expose their entry points through "exports",
4
+ // so deep imports such as "@tsparticles/plugin-emitters/plugin" need an
5
+ // explicit alias to the CommonJS file shipped by each package.
6
+ build: {
7
+ transpile: [/@tsparticles\//, "tsparticles"],
8
+ // Webpack 4 cannot parse the logical assignment operators shipped by the
9
+ // tsParticles v4 builds, so they are transpiled down to the configured
10
+ // browserslist targets.
11
+ babel: {
12
+ presets: [["@babel/preset-env", { targets: { chrome: "58", edge: "16", firefox: "57", safari: "11" } }]],
13
+ },
14
+ extend(config) {
15
+ config.resolve.alias["@tsparticles/engine/lazy"] = "@tsparticles/engine/cjs/index.lazy.js";
16
+ config.resolve.alias["@tsparticles/plugin-emitters/plugin"] = "@tsparticles/plugin-emitters/cjs/plugin.js";
17
+ config.resolve.alias["@tsparticles/shape-cards/suits"] = "@tsparticles/shape-cards/cjs/suits.js";
18
+ },
19
+ },
20
+ modules: ["@tsparticles/nuxt2"],
3
21
  };
@@ -9,8 +9,17 @@
9
9
  },
10
10
  "dependencies": {
11
11
  "nuxt": "^2.18.1",
12
- "@tsparticles/nuxt2": "^4.1.3",
13
- "@tsparticles/engine": "^4.1.3",
14
- "@tsparticles/slim": "^4.1.3"
12
+ "@tsparticles/nuxt2": "^4.4.0",
13
+ "@tsparticles/engine": "^4.4.0",
14
+ "@tsparticles/slim": "^4.4.0"
15
+ },
16
+ "browserslist": [
17
+ "chrome 58",
18
+ "edge 16",
19
+ "firefox 57",
20
+ "safari 11"
21
+ ],
22
+ "devDependencies": {
23
+ "@babel/preset-env": "^7.29.0"
15
24
  }
16
25
  }
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div id="app">
3
3
  <h1>Hello, tsParticles!</h1>
4
- <Particles id="tsparticles" :options="options" />
4
+ <vue-particles id="tsparticles" :options="options" />
5
5
  </div>
6
6
  </template>
7
7
 
@@ -0,0 +1,5 @@
1
+ export async function registerParticles(engine) {
2
+ const { loadSlim } = await import("@tsparticles/slim");
3
+
4
+ await loadSlim(engine);
5
+ }
@@ -10,9 +10,9 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "nuxt": "^3.17.3",
13
- "@tsparticles/nuxt3": "^4.1.3",
14
- "@tsparticles/engine": "^4.1.3",
15
- "@tsparticles/slim": "^4.1.3"
13
+ "@tsparticles/nuxt3": "^4.4.0",
14
+ "@tsparticles/engine": "^4.4.0",
15
+ "@tsparticles/slim": "^4.4.0"
16
16
  },
17
17
  "devDependencies": {
18
18
  "typescript": "^6.0.3"
@@ -0,0 +1,6 @@
1
+ import type { Engine } from "@tsparticles/engine";
2
+ import { loadSlim } from "@tsparticles/slim";
3
+
4
+ export async function registerParticles(engine: Engine): Promise<void> {
5
+ await loadSlim(engine);
6
+ }
@@ -10,9 +10,9 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "nuxt": "^4.4.2",
13
- "@tsparticles/nuxt4": "^4.1.3",
14
- "@tsparticles/engine": "^4.1.3",
15
- "@tsparticles/slim": "^4.1.3"
13
+ "@tsparticles/nuxt4": "^4.4.0",
14
+ "@tsparticles/engine": "^4.4.0",
15
+ "@tsparticles/slim": "^4.4.0"
16
16
  },
17
17
  "devDependencies": {
18
18
  "typescript": "^6.0.3"
@@ -0,0 +1,6 @@
1
+ import type { Engine } from "@tsparticles/engine";
2
+ import { loadSlim } from "@tsparticles/slim";
3
+
4
+ export async function registerParticles(engine: Engine): Promise<void> {
5
+ await loadSlim(engine);
6
+ }
@@ -10,11 +10,11 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "preact": "^10.19.3",
13
- "@tsparticles/preact": "^4.1.3"
13
+ "@tsparticles/preact": "^4.4.0"
14
14
  },
15
15
  "devDependencies": {
16
16
  "@preact/preset-vite": "^2.8.1",
17
17
  "typescript": "^5.7.2",
18
- "vite": "^6.0.0"
18
+ "vite": "^8.3.1"
19
19
  }
20
20
  }
@@ -0,0 +1 @@
1
+ /// <reference types="vite/client" />
@@ -10,10 +10,10 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "@builder.io/qwik": "^1.12.0",
13
- "@tsparticles/qwik": "^4.1.3"
13
+ "@tsparticles/qwik": "^4.4.0"
14
14
  },
15
15
  "devDependencies": {
16
16
  "typescript": "^5.7.2",
17
- "vite": "^6.0.0"
17
+ "vite": "^7.3.6"
18
18
  }
19
19
  }
@@ -1,7 +1,7 @@
1
- import { qwikVite } from "@builder.io/qwik/plugin.vite";
1
+ import { qwikVite } from "@builder.io/qwik/optimizer";
2
2
  import { defineConfig } from "vite";
3
3
 
4
4
  export default defineConfig({
5
- plugins: [qwikVite()],
5
+ plugins: [qwikVite({ csr: true })],
6
6
  base: "./",
7
7
  });
@@ -11,9 +11,11 @@
11
11
  "dependencies": {
12
12
  "react": "^19.2.5",
13
13
  "react-dom": "^19.2.5",
14
- "@tsparticles/react": "^4.1.3"
14
+ "@tsparticles/react": "^4.4.0"
15
15
  },
16
16
  "devDependencies": {
17
- "@vitejs/plugin-react": "^6.0.1"
17
+ "@vitejs/plugin-react": "^6.0.1",
18
+ "@types/react": "^19.2.14",
19
+ "@types/react-dom": "^19.2.3"
18
20
  }
19
21
  }
@@ -9,13 +9,13 @@
9
9
  "preview": "vite preview"
10
10
  },
11
11
  "dependencies": {
12
- "riot": "^10.0.0",
13
- "@tsparticles/riot": "^4.1.3"
12
+ "riot": "^10.1.6",
13
+ "@tsparticles/riot": "^4.4.0"
14
14
  },
15
15
  "devDependencies": {
16
16
  "@riotjs/compiler": "^10.0.0",
17
17
  "rollup-plugin-riot": "^10.0.0",
18
18
  "typescript": "^5.7.2",
19
- "vite": "^6.0.0"
19
+ "vite": "^8.3.1"
20
20
  }
21
21
  }
@@ -1,5 +1,9 @@
1
- import { mount } from "riot";
1
+ import { component } from "riot";
2
2
  import App from "./app.riot";
3
3
  import "./style.css";
4
4
 
5
- mount(App, "#app");
5
+ const appElement = document.getElementById("app");
6
+
7
+ if (appElement) {
8
+ component(App)(appElement);
9
+ }
@@ -0,0 +1,6 @@
1
+ declare module "*.riot" {
2
+ import type { RiotComponent, RiotComponentWrapper } from "riot";
3
+
4
+ const component: RiotComponentWrapper<RiotComponent>;
5
+ export default component;
6
+ }
@@ -0,0 +1 @@
1
+ /// <reference types="vite/client" />
@@ -10,9 +10,9 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "solid-js": "^1.8.11",
13
- "@tsparticles/solid": "^4.1.3"
13
+ "@tsparticles/solid": "^4.4.0"
14
14
  },
15
15
  "devDependencies": {
16
- "vite-plugin-solid": "^2.8.2"
16
+ "vite-plugin-solid": "^2.11.14"
17
17
  }
18
18
  }
@@ -0,0 +1 @@
1
+ /// <reference types="vite/client" />
@@ -9,9 +9,9 @@
9
9
  },
10
10
  "dependencies": {
11
11
  "@stencil/core": "^4.43.5",
12
- "@tsparticles/stencil": "^4.1.3",
13
- "@tsparticles/engine": "^4.1.3",
14
- "@tsparticles/slim": "^4.1.3"
12
+ "@tsparticles/stencil": "^4.4.0",
13
+ "@tsparticles/engine": "^4.4.0",
14
+ "@tsparticles/slim": "^4.4.0"
15
15
  },
16
16
  "devDependencies": {
17
17
  "typescript": "^6.0.3"
@@ -0,0 +1,29 @@
1
+ * {
2
+ box-sizing: border-box;
3
+ }
4
+
5
+ body {
6
+ margin: 0;
7
+ min-height: 100vh;
8
+ display: flex;
9
+ align-items: center;
10
+ justify-content: center;
11
+ background: #0a0a1a;
12
+ font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
13
+ color: #fff;
14
+ }
15
+
16
+ #app {
17
+ text-align: center;
18
+ z-index: 10;
19
+ padding: 1rem;
20
+ }
21
+
22
+ h1 {
23
+ font-size: 2.5em;
24
+ margin-bottom: 1rem;
25
+ background: linear-gradient(135deg, #6c5ce7, #fd79a8);
26
+ -webkit-background-clip: text;
27
+ -webkit-text-fill-color: transparent;
28
+ background-clip: text;
29
+ }
@@ -0,0 +1,11 @@
1
+ import { Config } from "@stencil/core";
2
+
3
+ export const config: Config = {
4
+ namespace: "{{packageName}}",
5
+ srcDir: "src",
6
+ outputTargets: [
7
+ {
8
+ type: "dist",
9
+ },
10
+ ],
11
+ };
@@ -0,0 +1,18 @@
1
+ {
2
+ "compilerOptions": {
3
+ "allowSyntheticDefaultImports": true,
4
+ "allowUnreachableCode": false,
5
+ "declaration": false,
6
+ "esModuleInterop": true,
7
+ "experimentalDecorators": true,
8
+ "lib": ["dom", "es2020"],
9
+ "module": "esnext",
10
+ "moduleResolution": "bundler",
11
+ "target": "es2020",
12
+ "noUnusedLocals": true,
13
+ "noUnusedParameters": true,
14
+ "jsx": "react",
15
+ "jsxFactory": "h"
16
+ },
17
+ "include": ["src"]
18
+ }
@@ -9,7 +9,7 @@
9
9
  "preview": "vite preview"
10
10
  },
11
11
  "dependencies": {
12
- "@tsparticles/svelte": "^4.1.3"
12
+ "@tsparticles/svelte": "^4.4.0"
13
13
  },
14
14
  "devDependencies": {
15
15
  "@sveltejs/vite-plugin-svelte": "^5.0.3",
@@ -0,0 +1 @@
1
+ /// <reference types="vite/client" />
@@ -10,12 +10,12 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "vue": "^2.7.16",
13
- "@tsparticles/vue2": "^4.1.3"
13
+ "@tsparticles/vue2": "^4.4.0"
14
14
  },
15
15
  "devDependencies": {
16
- "@vitejs/plugin-vue2": "^2.0.1",
16
+ "@vitejs/plugin-vue2": "^2.3.4",
17
17
  "vue-template-compiler": "^2.7.16",
18
18
  "typescript": "^5.7.2",
19
- "vite": "^6.0.0"
19
+ "vite": "^7.3.6"
20
20
  }
21
21
  }
@@ -0,0 +1,6 @@
1
+ /// <reference types="vite/client" />
2
+
3
+ declare module "*.vue" {
4
+ import Vue from "vue";
5
+ export default Vue;
6
+ }
@@ -10,7 +10,7 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "vue": "^3.5.32",
13
- "@tsparticles/vue3": "^4.1.3"
13
+ "@tsparticles/vue3": "^4.4.0"
14
14
  },
15
15
  "devDependencies": {
16
16
  "@vitejs/plugin-vue": "^6.0.5",
@@ -9,10 +9,12 @@
9
9
  "preview": "vite preview"
10
10
  },
11
11
  "dependencies": {
12
- "@tsparticles/webcomponents": "^4.1.3"
12
+ "@tsparticles/engine": "^4.4.0",
13
+ "@tsparticles/slim": "^4.4.0",
14
+ "@tsparticles/webcomponents": "^4.4.0"
13
15
  },
14
16
  "devDependencies": {
15
17
  "typescript": "^5.7.2",
16
- "vite": "^6.0.0"
18
+ "vite": "^8.3.1"
17
19
  }
18
20
  }
@@ -1,9 +1,12 @@
1
+ import { tsParticles } from "@tsparticles/engine";
1
2
  import { defineParticlesElement, initParticlesEngine } from "@tsparticles/webcomponents";
2
3
  import { loadSlim } from "@tsparticles/slim";
3
4
  import "./style.css";
4
5
 
6
+ globalThis.tsParticles = tsParticles;
7
+
5
8
  void initParticlesEngine(async (engine) => {
6
9
  await loadSlim(engine);
7
10
  });
8
11
 
9
- defineParticlesElement();
12
+ defineParticlesElement();
@@ -0,0 +1 @@
1
+ /// <reference types="vite/client" />
package/template.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "package": {
3
3
  "dependencies": {
4
- "@tsparticles/engine": "^4.1.3",
5
- "@tsparticles/slim": "^4.1.3",
6
- "@tsparticles/configs": "^4.1.3"
4
+ "@tsparticles/engine": "^4.5.0",
5
+ "@tsparticles/slim": "^4.5.0",
6
+ "@tsparticles/configs": "^4.5.0"
7
7
  },
8
8
  "devDependencies": {
9
9
  "typescript": "^6.0.3",
10
- "vite": "^8.1.0"
10
+ "vite": "^8.3.1"
11
11
  }
12
12
  }
13
- }
13
+ }