Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/tsparticles/ember

tsParticles Official Ember.js component
https://github.com/tsparticles/ember

ember emberjs hacktoberfest javascript tsparticles typescript

Last synced: 3 days ago
JSON representation

tsParticles Official Ember.js component

Awesome Lists containing this project

README

        

[![banner](https://particles.js.org/images/banner3.png)](https://particles.js.org)

# ember-tsparticles

An Ember.js component for using [tsParticles](https://github.com/matteobruni/tsparticles). Easily create highly customizable JavaScript particles effects, confetti explosions and fireworks animations and use them as animated backgrounds for your website.

## Compatibility

* Ember.js v3.28 or above
* Ember CLI v3.28 or above
* Node.js v14 or above

## Installation

```bash
npm install ember-tsparticles
# or
yarn add ember-tsparticles
# or
pnpm install ember-tsparticles
# or
ember install ember-tsparticles
```

## Usage

For the most basic usage of the component you can pass a configuration object via the `options` argument and initialize the tsparticles features you need in the `particlesInit` callback.

By default `tsparticles` doesn't load any extensions required to render particles. Extensions can be loaded on a granular level which has the benefit that only what is required is loaded, but to start out it can be useful to load all options via the `loadFull` function of `tsparticles`.

For the configuration object API documentation, see the [tsparticles repository](https://github.com/matteobruni/tsparticles).

```bash
npm install tsparticles
```

```hbs

```
```js
import { Component } from '@glimmer/component';
import { loadFull } from 'tsparticles';

export default class ExampleComponent extends Component {
options = {
particles: {
color: {
value: '#000',
},
links: {
enable: true,
color: '#000',
},
move: {
enable: true,
},
},
};

async particlesInit(engine) {
await loadFull(engine);
}
}
```

![ExampleComponent](/images/minimal.png)

### With template import syntax

When using [ember-template-imports](https://github.com/ember-template-imports/ember-template-imports) the example above would look like this, using the `.gjs` file extension.

```js
import { loadFull } from 'tsparticles';
import Particles from 'ember-tsparticles/components/particles';

const options = {
particles: {
color: {
value: '#000',
},
links: {
enable: true,
color: '#000',
},
move: {
enable: true,
},
},
};
const particlesInit = async (engine) => {
await loadFull(engine);
};



```

### Using presets

Presets are offered by `tsparticles` which allow to use premade configuration objects. Refer to the [presets](https://github.com/matteobruni/tsparticles#Presets) section in the `tsparticles` repository to view all existing presets.

```bash
npm install tsparticles-preset-confetti
```

```hbs

```
```js
import { Component } from '@glimmer/component';
import { loadConfettiPreset } from 'tsparticles-preset-confetti';

export default class ConfettiComponent extends Component {
async loadPreset(engine) {
await loadConfettiPreset(engine);
}
}
```

![ConfettiComponent](/images/confetti.png)

### Loading options from an URL

Options can also be passed via link with the `url` argument. These will be fetched once the component renders.

```hbs

```
```js
import { Component } from '@glimmer/component';
import { loadFull } from 'tsparticles';

export default class ExampleComponent extends Component {
async particlesInit(engine) {
await loadFull(engine);
}
}
```

### Particles loaded callback

Further customization to the `tsparticles` container can be done by using the `particlesLoaded` callback argument. This callback passes the container instance for that particular component.

```hbs

```
```js
import { Component } from '@glimmer/component';
import { loadFull } from 'tsparticles';

export default class ExampleComponent extends Component {
async particlesInit(engine) {
await loadFull(engine);
}

loadedCallback(container) {
console.log(
'A callback function can be passed which triggers when the particles are loaded',
container
);
}
}
```

## Contributing

See the [Contributing](CONTRIBUTING.md) guide for details.

## License

This project is licensed under the [MIT License](LICENSE.md).