@libs-ui/services-notification 0.2.16 → 0.2.17
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/components/base.component.d.ts +7 -7
- package/components/text/text.component.d.ts +2 -2
- package/esm2022/components/base.component.mjs +10 -8
- package/esm2022/components/text/text.component.mjs +23 -20
- package/esm2022/notification.service.mjs +39 -32
- package/fesm2022/libs-ui-services-notification.mjs +67 -55
- package/fesm2022/libs-ui-services-notification.mjs.map +1 -1
- package/notification.service.d.ts +2 -1
- package/package.json +1 -1
|
@@ -1,15 +1,15 @@
|
|
|
1
|
+
import { OnDestroy } from '@angular/core';
|
|
1
2
|
import { Subject } from 'rxjs';
|
|
2
3
|
import { INotificationTextConfig } from '../interfaces/notification';
|
|
3
|
-
import { OnDestroy } from '@angular/core';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class LibUiServiceNotificationBaseComponent implements OnDestroy {
|
|
6
|
-
protected message: string;
|
|
7
|
-
protected interpolateParams: Record<string, unknown>;
|
|
8
|
-
protected title: string;
|
|
9
|
-
protected config: INotificationTextConfig;
|
|
10
|
-
protected removeComponent: () => void;
|
|
11
6
|
protected onDestroy: Subject<void>;
|
|
7
|
+
readonly message: import("@angular/core").InputSignal<string>;
|
|
8
|
+
readonly interpolateParams: import("@angular/core").InputSignal<Record<string, unknown> | undefined>;
|
|
9
|
+
readonly title: import("@angular/core").InputSignal<string>;
|
|
10
|
+
readonly config: import("@angular/core").InputSignal<INotificationTextConfig>;
|
|
11
|
+
readonly removeComponent: import("@angular/core").InputSignal<(component: unknown) => Promise<void>>;
|
|
12
12
|
ngOnDestroy(): void;
|
|
13
13
|
static ɵfac: i0.ɵɵFactoryDeclaration<LibUiServiceNotificationBaseComponent, never>;
|
|
14
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<LibUiServiceNotificationBaseComponent, never, never, {}, {}, never, never, false, never>;
|
|
14
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<LibUiServiceNotificationBaseComponent, never, never, { "message": { "alias": "message"; "required": false; "isSignal": true; }; "interpolateParams": { "alias": "interpolateParams"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "config": { "alias": "config"; "required": false; "isSignal": true; }; "removeComponent": { "alias": "removeComponent"; "required": true; "isSignal": true; }; }, {}, never, never, false, never>;
|
|
15
15
|
}
|
|
@@ -2,8 +2,8 @@ import { OnDestroy, OnInit } from '@angular/core';
|
|
|
2
2
|
import { LibUiServiceNotificationBaseComponent } from '../base.component';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export declare class LibUiServicesComponentsTextComponent extends LibUiServiceNotificationBaseComponent implements OnInit, OnDestroy {
|
|
5
|
-
protected containerClass: string
|
|
6
|
-
protected icon: string
|
|
5
|
+
protected containerClass: import("@angular/core").WritableSignal<string>;
|
|
6
|
+
protected icon: import("@angular/core").WritableSignal<string>;
|
|
7
7
|
private elementRef;
|
|
8
8
|
constructor();
|
|
9
9
|
ngOnInit(): void;
|
|
@@ -1,21 +1,23 @@
|
|
|
1
|
+
import { Directive, input } from '@angular/core';
|
|
1
2
|
import { Subject } from 'rxjs';
|
|
2
|
-
import { Directive } from '@angular/core';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class LibUiServiceNotificationBaseComponent {
|
|
5
|
-
|
|
6
|
-
interpolateParams;
|
|
7
|
-
title;
|
|
8
|
-
config;
|
|
9
|
-
removeComponent;
|
|
5
|
+
/* PROPERTY */
|
|
10
6
|
onDestroy = new Subject();
|
|
7
|
+
/* INPUT */
|
|
8
|
+
message = input('');
|
|
9
|
+
interpolateParams = input();
|
|
10
|
+
title = input('');
|
|
11
|
+
config = input({ type: 'success', timeRemove: 2000 });
|
|
12
|
+
removeComponent = input.required();
|
|
11
13
|
ngOnDestroy() {
|
|
12
14
|
this.onDestroy.next();
|
|
13
15
|
this.onDestroy.complete();
|
|
14
16
|
}
|
|
15
17
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibUiServiceNotificationBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
16
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
18
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: LibUiServiceNotificationBaseComponent, inputs: { message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, interpolateParams: { classPropertyName: "interpolateParams", publicName: "interpolateParams", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, removeComponent: { classPropertyName: "removeComponent", publicName: "removeComponent", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
|
|
17
19
|
}
|
|
18
20
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibUiServiceNotificationBaseComponent, decorators: [{
|
|
19
21
|
type: Directive
|
|
20
22
|
}] });
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL25vdGlmaWNhdGlvbi9zcmMvY29tcG9uZW50cy9iYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFhLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUcvQixNQUFNLE9BQU8scUNBQXFDO0lBQ2hELGNBQWM7SUFDSixTQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUUxQyxXQUFXO0lBQ0YsT0FBTyxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztJQUM1QixpQkFBaUIsR0FBRyxLQUFLLEVBQTJCLENBQUM7SUFDckQsS0FBSyxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztJQUMxQixNQUFNLEdBQUcsS0FBSyxDQUEwQixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDL0UsZUFBZSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXlDLENBQUM7SUFFbkYsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO3dHQWRVLHFDQUFxQzs0RkFBckMscUNBQXFDOzs0RkFBckMscUNBQXFDO2tCQURqRCxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBPbkRlc3Ryb3ksIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJTm90aWZpY2F0aW9uVGV4dENvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvbm90aWZpY2F0aW9uJztcbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIExpYlVpU2VydmljZU5vdGlmaWNhdGlvbkJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAvKiBQUk9QRVJUWSAqL1xuICBwcm90ZWN0ZWQgb25EZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvKiBJTlBVVCAqL1xuICByZWFkb25seSBtZXNzYWdlID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IGludGVycG9sYXRlUGFyYW1zID0gaW5wdXQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KCk7XG4gIHJlYWRvbmx5IHRpdGxlID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IGNvbmZpZyA9IGlucHV0PElOb3RpZmljYXRpb25UZXh0Q29uZmlnPih7IHR5cGU6ICdzdWNjZXNzJywgdGltZVJlbW92ZTogMjAwMCB9KTtcbiAgcmVhZG9ubHkgcmVtb3ZlQ29tcG9uZW50ID0gaW5wdXQucmVxdWlyZWQ8KGNvbXBvbmVudDogdW5rbm93bikgPT4gUHJvbWlzZTx2b2lkPj4oKTtcblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm9uRGVzdHJveS5uZXh0KCk7XG4gICAgdGhpcy5vbkRlc3Ryb3kuY29tcGxldGUoKTtcbiAgfVxufVxuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, ElementRef, inject } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ElementRef, inject, signal } from '@angular/core';
|
|
2
2
|
import { TranslateModule } from '@ngx-translate/core';
|
|
3
3
|
import { fromEvent } from 'rxjs';
|
|
4
4
|
import { take, takeUntil } from 'rxjs/operators';
|
|
@@ -6,52 +6,55 @@ import { LibUiServiceNotificationBaseComponent } from '../base.component';
|
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "@ngx-translate/core";
|
|
8
8
|
export class LibUiServicesComponentsTextComponent extends LibUiServiceNotificationBaseComponent {
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
/* PROPERTY */
|
|
10
|
+
containerClass = signal('');
|
|
11
|
+
icon = signal('');
|
|
12
|
+
/* INJECT */
|
|
11
13
|
elementRef = inject(ElementRef);
|
|
12
14
|
constructor() {
|
|
13
15
|
super();
|
|
14
16
|
}
|
|
15
17
|
ngOnInit() {
|
|
16
|
-
switch (this.config
|
|
18
|
+
switch (this.config().type) {
|
|
17
19
|
case 'success':
|
|
18
|
-
this.containerClass
|
|
19
|
-
this.icon
|
|
20
|
+
this.containerClass.set('libs-ui-toast_success');
|
|
21
|
+
this.icon.set('libs-ui-icon-check-circle-solid');
|
|
20
22
|
break;
|
|
21
23
|
case 'info':
|
|
22
|
-
this.containerClass
|
|
23
|
-
this.icon
|
|
24
|
+
this.containerClass.set('libs-ui-toast_info');
|
|
25
|
+
this.icon.set('libs-ui-icon-tooltip-solid');
|
|
24
26
|
break;
|
|
25
27
|
case 'error':
|
|
26
|
-
this.containerClass
|
|
27
|
-
this.icon
|
|
28
|
+
this.containerClass.set('libs-ui-toast_error');
|
|
29
|
+
this.icon.set('libs-ui-icon-close-circle-solid');
|
|
28
30
|
break;
|
|
29
31
|
case 'warn':
|
|
30
|
-
this.containerClass
|
|
31
|
-
this.icon
|
|
32
|
+
this.containerClass.set('libs-ui-toast_warning');
|
|
33
|
+
this.icon.set('libs-ui-icon-alert-triangle-solid');
|
|
32
34
|
break;
|
|
33
35
|
default:
|
|
34
|
-
this.containerClass
|
|
35
|
-
this.icon
|
|
36
|
+
this.containerClass.set('bg-[#6fd100] libs-ui-toast_success');
|
|
37
|
+
this.icon.set('mo-icn-toast_success');
|
|
36
38
|
}
|
|
37
|
-
const { eventName, callback } = this.config;
|
|
39
|
+
const { eventName, callback } = this.config();
|
|
38
40
|
if (!eventName || !callback) {
|
|
39
41
|
return;
|
|
40
42
|
}
|
|
41
43
|
if (eventName === 'click') {
|
|
42
|
-
this.containerClass
|
|
44
|
+
this.containerClass.update(value => `${value} cursor-pointer`);
|
|
43
45
|
}
|
|
44
46
|
fromEvent(this.elementRef.nativeElement, eventName).pipe(takeUntil(this.onDestroy), take(1)).subscribe(callback);
|
|
45
47
|
}
|
|
48
|
+
/* FUNCTIONS */
|
|
46
49
|
handlerClickClose(e) {
|
|
47
50
|
e.stopPropagation();
|
|
48
|
-
this.removeComponent();
|
|
51
|
+
this.removeComponent()(e);
|
|
49
52
|
}
|
|
50
53
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibUiServicesComponentsTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
51
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibUiServicesComponentsTextComponent, isStandalone: true, selector: "libs_ui-services-notification-components-text", usesInheritance: true, ngImport: i0, template: "<div class=\"libs-ui-toast\"\n [class]=\"containerClass\"\n [style.zIndex]=\"config.zIndex || 2000\">\n <div class=\"flex items-center\">\n <i class=\"{{icon}}\"></i>\n </div>\n <div class=\"flex flex-col w-full\">\n @if (title) {\n
|
|
54
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibUiServicesComponentsTextComponent, isStandalone: true, selector: "libs_ui-services-notification-components-text", usesInheritance: true, ngImport: i0, template: "<div class=\"libs-ui-toast\"\n [class]=\"containerClass()\"\n [style.zIndex]=\"config().zIndex || 2000\">\n <div class=\"flex items-center\">\n <i class=\"{{ icon() }}\"></i>\n </div>\n <div class=\"flex flex-col w-full\">\n @if (title()) {\n <div class=\"libs-ui-font-h5m text-break\"\n [innerHtml]=\"title() | translate \">\n </div>\n }\n @if (message()) {\n <div class=\"text-break\"\n [class.libs-ui-font-h5r]=\"!title()\"\n [class.libs-ui-font-h7r]=\"title()\"\n [class.mt-[4ppx]]=\"title()\"\n [innerHtml]=\"message() | translate: (interpolateParams() || {})\">\n </div>\n }\n </div>\n <div class=\"flex items-center\">\n <i class=\"libs-ui-icon-close mr-0 ml-[8px] cursor-pointer\"\n (click)=\"handlerClickClose($event)\">\n </i>\n </div>\n</div>\n", styles: ["@-webkit-keyframes animation-move{0%{right:-200px;opacity:0}to{right:12px;opacity:1}}@keyframes animation-move{0%{right:-200px;opacity:0}to{right:12px;opacity:1}}.libs-ui-toast{position:fixed;padding:12px 16px;display:flex;width:300px;flex-shrink:0;border-radius:8px;animation:animation-move .3s linear}.libs-ui-toast [class*=libs-ui-icon]{font-size:16px;margin-right:16px}.libs-ui-toast.libs-ui-toast_success{background-color:#e6faf0;color:#00bc62}.libs-ui-toast.libs-ui-toast_success [class*=libs-ui-icon]:before{color:#00bc62}.libs-ui-toast.libs-ui-toast_warning{background-color:#feeee6;color:#f05800}.libs-ui-toast.libs-ui-toast_warning [class*=libs-ui-icon]:before{color:#f05800}.libs-ui-toast.libs-ui-toast_error{background-color:#fdeaec;color:#ee2d41}.libs-ui-toast.libs-ui-toast_error [class*=libs-ui-icon]:before{color:#ee2d41}.libs-ui-toast.libs-ui-toast_info{background-color:#e9f1fe;color:#226ff5}.libs-ui-toast.libs-ui-toast_info [class*=libs-ui-icon]:before{color:#226ff5}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
52
55
|
}
|
|
53
56
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibUiServicesComponentsTextComponent, decorators: [{
|
|
54
57
|
type: Component,
|
|
55
|
-
args: [{ selector: 'libs_ui-services-notification-components-text', standalone: true, imports: [TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"libs-ui-toast\"\n [class]=\"containerClass\"\n [style.zIndex]=\"config.zIndex || 2000\">\n <div class=\"flex items-center\">\n <i class=\"{{icon}}\"></i>\n </div>\n <div class=\"flex flex-col w-full\">\n @if (title) {\n
|
|
58
|
+
args: [{ selector: 'libs_ui-services-notification-components-text', standalone: true, imports: [TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"libs-ui-toast\"\n [class]=\"containerClass()\"\n [style.zIndex]=\"config().zIndex || 2000\">\n <div class=\"flex items-center\">\n <i class=\"{{ icon() }}\"></i>\n </div>\n <div class=\"flex flex-col w-full\">\n @if (title()) {\n <div class=\"libs-ui-font-h5m text-break\"\n [innerHtml]=\"title() | translate \">\n </div>\n }\n @if (message()) {\n <div class=\"text-break\"\n [class.libs-ui-font-h5r]=\"!title()\"\n [class.libs-ui-font-h7r]=\"title()\"\n [class.mt-[4ppx]]=\"title()\"\n [innerHtml]=\"message() | translate: (interpolateParams() || {})\">\n </div>\n }\n </div>\n <div class=\"flex items-center\">\n <i class=\"libs-ui-icon-close mr-0 ml-[8px] cursor-pointer\"\n (click)=\"handlerClickClose($event)\">\n </i>\n </div>\n</div>\n", styles: ["@-webkit-keyframes animation-move{0%{right:-200px;opacity:0}to{right:12px;opacity:1}}@keyframes animation-move{0%{right:-200px;opacity:0}to{right:12px;opacity:1}}.libs-ui-toast{position:fixed;padding:12px 16px;display:flex;width:300px;flex-shrink:0;border-radius:8px;animation:animation-move .3s linear}.libs-ui-toast [class*=libs-ui-icon]{font-size:16px;margin-right:16px}.libs-ui-toast.libs-ui-toast_success{background-color:#e6faf0;color:#00bc62}.libs-ui-toast.libs-ui-toast_success [class*=libs-ui-icon]:before{color:#00bc62}.libs-ui-toast.libs-ui-toast_warning{background-color:#feeee6;color:#f05800}.libs-ui-toast.libs-ui-toast_warning [class*=libs-ui-icon]:before{color:#f05800}.libs-ui-toast.libs-ui-toast_error{background-color:#fdeaec;color:#ee2d41}.libs-ui-toast.libs-ui-toast_error [class*=libs-ui-icon]:before{color:#ee2d41}.libs-ui-toast.libs-ui-toast_info{background-color:#e9f1fe;color:#226ff5}.libs-ui-toast.libs-ui-toast_info [class*=libs-ui-icon]:before{color:#226ff5}\n"] }]
|
|
56
59
|
}], ctorParameters: () => [] });
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL25vdGlmaWNhdGlvbi9zcmMvY29tcG9uZW50cy90ZXh0L3RleHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9zZXJ2aWNlcy9ub3RpZmljYXRpb24vc3JjL2NvbXBvbmVudHMvdGV4dC90ZXh0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFxQixNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7OztBQVcxRSxNQUFNLE9BQU8sb0NBQXFDLFNBQVEscUNBQXFDO0lBQzdGLGNBQWM7SUFDSixjQUFjLEdBQUcsTUFBTSxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLElBQUksR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7SUFFcEMsWUFBWTtJQUNKLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7SUFFdkM7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7SUFFRCxRQUFRO1FBQ04sUUFBUSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0IsS0FBSyxTQUFTO2dCQUNaLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7Z0JBQ2pELE1BQU07WUFFUixLQUFLLE1BQU07Z0JBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUMsQ0FBQztnQkFDNUMsTUFBTTtZQUVSLEtBQUssT0FBTztnQkFDVixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2dCQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO2dCQUNqRCxNQUFNO1lBRVIsS0FBSyxNQUFNO2dCQUNULElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7Z0JBQ25ELE1BQU07WUFFUjtnQkFDRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO2dCQUM5RCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFDRCxNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUU5QyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDNUIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLFNBQVMsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFDRCxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25ILENBQUM7SUFFRCxlQUFlO0lBRUwsaUJBQWlCLENBQUMsQ0FBUTtRQUNsQyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7d0dBdERVLG9DQUFvQzs0RkFBcEMsb0NBQW9DLGdJQ2ZqRCw4MEJBMkJBLHNoQ0RmWSxlQUFlOzs0RkFHZCxvQ0FBb0M7a0JBVGhELFNBQVM7K0JBRUUsK0NBQStDLGNBRzdDLElBQUksV0FDUCxDQUFDLGVBQWUsQ0FBQyxtQkFDVCx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBPbkluaXQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTGliVWlTZXJ2aWNlTm90aWZpY2F0aW9uQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlic191aS1zZXJ2aWNlcy1ub3RpZmljYXRpb24tY29tcG9uZW50cy10ZXh0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90ZXh0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtUcmFuc2xhdGVNb2R1bGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBMaWJVaVNlcnZpY2VzQ29tcG9uZW50c1RleHRDb21wb25lbnQgZXh0ZW5kcyBMaWJVaVNlcnZpY2VOb3RpZmljYXRpb25CYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKiBQUk9QRVJUWSAqL1xuICBwcm90ZWN0ZWQgY29udGFpbmVyQ2xhc3MgPSBzaWduYWw8c3RyaW5nPignJyk7XG4gIHByb3RlY3RlZCBpY29uID0gc2lnbmFsPHN0cmluZz4oJycpO1xuXG4gIC8qIElOSkVDVCAqL1xuICBwcml2YXRlIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZilcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3dpdGNoICh0aGlzLmNvbmZpZygpLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3N1Y2Nlc3MnOlxuICAgICAgICB0aGlzLmNvbnRhaW5lckNsYXNzLnNldCgnbGlicy11aS10b2FzdF9zdWNjZXNzJyk7XG4gICAgICAgIHRoaXMuaWNvbi5zZXQoJ2xpYnMtdWktaWNvbi1jaGVjay1jaXJjbGUtc29saWQnKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2luZm8nOlxuICAgICAgICB0aGlzLmNvbnRhaW5lckNsYXNzLnNldCgnbGlicy11aS10b2FzdF9pbmZvJyk7XG4gICAgICAgIHRoaXMuaWNvbi5zZXQoJ2xpYnMtdWktaWNvbi10b29sdGlwLXNvbGlkJyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgIHRoaXMuY29udGFpbmVyQ2xhc3Muc2V0KCdsaWJzLXVpLXRvYXN0X2Vycm9yJyk7XG4gICAgICAgIHRoaXMuaWNvbi5zZXQoJ2xpYnMtdWktaWNvbi1jbG9zZS1jaXJjbGUtc29saWQnKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3dhcm4nOlxuICAgICAgICB0aGlzLmNvbnRhaW5lckNsYXNzLnNldCgnbGlicy11aS10b2FzdF93YXJuaW5nJyk7XG4gICAgICAgIHRoaXMuaWNvbi5zZXQoJ2xpYnMtdWktaWNvbi1hbGVydC10cmlhbmdsZS1zb2xpZCcpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5jb250YWluZXJDbGFzcy5zZXQoJ2JnLVsjNmZkMTAwXSBsaWJzLXVpLXRvYXN0X3N1Y2Nlc3MnKTtcbiAgICAgICAgdGhpcy5pY29uLnNldCgnbW8taWNuLXRvYXN0X3N1Y2Nlc3MnKTtcbiAgICB9XG4gICAgY29uc3QgeyBldmVudE5hbWUsIGNhbGxiYWNrIH0gPSB0aGlzLmNvbmZpZygpO1xuXG4gICAgaWYgKCFldmVudE5hbWUgfHwgIWNhbGxiYWNrKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChldmVudE5hbWUgPT09ICdjbGljaycpIHtcbiAgICAgIHRoaXMuY29udGFpbmVyQ2xhc3MudXBkYXRlKHZhbHVlID0+IGAke3ZhbHVlfSBjdXJzb3ItcG9pbnRlcmApO1xuICAgIH1cbiAgICBmcm9tRXZlbnQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIGV2ZW50TmFtZSkucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpLCB0YWtlKDEpKS5zdWJzY3JpYmUoY2FsbGJhY2spO1xuICB9XG5cbiAgLyogRlVOQ1RJT05TICovXG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJDbGlja0Nsb3NlKGU6IEV2ZW50KSB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnJlbW92ZUNvbXBvbmVudCgpKGUpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibGlicy11aS10b2FzdFwiXG4gIFtjbGFzc109XCJjb250YWluZXJDbGFzcygpXCJcbiAgW3N0eWxlLnpJbmRleF09XCJjb25maWcoKS56SW5kZXggfHwgMjAwMFwiPlxuICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICA8aSBjbGFzcz1cInt7IGljb24oKSB9fVwiPjwvaT5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHctZnVsbFwiPlxuICAgIEBpZiAodGl0bGUoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cImxpYnMtdWktZm9udC1oNW0gdGV4dC1icmVha1wiXG4gICAgICAgIFtpbm5lckh0bWxdPVwidGl0bGUoKSB8IHRyYW5zbGF0ZSBcIj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKG1lc3NhZ2UoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cInRleHQtYnJlYWtcIlxuICAgICAgICBbY2xhc3MubGlicy11aS1mb250LWg1cl09XCIhdGl0bGUoKVwiXG4gICAgICAgIFtjbGFzcy5saWJzLXVpLWZvbnQtaDdyXT1cInRpdGxlKClcIlxuICAgICAgICBbY2xhc3MubXQtWzRwcHhdXT1cInRpdGxlKClcIlxuICAgICAgICBbaW5uZXJIdG1sXT1cIm1lc3NhZ2UoKSB8IHRyYW5zbGF0ZTogKGludGVycG9sYXRlUGFyYW1zKCkgfHwge30pXCI+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICA8aSBjbGFzcz1cImxpYnMtdWktaWNvbi1jbG9zZSBtci0wIG1sLVs4cHhdIGN1cnNvci1wb2ludGVyXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVyQ2xpY2tDbG9zZSgkZXZlbnQpXCI+XG4gICAgPC9pPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -1,27 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
import { Injectable, inject } from '@angular/core';
|
|
1
|
+
import { Injectable, inject, signal } from '@angular/core';
|
|
3
2
|
import { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';
|
|
4
|
-
import { encrypt, escapeHtml,
|
|
3
|
+
import { UtilsCommunicateMicro, encrypt, escapeHtml, get, isEmbedFrame } from '@libs-ui/utils';
|
|
5
4
|
import { TranslateService } from '@ngx-translate/core';
|
|
6
5
|
import { Observable } from 'rxjs';
|
|
7
6
|
import { LibUiServicesComponentsTextComponent } from './components';
|
|
8
7
|
import * as i0 from "@angular/core";
|
|
9
8
|
export class LibsUiNotificationService {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
/* PROPERTY */
|
|
10
|
+
notificationPermission = signal('default');
|
|
11
|
+
queueMessage = signal(new Array());
|
|
12
|
+
timeoutUpdatePosition = signal(0);
|
|
13
13
|
MAX_QUEUE_MESSAGE = 5;
|
|
14
|
-
isInit = false;
|
|
14
|
+
isInit = signal(false);
|
|
15
|
+
/* INJECT */
|
|
15
16
|
dynamicService = inject(LibsUiDynamicComponentService);
|
|
16
17
|
translateService = inject(TranslateService);
|
|
17
18
|
constructor() {
|
|
18
|
-
this.notificationPermission
|
|
19
|
+
this.notificationPermission.set(this.systemSupportNotification() ? 'default' : 'denied');
|
|
19
20
|
}
|
|
21
|
+
/* FUNCTIONS */
|
|
20
22
|
init(messageNameHandler) {
|
|
21
|
-
if (this.isInit) {
|
|
23
|
+
if (this.isInit()) {
|
|
22
24
|
return;
|
|
23
25
|
}
|
|
24
|
-
this.isInit
|
|
26
|
+
this.isInit.set(true);
|
|
25
27
|
UtilsCommunicateMicro.GetMessage(messageNameHandler).subscribe(e => {
|
|
26
28
|
if (isEmbedFrame()) {
|
|
27
29
|
const dataMessage = e.data.response;
|
|
@@ -51,14 +53,14 @@ export class LibsUiNotificationService {
|
|
|
51
53
|
}
|
|
52
54
|
}
|
|
53
55
|
set Permission(permission) {
|
|
54
|
-
this.notificationPermission
|
|
56
|
+
this.notificationPermission.set(permission);
|
|
55
57
|
}
|
|
56
58
|
systemSpawnNotification(title, options) {
|
|
57
59
|
return new Observable((obs) => {
|
|
58
60
|
if (!this.systemSupportNotification()) {
|
|
59
61
|
obs.complete();
|
|
60
62
|
}
|
|
61
|
-
if (this.notificationPermission !== 'granted') {
|
|
63
|
+
if (this.notificationPermission() !== 'granted') {
|
|
62
64
|
obs.complete();
|
|
63
65
|
}
|
|
64
66
|
const notify = new Notification(title, options);
|
|
@@ -106,7 +108,7 @@ export class LibsUiNotificationService {
|
|
|
106
108
|
this.checkQueueMessage();
|
|
107
109
|
if (interpolateParams && typeof interpolateParams === 'object') {
|
|
108
110
|
Object.keys(interpolateParams).forEach((key) => {
|
|
109
|
-
interpolateParams[key] = escapeHtml(interpolateParams
|
|
111
|
+
interpolateParams[key] = escapeHtml(get(interpolateParams, key));
|
|
110
112
|
});
|
|
111
113
|
}
|
|
112
114
|
if (isEmbedFrame()) {
|
|
@@ -114,47 +116,52 @@ export class LibsUiNotificationService {
|
|
|
114
116
|
return UtilsCommunicateMicro.PostMessageToParent({ type: 'MICRO_SITE_PUSH_MESSAGE_FROM_CHILD', response: encrypt(JSON.stringify({ functionName: config.type, message: messageTranslate, title, timeRemove: config.timeRemove || 2000 })) });
|
|
115
117
|
}
|
|
116
118
|
const component = this.dynamicService.resolveComponentFactory(LibUiServicesComponentsTextComponent);
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
instance.removeComponent = () => this.removeComponent(component);
|
|
119
|
+
component.setInput('title', title);
|
|
120
|
+
component.setInput('message', message);
|
|
121
|
+
component.setInput('interpolateParams', interpolateParams);
|
|
122
|
+
component.setInput('config', config);
|
|
123
|
+
component.setInput('removeComponent', this.removeComponent.bind(this, component));
|
|
123
124
|
const timeout = setTimeout(() => {
|
|
124
125
|
this.removeComponent(component);
|
|
125
126
|
}, config?.timeRemove);
|
|
126
|
-
this.queueMessage.
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
127
|
+
this.queueMessage.update(queue => {
|
|
128
|
+
queue.push({
|
|
129
|
+
component,
|
|
130
|
+
config,
|
|
131
|
+
timeout
|
|
132
|
+
});
|
|
133
|
+
return [...queue];
|
|
130
134
|
});
|
|
131
135
|
this.dynamicService.addToBody(component);
|
|
132
136
|
this.updatePositionMessage();
|
|
133
137
|
}
|
|
134
138
|
removeComponent(component) {
|
|
135
139
|
this.dynamicService.remove(component);
|
|
136
|
-
const indexRemove = this.queueMessage.findIndex(config => config.component === component);
|
|
140
|
+
const indexRemove = this.queueMessage().findIndex(config => config.component === component);
|
|
137
141
|
if (indexRemove !== -1) {
|
|
138
|
-
this.queueMessage.
|
|
142
|
+
this.queueMessage.update(queue => {
|
|
143
|
+
queue.splice(indexRemove, 1);
|
|
144
|
+
return [...queue];
|
|
145
|
+
});
|
|
139
146
|
}
|
|
140
147
|
}
|
|
141
148
|
checkQueueMessage() {
|
|
142
149
|
if (this.queueMessage.length < this.MAX_QUEUE_MESSAGE) {
|
|
143
150
|
return;
|
|
144
151
|
}
|
|
145
|
-
const firstQueue = this.queueMessage.shift();
|
|
152
|
+
const firstQueue = this.queueMessage().shift();
|
|
146
153
|
clearTimeout(firstQueue.timeout);
|
|
147
154
|
this.dynamicService.remove(firstQueue.component);
|
|
148
155
|
this.updatePositionMessage();
|
|
149
156
|
}
|
|
150
157
|
updatePositionMessage() {
|
|
151
|
-
if (!this.queueMessage.length) {
|
|
158
|
+
if (!this.queueMessage().length) {
|
|
152
159
|
return;
|
|
153
160
|
}
|
|
154
|
-
clearTimeout(this.timeoutUpdatePosition);
|
|
155
|
-
this.timeoutUpdatePosition
|
|
161
|
+
clearTimeout(this.timeoutUpdatePosition());
|
|
162
|
+
this.timeoutUpdatePosition.set(setTimeout(() => {
|
|
156
163
|
let topMessage = 12;
|
|
157
|
-
this.queueMessage.forEach((message) => {
|
|
164
|
+
this.queueMessage().forEach((message) => {
|
|
158
165
|
const firstEl = message.component.instance.elementRef.nativeElement.firstElementChild;
|
|
159
166
|
const rect = firstEl.getBoundingClientRect();
|
|
160
167
|
firstEl.style.top = `${topMessage}px`;
|
|
@@ -165,7 +172,7 @@ export class LibsUiNotificationService {
|
|
|
165
172
|
}
|
|
166
173
|
firstEl.style.right = `${right}px`;
|
|
167
174
|
});
|
|
168
|
-
});
|
|
175
|
+
}));
|
|
169
176
|
}
|
|
170
177
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiNotificationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
171
178
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiNotificationService, providedIn: 'root' });
|
|
@@ -176,4 +183,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
176
183
|
providedIn: 'root'
|
|
177
184
|
}]
|
|
178
185
|
}], ctorParameters: () => [] });
|
|
179
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL25vdGlmaWNhdGlvbi9zcmMvbm90aWZpY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBZ0IsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRixPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFPcEUsTUFBTSxPQUFPLHlCQUF5QjtJQUM1QixzQkFBc0IsQ0FBeUI7SUFDL0MsWUFBWSxHQUE4QixFQUFFLENBQUM7SUFDN0MscUJBQXFCLENBQU07SUFDbEIsaUJBQWlCLEdBQVcsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFFZixjQUFjLEdBQUcsTUFBTSxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDdkQsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFcEQ7UUFDRSxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ3hGLENBQUM7SUFFTSxJQUFJLENBQUMsa0JBQWlDO1FBQzNDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLE9BQU87UUFDVCxD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QU8sQ0FBQyxDQUFDLE9BQTJCLEVBQUUsRUFBRTtnQkFDeEQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDdEYsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBRTdDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsVUFBVSxJQUFJLENBQUM7Z0JBQ3RDLFVBQVUsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDO2dCQUUvQyxJQUFJLFlBQVksRUFBRSxFQUFFLENBQUM7b0JBQ25CLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ2IsQ0FBQztnQkFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxHQUFHLEtBQUssSUFBSSxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3dHQTdMVSx5QkFBeUI7NEdBQXpCLHlCQUF5QixjQUh4QixNQUFNOzs0RkFHUCx5QkFBeUI7a0JBSnJDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExpYnNVaUR5bmFtaWNDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSAnQGxpYnMtdWkvc2VydmljZXMtZHluYW1pYy1jb21wb25lbnQnO1xuaW1wb3J0IHsgZW5jcnlwdCwgZXNjYXBlSHRtbCwgaXNFbWJlZEZyYW1lLCBVdGlsc0NvbW11bmljYXRlTWljcm8gfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMaWJVaVNlcnZpY2VzQ29tcG9uZW50c1RleHRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgSU5vdGlmaWNhdGlvblB1c2hGcm9tSUZyYW1lLCBJTm90aWZpY2F0aW9uUXVldWUsIElOb3RpZmljYXRpb25UZXh0Q29uZmlnLCBJTm90aWZpY2F0aW9uVGV4dFB1YmxpY0NvbmZpZyB9IGZyb20gJy4vaW50ZXJmYWNlcy9ub3RpZmljYXRpb24nO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcblxuZXhwb3J0IGNsYXNzIExpYnNVaU5vdGlmaWNhdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIG5vdGlmaWNhdGlvblBlcm1pc3Npb246IE5vdGlmaWNhdGlvblBlcm1pc3Npb247XG4gIHByaXZhdGUgcXVldWVNZXNzYWdlOiBBcnJheTxJTm90aWZpY2F0aW9uUXVldWU+ID0gW107XG4gIHByaXZhdGUgdGltZW91dFVwZGF0ZVBvc2l0aW9uOiBhbnk7XG4gIHByaXZhdGUgcmVhZG9ubHkgTUFYX1FVRVVFX01FU1NBR0U6IG51bWJlciA9IDU7XG4gIHByaXZhdGUgaXNJbml0ID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBkeW5hbWljU2VydmljZSA9IGluamVjdChMaWJzVWlEeW5hbWljQ29tcG9uZW50U2VydmljZSk7XG4gIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblBlcm1pc3Npb24gPSB0aGlzLnN5c3RlbVN1cHBvcnROb3RpZmljYXRpb24oKSA/ICdkZWZhdWx0JyA6ICdkZW5pZWQnO1xuICB9XG5cbiAgcHVibGljIGluaXQobWVzc2FnZU5hbWVIYW5kbGVyOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgaWYgKHRoaXMuaXNJbml0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNJbml0ID0gdHJ1ZTtcbiAgICBVdGlsc0NvbW11bmljYXRlTWljcm8uR2V0TWVzc2FnZShtZXNzYWdlTmFtZUhhbmRsZXIpLnN1YnNjcmliZShlID0+IHtcbiAgICAgIGlmIChpc0VtYmVkRnJhbWUoKSkge1xuICAgICAgICBjb25zdCBkYXRhTWVzc2FnZSA9IGUuZGF0YS5yZXNwb25zZSBhcyBJTm90aWZpY2F0aW9uUHVzaEZyb21JRnJhbWU7XG5cbiAgICAgICAgdGhpcy5zaG93Q29tcFR5cGVUZXh0KGRhdGFNZXNzYWdlLm1lc3NhZ2UsIHVuZGVmaW5lZCwgZGF0YU1lc3NhZ2UudGl0bGUsIHsgdHlwZTogZGF0YU1lc3NhZ2UuZnVuY3Rpb25OYW1lLCB0aW1lUmVtb3ZlOiBkYXRhTWVzc2FnZS50aW1lUmVtb3ZlIHx8IDIwMDAgfSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgVXRpbHNDb21tdW5pY2F0ZU1pY3JvLlBvc3RNZXNzYWdlVG9QYXJlbnQoZS5kYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgVHJhbnNsYXRlU2VydmljZSgpIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlO1xuICB9XG5cbiAgcHJpdmF0ZSBzeXN0ZW1TdXBwb3J0Tm90aWZpY2F0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAnTm90aWZpY2F0aW9uJyBpbiB3aW5kb3c7XG4gIH1cblxuICBwdWJsaWMgc3lzdGVtUmVxdWVzdFBlcm1pc3Npb24oKSB7XG4gICAgaWYgKCF0aGlzLnN5c3RlbVN1cHBvcnROb3RpZmljYXRpb24oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgTm90aWZpY2F0aW9uLnJlcXVlc3RQZXJtaXNzaW9uKCkudGhlbigocGVybWlzc2lvbjogTm90aWZpY2F0aW9uUGVybWlzc2lvbikgPT4gdGhpcy5QZXJtaXNzaW9uID0gcGVybWlzc2lvbik7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFR5cGVFcnJvcikge1xuICAgICAgICBOb3RpZmljYXRpb24ucmVxdWVzdFBlcm1pc3Npb24oKHBlcm1pc3Npb246IE5vdGlmaWNhdGlvblBlcm1pc3Npb24pID0+IHRoaXMuUGVybWlzc2lvbiA9IHBlcm1pc3Npb24pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0IFBlcm1pc3Npb24ocGVybWlzc2lvbjogTm90aWZpY2F0aW9uUGVybWlzc2lvbikge1xuICAgIHRoaXMubm90aWZpY2F0aW9uUGVybWlzc2lvbiA9IHBlcm1pc3Npb247XG4gIH1cblxuICBwdWJsaWMgc3lzdGVtU3Bhd25Ob3RpZmljYXRpb24odGl0bGU6IHN0cmluZywgb3B0aW9ucz86IE5vdGlmaWNhdGlvbk9wdGlvbnMpOiBhbnkge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzOiBhbnkpID0+IHtcbiAgICAgIGlmICghdGhpcy5zeXN0ZW1TdXBwb3J0Tm90aWZpY2F0aW9uKCkpIHtcbiAgICAgICAgb2JzLmNvbXBsZXRlKCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5ub3RpZmljYXRpb25QZXJtaXNzaW9uICE9PSAnZ3JhbnRlZCcpIHtcbiAgICAgICAgb2JzLmNvbXBsZXRlKCk7XG4gICAgICB9XG4gICAgICBjb25zdCBub3RpZnkgPSBuZXcgTm90aWZpY2F0aW9uKHRpdGxlLCBvcHRpb25zKTtcblxuICAgICAgbm90aWZ5Lm9uc2hvdyA9IChlKSA9PiB7XG4gICAgICAgIHJldHVybiBvYnMubmV4dCh7XG4gICAgICAgICAgbm90aWZpY2F0aW9uOiBub3RpZnksXG4gICAgICAgICAgZXZlbnQ6IGVcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgbm90aWZ5Lm9uY2xpY2sgPSAoZSkgPT4ge1xuICAgICAgICBub3RpZnkuY2xvc2UoKTtcbiAgICAgICAgd2luZG93LmZvY3VzKCk7XG5cbiAgICAgICAgcmV0dXJuIG9icy5uZXh0KHtcbiAgICAgICAgICBub3RpZmljYXRpb246IG5vdGlmeSxcbiAgICAgICAgICBldmVudDogZVxuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgICBub3RpZnkub25lcnJvciA9IChlKSA9PiB7XG4gICAgICAgIHJldHVybiBvYnMuZXJyb3Ioe1xuICAgICAgICAgIG5vdGlmaWNhdGlvbjogbm90aWZ5LFxuICAgICAgICAgIGV2ZW50OiBlXG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIG5vdGlmeS5vbmNsb3NlID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gb2JzLmNvbXBsZXRlKCk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNob3dDb21wVHlwZVRleHRTdWNjZXNzKG1lc3NhZ2U6IHN0cmluZywgY29uZmlnPzogSU5vdGlmaWNhdGlvblRleHRQdWJsaWNDb25maWcpIHtcbiAgICB0aGlzLnNob3dDb21wVHlwZVRleHQobWVzc2FnZSwgY29uZmlnPy5pbnRlcnBvbGF0ZVBhcmFtcywgY29uZmlnPy50aXRsZSwgeyB0eXBlOiAnc3VjY2VzcycsIHRpbWVSZW1vdmU6IGNvbmZpZz8udGltZVJlbW92ZSB8fCAzMDAwLCBwb3NpdGlvblJpZ2h0OiBjb25maWc/LnBvc2l0aW9uUmlnaHQsIGV2ZW50TmFtZTogY29uZmlnPy5ldmVudE5hbWUsIGNhbGxiYWNrOiBjb25maWc/LmNhbGxiYWNrIH0pO1xuICB9XG5cbiAgcHVibGljIHNob3dDb21wVHlwZVRleHRFcnJvcihtZXNzYWdlOiBzdHJpbmcsIGNvbmZpZz86IElOb3RpZmljYXRpb25UZXh0UHVibGljQ29uZmlnKSB7XG4gICAgdGhpcy5zaG93Q29tcFR5cGVUZXh0KG1lc3NhZ2UsIGNvbmZpZz8uaW50ZXJwb2xhdGVQYXJhbXMsIGNvbmZpZz8udGl0bGUsIHsgdHlwZTogJ2Vycm9yJywgdGltZVJlbW92ZTogY29uZmlnPy50aW1lUmVtb3ZlIHx8IDMwMDAsIHBvc2l0aW9uUmlnaHQ6IGNvbmZpZz8ucG9zaXRpb25SaWdodCwgZXZlbnROYW1lOiBjb25maWc/LmV2ZW50TmFtZSwgY2FsbGJhY2s6IGNvbmZpZz8uY2FsbGJhY2sgfSk7XG4gIH1cblxuICBwdWJsaWMgc2hvd0NvbXBUeXBlVGV4dEluZm8obWVzc2FnZTogc3RyaW5nLCBjb25maWc/OiBJTm90aWZpY2F0aW9uVGV4dFB1YmxpY0NvbmZpZykge1xuICAgIHRoaXMuc2hvd0NvbXBUeXBlVGV4dChtZXNzYWdlLCBjb25maWc/LmludGVycG9sYXRlUGFyYW1zLCBjb25maWc/LnRpdGxlLCB7IHR5cGU6ICdpbmZvJywgdGltZVJlbW92ZTogY29uZmlnPy50aW1lUmVtb3ZlIHx8IDMwMDAsIHBvc2l0aW9uUmlnaHQ6IGNvbmZpZz8ucG9zaXRpb25SaWdodCwgZXZlbnROYW1lOiBjb25maWc/LmV2ZW50TmFtZSwgY2FsbGJhY2s6IGNvbmZpZz8uY2FsbGJhY2sgfSk7XG4gIH1cblxuICBwdWJsaWMgc2hvd0NvbXBUeXBlVGV4dFdhcm5pbmcobWVzc2FnZTogc3RyaW5nLCBjb25maWc/OiBJTm90aWZpY2F0aW9uVGV4dFB1YmxpY0NvbmZpZykge1xuICAgIHRoaXMuc2hvd0NvbXBUeXBlVGV4dChtZXNzYWdlLCBjb25maWc/LmludGVycG9sYXRlUGFyYW1zLCBjb25maWc/LnRpdGxlLCB7IHR5cGU6ICd3YXJuJywgdGltZVJlbW92ZTogY29uZmlnPy50aW1lUmVtb3ZlIHx8IDMwMDAsIHBvc2l0aW9uUmlnaHQ6IGNvbmZpZz8ucG9zaXRpb25SaWdodCwgZXZlbnROYW1lOiBjb25maWc/LmV2ZW50TmFtZSwgY2FsbGJhY2s6IGNvbmZpZz8uY2FsbGJhY2sgfSk7XG4gIH1cblxuICBwcml2YXRlIHNob3dDb21wVHlwZVRleHQobWVzc2FnZTogc3RyaW5nLCBpbnRlcnBvbGF0ZVBhcmFtcz86IFJlY29yZDxzdHJpbmcsIGFueT4sIHRpdGxlPzogc3RyaW5nLCBjb25maWc6IElOb3RpZmljYXRpb25UZXh0Q29uZmlnID0geyB0eXBlOiAnc3VjY2VzcycsIHRpbWVSZW1vdmU6IDIwMDAgfSk6IHZvaWQge1xuICAgIGlmICghbWVzc2FnZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY2hlY2tRdWV1ZU1lc3NhZ2UoKTtcbiAgICBpZiAoaW50ZXJwb2xhdGVQYXJhbXMgJiYgdHlwZW9mIGludGVycG9sYXRlUGFyYW1zID09PSAnb2JqZWN0Jykge1xuICAgICAgT2JqZWN0LmtleXMoaW50ZXJwb2xhdGVQYXJhbXMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBpbnRlcnBvbGF0ZVBhcmFtc1trZXldID0gZXNjYXBlSHRtbChpbnRlcnBvbGF0ZVBhcmFtc1trZXldKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChpc0VtYmVkRnJhbWUoKSkge1xuICAgICAgY29uc3QgbWVzc2FnZVRyYW5zbGF0ZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KG1lc3NhZ2UsIGludGVycG9sYXRlUGFyYW1zKSBhcyBzdHJpbmc7XG5cbiAgICAgIHJldHVybiBVdGlsc0NvbW11bmljYXRlTWljcm8uUG9zdE1lc3NhZ2VUb1BhcmVudCh7IHR5cGU6ICdNSUNST19TSVRFX1BVU0hfTUVTU0FHRV9GUk9NX0NISUxEJywgcmVzcG9uc2U6IGVuY3J5cHQoSlNPTi5zdHJpbmdpZnkoeyBmdW5jdGlvbk5hbWU6IGNvbmZpZy50eXBlLCBtZXNzYWdlOiBtZXNzYWdlVHJhbnNsYXRlLCB0aXRsZSwgdGltZVJlbW92ZTogY29uZmlnLnRpbWVSZW1vdmUgfHwgMjAwMCB9KSkgfSk7XG4gICAgfVxuICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuZHluYW1pY1NlcnZpY2UucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoTGliVWlTZXJ2aWNlc0NvbXBvbmVudHNUZXh0Q29tcG9uZW50KTtcbiAgICBjb25zdCBpbnN0YW5jZSA9IGNvbXBvbmVudC5pbnN0YW5jZTtcblxuICAgIGluc3RhbmNlLnRpdGxlID0gdGl0bGU7XG4gICAgaW5zdGFuY2UubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgaW5zdGFuY2UuaW50ZXJwb2xhdGVQYXJhbXMgPSBpbnRlcnBvbGF0ZVBhcmFtcztcbiAgICBpbnN0YW5jZS5jb25maWcgPSBjb25maWc7XG4gICAgaW5zdGFuY2UucmVtb3ZlQ29tcG9uZW50ID0gKCkgPT4gdGhpcy5yZW1vdmVDb21wb25lbnQoY29tcG9uZW50KTtcbiAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnJlbW92ZUNvbXBvbmVudChjb21wb25lbnQpO1xuICAgIH0sIGNvbmZpZz8udGltZVJlbW92ZSk7XG5cbiAgICB0aGlzLnF1ZXVlTWVzc2FnZS5wdXNoKHtcbiAgICAgIGNvbXBvbmVudCxcbiAgICAgIGNvbmZpZyxcbiAgICAgIHRpbWVvdXRcbiAgICB9KTtcbiAgICB0aGlzLmR5bmFtaWNTZXJ2aWNlLmFkZFRvQm9keShjb21wb25lbnQpO1xuICAgIHRoaXMudXBkYXRlUG9zaXRpb25NZXNzYWdlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUNvbXBvbmVudChjb21wb25lbnQ6IENvbXBvbmVudFJlZjxhbnk+KSB7XG4gICAgdGhpcy5keW5hbWljU2VydmljZS5yZW1vdmUoY29tcG9uZW50KTtcbiAgICBjb25zdCBpbmRleFJlbW92ZSA9IHRoaXMucXVldWVNZXNzYWdlLmZpbmRJbmRleChjb25maWcgPT4gY29uZmlnLmNvbXBvbmVudCA9PT0gY29tcG9uZW50KTtcblxuICAgIGlmIChpbmRleFJlbW92ZSAhPT0gLTEpIHtcbiAgICAgIHRoaXMucXVldWVNZXNzYWdlLnNwbGljZShpbmRleFJlbW92ZSwgMSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja1F1ZXVlTWVzc2FnZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5xdWV1ZU1lc3NhZ2UubGVuZ3RoIDwgdGhpcy5NQVhfUVVFVUVfTUVTU0FHRSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmaXJzdFF1ZXVlID0gdGhpcy5xdWV1ZU1lc3NhZ2Uuc2hpZnQoKSBhcyBJTm90aWZpY2F0aW9uUXVldWU7XG5cbiAgICBjbGVhclRpbWVvdXQoZmlyc3RRdWV1ZS50aW1lb3V0KTtcbiAgICB0aGlzLmR5bmFtaWNTZXJ2aWNlLnJlbW92ZShmaXJzdFF1ZXVlLmNvbXBvbmVudCk7XG4gICAgdGhpcy51cGRhdGVQb3NpdGlvbk1lc3NhZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUG9zaXRpb25NZXNzYWdlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5xdWV1ZU1lc3NhZ2UubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRVcGRhdGVQb3NpdGlvbik7XG4gICAgdGhpcy50aW1lb3V0VXBkYXRlUG9zaXRpb24gPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGxldCB0b3BNZXNzYWdlID0gMTI7XG5cbiAgICAgIHRoaXMucXVldWVNZXNzYWdlLmZvckVhY2goKG1lc3NhZ2U6IElOb3RpZmljYXRpb25RdWV1ZSkgPT4ge1xuICAgICAgICBjb25zdCBmaXJzdEVsID0gbWVzc2FnZS5jb21wb25lbnQuaW5zdGFuY2UuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkO1xuICAgICAgICBjb25zdCByZWN0ID0gZmlyc3RFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICBmaXJzdEVsLnN0eWxlLnRvcCA9IGAke3RvcE1lc3NhZ2V9cHhgO1xuICAgICAgICB0b3BNZXNzYWdlICs9IHJlY3QuaGVpZ2h0ICsgMTI7XG4gICAgICAgIGxldCByaWdodCA9IG1lc3NhZ2UuY29uZmlnLnBvc2l0aW9uUmlnaHQgPz8gMTI7XG5cbiAgICAgICAgaWYgKGlzRW1iZWRGcmFtZSgpKSB7XG4gICAgICAgICAgcmlnaHQgPSA0MDtcbiAgICAgICAgfVxuICAgICAgICBmaXJzdEVsLnN0eWxlLnJpZ2h0ID0gYCR7cmlnaHR9cHhgO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL25vdGlmaWNhdGlvbi9zcmMvbm90aWZpY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBT3BFLE1BQU0sT0FBTyx5QkFBeUI7SUFDcEMsY0FBYztJQUNOLHNCQUFzQixHQUFHLE1BQU0sQ0FBeUIsU0FBUyxDQUFDLENBQUM7SUFDbkUsWUFBWSxHQUFHLE1BQU0sQ0FBNEIsSUFBSSxLQUFLLEVBQXNCLENBQUMsQ0FBQztJQUNsRixxQkFBcUIsR0FBRyxNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUM7SUFDakMsaUJBQWlCLEdBQVcsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFFeEMsWUFBWTtJQUNKLGNBQWMsR0FBRyxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUN2RCxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUVwRDtRQUNFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENB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RyxHQUFHLEtBQUssSUFBSSxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7d0dBdE1VLHlCQUF5Qjs0R0FBekIseUJBQXlCLGNBSHhCLE1BQU07OzRGQUdQLHlCQUF5QjtrQkFKckMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWYsIEluamVjdGFibGUsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaWJzVWlEeW5hbWljQ29tcG9uZW50U2VydmljZSB9IGZyb20gJ0BsaWJzLXVpL3NlcnZpY2VzLWR5bmFtaWMtY29tcG9uZW50JztcbmltcG9ydCB7IFV0aWxzQ29tbXVuaWNhdGVNaWNybywgZW5jcnlwdCwgZXNjYXBlSHRtbCwgZ2V0LCBpc0VtYmVkRnJhbWUgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMaWJVaVNlcnZpY2VzQ29tcG9uZW50c1RleHRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgSU5vdGlmaWNhdGlvblB1c2hGcm9tSUZyYW1lLCBJTm90aWZpY2F0aW9uUXVldWUsIElOb3RpZmljYXRpb25UZXh0Q29uZmlnLCBJTm90aWZpY2F0aW9uVGV4dFB1YmxpY0NvbmZpZyB9IGZyb20gJy4vaW50ZXJmYWNlcy9ub3RpZmljYXRpb24nO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcblxuZXhwb3J0IGNsYXNzIExpYnNVaU5vdGlmaWNhdGlvblNlcnZpY2Uge1xuICAvKiBQUk9QRVJUWSAqL1xuICBwcml2YXRlIG5vdGlmaWNhdGlvblBlcm1pc3Npb24gPSBzaWduYWw8Tm90aWZpY2F0aW9uUGVybWlzc2lvbj4oJ2RlZmF1bHQnKTtcbiAgcHJpdmF0ZSBxdWV1ZU1lc3NhZ2UgPSBzaWduYWw8QXJyYXk8SU5vdGlmaWNhdGlvblF1ZXVlPj4obmV3IEFycmF5PElOb3RpZmljYXRpb25RdWV1ZT4oKSk7XG4gIHByaXZhdGUgdGltZW91dFVwZGF0ZVBvc2l0aW9uID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgTUFYX1FVRVVFX01FU1NBR0U6IG51bWJlciA9IDU7XG4gIHByaXZhdGUgaXNJbml0ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICAvKiBJTkpFQ1QgKi9cbiAgcHJpdmF0ZSBkeW5hbWljU2VydmljZSA9IGluamVjdChMaWJzVWlEeW5hbWljQ29tcG9uZW50U2VydmljZSk7XG4gIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblBlcm1pc3Npb24uc2V0KHRoaXMuc3lzdGVtU3VwcG9ydE5vdGlmaWNhdGlvbigpID8gJ2RlZmF1bHQnIDogJ2RlbmllZCcpO1xuICB9XG5cbiAgLyogRlVOQ1RJT05TICovXG4gIHB1YmxpYyBpbml0KG1lc3NhZ2VOYW1lSGFuZGxlcjogQXJyYXk8c3RyaW5nPikge1xuICAgIGlmICh0aGlzLmlzSW5pdCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNJbml0LnNldCh0cnVlKTtcbiAgICBVdGlsc0NvbW11bmljYXRlTWljcm8uR2V0TWVzc2FnZShtZXNzYWdlTmFtZUhhbmRsZXIpLnN1YnNjcmliZShlID0+IHtcbiAgICAgIGlmIChpc0VtYmVkRnJhbWUoKSkge1xuICAgICAgICBjb25zdCBkYXRhTWVzc2FnZSA9IGUuZGF0YS5yZXNwb25zZSBhcyBJTm90aWZpY2F0aW9uUHVzaEZyb21JRnJhbWU7XG5cbiAgICAgICAgdGhpcy5zaG93Q29tcFR5cGVUZXh0KGRhdGFNZXNzYWdlLm1lc3NhZ2UsIHVuZGVmaW5lZCwgZGF0YU1lc3NhZ2UudGl0bGUsIHsgdHlwZTogZGF0YU1lc3NhZ2UuZnVuY3Rpb25OYW1lLCB0aW1lUmVtb3ZlOiBkYXRhTWVzc2FnZS50aW1lUmVtb3ZlIHx8IDIwMDAgfSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgVXRpbHNDb21tdW5pY2F0ZU1pY3JvLlBvc3RNZXNzYWdlVG9QYXJlbnQoZS5kYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgVHJhbnNsYXRlU2VydmljZSgpIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlO1xuICB9XG5cbiAgcHJpdmF0ZSBzeXN0ZW1TdXBwb3J0Tm90aWZpY2F0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAnTm90aWZpY2F0aW9uJyBpbiB3aW5kb3c7XG4gIH1cblxuICBwdWJsaWMgc3lzdGVtUmVxdWVzdFBlcm1pc3Npb24oKSB7XG4gICAgaWYgKCF0aGlzLnN5c3RlbVN1cHBvcnROb3RpZmljYXRpb24oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgTm90aWZpY2F0aW9uLnJlcXVlc3RQZXJtaXNzaW9uKCkudGhlbigocGVybWlzc2lvbjogTm90aWZpY2F0aW9uUGVybWlzc2lvbikgPT4gdGhpcy5QZXJtaXNzaW9uID0gcGVybWlzc2lvbik7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFR5cGVFcnJvcikge1xuICAgICAgICBOb3RpZmljYXRpb24ucmVxdWVzdFBlcm1pc3Npb24oKHBlcm1pc3Npb246IE5vdGlmaWNhdGlvblBlcm1pc3Npb24pID0+IHRoaXMuUGVybWlzc2lvbiA9IHBlcm1pc3Npb24pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0IFBlcm1pc3Npb24ocGVybWlzc2lvbjogTm90aWZpY2F0aW9uUGVybWlzc2lvbikge1xuICAgIHRoaXMubm90aWZpY2F0aW9uUGVybWlzc2lvbi5zZXQocGVybWlzc2lvbik7XG4gIH1cblxuICBwdWJsaWMgc3lzdGVtU3Bhd25Ob3RpZmljYXRpb24odGl0bGU6IHN0cmluZywgb3B0aW9ucz86IE5vdGlmaWNhdGlvbk9wdGlvbnMpOiBPYnNlcnZhYmxlPHVua25vd24+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9icykgPT4ge1xuICAgICAgaWYgKCF0aGlzLnN5c3RlbVN1cHBvcnROb3RpZmljYXRpb24oKSkge1xuICAgICAgICBvYnMuY29tcGxldGUoKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5vdGlmaWNhdGlvblBlcm1pc3Npb24oKSAhPT0gJ2dyYW50ZWQnKSB7XG4gICAgICAgIG9icy5jb21wbGV0ZSgpO1xuICAgICAgfVxuICAgICAgY29uc3Qgbm90aWZ5ID0gbmV3IE5vdGlmaWNhdGlvbih0aXRsZSwgb3B0aW9ucyk7XG5cbiAgICAgIG5vdGlmeS5vbnNob3cgPSAoZSkgPT4ge1xuICAgICAgICByZXR1cm4gb2JzLm5leHQoe1xuICAgICAgICAgIG5vdGlmaWNhdGlvbjogbm90aWZ5LFxuICAgICAgICAgIGV2ZW50OiBlXG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIG5vdGlmeS5vbmNsaWNrID0gKGUpID0+IHtcbiAgICAgICAgbm90aWZ5LmNsb3NlKCk7XG4gICAgICAgIHdpbmRvdy5mb2N1cygpO1xuXG4gICAgICAgIHJldHVybiBvYnMubmV4dCh7XG4gICAgICAgICAgbm90aWZpY2F0aW9uOiBub3RpZnksXG4gICAgICAgICAgZXZlbnQ6IGVcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgbm90aWZ5Lm9uZXJyb3IgPSAoZSkgPT4ge1xuICAgICAgICByZXR1cm4gb2JzLmVycm9yKHtcbiAgICAgICAgICBub3RpZmljYXRpb246IG5vdGlmeSxcbiAgICAgICAgICBldmVudDogZVxuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgICBub3RpZnkub25jbG9zZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIG9icy5jb21wbGV0ZSgpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93Q29tcFR5cGVUZXh0U3VjY2VzcyhtZXNzYWdlOiBzdHJpbmcsIGNvbmZpZz86IElOb3RpZmljYXRpb25UZXh0UHVibGljQ29uZmlnKSB7XG4gICAgdGhpcy5zaG93Q29tcFR5cGVUZXh0KG1lc3NhZ2UsIGNvbmZpZz8uaW50ZXJwb2xhdGVQYXJhbXMsIGNvbmZpZz8udGl0bGUsIHsgdHlwZTogJ3N1Y2Nlc3MnLCB0aW1lUmVtb3ZlOiBjb25maWc/LnRpbWVSZW1vdmUgfHwgMzAwMCwgcG9zaXRpb25SaWdodDogY29uZmlnPy5wb3NpdGlvblJpZ2h0LCBldmVudE5hbWU6IGNvbmZpZz8uZXZlbnROYW1lLCBjYWxsYmFjazogY29uZmlnPy5jYWxsYmFjayB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93Q29tcFR5cGVUZXh0RXJyb3IobWVzc2FnZTogc3RyaW5nLCBjb25maWc/OiBJTm90aWZpY2F0aW9uVGV4dFB1YmxpY0NvbmZpZykge1xuICAgIHRoaXMuc2hvd0NvbXBUeXBlVGV4dChtZXNzYWdlLCBjb25maWc/LmludGVycG9sYXRlUGFyYW1zLCBjb25maWc/LnRpdGxlLCB7IHR5cGU6ICdlcnJvcicsIHRpbWVSZW1vdmU6IGNvbmZpZz8udGltZVJlbW92ZSB8fCAzMDAwLCBwb3NpdGlvblJpZ2h0OiBjb25maWc/LnBvc2l0aW9uUmlnaHQsIGV2ZW50TmFtZTogY29uZmlnPy5ldmVudE5hbWUsIGNhbGxiYWNrOiBjb25maWc/LmNhbGxiYWNrIH0pO1xuICB9XG5cbiAgcHVibGljIHNob3dDb21wVHlwZVRleHRJbmZvKG1lc3NhZ2U6IHN0cmluZywgY29uZmlnPzogSU5vdGlmaWNhdGlvblRleHRQdWJsaWNDb25maWcpIHtcbiAgICB0aGlzLnNob3dDb21wVHlwZVRleHQobWVzc2FnZSwgY29uZmlnPy5pbnRlcnBvbGF0ZVBhcmFtcywgY29uZmlnPy50aXRsZSwgeyB0eXBlOiAnaW5mbycsIHRpbWVSZW1vdmU6IGNvbmZpZz8udGltZVJlbW92ZSB8fCAzMDAwLCBwb3NpdGlvblJpZ2h0OiBjb25maWc/LnBvc2l0aW9uUmlnaHQsIGV2ZW50TmFtZTogY29uZmlnPy5ldmVudE5hbWUsIGNhbGxiYWNrOiBjb25maWc/LmNhbGxiYWNrIH0pO1xuICB9XG5cbiAgcHVibGljIHNob3dDb21wVHlwZVRleHRXYXJuaW5nKG1lc3NhZ2U6IHN0cmluZywgY29uZmlnPzogSU5vdGlmaWNhdGlvblRleHRQdWJsaWNDb25maWcpIHtcbiAgICB0aGlzLnNob3dDb21wVHlwZVRleHQobWVzc2FnZSwgY29uZmlnPy5pbnRlcnBvbGF0ZVBhcmFtcywgY29uZmlnPy50aXRsZSwgeyB0eXBlOiAnd2FybicsIHRpbWVSZW1vdmU6IGNvbmZpZz8udGltZVJlbW92ZSB8fCAzMDAwLCBwb3NpdGlvblJpZ2h0OiBjb25maWc/LnBvc2l0aW9uUmlnaHQsIGV2ZW50TmFtZTogY29uZmlnPy5ldmVudE5hbWUsIGNhbGxiYWNrOiBjb25maWc/LmNhbGxiYWNrIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93Q29tcFR5cGVUZXh0KG1lc3NhZ2U6IHN0cmluZywgaW50ZXJwb2xhdGVQYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGl0bGU/OiBzdHJpbmcsIGNvbmZpZzogSU5vdGlmaWNhdGlvblRleHRDb25maWcgPSB7IHR5cGU6ICdzdWNjZXNzJywgdGltZVJlbW92ZTogMjAwMCB9KTogdm9pZCB7XG4gICAgaWYgKCFtZXNzYWdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jaGVja1F1ZXVlTWVzc2FnZSgpO1xuICAgIGlmIChpbnRlcnBvbGF0ZVBhcmFtcyAmJiB0eXBlb2YgaW50ZXJwb2xhdGVQYXJhbXMgPT09ICdvYmplY3QnKSB7XG4gICAgICBPYmplY3Qua2V5cyhpbnRlcnBvbGF0ZVBhcmFtcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIGludGVycG9sYXRlUGFyYW1zW2tleV0gPSBlc2NhcGVIdG1sKGdldChpbnRlcnBvbGF0ZVBhcmFtcywga2V5KSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoaXNFbWJlZEZyYW1lKCkpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2VUcmFuc2xhdGUgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChtZXNzYWdlLCBpbnRlcnBvbGF0ZVBhcmFtcykgYXMgc3RyaW5nO1xuXG4gICAgICByZXR1cm4gVXRpbHNDb21tdW5pY2F0ZU1pY3JvLlBvc3RNZXNzYWdlVG9QYXJlbnQoeyB0eXBlOiAnTUlDUk9fU0lURV9QVVNIX01FU1NBR0VfRlJPTV9DSElMRCcsIHJlc3BvbnNlOiBlbmNyeXB0KEpTT04uc3RyaW5naWZ5KHsgZnVuY3Rpb25OYW1lOiBjb25maWcudHlwZSwgbWVzc2FnZTogbWVzc2FnZVRyYW5zbGF0ZSwgdGl0bGUsIHRpbWVSZW1vdmU6IGNvbmZpZy50aW1lUmVtb3ZlIHx8IDIwMDAgfSkpIH0pO1xuICAgIH1cbiAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmR5bmFtaWNTZXJ2aWNlLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KExpYlVpU2VydmljZXNDb21wb25lbnRzVGV4dENvbXBvbmVudCk7XG5cbiAgICBjb21wb25lbnQuc2V0SW5wdXQoJ3RpdGxlJywgdGl0bGUpO1xuICAgIGNvbXBvbmVudC5zZXRJbnB1dCgnbWVzc2FnZScsIG1lc3NhZ2UpO1xuICAgIGNvbXBvbmVudC5zZXRJbnB1dCgnaW50ZXJwb2xhdGVQYXJhbXMnLCBpbnRlcnBvbGF0ZVBhcmFtcyk7XG4gICAgY29tcG9uZW50LnNldElucHV0KCdjb25maWcnLCBjb25maWcpO1xuICAgIGNvbXBvbmVudC5zZXRJbnB1dCgncmVtb3ZlQ29tcG9uZW50JywgdGhpcy5yZW1vdmVDb21wb25lbnQuYmluZCh0aGlzLCBjb21wb25lbnQpKTtcbiAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnJlbW92ZUNvbXBvbmVudChjb21wb25lbnQpO1xuICAgIH0sIGNvbmZpZz8udGltZVJlbW92ZSk7XG5cbiAgICB0aGlzLnF1ZXVlTWVzc2FnZS51cGRhdGUocXVldWUgPT4ge1xuICAgICAgcXVldWUucHVzaCh7XG4gICAgICAgIGNvbXBvbmVudCxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICB0aW1lb3V0XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIFsuLi5xdWV1ZV07XG4gICAgfSk7XG4gICAgdGhpcy5keW5hbWljU2VydmljZS5hZGRUb0JvZHkoY29tcG9uZW50KTtcbiAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uTWVzc2FnZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVDb21wb25lbnQoY29tcG9uZW50OiBDb21wb25lbnRSZWY8dW5rbm93bj4pIHtcbiAgICB0aGlzLmR5bmFtaWNTZXJ2aWNlLnJlbW92ZShjb21wb25lbnQpO1xuICAgIGNvbnN0IGluZGV4UmVtb3ZlID0gdGhpcy5xdWV1ZU1lc3NhZ2UoKS5maW5kSW5kZXgoY29uZmlnID0+IGNvbmZpZy5jb21wb25lbnQgPT09IGNvbXBvbmVudCk7XG5cbiAgICBpZiAoaW5kZXhSZW1vdmUgIT09IC0xKSB7XG4gICAgICB0aGlzLnF1ZXVlTWVzc2FnZS51cGRhdGUocXVldWUgPT4ge1xuICAgICAgICBxdWV1ZS5zcGxpY2UoaW5kZXhSZW1vdmUsIDEpO1xuICAgICAgICByZXR1cm4gWy4uLnF1ZXVlXTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tRdWV1ZU1lc3NhZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucXVldWVNZXNzYWdlLmxlbmd0aCA8IHRoaXMuTUFYX1FVRVVFX01FU1NBR0UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZmlyc3RRdWV1ZSA9IHRoaXMucXVldWVNZXNzYWdlKCkuc2hpZnQoKSBhcyBJTm90aWZpY2F0aW9uUXVldWU7XG5cbiAgICBjbGVhclRpbWVvdXQoZmlyc3RRdWV1ZS50aW1lb3V0KTtcbiAgICB0aGlzLmR5bmFtaWNTZXJ2aWNlLnJlbW92ZShmaXJzdFF1ZXVlLmNvbXBvbmVudCk7XG4gICAgdGhpcy51cGRhdGVQb3NpdGlvbk1lc3NhZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUG9zaXRpb25NZXNzYWdlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5xdWV1ZU1lc3NhZ2UoKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dFVwZGF0ZVBvc2l0aW9uKCkpO1xuICAgIHRoaXMudGltZW91dFVwZGF0ZVBvc2l0aW9uLnNldChzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGxldCB0b3BNZXNzYWdlID0gMTI7XG5cbiAgICAgIHRoaXMucXVldWVNZXNzYWdlKCkuZm9yRWFjaCgobWVzc2FnZTogSU5vdGlmaWNhdGlvblF1ZXVlKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpcnN0RWwgPSBtZXNzYWdlLmNvbXBvbmVudC5pbnN0YW5jZS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgICAgIGNvbnN0IHJlY3QgPSBmaXJzdEVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGZpcnN0RWwuc3R5bGUudG9wID0gYCR7dG9wTWVzc2FnZX1weGA7XG4gICAgICAgIHRvcE1lc3NhZ2UgKz0gcmVjdC5oZWlnaHQgKyAxMjtcbiAgICAgICAgbGV0IHJpZ2h0ID0gbWVzc2FnZS5jb25maWcucG9zaXRpb25SaWdodCA/PyAxMjtcblxuICAgICAgICBpZiAoaXNFbWJlZEZyYW1lKCkpIHtcbiAgICAgICAgICByaWdodCA9IDQwO1xuICAgICAgICB9XG4gICAgICAgIGZpcnN0RWwuc3R5bGUucmlnaHQgPSBgJHtyaWdodH1weGA7XG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,97 +1,104 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Directive, inject, ElementRef, Component, ChangeDetectionStrategy, Injectable } from '@angular/core';
|
|
2
|
+
import { input, Directive, signal, inject, ElementRef, Component, ChangeDetectionStrategy, Injectable } from '@angular/core';
|
|
3
3
|
import { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';
|
|
4
|
-
import { UtilsCommunicateMicro, isEmbedFrame, escapeHtml, encrypt } from '@libs-ui/utils';
|
|
4
|
+
import { UtilsCommunicateMicro, isEmbedFrame, escapeHtml, get, encrypt } from '@libs-ui/utils';
|
|
5
5
|
import * as i1 from '@ngx-translate/core';
|
|
6
6
|
import { TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
7
7
|
import { Subject, fromEvent, Observable } from 'rxjs';
|
|
8
8
|
import { takeUntil, take } from 'rxjs/operators';
|
|
9
9
|
|
|
10
10
|
class LibUiServiceNotificationBaseComponent {
|
|
11
|
-
|
|
12
|
-
interpolateParams;
|
|
13
|
-
title;
|
|
14
|
-
config;
|
|
15
|
-
removeComponent;
|
|
11
|
+
/* PROPERTY */
|
|
16
12
|
onDestroy = new Subject();
|
|
13
|
+
/* INPUT */
|
|
14
|
+
message = input('');
|
|
15
|
+
interpolateParams = input();
|
|
16
|
+
title = input('');
|
|
17
|
+
config = input({ type: 'success', timeRemove: 2000 });
|
|
18
|
+
removeComponent = input.required();
|
|
17
19
|
ngOnDestroy() {
|
|
18
20
|
this.onDestroy.next();
|
|
19
21
|
this.onDestroy.complete();
|
|
20
22
|
}
|
|
21
23
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibUiServiceNotificationBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
22
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
24
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: LibUiServiceNotificationBaseComponent, inputs: { message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, interpolateParams: { classPropertyName: "interpolateParams", publicName: "interpolateParams", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, removeComponent: { classPropertyName: "removeComponent", publicName: "removeComponent", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
|
|
23
25
|
}
|
|
24
26
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibUiServiceNotificationBaseComponent, decorators: [{
|
|
25
27
|
type: Directive
|
|
26
28
|
}] });
|
|
27
29
|
|
|
28
30
|
class LibUiServicesComponentsTextComponent extends LibUiServiceNotificationBaseComponent {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
+
/* PROPERTY */
|
|
32
|
+
containerClass = signal('');
|
|
33
|
+
icon = signal('');
|
|
34
|
+
/* INJECT */
|
|
31
35
|
elementRef = inject(ElementRef);
|
|
32
36
|
constructor() {
|
|
33
37
|
super();
|
|
34
38
|
}
|
|
35
39
|
ngOnInit() {
|
|
36
|
-
switch (this.config
|
|
40
|
+
switch (this.config().type) {
|
|
37
41
|
case 'success':
|
|
38
|
-
this.containerClass
|
|
39
|
-
this.icon
|
|
42
|
+
this.containerClass.set('libs-ui-toast_success');
|
|
43
|
+
this.icon.set('libs-ui-icon-check-circle-solid');
|
|
40
44
|
break;
|
|
41
45
|
case 'info':
|
|
42
|
-
this.containerClass
|
|
43
|
-
this.icon
|
|
46
|
+
this.containerClass.set('libs-ui-toast_info');
|
|
47
|
+
this.icon.set('libs-ui-icon-tooltip-solid');
|
|
44
48
|
break;
|
|
45
49
|
case 'error':
|
|
46
|
-
this.containerClass
|
|
47
|
-
this.icon
|
|
50
|
+
this.containerClass.set('libs-ui-toast_error');
|
|
51
|
+
this.icon.set('libs-ui-icon-close-circle-solid');
|
|
48
52
|
break;
|
|
49
53
|
case 'warn':
|
|
50
|
-
this.containerClass
|
|
51
|
-
this.icon
|
|
54
|
+
this.containerClass.set('libs-ui-toast_warning');
|
|
55
|
+
this.icon.set('libs-ui-icon-alert-triangle-solid');
|
|
52
56
|
break;
|
|
53
57
|
default:
|
|
54
|
-
this.containerClass
|
|
55
|
-
this.icon
|
|
58
|
+
this.containerClass.set('bg-[#6fd100] libs-ui-toast_success');
|
|
59
|
+
this.icon.set('mo-icn-toast_success');
|
|
56
60
|
}
|
|
57
|
-
const { eventName, callback } = this.config;
|
|
61
|
+
const { eventName, callback } = this.config();
|
|
58
62
|
if (!eventName || !callback) {
|
|
59
63
|
return;
|
|
60
64
|
}
|
|
61
65
|
if (eventName === 'click') {
|
|
62
|
-
this.containerClass
|
|
66
|
+
this.containerClass.update(value => `${value} cursor-pointer`);
|
|
63
67
|
}
|
|
64
68
|
fromEvent(this.elementRef.nativeElement, eventName).pipe(takeUntil(this.onDestroy), take(1)).subscribe(callback);
|
|
65
69
|
}
|
|
70
|
+
/* FUNCTIONS */
|
|
66
71
|
handlerClickClose(e) {
|
|
67
72
|
e.stopPropagation();
|
|
68
|
-
this.removeComponent();
|
|
73
|
+
this.removeComponent()(e);
|
|
69
74
|
}
|
|
70
75
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibUiServicesComponentsTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
71
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibUiServicesComponentsTextComponent, isStandalone: true, selector: "libs_ui-services-notification-components-text", usesInheritance: true, ngImport: i0, template: "<div class=\"libs-ui-toast\"\n [class]=\"containerClass\"\n [style.zIndex]=\"config.zIndex || 2000\">\n <div class=\"flex items-center\">\n <i class=\"{{icon}}\"></i>\n </div>\n <div class=\"flex flex-col w-full\">\n @if (title) {\n
|
|
76
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibUiServicesComponentsTextComponent, isStandalone: true, selector: "libs_ui-services-notification-components-text", usesInheritance: true, ngImport: i0, template: "<div class=\"libs-ui-toast\"\n [class]=\"containerClass()\"\n [style.zIndex]=\"config().zIndex || 2000\">\n <div class=\"flex items-center\">\n <i class=\"{{ icon() }}\"></i>\n </div>\n <div class=\"flex flex-col w-full\">\n @if (title()) {\n <div class=\"libs-ui-font-h5m text-break\"\n [innerHtml]=\"title() | translate \">\n </div>\n }\n @if (message()) {\n <div class=\"text-break\"\n [class.libs-ui-font-h5r]=\"!title()\"\n [class.libs-ui-font-h7r]=\"title()\"\n [class.mt-[4ppx]]=\"title()\"\n [innerHtml]=\"message() | translate: (interpolateParams() || {})\">\n </div>\n }\n </div>\n <div class=\"flex items-center\">\n <i class=\"libs-ui-icon-close mr-0 ml-[8px] cursor-pointer\"\n (click)=\"handlerClickClose($event)\">\n </i>\n </div>\n</div>\n", styles: ["@-webkit-keyframes animation-move{0%{right:-200px;opacity:0}to{right:12px;opacity:1}}@keyframes animation-move{0%{right:-200px;opacity:0}to{right:12px;opacity:1}}.libs-ui-toast{position:fixed;padding:12px 16px;display:flex;width:300px;flex-shrink:0;border-radius:8px;animation:animation-move .3s linear}.libs-ui-toast [class*=libs-ui-icon]{font-size:16px;margin-right:16px}.libs-ui-toast.libs-ui-toast_success{background-color:#e6faf0;color:#00bc62}.libs-ui-toast.libs-ui-toast_success [class*=libs-ui-icon]:before{color:#00bc62}.libs-ui-toast.libs-ui-toast_warning{background-color:#feeee6;color:#f05800}.libs-ui-toast.libs-ui-toast_warning [class*=libs-ui-icon]:before{color:#f05800}.libs-ui-toast.libs-ui-toast_error{background-color:#fdeaec;color:#ee2d41}.libs-ui-toast.libs-ui-toast_error [class*=libs-ui-icon]:before{color:#ee2d41}.libs-ui-toast.libs-ui-toast_info{background-color:#e9f1fe;color:#226ff5}.libs-ui-toast.libs-ui-toast_info [class*=libs-ui-icon]:before{color:#226ff5}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
72
77
|
}
|
|
73
78
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibUiServicesComponentsTextComponent, decorators: [{
|
|
74
79
|
type: Component,
|
|
75
|
-
args: [{ selector: 'libs_ui-services-notification-components-text', standalone: true, imports: [TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"libs-ui-toast\"\n [class]=\"containerClass\"\n [style.zIndex]=\"config.zIndex || 2000\">\n <div class=\"flex items-center\">\n <i class=\"{{icon}}\"></i>\n </div>\n <div class=\"flex flex-col w-full\">\n @if (title) {\n
|
|
80
|
+
args: [{ selector: 'libs_ui-services-notification-components-text', standalone: true, imports: [TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"libs-ui-toast\"\n [class]=\"containerClass()\"\n [style.zIndex]=\"config().zIndex || 2000\">\n <div class=\"flex items-center\">\n <i class=\"{{ icon() }}\"></i>\n </div>\n <div class=\"flex flex-col w-full\">\n @if (title()) {\n <div class=\"libs-ui-font-h5m text-break\"\n [innerHtml]=\"title() | translate \">\n </div>\n }\n @if (message()) {\n <div class=\"text-break\"\n [class.libs-ui-font-h5r]=\"!title()\"\n [class.libs-ui-font-h7r]=\"title()\"\n [class.mt-[4ppx]]=\"title()\"\n [innerHtml]=\"message() | translate: (interpolateParams() || {})\">\n </div>\n }\n </div>\n <div class=\"flex items-center\">\n <i class=\"libs-ui-icon-close mr-0 ml-[8px] cursor-pointer\"\n (click)=\"handlerClickClose($event)\">\n </i>\n </div>\n</div>\n", styles: ["@-webkit-keyframes animation-move{0%{right:-200px;opacity:0}to{right:12px;opacity:1}}@keyframes animation-move{0%{right:-200px;opacity:0}to{right:12px;opacity:1}}.libs-ui-toast{position:fixed;padding:12px 16px;display:flex;width:300px;flex-shrink:0;border-radius:8px;animation:animation-move .3s linear}.libs-ui-toast [class*=libs-ui-icon]{font-size:16px;margin-right:16px}.libs-ui-toast.libs-ui-toast_success{background-color:#e6faf0;color:#00bc62}.libs-ui-toast.libs-ui-toast_success [class*=libs-ui-icon]:before{color:#00bc62}.libs-ui-toast.libs-ui-toast_warning{background-color:#feeee6;color:#f05800}.libs-ui-toast.libs-ui-toast_warning [class*=libs-ui-icon]:before{color:#f05800}.libs-ui-toast.libs-ui-toast_error{background-color:#fdeaec;color:#ee2d41}.libs-ui-toast.libs-ui-toast_error [class*=libs-ui-icon]:before{color:#ee2d41}.libs-ui-toast.libs-ui-toast_info{background-color:#e9f1fe;color:#226ff5}.libs-ui-toast.libs-ui-toast_info [class*=libs-ui-icon]:before{color:#226ff5}\n"] }]
|
|
76
81
|
}], ctorParameters: () => [] });
|
|
77
82
|
|
|
78
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
79
83
|
class LibsUiNotificationService {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
84
|
+
/* PROPERTY */
|
|
85
|
+
notificationPermission = signal('default');
|
|
86
|
+
queueMessage = signal(new Array());
|
|
87
|
+
timeoutUpdatePosition = signal(0);
|
|
83
88
|
MAX_QUEUE_MESSAGE = 5;
|
|
84
|
-
isInit = false;
|
|
89
|
+
isInit = signal(false);
|
|
90
|
+
/* INJECT */
|
|
85
91
|
dynamicService = inject(LibsUiDynamicComponentService);
|
|
86
92
|
translateService = inject(TranslateService);
|
|
87
93
|
constructor() {
|
|
88
|
-
this.notificationPermission
|
|
94
|
+
this.notificationPermission.set(this.systemSupportNotification() ? 'default' : 'denied');
|
|
89
95
|
}
|
|
96
|
+
/* FUNCTIONS */
|
|
90
97
|
init(messageNameHandler) {
|
|
91
|
-
if (this.isInit) {
|
|
98
|
+
if (this.isInit()) {
|
|
92
99
|
return;
|
|
93
100
|
}
|
|
94
|
-
this.isInit
|
|
101
|
+
this.isInit.set(true);
|
|
95
102
|
UtilsCommunicateMicro.GetMessage(messageNameHandler).subscribe(e => {
|
|
96
103
|
if (isEmbedFrame()) {
|
|
97
104
|
const dataMessage = e.data.response;
|
|
@@ -121,14 +128,14 @@ class LibsUiNotificationService {
|
|
|
121
128
|
}
|
|
122
129
|
}
|
|
123
130
|
set Permission(permission) {
|
|
124
|
-
this.notificationPermission
|
|
131
|
+
this.notificationPermission.set(permission);
|
|
125
132
|
}
|
|
126
133
|
systemSpawnNotification(title, options) {
|
|
127
134
|
return new Observable((obs) => {
|
|
128
135
|
if (!this.systemSupportNotification()) {
|
|
129
136
|
obs.complete();
|
|
130
137
|
}
|
|
131
|
-
if (this.notificationPermission !== 'granted') {
|
|
138
|
+
if (this.notificationPermission() !== 'granted') {
|
|
132
139
|
obs.complete();
|
|
133
140
|
}
|
|
134
141
|
const notify = new Notification(title, options);
|
|
@@ -176,7 +183,7 @@ class LibsUiNotificationService {
|
|
|
176
183
|
this.checkQueueMessage();
|
|
177
184
|
if (interpolateParams && typeof interpolateParams === 'object') {
|
|
178
185
|
Object.keys(interpolateParams).forEach((key) => {
|
|
179
|
-
interpolateParams[key] = escapeHtml(interpolateParams
|
|
186
|
+
interpolateParams[key] = escapeHtml(get(interpolateParams, key));
|
|
180
187
|
});
|
|
181
188
|
}
|
|
182
189
|
if (isEmbedFrame()) {
|
|
@@ -184,47 +191,52 @@ class LibsUiNotificationService {
|
|
|
184
191
|
return UtilsCommunicateMicro.PostMessageToParent({ type: 'MICRO_SITE_PUSH_MESSAGE_FROM_CHILD', response: encrypt(JSON.stringify({ functionName: config.type, message: messageTranslate, title, timeRemove: config.timeRemove || 2000 })) });
|
|
185
192
|
}
|
|
186
193
|
const component = this.dynamicService.resolveComponentFactory(LibUiServicesComponentsTextComponent);
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
instance.removeComponent = () => this.removeComponent(component);
|
|
194
|
+
component.setInput('title', title);
|
|
195
|
+
component.setInput('message', message);
|
|
196
|
+
component.setInput('interpolateParams', interpolateParams);
|
|
197
|
+
component.setInput('config', config);
|
|
198
|
+
component.setInput('removeComponent', this.removeComponent.bind(this, component));
|
|
193
199
|
const timeout = setTimeout(() => {
|
|
194
200
|
this.removeComponent(component);
|
|
195
201
|
}, config?.timeRemove);
|
|
196
|
-
this.queueMessage.
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
202
|
+
this.queueMessage.update(queue => {
|
|
203
|
+
queue.push({
|
|
204
|
+
component,
|
|
205
|
+
config,
|
|
206
|
+
timeout
|
|
207
|
+
});
|
|
208
|
+
return [...queue];
|
|
200
209
|
});
|
|
201
210
|
this.dynamicService.addToBody(component);
|
|
202
211
|
this.updatePositionMessage();
|
|
203
212
|
}
|
|
204
213
|
removeComponent(component) {
|
|
205
214
|
this.dynamicService.remove(component);
|
|
206
|
-
const indexRemove = this.queueMessage.findIndex(config => config.component === component);
|
|
215
|
+
const indexRemove = this.queueMessage().findIndex(config => config.component === component);
|
|
207
216
|
if (indexRemove !== -1) {
|
|
208
|
-
this.queueMessage.
|
|
217
|
+
this.queueMessage.update(queue => {
|
|
218
|
+
queue.splice(indexRemove, 1);
|
|
219
|
+
return [...queue];
|
|
220
|
+
});
|
|
209
221
|
}
|
|
210
222
|
}
|
|
211
223
|
checkQueueMessage() {
|
|
212
224
|
if (this.queueMessage.length < this.MAX_QUEUE_MESSAGE) {
|
|
213
225
|
return;
|
|
214
226
|
}
|
|
215
|
-
const firstQueue = this.queueMessage.shift();
|
|
227
|
+
const firstQueue = this.queueMessage().shift();
|
|
216
228
|
clearTimeout(firstQueue.timeout);
|
|
217
229
|
this.dynamicService.remove(firstQueue.component);
|
|
218
230
|
this.updatePositionMessage();
|
|
219
231
|
}
|
|
220
232
|
updatePositionMessage() {
|
|
221
|
-
if (!this.queueMessage.length) {
|
|
233
|
+
if (!this.queueMessage().length) {
|
|
222
234
|
return;
|
|
223
235
|
}
|
|
224
|
-
clearTimeout(this.timeoutUpdatePosition);
|
|
225
|
-
this.timeoutUpdatePosition
|
|
236
|
+
clearTimeout(this.timeoutUpdatePosition());
|
|
237
|
+
this.timeoutUpdatePosition.set(setTimeout(() => {
|
|
226
238
|
let topMessage = 12;
|
|
227
|
-
this.queueMessage.forEach((message) => {
|
|
239
|
+
this.queueMessage().forEach((message) => {
|
|
228
240
|
const firstEl = message.component.instance.elementRef.nativeElement.firstElementChild;
|
|
229
241
|
const rect = firstEl.getBoundingClientRect();
|
|
230
242
|
firstEl.style.top = `${topMessage}px`;
|
|
@@ -235,7 +247,7 @@ class LibsUiNotificationService {
|
|
|
235
247
|
}
|
|
236
248
|
firstEl.style.right = `${right}px`;
|
|
237
249
|
});
|
|
238
|
-
});
|
|
250
|
+
}));
|
|
239
251
|
}
|
|
240
252
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiNotificationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
241
253
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiNotificationService, providedIn: 'root' });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libs-ui-services-notification.mjs","sources":["../../../../../libs-ui/services/notification/src/components/base.component.ts","../../../../../libs-ui/services/notification/src/components/text/text.component.ts","../../../../../libs-ui/services/notification/src/components/text/text.component.html","../../../../../libs-ui/services/notification/src/notification.service.ts","../../../../../libs-ui/services/notification/src/libs-ui-services-notification.ts"],"sourcesContent":["import { Subject } from 'rxjs';\nimport { INotificationTextConfig } from '../interfaces/notification';\nimport { Directive, OnDestroy } from '@angular/core';\n@Directive()\nexport class LibUiServiceNotificationBaseComponent implements OnDestroy {\n protected message!: string;\n protected interpolateParams!: Record<string, unknown>;\n protected title!: string;\n protected config!: INotificationTextConfig;\n protected removeComponent!: () => void;\n protected onDestroy = new Subject<void>();\n\n ngOnDestroy(): void {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, OnDestroy, OnInit, inject } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { fromEvent } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\nimport { LibUiServiceNotificationBaseComponent } from '../base.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-services-notification-components-text',\n templateUrl: './text.component.html',\n styleUrls: ['./text.component.scss'],\n standalone: true,\n imports: [TranslateModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LibUiServicesComponentsTextComponent extends LibUiServiceNotificationBaseComponent implements OnInit, OnDestroy {\n protected containerClass!: string;\n protected icon!: string;\n\n private elementRef = inject(ElementRef)\n\n constructor() {\n super();\n }\n\n ngOnInit(): void {\n switch (this.config?.type) {\n case 'success':\n this.containerClass = 'libs-ui-toast_success';\n this.icon = 'libs-ui-icon-check-circle-solid';\n break;\n\n case 'info':\n this.containerClass = 'libs-ui-toast_info';\n this.icon = 'libs-ui-icon-tooltip-solid';\n break;\n\n case 'error':\n this.containerClass = 'libs-ui-toast_error';\n this.icon = 'libs-ui-icon-close-circle-solid';\n break;\n\n case 'warn':\n this.containerClass = 'libs-ui-toast_warning';\n this.icon = 'libs-ui-icon-alert-triangle-solid';\n break;\n\n default:\n this.containerClass = 'bg-[#6fd100] libs-ui-toast_success';\n this.icon = 'mo-icn-toast_success';\n }\n const { eventName, callback } = this.config;\n\n if (!eventName || !callback) {\n return;\n }\n if (eventName === 'click') {\n this.containerClass = `${this.containerClass} cursor-pointer`;\n }\n fromEvent(this.elementRef.nativeElement, eventName).pipe(takeUntil(this.onDestroy), take(1)).subscribe(callback);\n }\n\n protected handlerClickClose(e: Event) {\n e.stopPropagation();\n this.removeComponent();\n }\n}\n","<div class=\"libs-ui-toast\"\n [class]=\"containerClass\"\n [style.zIndex]=\"config.zIndex || 2000\">\n <div class=\"flex items-center\">\n <i class=\"{{icon}}\"></i>\n </div>\n <div class=\"flex flex-col w-full\">\n @if (title) {\n <div class=\"libs-ui-font-h5m text-break\"\n [innerHtml]=\"title | translate \">\n </div>\n }\n @if (message) {\n <div class=\"text-break\"\n [class.libs-ui-font-h5r]=\"!title\"\n [class.libs-ui-font-h7r]=\"title\"\n [class.mt-[4ppx]]=\"title\"\n [innerHtml]=\"message | translate: (interpolateParams || {})\">\n </div>\n }\n </div>\n <div class=\"flex items-center\">\n <i class=\"libs-ui-icon-close mr-0 ml-[8px] cursor-pointer\"\n (click)=\"handlerClickClose($event)\">\n </i>\n </div>\n</div>","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ComponentRef, Injectable, inject } from '@angular/core';\nimport { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';\nimport { encrypt, escapeHtml, isEmbedFrame, UtilsCommunicateMicro } from '@libs-ui/utils';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\nimport { LibUiServicesComponentsTextComponent } from './components';\nimport { INotificationPushFromIFrame, INotificationQueue, INotificationTextConfig, INotificationTextPublicConfig } from './interfaces/notification';\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class LibsUiNotificationService {\n private notificationPermission: NotificationPermission;\n private queueMessage: Array<INotificationQueue> = [];\n private timeoutUpdatePosition: any;\n private readonly MAX_QUEUE_MESSAGE: number = 5;\n private isInit = false;\n\n private dynamicService = inject(LibsUiDynamicComponentService);\n private translateService = inject(TranslateService);\n\n constructor() {\n this.notificationPermission = this.systemSupportNotification() ? 'default' : 'denied';\n }\n\n public init(messageNameHandler: Array<string>) {\n if (this.isInit) {\n return;\n }\n this.isInit = true;\n UtilsCommunicateMicro.GetMessage(messageNameHandler).subscribe(e => {\n if (isEmbedFrame()) {\n const dataMessage = e.data.response as INotificationPushFromIFrame;\n\n this.showCompTypeText(dataMessage.message, undefined, dataMessage.title, { type: dataMessage.functionName, timeRemove: dataMessage.timeRemove || 2000 });\n\n return;\n }\n UtilsCommunicateMicro.PostMessageToParent(e.data);\n });\n }\n\n public get TranslateService() {\n return this.translateService;\n }\n\n private systemSupportNotification(): boolean {\n return 'Notification' in window;\n }\n\n public systemRequestPermission() {\n if (!this.systemSupportNotification()) {\n return;\n }\n try {\n Notification.requestPermission().then((permission: NotificationPermission) => this.Permission = permission);\n } catch (error) {\n if (error instanceof TypeError) {\n Notification.requestPermission((permission: NotificationPermission) => this.Permission = permission);\n }\n }\n }\n\n private set Permission(permission: NotificationPermission) {\n this.notificationPermission = permission;\n }\n\n public systemSpawnNotification(title: string, options?: NotificationOptions): any {\n return new Observable((obs: any) => {\n if (!this.systemSupportNotification()) {\n obs.complete();\n }\n if (this.notificationPermission !== 'granted') {\n obs.complete();\n }\n const notify = new Notification(title, options);\n\n notify.onshow = (e) => {\n return obs.next({\n notification: notify,\n event: e\n });\n };\n notify.onclick = (e) => {\n notify.close();\n window.focus();\n\n return obs.next({\n notification: notify,\n event: e\n });\n };\n notify.onerror = (e) => {\n return obs.error({\n notification: notify,\n event: e\n });\n };\n notify.onclose = () => {\n return obs.complete();\n };\n });\n }\n\n public showCompTypeTextSuccess(message: string, config?: INotificationTextPublicConfig) {\n this.showCompTypeText(message, config?.interpolateParams, config?.title, { type: 'success', timeRemove: config?.timeRemove || 3000, positionRight: config?.positionRight, eventName: config?.eventName, callback: config?.callback });\n }\n\n public showCompTypeTextError(message: string, config?: INotificationTextPublicConfig) {\n this.showCompTypeText(message, config?.interpolateParams, config?.title, { type: 'error', timeRemove: config?.timeRemove || 3000, positionRight: config?.positionRight, eventName: config?.eventName, callback: config?.callback });\n }\n\n public showCompTypeTextInfo(message: string, config?: INotificationTextPublicConfig) {\n this.showCompTypeText(message, config?.interpolateParams, config?.title, { type: 'info', timeRemove: config?.timeRemove || 3000, positionRight: config?.positionRight, eventName: config?.eventName, callback: config?.callback });\n }\n\n public showCompTypeTextWarning(message: string, config?: INotificationTextPublicConfig) {\n this.showCompTypeText(message, config?.interpolateParams, config?.title, { type: 'warn', timeRemove: config?.timeRemove || 3000, positionRight: config?.positionRight, eventName: config?.eventName, callback: config?.callback });\n }\n\n private showCompTypeText(message: string, interpolateParams?: Record<string, any>, title?: string, config: INotificationTextConfig = { type: 'success', timeRemove: 2000 }): void {\n if (!message) {\n return;\n }\n\n this.checkQueueMessage();\n if (interpolateParams && typeof interpolateParams === 'object') {\n Object.keys(interpolateParams).forEach((key) => {\n interpolateParams[key] = escapeHtml(interpolateParams[key]);\n });\n }\n\n if (isEmbedFrame()) {\n const messageTranslate = this.translateService.instant(message, interpolateParams) as string;\n\n return UtilsCommunicateMicro.PostMessageToParent({ type: 'MICRO_SITE_PUSH_MESSAGE_FROM_CHILD', response: encrypt(JSON.stringify({ functionName: config.type, message: messageTranslate, title, timeRemove: config.timeRemove || 2000 })) });\n }\n const component = this.dynamicService.resolveComponentFactory(LibUiServicesComponentsTextComponent);\n const instance = component.instance;\n\n instance.title = title;\n instance.message = message;\n instance.interpolateParams = interpolateParams;\n instance.config = config;\n instance.removeComponent = () => this.removeComponent(component);\n const timeout = setTimeout(() => {\n this.removeComponent(component);\n }, config?.timeRemove);\n\n this.queueMessage.push({\n component,\n config,\n timeout\n });\n this.dynamicService.addToBody(component);\n this.updatePositionMessage();\n }\n\n private removeComponent(component: ComponentRef<any>) {\n this.dynamicService.remove(component);\n const indexRemove = this.queueMessage.findIndex(config => config.component === component);\n\n if (indexRemove !== -1) {\n this.queueMessage.splice(indexRemove, 1);\n }\n }\n\n private checkQueueMessage(): void {\n if (this.queueMessage.length < this.MAX_QUEUE_MESSAGE) {\n return;\n }\n const firstQueue = this.queueMessage.shift() as INotificationQueue;\n\n clearTimeout(firstQueue.timeout);\n this.dynamicService.remove(firstQueue.component);\n this.updatePositionMessage();\n }\n\n private updatePositionMessage(): void {\n if (!this.queueMessage.length) {\n return;\n }\n clearTimeout(this.timeoutUpdatePosition);\n this.timeoutUpdatePosition = setTimeout(() => {\n let topMessage = 12;\n\n this.queueMessage.forEach((message: INotificationQueue) => {\n const firstEl = message.component.instance.elementRef.nativeElement.firstElementChild;\n const rect = firstEl.getBoundingClientRect();\n\n firstEl.style.top = `${topMessage}px`;\n topMessage += rect.height + 12;\n let right = message.config.positionRight ?? 12;\n\n if (isEmbedFrame()) {\n right = 40;\n }\n firstEl.style.right = `${right}px`;\n });\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"libs-ui-services-notification.mjs","sources":["../../../../../libs-ui/services/notification/src/components/base.component.ts","../../../../../libs-ui/services/notification/src/components/text/text.component.ts","../../../../../libs-ui/services/notification/src/components/text/text.component.html","../../../../../libs-ui/services/notification/src/notification.service.ts","../../../../../libs-ui/services/notification/src/libs-ui-services-notification.ts"],"sourcesContent":["import { Directive, OnDestroy, input } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { INotificationTextConfig } from '../interfaces/notification';\n@Directive()\nexport class LibUiServiceNotificationBaseComponent implements OnDestroy {\n /* PROPERTY */\n protected onDestroy = new Subject<void>();\n\n /* INPUT */\n readonly message = input<string>('');\n readonly interpolateParams = input<Record<string, unknown>>();\n readonly title = input<string>('');\n readonly config = input<INotificationTextConfig>({ type: 'success', timeRemove: 2000 });\n readonly removeComponent = input.required<(component: unknown) => Promise<void>>();\n\n ngOnDestroy(): void {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, OnDestroy, OnInit, inject, signal } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { fromEvent } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\nimport { LibUiServiceNotificationBaseComponent } from '../base.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-services-notification-components-text',\n templateUrl: './text.component.html',\n styleUrls: ['./text.component.scss'],\n standalone: true,\n imports: [TranslateModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LibUiServicesComponentsTextComponent extends LibUiServiceNotificationBaseComponent implements OnInit, OnDestroy {\n /* PROPERTY */\n protected containerClass = signal<string>('');\n protected icon = signal<string>('');\n\n /* INJECT */\n private elementRef = inject(ElementRef)\n\n constructor() {\n super();\n }\n\n ngOnInit(): void {\n switch (this.config().type) {\n case 'success':\n this.containerClass.set('libs-ui-toast_success');\n this.icon.set('libs-ui-icon-check-circle-solid');\n break;\n\n case 'info':\n this.containerClass.set('libs-ui-toast_info');\n this.icon.set('libs-ui-icon-tooltip-solid');\n break;\n\n case 'error':\n this.containerClass.set('libs-ui-toast_error');\n this.icon.set('libs-ui-icon-close-circle-solid');\n break;\n\n case 'warn':\n this.containerClass.set('libs-ui-toast_warning');\n this.icon.set('libs-ui-icon-alert-triangle-solid');\n break;\n\n default:\n this.containerClass.set('bg-[#6fd100] libs-ui-toast_success');\n this.icon.set('mo-icn-toast_success');\n }\n const { eventName, callback } = this.config();\n\n if (!eventName || !callback) {\n return;\n }\n if (eventName === 'click') {\n this.containerClass.update(value => `${value} cursor-pointer`);\n }\n fromEvent(this.elementRef.nativeElement, eventName).pipe(takeUntil(this.onDestroy), take(1)).subscribe(callback);\n }\n\n /* FUNCTIONS */\n\n protected handlerClickClose(e: Event) {\n e.stopPropagation();\n this.removeComponent()(e);\n }\n}\n","<div class=\"libs-ui-toast\"\n [class]=\"containerClass()\"\n [style.zIndex]=\"config().zIndex || 2000\">\n <div class=\"flex items-center\">\n <i class=\"{{ icon() }}\"></i>\n </div>\n <div class=\"flex flex-col w-full\">\n @if (title()) {\n <div class=\"libs-ui-font-h5m text-break\"\n [innerHtml]=\"title() | translate \">\n </div>\n }\n @if (message()) {\n <div class=\"text-break\"\n [class.libs-ui-font-h5r]=\"!title()\"\n [class.libs-ui-font-h7r]=\"title()\"\n [class.mt-[4ppx]]=\"title()\"\n [innerHtml]=\"message() | translate: (interpolateParams() || {})\">\n </div>\n }\n </div>\n <div class=\"flex items-center\">\n <i class=\"libs-ui-icon-close mr-0 ml-[8px] cursor-pointer\"\n (click)=\"handlerClickClose($event)\">\n </i>\n </div>\n</div>\n","import { ComponentRef, Injectable, inject, signal } from '@angular/core';\nimport { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';\nimport { UtilsCommunicateMicro, encrypt, escapeHtml, get, isEmbedFrame } from '@libs-ui/utils';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\nimport { LibUiServicesComponentsTextComponent } from './components';\nimport { INotificationPushFromIFrame, INotificationQueue, INotificationTextConfig, INotificationTextPublicConfig } from './interfaces/notification';\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class LibsUiNotificationService {\n /* PROPERTY */\n private notificationPermission = signal<NotificationPermission>('default');\n private queueMessage = signal<Array<INotificationQueue>>(new Array<INotificationQueue>());\n private timeoutUpdatePosition = signal<number>(0);\n private readonly MAX_QUEUE_MESSAGE: number = 5;\n private isInit = signal<boolean>(false);\n\n /* INJECT */\n private dynamicService = inject(LibsUiDynamicComponentService);\n private translateService = inject(TranslateService);\n\n constructor() {\n this.notificationPermission.set(this.systemSupportNotification() ? 'default' : 'denied');\n }\n\n /* FUNCTIONS */\n public init(messageNameHandler: Array<string>) {\n if (this.isInit()) {\n return;\n }\n this.isInit.set(true);\n UtilsCommunicateMicro.GetMessage(messageNameHandler).subscribe(e => {\n if (isEmbedFrame()) {\n const dataMessage = e.data.response as INotificationPushFromIFrame;\n\n this.showCompTypeText(dataMessage.message, undefined, dataMessage.title, { type: dataMessage.functionName, timeRemove: dataMessage.timeRemove || 2000 });\n\n return;\n }\n UtilsCommunicateMicro.PostMessageToParent(e.data);\n });\n }\n\n public get TranslateService() {\n return this.translateService;\n }\n\n private systemSupportNotification(): boolean {\n return 'Notification' in window;\n }\n\n public systemRequestPermission() {\n if (!this.systemSupportNotification()) {\n return;\n }\n try {\n Notification.requestPermission().then((permission: NotificationPermission) => this.Permission = permission);\n } catch (error) {\n if (error instanceof TypeError) {\n Notification.requestPermission((permission: NotificationPermission) => this.Permission = permission);\n }\n }\n }\n\n private set Permission(permission: NotificationPermission) {\n this.notificationPermission.set(permission);\n }\n\n public systemSpawnNotification(title: string, options?: NotificationOptions): Observable<unknown> {\n return new Observable((obs) => {\n if (!this.systemSupportNotification()) {\n obs.complete();\n }\n if (this.notificationPermission() !== 'granted') {\n obs.complete();\n }\n const notify = new Notification(title, options);\n\n notify.onshow = (e) => {\n return obs.next({\n notification: notify,\n event: e\n });\n };\n notify.onclick = (e) => {\n notify.close();\n window.focus();\n\n return obs.next({\n notification: notify,\n event: e\n });\n };\n notify.onerror = (e) => {\n return obs.error({\n notification: notify,\n event: e\n });\n };\n notify.onclose = () => {\n return obs.complete();\n };\n });\n }\n\n public showCompTypeTextSuccess(message: string, config?: INotificationTextPublicConfig) {\n this.showCompTypeText(message, config?.interpolateParams, config?.title, { type: 'success', timeRemove: config?.timeRemove || 3000, positionRight: config?.positionRight, eventName: config?.eventName, callback: config?.callback });\n }\n\n public showCompTypeTextError(message: string, config?: INotificationTextPublicConfig) {\n this.showCompTypeText(message, config?.interpolateParams, config?.title, { type: 'error', timeRemove: config?.timeRemove || 3000, positionRight: config?.positionRight, eventName: config?.eventName, callback: config?.callback });\n }\n\n public showCompTypeTextInfo(message: string, config?: INotificationTextPublicConfig) {\n this.showCompTypeText(message, config?.interpolateParams, config?.title, { type: 'info', timeRemove: config?.timeRemove || 3000, positionRight: config?.positionRight, eventName: config?.eventName, callback: config?.callback });\n }\n\n public showCompTypeTextWarning(message: string, config?: INotificationTextPublicConfig) {\n this.showCompTypeText(message, config?.interpolateParams, config?.title, { type: 'warn', timeRemove: config?.timeRemove || 3000, positionRight: config?.positionRight, eventName: config?.eventName, callback: config?.callback });\n }\n\n private showCompTypeText(message: string, interpolateParams?: Record<string, unknown>, title?: string, config: INotificationTextConfig = { type: 'success', timeRemove: 2000 }): void {\n if (!message) {\n return;\n }\n\n this.checkQueueMessage();\n if (interpolateParams && typeof interpolateParams === 'object') {\n Object.keys(interpolateParams).forEach((key) => {\n interpolateParams[key] = escapeHtml(get(interpolateParams, key));\n });\n }\n\n if (isEmbedFrame()) {\n const messageTranslate = this.translateService.instant(message, interpolateParams) as string;\n\n return UtilsCommunicateMicro.PostMessageToParent({ type: 'MICRO_SITE_PUSH_MESSAGE_FROM_CHILD', response: encrypt(JSON.stringify({ functionName: config.type, message: messageTranslate, title, timeRemove: config.timeRemove || 2000 })) });\n }\n const component = this.dynamicService.resolveComponentFactory(LibUiServicesComponentsTextComponent);\n\n component.setInput('title', title);\n component.setInput('message', message);\n component.setInput('interpolateParams', interpolateParams);\n component.setInput('config', config);\n component.setInput('removeComponent', this.removeComponent.bind(this, component));\n const timeout = setTimeout(() => {\n this.removeComponent(component);\n }, config?.timeRemove);\n\n this.queueMessage.update(queue => {\n queue.push({\n component,\n config,\n timeout\n });\n\n return [...queue];\n });\n this.dynamicService.addToBody(component);\n this.updatePositionMessage();\n }\n\n private removeComponent(component: ComponentRef<unknown>) {\n this.dynamicService.remove(component);\n const indexRemove = this.queueMessage().findIndex(config => config.component === component);\n\n if (indexRemove !== -1) {\n this.queueMessage.update(queue => {\n queue.splice(indexRemove, 1);\n return [...queue];\n });\n }\n }\n\n private checkQueueMessage(): void {\n if (this.queueMessage.length < this.MAX_QUEUE_MESSAGE) {\n return;\n }\n const firstQueue = this.queueMessage().shift() as INotificationQueue;\n\n clearTimeout(firstQueue.timeout);\n this.dynamicService.remove(firstQueue.component);\n this.updatePositionMessage();\n }\n\n private updatePositionMessage(): void {\n if (!this.queueMessage().length) {\n return;\n }\n clearTimeout(this.timeoutUpdatePosition());\n this.timeoutUpdatePosition.set(setTimeout(() => {\n let topMessage = 12;\n\n this.queueMessage().forEach((message: INotificationQueue) => {\n const firstEl = message.component.instance.elementRef.nativeElement.firstElementChild;\n const rect = firstEl.getBoundingClientRect();\n\n firstEl.style.top = `${topMessage}px`;\n topMessage += rect.height + 12;\n let right = message.config.positionRight ?? 12;\n\n if (isEmbedFrame()) {\n right = 40;\n }\n firstEl.style.right = `${right}px`;\n });\n }));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TranslateService } from '@ngx-translate/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
2
3
|
import { INotificationTextPublicConfig } from './interfaces/notification';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
export declare class LibsUiNotificationService {
|
|
@@ -15,7 +16,7 @@ export declare class LibsUiNotificationService {
|
|
|
15
16
|
private systemSupportNotification;
|
|
16
17
|
systemRequestPermission(): void;
|
|
17
18
|
private set Permission(value);
|
|
18
|
-
systemSpawnNotification(title: string, options?: NotificationOptions):
|
|
19
|
+
systemSpawnNotification(title: string, options?: NotificationOptions): Observable<unknown>;
|
|
19
20
|
showCompTypeTextSuccess(message: string, config?: INotificationTextPublicConfig): void;
|
|
20
21
|
showCompTypeTextError(message: string, config?: INotificationTextPublicConfig): void;
|
|
21
22
|
showCompTypeTextInfo(message: string, config?: INotificationTextPublicConfig): void;
|