ngx-dom-confetti 0.1.0 → 0.2.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.
package/README.md CHANGED
@@ -47,6 +47,8 @@ export class AppModule { }
47
47
 
48
48
  use `ngx-dom-confetti`
49
49
 
50
+ ## component:
51
+
50
52
  ```html
51
53
  <button mat-raised-button color="primary">
52
54
  <ngx-dom-confetti>
@@ -55,6 +57,65 @@ use `ngx-dom-confetti`
55
57
  </button>
56
58
  ```
57
59
 
60
+ ## service
61
+
62
+ ```ts
63
+ @Component({
64
+ selector: 'app-root',
65
+ template: `
66
+ <div class="center">
67
+ <button #btn="matButton" mat-raised-button color="primary" (click)="hitWithService()">
68
+ Hit Me with Service!
69
+ </button>
70
+ </div>
71
+ `,
72
+ styleUrls: ['./app.component.scss']
73
+ })
74
+ export class AppComponent {
75
+
76
+ ngxDomConfettiService: NgxDomConfettiService = inject(NgxDomConfettiService);
77
+
78
+ @ViewChild('btn', { read: ElementRef })
79
+ btn!: ElementRef<HTMLButtonElement>;
80
+
81
+ hitWithService() {
82
+ const el = this.btn.nativeElement.children.item(0) as HTMLElement;
83
+ if (el) {
84
+ this.ngxDomConfettiService.open(el,this.config);
85
+ }
86
+
87
+ }
88
+ }
89
+
90
+ ```
91
+
92
+ ## directive
93
+
94
+ ```ts
95
+ @Component({
96
+ selector: 'app-root',
97
+ template: `
98
+ <div class="center">
99
+ <button mat-raised-button color="primary" (click)="hitWithDirective()">
100
+ Hit Me with Directive!
101
+ </button>
102
+ </div>
103
+ `,
104
+ styleUrls: ['./app.component.scss']
105
+ })
106
+ export class AppComponent {
107
+
108
+ ngxDomConfettiService: NgxDomConfettiService = inject(NgxDomConfettiService);
109
+
110
+ @ViewChild(NgxConfettiDirective) confettiDirective!: NgxConfettiDirective;
111
+
112
+ hitWithDirective() {
113
+ this.confettiDirective?.launch();
114
+ }
115
+ }
116
+ ```
117
+
118
+
58
119
  # license
59
120
 
60
121
  [MIT](https://github.com/damingerdai/ngx-dom-confetti/blob/master/LICENSE)
@@ -0,0 +1,48 @@
1
+ import { coerceBooleanProperty, coerceElement } from '@angular/cdk/coercion';
2
+ import { DOCUMENT } from '@angular/common';
3
+ import { Component, Inject, Input, Optional } from '@angular/core';
4
+ import { ConfettiRenderer } from './confetti-renderer';
5
+ import { NGX_CONFETTI_GLOBAL_CONFIG } from './config';
6
+ import * as i0 from "@angular/core";
7
+ export class NgxDomConfettiComponent {
8
+ set config(_config) {
9
+ if (_config) {
10
+ this._config = Object.assign(this._config, _config);
11
+ }
12
+ }
13
+ set active(_active) {
14
+ this._active = coerceBooleanProperty(_active);
15
+ if (this._active) {
16
+ this._confettiRenderer.launch(coerceElement(this.el), this._config);
17
+ }
18
+ }
19
+ constructor(el, document, globalConfig) {
20
+ this.el = el;
21
+ this._config = {
22
+ ...globalConfig
23
+ };
24
+ this._confettiRenderer = new ConfettiRenderer(document);
25
+ this._active = false;
26
+ }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgxDomConfettiComponent, deps: [{ token: i0.ElementRef }, { token: DOCUMENT, optional: true }, { token: NGX_CONFETTI_GLOBAL_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
28
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgxDomConfettiComponent, selector: "ngx-dom-confetti", inputs: { config: "config", active: "active" }, ngImport: i0, template: ` <ng-content></ng-content> `, isInline: true }); }
29
+ }
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgxDomConfettiComponent, decorators: [{
31
+ type: Component,
32
+ args: [{ selector: 'ngx-dom-confetti', template: ` <ng-content></ng-content> ` }]
33
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: undefined, decorators: [{
34
+ type: Optional
35
+ }, {
36
+ type: Inject,
37
+ args: [DOCUMENT]
38
+ }] }, { type: undefined, decorators: [{
39
+ type: Optional
40
+ }, {
41
+ type: Inject,
42
+ args: [NGX_CONFETTI_GLOBAL_CONFIG]
43
+ }] }]; }, propDecorators: { config: [{
44
+ type: Input
45
+ }], active: [{
46
+ type: Input
47
+ }] } });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmV0dGktY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbmd4LWRvbS1jb25mZXR0aS9zcmMvbGliL2NvbmZldHRpLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBa0IsMEJBQTBCLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBT3RFLE1BQU0sT0FBTyx1QkFBdUI7SUFRbEMsSUFDVyxNQUFNLENBQUMsT0FBZ0M7UUFDaEQsSUFBSSxPQUFPLEVBQUU7WUFDWCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNyRDtJQUNILENBQUM7SUFFRCxJQUNXLE1BQU0sQ0FBQyxPQUFxQjtRQUNyQyxJQUFJLENBQUMsT0FBTyxHQUFHLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3JFO0lBQ0gsQ0FBQztJQUVELFlBQ1UsRUFBYyxFQUNRLFFBQWEsRUFDSyxZQUE2QjtRQUZyRSxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBR3RCLElBQUksQ0FBQyxPQUFPLEdBQUc7WUFDYixHQUFHLFlBQVk7U0FDaEIsQ0FBQztRQUNGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7OEdBaENVLHVCQUF1Qiw0Q0F5QlosUUFBUSw2QkFDUiwwQkFBMEI7a0dBMUJyQyx1QkFBdUIsd0dBSHhCLDZCQUE2Qjs7MkZBRzVCLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxrQkFBa0IsWUFDbEIsNkJBQTZCOzswQkE0QnBDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsUUFBUTs7MEJBQzNCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsMEJBQTBCOzRDQWpCckMsTUFBTTtzQkFEaEIsS0FBSztnQkFRSyxNQUFNO3NCQURoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHksIGNvZXJjZUVsZW1lbnQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIElucHV0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb25mZXR0aVJlbmRlcmVyIH0gZnJvbSAnLi9jb25mZXR0aS1yZW5kZXJlcic7XG5pbXBvcnQgeyBDb25mZXR0aUNvbmZpZywgTkdYX0NPTkZFVFRJX0dMT0JBTF9DT05GSUcgfSBmcm9tICcuL2NvbmZpZyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1kb20tY29uZmV0dGknLFxuICB0ZW1wbGF0ZTogYCA8bmctY29udGVudD48L25nLWNvbnRlbnQ+IGAsXG4gIHN0eWxlczogW10sXG59KVxuZXhwb3J0IGNsYXNzIE5neERvbUNvbmZldHRpQ29tcG9uZW50IHtcblxuICBwcml2YXRlIF9jb25mZXR0aVJlbmRlcmVyOiBDb25mZXR0aVJlbmRlcmVyO1xuXG4gIHByaXZhdGUgX2NvbmZpZzogUGFydGlhbDxDb25mZXR0aUNvbmZpZz47XG5cbiAgcHJpdmF0ZSBfYWN0aXZlOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgY29uZmlnKF9jb25maWc6IFBhcnRpYWw8Q29uZmV0dGlDb25maWc+KSB7XG4gICAgaWYgKF9jb25maWcpIHtcbiAgICAgIHRoaXMuX2NvbmZpZyA9IE9iamVjdC5hc3NpZ24odGhpcy5fY29uZmlnLCBfY29uZmlnKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGFjdGl2ZShfYWN0aXZlOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl9hY3RpdmUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoX2FjdGl2ZSk7XG4gICAgaWYgKHRoaXMuX2FjdGl2ZSkge1xuICAgICAgdGhpcy5fY29uZmV0dGlSZW5kZXJlci5sYXVuY2goY29lcmNlRWxlbWVudCh0aGlzLmVsKSwgdGhpcy5fY29uZmlnKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRE9DVU1FTlQpIGRvY3VtZW50OiBhbnksXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChOR1hfQ09ORkVUVElfR0xPQkFMX0NPTkZJRykgZ2xvYmFsQ29uZmlnPzogQ29uZmV0dGlDb25maWcpIHtcbiAgICB0aGlzLl9jb25maWcgPSB7XG4gICAgICAuLi5nbG9iYWxDb25maWdcbiAgICB9O1xuICAgIHRoaXMuX2NvbmZldHRpUmVuZGVyZXIgPSBuZXcgQ29uZmV0dGlSZW5kZXJlcihkb2N1bWVudCk7XG4gICAgdGhpcy5fYWN0aXZlID0gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,45 @@
1
+ import { coerceElement } from '@angular/cdk/coercion';
2
+ import { DOCUMENT } from '@angular/common';
3
+ import { Directive, Inject, Optional, } from '@angular/core';
4
+ import { ConfettiRenderer } from './confetti-renderer';
5
+ import { defaultsConfettiConfig, NGX_CONFETTI_GLOBAL_CONFIG } from './config';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/cdk/platform";
8
+ export class NgxConfettiDirective {
9
+ constructor(_elementRef, ngZone, platform, document, globalConfig) {
10
+ this._elementRef = _elementRef;
11
+ this.ngZone = ngZone;
12
+ this.platform = platform;
13
+ this._globalConfig = (globalConfig || defaultsConfettiConfig);
14
+ this._confettiRenderer = new ConfettiRenderer(document);
15
+ }
16
+ launch(config) {
17
+ if (!this.platform.isBrowser) {
18
+ return;
19
+ }
20
+ const element = coerceElement(this._elementRef);
21
+ this.ngZone.runOutsideAngular(() => {
22
+ this._confettiRenderer.launch(this._elementRef.nativeElement, config ?? this._globalConfig);
23
+ });
24
+ }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgxConfettiDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.Platform }, { token: DOCUMENT, optional: true }, { token: NGX_CONFETTI_GLOBAL_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
26
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: NgxConfettiDirective, selector: "[confetti], [ngxConfetti]", exportAs: ["ngxConfetti"], ngImport: i0 }); }
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgxConfettiDirective, decorators: [{
29
+ type: Directive,
30
+ args: [{
31
+ selector: '[confetti], [ngxConfetti]',
32
+ exportAs: 'ngxConfetti',
33
+ }]
34
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.Platform }, { type: undefined, decorators: [{
35
+ type: Optional
36
+ }, {
37
+ type: Inject,
38
+ args: [DOCUMENT]
39
+ }] }, { type: undefined, decorators: [{
40
+ type: Optional
41
+ }, {
42
+ type: Inject,
43
+ args: [NGX_CONFETTI_GLOBAL_CONFIG]
44
+ }] }]; } });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmV0dGktZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbmd4LWRvbS1jb25mZXR0aS9zcmMvbGliL2NvbmZldHRpLWRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDTCxTQUFTLEVBRVQsTUFBTSxFQUlOLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQWtCLHNCQUFzQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sVUFBVSxDQUFDOzs7QUFNOUYsTUFBTSxPQUFPLG9CQUFvQjtJQU0vQixZQUNVLFdBQW9DLEVBQ3BDLE1BQWMsRUFDZCxRQUFrQixFQUNJLFFBQWEsRUFDSyxZQUE2QjtRQUpyRSxnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7UUFDcEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGFBQVEsR0FBUixRQUFRLENBQVU7UUFJMUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLFlBQVksSUFBSSxzQkFBc0IsQ0FBbUIsQ0FBQztRQUNoRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBR00sTUFBTSxDQUFDLE1BQWdDO1FBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRTtZQUM1QixPQUFPO1NBQ1I7UUFDRCxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5RixDQUFDLENBQUMsQ0FBQTtJQUVKLENBQUM7OEdBM0JVLG9CQUFvQiwwRkFVVCxRQUFRLDZCQUNSLDBCQUEwQjtrR0FYckMsb0JBQW9COzsyRkFBcEIsb0JBQW9CO2tCQUpoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFFBQVEsRUFBRSxhQUFhO2lCQUN4Qjs7MEJBV0ksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxRQUFROzswQkFDM0IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VFbGVtZW50IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7UGxhdGZvcm19IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29uZmV0dGlSZW5kZXJlciB9IGZyb20gJy4vY29uZmV0dGktcmVuZGVyZXInO1xuaW1wb3J0IHsgQ29uZmV0dGlDb25maWcsIGRlZmF1bHRzQ29uZmV0dGlDb25maWcsIE5HWF9DT05GRVRUSV9HTE9CQUxfQ09ORklHIH0gZnJvbSAnLi9jb25maWcnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY29uZmV0dGldLCBbbmd4Q29uZmV0dGldJyxcbiAgZXhwb3J0QXM6ICduZ3hDb25mZXR0aScsXG59KVxuZXhwb3J0IGNsYXNzIE5neENvbmZldHRpRGlyZWN0aXZlIHtcblxuICBwcml2YXRlIF9nbG9iYWxDb25maWc6IENvbmZldHRpQ29uZmlnO1xuXG4gIHByaXZhdGUgX2NvbmZldHRpUmVuZGVyZXI6IENvbmZldHRpUmVuZGVyZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIHBsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERPQ1VNRU5UKSBkb2N1bWVudDogYW55LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTkdYX0NPTkZFVFRJX0dMT0JBTF9DT05GSUcpIGdsb2JhbENvbmZpZz86IENvbmZldHRpQ29uZmlnLFxuICApIHtcbiAgICB0aGlzLl9nbG9iYWxDb25maWcgPSAoZ2xvYmFsQ29uZmlnIHx8IGRlZmF1bHRzQ29uZmV0dGlDb25maWcpIGFzIENvbmZldHRpQ29uZmlnO1xuICAgIHRoaXMuX2NvbmZldHRpUmVuZGVyZXIgPSBuZXcgQ29uZmV0dGlSZW5kZXJlcihkb2N1bWVudCk7XG4gIH1cblxuXG4gIHB1YmxpYyBsYXVuY2goY29uZmlnPzogUGFydGlhbDxDb25mZXR0aUNvbmZpZz4pIHtcbiAgICBpZiAoIXRoaXMucGxhdGZvcm0uaXNCcm93c2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGVsZW1lbnQgPSBjb2VyY2VFbGVtZW50KHRoaXMuX2VsZW1lbnRSZWYpO1xuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuX2NvbmZldHRpUmVuZGVyZXIubGF1bmNoKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgY29uZmlnID8/IHRoaXMuX2dsb2JhbENvbmZpZyk7XG4gICAgfSlcblxuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,68 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { NgxConfettiDirective } from './confetti-directive';
4
+ import { NgxDomConfettiComponent } from './confetti-component';
5
+ import { NgxDomConfettiService } from './confetti-service';
6
+ import { defaultsConfettiConfig, NGX_CONFETTI_GLOBAL_CONFIG } from './config';
7
+ import * as i0 from "@angular/core";
8
+ export class NgxDomConfettiModule {
9
+ static forRoot() {
10
+ return {
11
+ ngModule: NgxDomConfettiModule,
12
+ providers: [
13
+ {
14
+ provide: NGX_CONFETTI_GLOBAL_CONFIG,
15
+ useValue: defaultsConfettiConfig,
16
+ },
17
+ NgxDomConfettiService,
18
+ ],
19
+ };
20
+ }
21
+ static forChild() {
22
+ return {
23
+ ngModule: NgxDomConfettiModule,
24
+ providers: [
25
+ {
26
+ provide: NGX_CONFETTI_GLOBAL_CONFIG,
27
+ useValue: defaultsConfettiConfig,
28
+ },
29
+ NgxDomConfettiService,
30
+ ],
31
+ };
32
+ }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgxDomConfettiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
34
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: NgxDomConfettiModule, declarations: [NgxDomConfettiComponent,
35
+ NgxConfettiDirective], imports: [CommonModule], exports: [NgxDomConfettiComponent,
36
+ NgxConfettiDirective] }); }
37
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgxDomConfettiModule, providers: [
38
+ {
39
+ provide: NGX_CONFETTI_GLOBAL_CONFIG,
40
+ useValue: defaultsConfettiConfig,
41
+ },
42
+ NgxDomConfettiService,
43
+ ], imports: [CommonModule] }); }
44
+ }
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgxDomConfettiModule, decorators: [{
46
+ type: NgModule,
47
+ args: [{
48
+ declarations: [
49
+ NgxDomConfettiComponent,
50
+ NgxConfettiDirective,
51
+ ],
52
+ imports: [
53
+ CommonModule,
54
+ ],
55
+ providers: [
56
+ {
57
+ provide: NGX_CONFETTI_GLOBAL_CONFIG,
58
+ useValue: defaultsConfettiConfig,
59
+ },
60
+ NgxDomConfettiService,
61
+ ],
62
+ exports: [
63
+ NgxDomConfettiComponent,
64
+ NgxConfettiDirective
65
+ ]
66
+ }]
67
+ }] });
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmV0dGktbW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbmd4LWRvbS1jb25mZXR0aS9zcmMvbGliL2NvbmZldHRpLW1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sVUFBVSxDQUFDOztBQXdCOUUsTUFBTSxPQUFPLG9CQUFvQjtJQUUvQixNQUFNLENBQUMsT0FBTztRQUNaLE9BQU87WUFDTCxRQUFRLEVBQUUsb0JBQW9CO1lBQzlCLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsMEJBQTBCO29CQUNuQyxRQUFRLEVBQUUsc0JBQXNCO2lCQUNqQztnQkFDRCxxQkFBcUI7YUFDdEI7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRO1FBQ2IsT0FBTztZQUNMLFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsU0FBUyxFQUFFO2dCQUNUO29CQUNFLE9BQU8sRUFBRSwwQkFBMEI7b0JBQ25DLFFBQVEsRUFBRSxzQkFBc0I7aUJBQ2pDO2dCQUNELHFCQUFxQjthQUN0QjtTQUNGLENBQUM7SUFDSixDQUFDOzhHQTFCVSxvQkFBb0I7K0dBQXBCLG9CQUFvQixpQkFuQjdCLHVCQUF1QjtZQUN2QixvQkFBb0IsYUFJcEIsWUFBWSxhQVVaLHVCQUF1QjtZQUN2QixvQkFBb0I7K0dBR1gsb0JBQW9CLGFBWnBCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLDBCQUEwQjtnQkFDbkMsUUFBUSxFQUFFLHNCQUFzQjthQUNqQztZQUNELHFCQUFxQjtTQUN0QixZQVJDLFlBQVk7OzJGQWNILG9CQUFvQjtrQkFyQmhDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLHVCQUF1Qjt3QkFDdkIsb0JBQW9CO3FCQUVyQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTtxQkFDYjtvQkFDRCxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLDBCQUEwQjs0QkFDbkMsUUFBUSxFQUFFLHNCQUFzQjt5QkFDakM7d0JBQ0QscUJBQXFCO3FCQUN0QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsdUJBQXVCO3dCQUN2QixvQkFBb0I7cUJBQ3JCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3hDb25mZXR0aURpcmVjdGl2ZSB9IGZyb20gJy4vY29uZmV0dGktZGlyZWN0aXZlJztcbmltcG9ydCB7IE5neERvbUNvbmZldHRpQ29tcG9uZW50IH0gZnJvbSAnLi9jb25mZXR0aS1jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd4RG9tQ29uZmV0dGlTZXJ2aWNlIH0gZnJvbSAnLi9jb25mZXR0aS1zZXJ2aWNlJztcbmltcG9ydCB7IGRlZmF1bHRzQ29uZmV0dGlDb25maWcsIE5HWF9DT05GRVRUSV9HTE9CQUxfQ09ORklHIH0gZnJvbSAnLi9jb25maWcnO1xuXG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIE5neERvbUNvbmZldHRpQ29tcG9uZW50LFxuICAgIE5neENvbmZldHRpRGlyZWN0aXZlLFxuXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HWF9DT05GRVRUSV9HTE9CQUxfQ09ORklHLFxuICAgICAgdXNlVmFsdWU6IGRlZmF1bHRzQ29uZmV0dGlDb25maWcsXG4gICAgfSxcbiAgICBOZ3hEb21Db25mZXR0aVNlcnZpY2UsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBOZ3hEb21Db25mZXR0aUNvbXBvbmVudCxcbiAgICBOZ3hDb25mZXR0aURpcmVjdGl2ZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE5neERvbUNvbmZldHRpTW9kdWxlIHtcblxuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE5neERvbUNvbmZldHRpTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBOZ3hEb21Db25mZXR0aU1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogTkdYX0NPTkZFVFRJX0dMT0JBTF9DT05GSUcsXG4gICAgICAgICAgdXNlVmFsdWU6IGRlZmF1bHRzQ29uZmV0dGlDb25maWcsXG4gICAgICAgIH0sXG4gICAgICAgIE5neERvbUNvbmZldHRpU2VydmljZSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBmb3JDaGlsZCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE5neERvbUNvbmZldHRpTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBOZ3hEb21Db25mZXR0aU1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogTkdYX0NPTkZFVFRJX0dMT0JBTF9DT05GSUcsXG4gICAgICAgICAgdXNlVmFsdWU6IGRlZmF1bHRzQ29uZmV0dGlDb25maWcsXG4gICAgICAgIH0sXG4gICAgICAgIE5neERvbUNvbmZldHRpU2VydmljZSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuIH1cbiJdfQ==
@@ -0,0 +1,104 @@
1
+ import { defaultsConfettiConfig } from './config';
2
+ export class ConfettiRenderer {
3
+ constructor(_document) {
4
+ this._document = _document;
5
+ }
6
+ createElements(elementCount, colors, width, height) {
7
+ const fragment = this._document.createDocumentFragment();
8
+ const elements = Array.from({ length: elementCount }).map((_, index) => {
9
+ const element = this._document.createElement('div');
10
+ const color = colors[index % colors.length];
11
+ element.style.backgroundColor = color;
12
+ element.style.width = width;
13
+ element.style.height = height;
14
+ element.style.position = 'absolute';
15
+ element.style.willChange = 'transform, opacity';
16
+ element.style.visibility = 'hidden';
17
+ fragment.appendChild(element);
18
+ return element;
19
+ });
20
+ return {
21
+ fragment,
22
+ elements,
23
+ };
24
+ }
25
+ randomPhysics(angle, spread, startVelocity, random) {
26
+ const radAngle = angle * (Math.PI / 180);
27
+ const radSpread = spread * (Math.PI / 180);
28
+ return {
29
+ x: 0,
30
+ y: 0,
31
+ z: 0,
32
+ wobble: random() * 10,
33
+ wobbleSpeed: 0.1 + random() * 0.1,
34
+ velocity: startVelocity * 0.5 + random() * startVelocity,
35
+ angle2D: -radAngle + (0.5 * radSpread - random() * radSpread),
36
+ angle3D: -(Math.PI / 4) + random() * (Math.PI / 2),
37
+ tiltAngle: random() * Math.PI,
38
+ tiltAngleSpeed: 0.1 + random() * 0.3,
39
+ };
40
+ }
41
+ updateFetti(fetti, progress, dragFriction, decay) {
42
+ /* eslint-disable no-param-reassign */
43
+ fetti.physics.x += Math.cos(fetti.physics.angle2D) * fetti.physics.velocity;
44
+ fetti.physics.y += Math.sin(fetti.physics.angle2D) * fetti.physics.velocity;
45
+ fetti.physics.z += Math.sin(fetti.physics.angle3D) * fetti.physics.velocity;
46
+ fetti.physics.wobble += fetti.physics.wobbleSpeed;
47
+ // Backward compatibility
48
+ if (decay) {
49
+ fetti.physics.velocity *= decay;
50
+ }
51
+ else {
52
+ fetti.physics.velocity -= fetti.physics.velocity * dragFriction;
53
+ }
54
+ fetti.physics.y += 3;
55
+ fetti.physics.tiltAngle += fetti.physics.tiltAngleSpeed;
56
+ const { x, y, z, tiltAngle, wobble } = fetti.physics;
57
+ const wobbleX = x + 10 * Math.cos(wobble);
58
+ const wobbleY = y + 10 * Math.sin(wobble);
59
+ const transform = `translate3d(${wobbleX}px, ${wobbleY}px, ${z}px) rotate3d(1, 1, 1, ${tiltAngle}rad)`;
60
+ fetti.element.style.visibility = "visible";
61
+ fetti.element.style.transform = transform;
62
+ fetti.element.style.opacity = (1 - progress).toString();
63
+ ;
64
+ /* eslint-enable */
65
+ }
66
+ animate(root, fettis, dragFriction, decay, duration, stagger) {
67
+ let startTime;
68
+ return new Promise(resolve => {
69
+ const update = (time) => {
70
+ if (!startTime)
71
+ startTime = time;
72
+ const elapsed = time - startTime;
73
+ const progress = startTime === time ? 0 : (time - startTime) / duration;
74
+ fettis.slice(0, Math.ceil(elapsed / stagger)).forEach(fetti => {
75
+ this.updateFetti(fetti, progress, dragFriction, decay);
76
+ });
77
+ if (time - startTime < duration) {
78
+ requestAnimationFrame(update);
79
+ }
80
+ else {
81
+ fettis.forEach((fetti) => {
82
+ if (fetti.element.parentNode === root) {
83
+ root.removeChild(fetti.element);
84
+ }
85
+ });
86
+ resolve();
87
+ }
88
+ };
89
+ requestAnimationFrame(update);
90
+ });
91
+ }
92
+ launch(root, config) {
93
+ const { elementCount, colors, width, height, perspective, angle, spread, startVelocity, decay, dragFriction, duration, stagger, random, } = { ...defaultsConfettiConfig, ...config };
94
+ root.style.perspective = perspective;
95
+ const { fragment, elements } = this.createElements(elementCount ?? 50, colors, width, height);
96
+ root.appendChild(fragment);
97
+ const fettis = elements.map((element) => ({
98
+ element,
99
+ physics: this.randomPhysics(angle, spread, startVelocity, random),
100
+ }));
101
+ return this.animate(root, fettis, dragFriction, decay, duration, stagger);
102
+ }
103
+ }
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmV0dGktcmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9uZ3gtZG9tLWNvbmZldHRpL3NyYy9saWIvY29uZmV0dGktcmVuZGVyZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixzQkFBc0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQW9CbEUsTUFBTSxPQUFPLGdCQUFnQjtJQUUzQixZQUFvQixTQUFtQjtRQUFuQixjQUFTLEdBQVQsU0FBUyxDQUFVO0lBQUcsQ0FBQztJQUVuQyxjQUFjLENBQ3BCLFlBQW9CLEVBQ3BCLE1BQWdCLEVBQ2hCLEtBQWEsRUFDYixNQUFjO1FBS2QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3pELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDckUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1lBQ3RDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUM1QixPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7WUFDOUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1lBQ3BDLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLG9CQUFvQixDQUFDO1lBQ2hELE9BQU8sQ0FBQyxLQUFLLENB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RyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3hDLE9BQU87WUFDUCxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLENBQUM7U0FDbEUsQ0FBQyxDQUFDLENBQUM7UUFFSixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1RSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25mZXR0aUNvbmZpZywgZGVmYXVsdHNDb25mZXR0aUNvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcblxuaW50ZXJmYWNlIElQaHlzaWNzIHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIHo6IG51bWJlcjtcbiAgd29iYmxlOiBudW1iZXI7XG4gIHdvYmJsZVNwZWVkOiBudW1iZXI7XG4gIHZlbG9jaXR5OiBudW1iZXI7XG4gIGFuZ2xlMkQ6IG51bWJlcjtcbiAgYW5nbGUzRDogbnVtYmVyO1xuICB0aWx0QW5nbGU6IG51bWJlcjtcbiAgdGlsdEFuZ2xlU3BlZWQ6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIElGZXR0aSB7XG4gIGVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50LFxuICBwaHlzaWNzOiBJUGh5c2ljc1xufVxuXG5leHBvcnQgY2xhc3MgQ29uZmV0dGlSZW5kZXJlciB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZG9jdW1lbnQ6IERvY3VtZW50KSB7fVxuXG4gIHByaXZhdGUgY3JlYXRlRWxlbWVudHMoXG4gICAgZWxlbWVudENvdW50OiBudW1iZXIsXG4gICAgY29sb3JzOiBzdHJpbmdbXSxcbiAgICB3aWR0aDogc3RyaW5nLFxuICAgIGhlaWdodDogc3RyaW5nXG4gICk6IHtcbiAgICBmcmFnbWVudDogRG9jdW1lbnRGcmFnbWVudCxcbiAgICBlbGVtZW50czogSFRNTERpdkVsZW1lbnRbXVxuICAgfSB7XG4gICAgY29uc3QgZnJhZ21lbnQgPSB0aGlzLl9kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gICAgY29uc3QgZWxlbWVudHMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiBlbGVtZW50Q291bnQgfSkubWFwKChfLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgY29uc3QgY29sb3IgPSBjb2xvcnNbaW5kZXggJSBjb2xvcnMubGVuZ3RoXTtcbiAgICAgIGVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gY29sb3I7XG4gICAgICBlbGVtZW50LnN0eWxlLndpZHRoID0gd2lkdGg7XG4gICAgICBlbGVtZW50LnN0eWxlLmhlaWdodCA9IGhlaWdodDtcbiAgICAgIGVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgICAgZWxlbWVudC5zdHlsZS53aWxsQ2hhbmdlID0gJ3RyYW5zZm9ybSwgb3BhY2l0eSc7XG4gICAgICBlbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZnJhZ21lbnQsXG4gICAgICBlbGVtZW50cyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSByYW5kb21QaHlzaWNzKFxuICAgIGFuZ2xlOiBudW1iZXIsXG4gICAgc3ByZWFkOiBudW1iZXIsXG4gICAgc3RhcnRWZWxvY2l0eTogbnVtYmVyLFxuICAgIHJhbmRvbTogKCkgPT4gbnVtYmVyXG4gICk6IElQaHlzaWNzIHtcbiAgICBjb25zdCByYWRBbmdsZSA9IGFuZ2xlICogKE1hdGguUEkgLyAxODApO1xuICAgIGNvbnN0IHJhZFNwcmVhZCA9IHNwcmVhZCAqIChNYXRoLlBJIC8gMTgwKTtcbiAgICByZXR1cm4ge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICB6OiAwLFxuICAgICAgd29iYmxlOiByYW5kb20oKSAqIDEwLFxuICAgICAgd29iYmxlU3BlZWQ6IDAuMSArIHJhbmRvbSgpICogMC4xLFxuICAgICAgdmVsb2NpdHk6IHN0YXJ0VmVsb2NpdHkgKiAwLjUgKyByYW5kb20oKSAqIHN0YXJ0VmVsb2NpdHksXG4gICAgICBhbmdsZTJEOiAtcmFkQW5nbGUgKyAoMC41ICogcmFkU3ByZWFkIC0gcmFuZG9tKCkgKiByYWRTcHJlYWQpLFxuICAgICAgYW5nbGUzRDogLShNYXRoLlBJIC8gNCkgKyByYW5kb20oKSAqIChNYXRoLlBJIC8gMiksXG4gICAgICB0aWx0QW5nbGU6IHJhbmRvbSgpICogTWF0aC5QSSxcbiAgICAgIHRpbHRBbmdsZVNwZWVkOiAwLjEgKyByYW5kb20oKSAqIDAuMyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVGZXR0aShmZXR0aTogSUZldHRpLCBwcm9ncmVzczogbnVtYmVyLCBkcmFnRnJpY3Rpb246IG51bWJlciwgZGVjYXk6IG51bWJlcikge1xuICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXG4gICAgZmV0dGkucGh5c2ljcy54ICs9IE1hdGguY29zKGZldHRpLnBoeXNpY3MuYW5nbGUyRCkgKiBmZXR0aS5waHlzaWNzLnZlbG9jaXR5O1xuICAgIGZldHRpLnBoeXNpY3MueSArPSBNYXRoLnNpbihmZXR0aS5waHlzaWNzLmFuZ2xlMkQpICogZmV0dGkucGh5c2ljcy52ZWxvY2l0eTtcbiAgICBmZXR0aS5waHlzaWNzLnogKz0gTWF0aC5zaW4oZmV0dGkucGh5c2ljcy5hbmdsZTNEKSAqIGZldHRpLnBoeXNpY3MudmVsb2NpdHk7XG4gICAgZmV0dGkucGh5c2ljcy53b2JibGUgKz0gZmV0dGkucGh5c2ljcy53b2JibGVTcGVlZDtcbiAgICAvLyBCYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgaWYgKGRlY2F5KSB7XG4gICAgICBmZXR0aS5waHlzaWNzLnZlbG9jaXR5ICo9IGRlY2F5O1xuICAgIH0gZWxzZSB7XG4gICAgICBmZXR0aS5waHlzaWNzLnZlbG9jaXR5IC09IGZldHRpLnBoeXNpY3MudmVsb2NpdHkgKiBkcmFnRnJpY3Rpb247XG4gICAgfVxuICAgIGZldHRpLnBoeXNpY3MueSArPSAzO1xuICAgIGZldHRpLnBoeXNpY3MudGlsdEFuZ2xlICs9IGZldHRpLnBoeXNpY3MudGlsdEFuZ2xlU3BlZWQ7XG5cbiAgICBjb25zdCB7IHgsIHksIHosIHRpbHRBbmdsZSwgd29iYmxlIH0gPSBmZXR0aS5waHlzaWNzO1xuICAgIGNvbnN0IHdvYmJsZVggPSB4ICsgMTAgKiBNYXRoLmNvcyh3b2JibGUpO1xuICAgIGNvbnN0IHdvYmJsZVkgPSB5ICsgMTAgKiBNYXRoLnNpbih3b2JibGUpO1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IGB0cmFuc2xhdGUzZCgke3dvYmJsZVh9cHgsICR7d29iYmxlWX1weCwgJHt6fXB4KSByb3RhdGUzZCgxLCAxLCAxLCAke3RpbHRBbmdsZX1yYWQpYDtcblxuICAgIGZldHRpLmVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eSA9IFwidmlzaWJsZVwiO1xuICAgIGZldHRpLmVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gdHJhbnNmb3JtO1xuICAgIGZldHRpLmVsZW1lbnQuc3R5bGUub3BhY2l0eSA9ICgxIC0gcHJvZ3Jlc3MpLnRvU3RyaW5nKCk7O1xuICAgIC8qIGVzbGludC1lbmFibGUgKi9cbiAgfVxuXG4gIHByaXZhdGUgYW5pbWF0ZShyb290OiBIVE1MRWxlbWVudCwgZmV0dGlzOiBBcnJheTxJRmV0dGk+LCBkcmFnRnJpY3Rpb246IG51bWJlciwgZGVjYXk6IG51bWJlciwgZHVyYXRpb246IG51bWJlciwgc3RhZ2dlcjogbnVtYmVyKSB7XG4gICAgbGV0IHN0YXJ0VGltZTogbnVtYmVyO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICBjb25zdCB1cGRhdGUgPSAodGltZTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXN0YXJ0VGltZSkgc3RhcnRUaW1lID0gdGltZTtcbiAgICAgICAgICAgIGNvbnN0IGVsYXBzZWQgPSB0aW1lIC0gc3RhcnRUaW1lO1xuICAgICAgICAgICAgY29uc3QgcHJvZ3Jlc3MgPSBzdGFydFRpbWUgPT09IHRpbWUgPyAwIDogKHRpbWUgLSBzdGFydFRpbWUpIC8gZHVyYXRpb247XG4gICAgICAgICAgICBmZXR0aXMuc2xpY2UoMCwgTWF0aC5jZWlsKGVsYXBzZWQgLyBzdGFnZ2VyKSkuZm9yRWFjaChmZXR0aSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVGZXR0aShmZXR0aSwgcHJvZ3Jlc3MsIGRyYWdGcmljdGlvbiwgZGVjYXkpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh0aW1lIC0gc3RhcnRUaW1lIDwgZHVyYXRpb24pIHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodXBkYXRlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZmV0dGlzLmZvckVhY2goKGZldHRpKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoZmV0dGkuZWxlbWVudC5wYXJlbnROb2RlID09PSByb290KSB7XG4gICAgICAgICAgICAgICAgICAgIHJvb3QucmVtb3ZlQ2hpbGQoZmV0dGkuZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSh1cGRhdGUpO1xuICAgIH0pO1xufVxuXG4gIHB1YmxpYyBsYXVuY2gocm9vdDogSFRNTEVsZW1lbnQsIGNvbmZpZz86IFBhcnRpYWw8Q29uZmV0dGlDb25maWc+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qge1xuICAgICAgZWxlbWVudENvdW50LFxuICAgICAgY29sb3JzLFxuICAgICAgd2lkdGgsXG4gICAgICBoZWlnaHQsXG4gICAgICBwZXJzcGVjdGl2ZSxcbiAgICAgIGFuZ2xlLFxuICAgICAgc3ByZWFkLFxuICAgICAgc3RhcnRWZWxvY2l0eSxcbiAgICAgIGRlY2F5LFxuICAgICAgZHJhZ0ZyaWN0aW9uLFxuICAgICAgZHVyYXRpb24sXG4gICAgICBzdGFnZ2VyLFxuICAgICAgcmFuZG9tLFxuICAgIH0gPSB7IC4uLmRlZmF1bHRzQ29uZmV0dGlDb25maWcsIC4uLmNvbmZpZyB9IGFzIENvbmZldHRpQ29uZmlnO1xuICAgIHJvb3Quc3R5bGUucGVyc3BlY3RpdmUgPSBwZXJzcGVjdGl2ZTtcbiAgICBjb25zdCB7IGZyYWdtZW50LCBlbGVtZW50cyB9ID0gdGhpcy5jcmVhdGVFbGVtZW50cyhcbiAgICAgIGVsZW1lbnRDb3VudCA/PyA1MCxcbiAgICAgIGNvbG9ycyxcbiAgICAgIHdpZHRoLFxuICAgICAgaGVpZ2h0XG4gICAgKTtcbiAgICByb290LmFwcGVuZENoaWxkKGZyYWdtZW50KTtcbiAgICBjb25zdCBmZXR0aXMgPSBlbGVtZW50cy5tYXAoKGVsZW1lbnQpID0+ICh7XG4gICAgICBlbGVtZW50LFxuICAgICAgcGh5c2ljczogdGhpcy5yYW5kb21QaHlzaWNzKGFuZ2xlLCBzcHJlYWQsIHN0YXJ0VmVsb2NpdHksIHJhbmRvbSksXG4gICAgfSkpO1xuXG4gICAgcmV0dXJuIHRoaXMuYW5pbWF0ZShyb290LCBmZXR0aXMsIGRyYWdGcmljdGlvbiwgZGVjYXksIGR1cmF0aW9uLCBzdGFnZ2VyKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,29 @@
1
+ import { coerceElement } from '@angular/cdk/coercion';
2
+ import { DOCUMENT } from '@angular/common';
3
+ import { Inject, Injectable, Optional } from '@angular/core';
4
+ import { ConfettiRenderer } from './confetti-renderer';
5
+ import { NGX_CONFETTI_GLOBAL_CONFIG } from './config';
6
+ import * as i0 from "@angular/core";
7
+ export class NgxDomConfettiService {
8
+ constructor(document, globalConfig) {
9
+ this._confettiRenderer = new ConfettiRenderer(document);
10
+ this._globalConfig = globalConfig;
11
+ }
12
+ open(el, config) {
13
+ this._confettiRenderer.launch(coerceElement(el), config ?? this._globalConfig);
14
+ }
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgxDomConfettiService, deps: [{ token: DOCUMENT, optional: true }, { token: NGX_CONFETTI_GLOBAL_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
16
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgxDomConfettiService }); }
17
+ }
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgxDomConfettiService, decorators: [{
19
+ type: Injectable
20
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
21
+ type: Optional
22
+ }, {
23
+ type: Inject,
24
+ args: [DOCUMENT]
25
+ }] }, { type: undefined, decorators: [{
26
+ type: Inject,
27
+ args: [NGX_CONFETTI_GLOBAL_CONFIG]
28
+ }] }]; } });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmV0dGktc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL25neC1kb20tY29uZmV0dGkvc3JjL2xpYi9jb25mZXR0aS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFjLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBa0IsMEJBQTBCLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBR3RFLE1BQU0sT0FBTyxxQkFBcUI7SUFNaEMsWUFDZ0MsUUFBYSxFQUNQLFlBQTRCO1FBRWhFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO0lBQ3BDLENBQUM7SUFFTSxJQUFJLENBQUMsRUFBNEIsRUFBRSxNQUFnQztRQUN4RSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUMzQixhQUFhLENBQUMsRUFBRSxDQUFDLEVBQ2pCLE1BQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxDQUM3QixDQUFDO0lBQ0osQ0FBQzs4R0FuQlUscUJBQXFCLGtCQU9WLFFBQVEsNkJBQ3BCLDBCQUEwQjtrSEFSekIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVOzswQkFRTixRQUFROzswQkFBSSxNQUFNOzJCQUFDLFFBQVE7OzBCQUMzQixNQUFNOzJCQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZXJjZUVsZW1lbnQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29uZmV0dGlSZW5kZXJlciB9IGZyb20gJy4vY29uZmV0dGktcmVuZGVyZXInO1xuaW1wb3J0IHsgQ29uZmV0dGlDb25maWcsIE5HWF9DT05GRVRUSV9HTE9CQUxfQ09ORklHIH0gZnJvbSAnLi9jb25maWcnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmd4RG9tQ29uZmV0dGlTZXJ2aWNlIHtcblxuICBwcml2YXRlIF9jb25mZXR0aVJlbmRlcmVyOiBDb25mZXR0aVJlbmRlcmVyO1xuXG4gIHByaXZhdGUgX2dsb2JhbENvbmZpZzogQ29uZmV0dGlDb25maWc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChET0NVTUVOVCkgZG9jdW1lbnQ6IGFueSxcbiAgICBASW5qZWN0KE5HWF9DT05GRVRUSV9HTE9CQUxfQ09ORklHKSBnbG9iYWxDb25maWc6IENvbmZldHRpQ29uZmlnLFxuICApIHtcbiAgICB0aGlzLl9jb25mZXR0aVJlbmRlcmVyID0gbmV3IENvbmZldHRpUmVuZGVyZXIoZG9jdW1lbnQpO1xuICAgIHRoaXMuX2dsb2JhbENvbmZpZyA9IGdsb2JhbENvbmZpZztcbiAgfVxuXG4gIHB1YmxpYyBvcGVuKGVsOiBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWYsIGNvbmZpZz86IFBhcnRpYWw8Q29uZmV0dGlDb25maWc+KSB7XG4gICAgdGhpcy5fY29uZmV0dGlSZW5kZXJlci5sYXVuY2goXG4gICAgICBjb2VyY2VFbGVtZW50KGVsKSxcbiAgICAgIGNvbmZpZyA/PyB0aGlzLl9nbG9iYWxDb25maWdcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,18 @@
1
+ import { InjectionToken } from "@angular/core";
2
+ export const NGX_CONFETTI_GLOBAL_CONFIG = new InjectionToken('ngx-confetti-global-config');
3
+ const defaultColors = ["#a864fd", "#29cdff", "#78ff44", "#ff718d", "#fdff6a"];
4
+ export const defaultsConfettiConfig = {
5
+ angle: 90,
6
+ spread: 45,
7
+ startVelocity: 45,
8
+ elementCount: 50,
9
+ width: "10px",
10
+ height: "10px",
11
+ perspective: "",
12
+ colors: defaultColors,
13
+ duration: 3000,
14
+ stagger: 0,
15
+ dragFriction: 0.1,
16
+ random: Math.random
17
+ };
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbmd4LWRvbS1jb25mZXR0aS9zcmMvbGliL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBa0IvQyxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLGNBQWMsQ0FDMUQsNEJBQTRCLENBQzdCLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUU5RSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRztJQUNwQyxLQUFLLEVBQUUsRUFBRTtJQUNULE1BQU0sRUFBRSxFQUFFO0lBQ1YsYUFBYSxFQUFFLEVBQUU7SUFDakIsWUFBWSxFQUFFLEVBQUU7SUFDaEIsS0FBSyxFQUFFLE1BQU07SUFDYixNQUFNLEVBQUUsTUFBTTtJQUNkLFdBQVcsRUFBRSxFQUFFO0lBQ2YsTUFBTSxFQUFFLGFBQWE7SUFDckIsUUFBUSxFQUFFLElBQUk7SUFDZCxPQUFPLEVBQUUsQ0FBQztJQUNWLFlBQVksRUFBRSxHQUFHO0lBQ2pCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtDQUNwQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZldHRpQ29uZmlnIHtcbiAgYW5nbGU6IG51bWJlcjtcbiAgc3ByZWFkOiBudW1iZXI7XG4gIHdpZHRoOiBzdHJpbmc7XG4gIGhlaWdodDogc3RyaW5nO1xuICBwZXJzcGVjdGl2ZTogc3RyaW5nO1xuICBkdXJhdGlvbjogbnVtYmVyO1xuICBkcmFnRnJpY3Rpb246IG51bWJlcjtcbiAgc3RhZ2dlcjogbnVtYmVyO1xuICBzdGFydFZlbG9jaXR5OiBudW1iZXI7XG4gIGVsZW1lbnRDb3VudDogbnVtYmVyO1xuICBkZWNheTogbnVtYmVyO1xuICBjb2xvcnM6IHN0cmluZ1tdO1xuICByYW5kb206ICgpID0+IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IE5HWF9DT05GRVRUSV9HTE9CQUxfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPENvbmZldHRpQ29uZmlnPihcbiAgJ25neC1jb25mZXR0aS1nbG9iYWwtY29uZmlnJyxcbik7XG5cbmNvbnN0IGRlZmF1bHRDb2xvcnMgPSBbXCIjYTg2NGZkXCIsIFwiIzI5Y2RmZlwiLCBcIiM3OGZmNDRcIiwgXCIjZmY3MThkXCIsIFwiI2ZkZmY2YVwiXTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRzQ29uZmV0dGlDb25maWcgPSB7XG4gIGFuZ2xlOiA5MCxcbiAgc3ByZWFkOiA0NSxcbiAgc3RhcnRWZWxvY2l0eTogNDUsXG4gIGVsZW1lbnRDb3VudDogNTAsXG4gIHdpZHRoOiBcIjEwcHhcIixcbiAgaGVpZ2h0OiBcIjEwcHhcIixcbiAgcGVyc3BlY3RpdmU6IFwiXCIsXG4gIGNvbG9yczogZGVmYXVsdENvbG9ycyxcbiAgZHVyYXRpb246IDMwMDAsXG4gIHN0YWdnZXI6IDAsXG4gIGRyYWdGcmljdGlvbjogMC4xLFxuICByYW5kb206IE1hdGgucmFuZG9tXG59XG4iXX0=
@@ -0,0 +1,9 @@
1
+ /*
2
+ * Public API Surface of ngx-dom-confetti
3
+ */
4
+ export * from './lib/confetti-directive';
5
+ export * from './lib/confetti-service';
6
+ export * from './lib/confetti-component';
7
+ export * from './lib/confetti-module';
8
+ export * from './lib/config';
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL25neC1kb20tY29uZmV0dGkvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZ3gtZG9tLWNvbmZldHRpXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbmZldHRpLWRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb25mZXR0aS1zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbmZldHRpLWNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb25mZXR0aS1tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29uZmlnJztcbiJdfQ==