ngx-dom-confetti 0.8.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -52,6 +52,29 @@ export class AppModule { }
52
52
 
53
53
  use `ngx-dom-confetti`
54
54
 
55
+ The component's `active` and `config` inputs are readonly signals. Template
56
+ bindings keep the same names; call signals when passing values from a parent:
57
+
58
+ ```html
59
+ <ngx-dom-confetti [active]="active()" [config]="config()">
60
+ <button (click)="active.set(true)">Celebrate</button>
61
+ </ngx-dom-confetti>
62
+ ```
63
+
64
+ Initialize parent state with `active = signal(false)` and
65
+ `config = signal<Partial<ConfettiConfig>>({ elementCount: 50 })`, importing
66
+ `signal` from `@angular/core` and `ConfettiConfig` from `ngx-dom-confetti`.
67
+ Set `active` to false and let Angular render before setting it to true again
68
+ for another burst. Launching happens after rendering in the browser.
69
+ Configuration updates merge into the previous configuration and do not launch
70
+ a burst by themselves.
71
+
72
+ For programmatic input updates, use Angular bindings or
73
+ `componentRef.setInput('active', true)` instead of assigning to the component's
74
+ input properties. Read component inputs with `component.active()` and
75
+ `component.config()`.
76
+
77
+
55
78
  ## component:
56
79
 
57
80
  ```html
@@ -1,6 +1,6 @@
1
1
  import { Platform } from '@angular/cdk/platform';
2
2
  import * as i0 from '@angular/core';
3
- import { InjectionToken, inject, ElementRef, NgZone, DOCUMENT, Directive, Injectable, Input, ChangeDetectionStrategy, Component, NgModule, makeEnvironmentProviders } from '@angular/core';
3
+ import { InjectionToken, inject, ElementRef, NgZone, DOCUMENT, Directive, Injectable, input, afterRenderEffect, untracked, ChangeDetectionStrategy, Component, NgModule, makeEnvironmentProviders } from '@angular/core';
4
4
  import { coerceElement, coerceBooleanProperty } from '@angular/cdk/coercion';
5
5
  import { CommonModule } from '@angular/common';
6
6
 
@@ -153,10 +153,10 @@ class NgxConfettiDirective {
153
153
  this._confettiRenderer.launch(this._elementRef.nativeElement, config ?? this._globalConfig);
154
154
  });
155
155
  }
156
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: NgxConfettiDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
157
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.6", type: NgxConfettiDirective, isStandalone: true, selector: "[confetti], [ngxConfetti]", exportAs: ["ngxConfetti"], ngImport: i0 }); }
156
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.3", ngImport: i0, type: NgxConfettiDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
157
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.2.3", type: NgxConfettiDirective, isStandalone: true, selector: "[confetti], [ngxConfetti]", exportAs: ["ngxConfetti"], ngImport: i0 }); }
158
158
  }
159
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: NgxConfettiDirective, decorators: [{
159
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.3", ngImport: i0, type: NgxConfettiDirective, decorators: [{
160
160
  type: Directive,
161
161
  args: [{
162
162
  selector: '[confetti], [ngxConfetti]',
@@ -174,48 +174,41 @@ class NgxDomConfettiService {
174
174
  open(el, config) {
175
175
  this._confettiRenderer.launch(coerceElement(el), config ?? this._globalConfig);
176
176
  }
177
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: NgxDomConfettiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
178
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: NgxDomConfettiService }); }
177
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.3", ngImport: i0, type: NgxDomConfettiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
178
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.2.3", ngImport: i0, type: NgxDomConfettiService }); }
179
179
  }
180
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: NgxDomConfettiService, decorators: [{
180
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.3", ngImport: i0, type: NgxDomConfettiService, decorators: [{
181
181
  type: Injectable
182
182
  }], ctorParameters: () => [] });
183
183
 
184
184
  class NgxDomConfettiComponent {
185
- set config(_config) {
186
- if (_config) {
187
- this._config = Object.assign(this._config, _config);
188
- }
189
- }
190
- set active(_active) {
191
- this._active = coerceBooleanProperty(_active);
192
- if (this._active) {
193
- this._confettiRenderer.launch(coerceElement(this.el), this._config);
194
- }
195
- }
196
185
  constructor() {
197
186
  this.el = inject(ElementRef);
198
- const document = inject(DOCUMENT, { optional: true });
199
- const globalConfig = inject(NGX_CONFETTI_GLOBAL_CONFIG, {
200
- optional: true,
201
- });
202
- this._config = {
203
- ...globalConfig,
187
+ this.renderer = new ConfettiRenderer(inject(DOCUMENT));
188
+ this.configSnapshot = {
189
+ ...inject(NGX_CONFETTI_GLOBAL_CONFIG, { optional: true }),
204
190
  };
205
- this._confettiRenderer = new ConfettiRenderer(document);
206
- this._active = false;
191
+ this.config = input(/* @ts-ignore */
192
+ ...(ngDevMode ? [undefined, { debugName: "config" }] : /* istanbul ignore next */ []));
193
+ this.active = input(false, { ...(ngDevMode ? { debugName: "active" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
194
+ let wasActive = false;
195
+ afterRenderEffect(() => {
196
+ // Retain the existing cumulative partial-configuration behavior.
197
+ this.configSnapshot = { ...this.configSnapshot, ...this.config() };
198
+ const active = this.active();
199
+ if (active && !wasActive) {
200
+ untracked(() => this.renderer.launch(this.el.nativeElement, this.configSnapshot));
201
+ }
202
+ wasActive = active;
203
+ });
207
204
  }
208
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: NgxDomConfettiComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
209
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.6", type: NgxDomConfettiComponent, isStandalone: true, selector: "ngx-dom-confetti", inputs: { config: "config", active: "active" }, ngImport: i0, template: ` <ng-content></ng-content> `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.Eager }); }
205
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.3", ngImport: i0, type: NgxDomConfettiComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
206
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.2.3", type: NgxDomConfettiComponent, isStandalone: true, selector: "ngx-dom-confetti", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: ` <ng-content></ng-content> `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
210
207
  }
211
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: NgxDomConfettiComponent, decorators: [{
208
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.3", ngImport: i0, type: NgxDomConfettiComponent, decorators: [{
212
209
  type: Component,
213
- args: [{ selector: 'ngx-dom-confetti', template: ` <ng-content></ng-content> `, changeDetection: ChangeDetectionStrategy.Eager }]
214
- }], ctorParameters: () => [], propDecorators: { config: [{
215
- type: Input
216
- }], active: [{
217
- type: Input
218
- }] } });
210
+ args: [{ selector: 'ngx-dom-confetti', template: ` <ng-content></ng-content> `, changeDetection: ChangeDetectionStrategy.OnPush }]
211
+ }], ctorParameters: () => [], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }], active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }] } });
219
212
 
220
213
  class NgxDomConfettiModule {
221
214
  static forRoot() {
@@ -242,9 +235,9 @@ class NgxDomConfettiModule {
242
235
  ],
243
236
  };
244
237
  }
245
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: NgxDomConfettiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
246
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.6", ngImport: i0, type: NgxDomConfettiModule, imports: [CommonModule, NgxDomConfettiComponent, NgxConfettiDirective], exports: [NgxDomConfettiComponent, NgxConfettiDirective] }); }
247
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: NgxDomConfettiModule, providers: [
238
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.3", ngImport: i0, type: NgxDomConfettiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
239
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.2.3", ngImport: i0, type: NgxDomConfettiModule, imports: [CommonModule, NgxDomConfettiComponent, NgxConfettiDirective], exports: [NgxDomConfettiComponent, NgxConfettiDirective] }); }
240
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.2.3", ngImport: i0, type: NgxDomConfettiModule, providers: [
248
241
  {
249
242
  provide: NGX_CONFETTI_GLOBAL_CONFIG,
250
243
  useValue: defaultsConfettiConfig,
@@ -252,7 +245,7 @@ class NgxDomConfettiModule {
252
245
  NgxDomConfettiService,
253
246
  ], imports: [CommonModule] }); }
254
247
  }
255
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: NgxDomConfettiModule, decorators: [{
248
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.3", ngImport: i0, type: NgxDomConfettiModule, decorators: [{
256
249
  type: NgModule,
257
250
  args: [{
258
251
  declarations: [],
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-dom-confetti.mjs","sources":["../../../packages/ngx-dom-confetti/src/lib/config.ts","../../../packages/ngx-dom-confetti/src/lib/confetti-renderer.ts","../../../packages/ngx-dom-confetti/src/lib/confetti-directive.ts","../../../packages/ngx-dom-confetti/src/lib/confetti-service.ts","../../../packages/ngx-dom-confetti/src/lib/confetti-component.ts","../../../packages/ngx-dom-confetti/src/lib/confetti-module.ts","../../../packages/ngx-dom-confetti/src/lib/confetti-provider.ts","../../../packages/ngx-dom-confetti/src/public-api.ts","../../../packages/ngx-dom-confetti/src/ngx-dom-confetti.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\n\nexport interface ConfettiConfig {\n angle: number;\n spread: number;\n width: string;\n height: string;\n perspective: string;\n duration: number;\n dragFriction: number;\n stagger: number;\n startVelocity: number;\n elementCount: number;\n decay: number;\n colors: string[];\n random: () => number;\n}\n\nexport const NGX_CONFETTI_GLOBAL_CONFIG = new InjectionToken<ConfettiConfig>(\n 'ngx-confetti-global-config',\n);\n\nconst defaultColors = [\"#a864fd\", \"#29cdff\", \"#78ff44\", \"#ff718d\", \"#fdff6a\"];\n\nexport const defaultsConfettiConfig = {\n angle: 90,\n spread: 45,\n startVelocity: 45,\n elementCount: 50,\n width: \"10px\",\n height: \"10px\",\n perspective: \"\",\n colors: defaultColors,\n duration: 3000,\n stagger: 0,\n dragFriction: 0.1,\n random: Math.random\n}\n","import { ConfettiConfig, defaultsConfettiConfig } from './config';\n\ninterface IPhysics {\n x: number;\n y: number;\n z: number;\n wobble: number;\n wobbleSpeed: number;\n velocity: number;\n angle2D: number;\n angle3D: number;\n tiltAngle: number;\n tiltAngleSpeed: number;\n}\n\ninterface IFetti {\n element: HTMLDivElement,\n physics: IPhysics\n}\n\nexport class ConfettiRenderer {\n\n constructor(private _document: Document) { }\n\n private createElements(\n elementCount: number,\n colors: string[],\n width: string,\n height: string\n ): {\n fragment: DocumentFragment,\n elements: HTMLDivElement[]\n } {\n const fragment = this._document.createDocumentFragment();\n const elements = Array.from({ length: elementCount }).map((_, index) => {\n const element = this._document.createElement('div');\n const color = colors[index % colors.length];\n element.style.backgroundColor = color;\n element.style.width = width;\n element.style.height = height;\n element.style.position = 'absolute';\n element.style.willChange = 'transform, opacity';\n element.style.visibility = 'hidden';\n fragment.appendChild(element);\n return element;\n });\n\n return {\n fragment,\n elements,\n };\n }\n\n private randomPhysics(\n angle: number,\n spread: number,\n startVelocity: number,\n random: () => number\n ): IPhysics {\n const radAngle = angle * (Math.PI / 180);\n const radSpread = spread * (Math.PI / 180);\n return {\n x: 0,\n y: 0,\n z: 0,\n wobble: random() * 10,\n wobbleSpeed: 0.1 + random() * 0.1,\n velocity: startVelocity * 0.5 + random() * startVelocity,\n angle2D: -radAngle + (0.5 * radSpread - random() * radSpread),\n angle3D: -(Math.PI / 4) + random() * (Math.PI / 2),\n tiltAngle: random() * Math.PI,\n tiltAngleSpeed: 0.1 + random() * 0.3,\n };\n }\n\n private updateFetti(fetti: IFetti, progress: number, dragFriction: number, decay: number) {\n \n fetti.physics.x += Math.cos(fetti.physics.angle2D) * fetti.physics.velocity;\n fetti.physics.y += Math.sin(fetti.physics.angle2D) * fetti.physics.velocity;\n fetti.physics.z += Math.sin(fetti.physics.angle3D) * fetti.physics.velocity;\n fetti.physics.wobble += fetti.physics.wobbleSpeed;\n // Backward compatibility\n if (decay) {\n fetti.physics.velocity *= decay;\n } else {\n fetti.physics.velocity -= fetti.physics.velocity * dragFriction;\n }\n fetti.physics.y += 3;\n fetti.physics.tiltAngle += fetti.physics.tiltAngleSpeed;\n\n const { x, y, z, tiltAngle, wobble } = fetti.physics;\n const wobbleX = x + 10 * Math.cos(wobble);\n const wobbleY = y + 10 * Math.sin(wobble);\n const transform = `translate3d(${wobbleX}px, ${wobbleY}px, ${z}px) rotate3d(1, 1, 1, ${tiltAngle}rad)`;\n\n fetti.element.style.visibility = \"visible\";\n fetti.element.style.transform = transform;\n fetti.element.style.opacity = (1 - progress).toString();;\n \n }\n\n private animate(root: HTMLElement, fettis: IFetti[], dragFriction: number, decay: number, duration: number, stagger: number) {\n let startTime: number;\n let isActive = true;\n\n const update = (time: number) => {\n if (!isActive) return;\n\n if (!startTime) startTime = time;\n const elapsed = time - startTime;\n const progress = startTime === time ? 0 : (time - startTime) / duration;\n fettis.slice(0, Math.ceil(elapsed / stagger)).forEach(fetti => {\n this.updateFetti(fetti, progress, dragFriction, decay);\n });\n\n if (time - startTime < duration) {\n requestAnimationFrame(update);\n } else {\n fettis.forEach((fetti) => {\n if (fetti.element.parentNode === root) {\n root.removeChild(fetti.element);\n }\n })\n\n isActive = false;\n }\n }\n\n requestAnimationFrame(update);\n\n return new Promise<void>(resolve => {\n const checkIfDone = setInterval(() => {\n if (!isActive) {\n clearInterval(checkIfDone);\n resolve();\n }\n }, 100);\n });\n }\n\n public launch(root: HTMLElement, config?: Partial<ConfettiConfig>): Promise<void> {\n const {\n elementCount,\n colors,\n width,\n height,\n perspective,\n angle,\n spread,\n startVelocity,\n decay,\n dragFriction,\n duration,\n stagger,\n random,\n } = { ...defaultsConfettiConfig, ...config } as ConfettiConfig;\n root.style.perspective = perspective;\n const { fragment, elements } = this.createElements(\n elementCount ?? 50,\n colors,\n width,\n height\n );\n root.appendChild(fragment);\n const fettis = elements.map((element) => ({\n element,\n physics: this.randomPhysics(angle, spread, startVelocity, random),\n }));\n\n return this.animate(root, fettis, dragFriction, decay, duration, stagger);\n }\n}\n","import { Platform } from '@angular/cdk/platform';\n\nimport { Directive, ElementRef, NgZone, DOCUMENT, inject } from '@angular/core';\nimport { ConfettiRenderer } from './confetti-renderer';\nimport {\n ConfettiConfig,\n defaultsConfettiConfig,\n NGX_CONFETTI_GLOBAL_CONFIG,\n} from './config';\n\n@Directive({\n selector: '[confetti], [ngxConfetti]',\n exportAs: 'ngxConfetti',\n})\nexport class NgxConfettiDirective {\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private ngZone = inject(NgZone);\n private platform = inject(Platform);\n\n private _globalConfig: ConfettiConfig;\n\n private _confettiRenderer: ConfettiRenderer;\n\n constructor() {\n const document = inject<Document>(DOCUMENT, { optional: true })!;\n const globalConfig = inject<ConfettiConfig>(NGX_CONFETTI_GLOBAL_CONFIG, {\n optional: true,\n });\n\n this._globalConfig = (globalConfig ||\n defaultsConfettiConfig) as ConfettiConfig;\n this._confettiRenderer = new ConfettiRenderer(document);\n }\n public launch(config?: Partial<ConfettiConfig>) {\n if (!this.platform.isBrowser) {\n return;\n }\n // const element = coerceElement(this._elementRef);\n this.ngZone.runOutsideAngular(() => {\n this._confettiRenderer.launch(\n this._elementRef.nativeElement,\n config ?? this._globalConfig,\n );\n });\n }\n}\n","import { coerceElement } from '@angular/cdk/coercion';\n\nimport { ElementRef, Injectable, DOCUMENT, inject } from '@angular/core';\nimport { ConfettiRenderer } from './confetti-renderer';\nimport { ConfettiConfig, NGX_CONFETTI_GLOBAL_CONFIG } from './config';\n\n@Injectable()\nexport class NgxDomConfettiService {\n private _confettiRenderer: ConfettiRenderer;\n\n private _globalConfig: ConfettiConfig;\n\n constructor() {\n const document = inject<Document>(DOCUMENT, { optional: true })!;\n const globalConfig = inject<ConfettiConfig>(NGX_CONFETTI_GLOBAL_CONFIG);\n\n this._confettiRenderer = new ConfettiRenderer(document);\n this._globalConfig = globalConfig;\n }\n\n public open(el: HTMLElement | ElementRef, config?: Partial<ConfettiConfig>) {\n this._confettiRenderer.launch(\n coerceElement(el),\n config ?? this._globalConfig,\n );\n }\n}\n","import {\n BooleanInput,\n coerceBooleanProperty,\n coerceElement,\n} from '@angular/cdk/coercion';\n\nimport { Component, ElementRef, Input, DOCUMENT, inject, ChangeDetectionStrategy } from '@angular/core';\n\nimport { ConfettiRenderer } from './confetti-renderer';\nimport { ConfettiConfig, NGX_CONFETTI_GLOBAL_CONFIG } from './config';\n\n@Component({\n selector: 'ngx-dom-confetti',\n template: ` <ng-content></ng-content> `,\n changeDetection: ChangeDetectionStrategy.Eager,\n styles: [],\n})\nexport class NgxDomConfettiComponent {\n private el = inject(ElementRef);\n\n private _confettiRenderer: ConfettiRenderer;\n\n private _config: Partial<ConfettiConfig>;\n\n private _active: boolean;\n\n @Input()\n public set config(_config: Partial<ConfettiConfig>) {\n if (_config) {\n this._config = Object.assign(this._config, _config);\n }\n }\n\n @Input()\n public set active(_active: BooleanInput) {\n this._active = coerceBooleanProperty(_active);\n if (this._active) {\n this._confettiRenderer.launch(coerceElement(this.el), this._config);\n }\n }\n\n constructor() {\n const document = inject<Document>(DOCUMENT, { optional: true })!;\n const globalConfig = inject<ConfettiConfig>(NGX_CONFETTI_GLOBAL_CONFIG, {\n optional: true,\n });\n\n this._config = {\n ...globalConfig,\n };\n this._confettiRenderer = new ConfettiRenderer(document);\n this._active = false;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { NgxConfettiDirective } from './confetti-directive';\nimport { NgxDomConfettiComponent } from './confetti-component';\nimport { NgxDomConfettiService } from './confetti-service';\nimport { defaultsConfettiConfig, NGX_CONFETTI_GLOBAL_CONFIG } from './config';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, NgxDomConfettiComponent, NgxConfettiDirective],\n providers: [\n {\n provide: NGX_CONFETTI_GLOBAL_CONFIG,\n useValue: defaultsConfettiConfig,\n },\n NgxDomConfettiService,\n ],\n exports: [NgxDomConfettiComponent, NgxConfettiDirective],\n})\nexport class NgxDomConfettiModule {\n static forRoot(): ModuleWithProviders<NgxDomConfettiModule> {\n return {\n ngModule: NgxDomConfettiModule,\n providers: [\n {\n provide: NGX_CONFETTI_GLOBAL_CONFIG,\n useValue: defaultsConfettiConfig,\n },\n NgxDomConfettiService,\n ],\n };\n }\n\n static forChild(): ModuleWithProviders<NgxDomConfettiModule> {\n return {\n ngModule: NgxDomConfettiModule,\n providers: [\n {\n provide: NGX_CONFETTI_GLOBAL_CONFIG,\n useValue: defaultsConfettiConfig,\n },\n NgxDomConfettiService,\n ],\n };\n }\n}\n","import { makeEnvironmentProviders } from '@angular/core';\nimport {\n ConfettiConfig,\n defaultsConfettiConfig,\n NGX_CONFETTI_GLOBAL_CONFIG,\n} from './config';\n\nexport function provideConfetti(config?: ConfettiConfig) {\n return makeEnvironmentProviders([\n {\n provide: NGX_CONFETTI_GLOBAL_CONFIG,\n useValue: config ?? defaultsConfettiConfig,\n },\n ]);\n}\n","/*\n * Public API Surface of ngx-dom-confetti\n */\nexport * from './lib/confetti-directive';\nexport * from './lib/confetti-service';\nexport * from './lib/confetti-component';\nexport * from './lib/confetti-module';\nexport * from './lib/confetti-provider';\nexport * from './lib/config';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngx-dom-confetti.mjs","sources":["../../../packages/ngx-dom-confetti/src/lib/config.ts","../../../packages/ngx-dom-confetti/src/lib/confetti-renderer.ts","../../../packages/ngx-dom-confetti/src/lib/confetti-directive.ts","../../../packages/ngx-dom-confetti/src/lib/confetti-service.ts","../../../packages/ngx-dom-confetti/src/lib/confetti-component.ts","../../../packages/ngx-dom-confetti/src/lib/confetti-module.ts","../../../packages/ngx-dom-confetti/src/lib/confetti-provider.ts","../../../packages/ngx-dom-confetti/src/public-api.ts","../../../packages/ngx-dom-confetti/src/ngx-dom-confetti.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\n\nexport interface ConfettiConfig {\n angle: number;\n spread: number;\n width: string;\n height: string;\n perspective: string;\n duration: number;\n dragFriction: number;\n stagger: number;\n startVelocity: number;\n elementCount: number;\n decay: number;\n colors: string[];\n random: () => number;\n}\n\nexport const NGX_CONFETTI_GLOBAL_CONFIG = new InjectionToken<ConfettiConfig>(\n 'ngx-confetti-global-config',\n);\n\nconst defaultColors = [\"#a864fd\", \"#29cdff\", \"#78ff44\", \"#ff718d\", \"#fdff6a\"];\n\nexport const defaultsConfettiConfig = {\n angle: 90,\n spread: 45,\n startVelocity: 45,\n elementCount: 50,\n width: \"10px\",\n height: \"10px\",\n perspective: \"\",\n colors: defaultColors,\n duration: 3000,\n stagger: 0,\n dragFriction: 0.1,\n random: Math.random\n}\n","import { ConfettiConfig, defaultsConfettiConfig } from './config';\n\ninterface IPhysics {\n x: number;\n y: number;\n z: number;\n wobble: number;\n wobbleSpeed: number;\n velocity: number;\n angle2D: number;\n angle3D: number;\n tiltAngle: number;\n tiltAngleSpeed: number;\n}\n\ninterface IFetti {\n element: HTMLDivElement,\n physics: IPhysics\n}\n\nexport class ConfettiRenderer {\n\n constructor(private _document: Document) { }\n\n private createElements(\n elementCount: number,\n colors: string[],\n width: string,\n height: string\n ): {\n fragment: DocumentFragment,\n elements: HTMLDivElement[]\n } {\n const fragment = this._document.createDocumentFragment();\n const elements = Array.from({ length: elementCount }).map((_, index) => {\n const element = this._document.createElement('div');\n const color = colors[index % colors.length];\n element.style.backgroundColor = color;\n element.style.width = width;\n element.style.height = height;\n element.style.position = 'absolute';\n element.style.willChange = 'transform, opacity';\n element.style.visibility = 'hidden';\n fragment.appendChild(element);\n return element;\n });\n\n return {\n fragment,\n elements,\n };\n }\n\n private randomPhysics(\n angle: number,\n spread: number,\n startVelocity: number,\n random: () => number\n ): IPhysics {\n const radAngle = angle * (Math.PI / 180);\n const radSpread = spread * (Math.PI / 180);\n return {\n x: 0,\n y: 0,\n z: 0,\n wobble: random() * 10,\n wobbleSpeed: 0.1 + random() * 0.1,\n velocity: startVelocity * 0.5 + random() * startVelocity,\n angle2D: -radAngle + (0.5 * radSpread - random() * radSpread),\n angle3D: -(Math.PI / 4) + random() * (Math.PI / 2),\n tiltAngle: random() * Math.PI,\n tiltAngleSpeed: 0.1 + random() * 0.3,\n };\n }\n\n private updateFetti(fetti: IFetti, progress: number, dragFriction: number, decay: number) {\n \n fetti.physics.x += Math.cos(fetti.physics.angle2D) * fetti.physics.velocity;\n fetti.physics.y += Math.sin(fetti.physics.angle2D) * fetti.physics.velocity;\n fetti.physics.z += Math.sin(fetti.physics.angle3D) * fetti.physics.velocity;\n fetti.physics.wobble += fetti.physics.wobbleSpeed;\n // Backward compatibility\n if (decay) {\n fetti.physics.velocity *= decay;\n } else {\n fetti.physics.velocity -= fetti.physics.velocity * dragFriction;\n }\n fetti.physics.y += 3;\n fetti.physics.tiltAngle += fetti.physics.tiltAngleSpeed;\n\n const { x, y, z, tiltAngle, wobble } = fetti.physics;\n const wobbleX = x + 10 * Math.cos(wobble);\n const wobbleY = y + 10 * Math.sin(wobble);\n const transform = `translate3d(${wobbleX}px, ${wobbleY}px, ${z}px) rotate3d(1, 1, 1, ${tiltAngle}rad)`;\n\n fetti.element.style.visibility = \"visible\";\n fetti.element.style.transform = transform;\n fetti.element.style.opacity = (1 - progress).toString();;\n \n }\n\n private animate(root: HTMLElement, fettis: IFetti[], dragFriction: number, decay: number, duration: number, stagger: number) {\n let startTime: number;\n let isActive = true;\n\n const update = (time: number) => {\n if (!isActive) return;\n\n if (!startTime) startTime = time;\n const elapsed = time - startTime;\n const progress = startTime === time ? 0 : (time - startTime) / duration;\n fettis.slice(0, Math.ceil(elapsed / stagger)).forEach(fetti => {\n this.updateFetti(fetti, progress, dragFriction, decay);\n });\n\n if (time - startTime < duration) {\n requestAnimationFrame(update);\n } else {\n fettis.forEach((fetti) => {\n if (fetti.element.parentNode === root) {\n root.removeChild(fetti.element);\n }\n })\n\n isActive = false;\n }\n }\n\n requestAnimationFrame(update);\n\n return new Promise<void>(resolve => {\n const checkIfDone = setInterval(() => {\n if (!isActive) {\n clearInterval(checkIfDone);\n resolve();\n }\n }, 100);\n });\n }\n\n public launch(root: HTMLElement, config?: Partial<ConfettiConfig>): Promise<void> {\n const {\n elementCount,\n colors,\n width,\n height,\n perspective,\n angle,\n spread,\n startVelocity,\n decay,\n dragFriction,\n duration,\n stagger,\n random,\n } = { ...defaultsConfettiConfig, ...config } as ConfettiConfig;\n root.style.perspective = perspective;\n const { fragment, elements } = this.createElements(\n elementCount ?? 50,\n colors,\n width,\n height\n );\n root.appendChild(fragment);\n const fettis = elements.map((element) => ({\n element,\n physics: this.randomPhysics(angle, spread, startVelocity, random),\n }));\n\n return this.animate(root, fettis, dragFriction, decay, duration, stagger);\n }\n}\n","import { Platform } from '@angular/cdk/platform';\n\nimport { Directive, ElementRef, NgZone, DOCUMENT, inject } from '@angular/core';\nimport { ConfettiRenderer } from './confetti-renderer';\nimport {\n ConfettiConfig,\n defaultsConfettiConfig,\n NGX_CONFETTI_GLOBAL_CONFIG,\n} from './config';\n\n@Directive({\n selector: '[confetti], [ngxConfetti]',\n exportAs: 'ngxConfetti',\n})\nexport class NgxConfettiDirective {\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private ngZone = inject(NgZone);\n private platform = inject(Platform);\n\n private _globalConfig: ConfettiConfig;\n\n private _confettiRenderer: ConfettiRenderer;\n\n constructor() {\n const document = inject<Document>(DOCUMENT, { optional: true })!;\n const globalConfig = inject<ConfettiConfig>(NGX_CONFETTI_GLOBAL_CONFIG, {\n optional: true,\n });\n\n this._globalConfig = (globalConfig ||\n defaultsConfettiConfig) as ConfettiConfig;\n this._confettiRenderer = new ConfettiRenderer(document);\n }\n public launch(config?: Partial<ConfettiConfig>) {\n if (!this.platform.isBrowser) {\n return;\n }\n // const element = coerceElement(this._elementRef);\n this.ngZone.runOutsideAngular(() => {\n this._confettiRenderer.launch(\n this._elementRef.nativeElement,\n config ?? this._globalConfig,\n );\n });\n }\n}\n","import { coerceElement } from '@angular/cdk/coercion';\n\nimport { ElementRef, Injectable, DOCUMENT, inject } from '@angular/core';\nimport { ConfettiRenderer } from './confetti-renderer';\nimport { ConfettiConfig, NGX_CONFETTI_GLOBAL_CONFIG } from './config';\n\n@Injectable()\nexport class NgxDomConfettiService {\n private _confettiRenderer: ConfettiRenderer;\n\n private _globalConfig: ConfettiConfig;\n\n constructor() {\n const document = inject<Document>(DOCUMENT, { optional: true })!;\n const globalConfig = inject<ConfettiConfig>(NGX_CONFETTI_GLOBAL_CONFIG);\n\n this._confettiRenderer = new ConfettiRenderer(document);\n this._globalConfig = globalConfig;\n }\n\n public open(el: HTMLElement | ElementRef, config?: Partial<ConfettiConfig>) {\n this._confettiRenderer.launch(\n coerceElement(el),\n config ?? this._globalConfig,\n );\n }\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n afterRenderEffect,\n ChangeDetectionStrategy,\n Component,\n DOCUMENT,\n ElementRef,\n inject,\n input,\n untracked,\n} from '@angular/core';\n\nimport { ConfettiRenderer } from './confetti-renderer';\nimport { ConfettiConfig, NGX_CONFETTI_GLOBAL_CONFIG } from './config';\n\n@Component({\n selector: 'ngx-dom-confetti',\n template: ` <ng-content></ng-content> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [],\n})\nexport class NgxDomConfettiComponent {\n private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly renderer = new ConfettiRenderer(inject(DOCUMENT));\n private configSnapshot: Partial<ConfettiConfig> = {\n ...inject(NGX_CONFETTI_GLOBAL_CONFIG, { optional: true }),\n };\n\n readonly config = input<Partial<ConfettiConfig> | null>();\n readonly active = input(false, { transform: coerceBooleanProperty });\n\n constructor() {\n let wasActive = false;\n afterRenderEffect(() => {\n // Retain the existing cumulative partial-configuration behavior.\n this.configSnapshot = { ...this.configSnapshot, ...this.config() };\n const active = this.active();\n if (active && !wasActive) {\n untracked(() => this.renderer.launch(this.el.nativeElement, this.configSnapshot));\n }\n wasActive = active;\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { NgxConfettiDirective } from './confetti-directive';\nimport { NgxDomConfettiComponent } from './confetti-component';\nimport { NgxDomConfettiService } from './confetti-service';\nimport { defaultsConfettiConfig, NGX_CONFETTI_GLOBAL_CONFIG } from './config';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, NgxDomConfettiComponent, NgxConfettiDirective],\n providers: [\n {\n provide: NGX_CONFETTI_GLOBAL_CONFIG,\n useValue: defaultsConfettiConfig,\n },\n NgxDomConfettiService,\n ],\n exports: [NgxDomConfettiComponent, NgxConfettiDirective],\n})\nexport class NgxDomConfettiModule {\n static forRoot(): ModuleWithProviders<NgxDomConfettiModule> {\n return {\n ngModule: NgxDomConfettiModule,\n providers: [\n {\n provide: NGX_CONFETTI_GLOBAL_CONFIG,\n useValue: defaultsConfettiConfig,\n },\n NgxDomConfettiService,\n ],\n };\n }\n\n static forChild(): ModuleWithProviders<NgxDomConfettiModule> {\n return {\n ngModule: NgxDomConfettiModule,\n providers: [\n {\n provide: NGX_CONFETTI_GLOBAL_CONFIG,\n useValue: defaultsConfettiConfig,\n },\n NgxDomConfettiService,\n ],\n };\n }\n}\n","import { makeEnvironmentProviders } from '@angular/core';\nimport {\n ConfettiConfig,\n defaultsConfettiConfig,\n NGX_CONFETTI_GLOBAL_CONFIG,\n} from './config';\n\nexport function provideConfetti(config?: ConfettiConfig) {\n return makeEnvironmentProviders([\n {\n provide: NGX_CONFETTI_GLOBAL_CONFIG,\n useValue: config ?? defaultsConfettiConfig,\n },\n ]);\n}\n","/*\n * Public API Surface of ngx-dom-confetti\n */\nexport * from './lib/confetti-directive';\nexport * from './lib/confetti-service';\nexport * from './lib/confetti-component';\nexport * from './lib/confetti-module';\nexport * from './lib/confetti-provider';\nexport * from './lib/config';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngx-dom-confetti",
3
- "version": "0.8.0",
3
+ "version": "0.8.1",
4
4
  "license": "MIT",
5
5
  "keywords": [
6
6
  "dom-confetti",
@@ -1,6 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { InjectionToken, ElementRef, ModuleWithProviders } from '@angular/core';
3
- import { BooleanInput } from '@angular/cdk/coercion';
4
3
  import * as i1 from '@angular/common';
5
4
 
6
5
  interface ConfettiConfig {
@@ -56,15 +55,14 @@ declare class NgxDomConfettiService {
56
55
  }
57
56
 
58
57
  declare class NgxDomConfettiComponent {
59
- private el;
60
- private _confettiRenderer;
61
- private _config;
62
- private _active;
63
- set config(_config: Partial<ConfettiConfig>);
64
- set active(_active: BooleanInput);
58
+ private readonly el;
59
+ private readonly renderer;
60
+ private configSnapshot;
61
+ readonly config: i0.InputSignal<Partial<ConfettiConfig> | null | undefined>;
62
+ readonly active: i0.InputSignalWithTransform<boolean, any>;
65
63
  constructor();
66
64
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxDomConfettiComponent, never>;
67
- static ɵcmp: i0.ɵɵComponentDeclaration<NgxDomConfettiComponent, "ngx-dom-confetti", never, { "config": { "alias": "config"; "required": false; }; "active": { "alias": "active"; "required": false; }; }, {}, never, ["*"], true, never>;
65
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgxDomConfettiComponent, "ngx-dom-confetti", never, { "config": { "alias": "config"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
68
66
  }
69
67
 
70
68
  declare class NgxDomConfettiModule {