@libs-ui/services-notification 0.2.355-8 → 0.2.356-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -1,3 +1,135 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Notification Service
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Service toast notification cho Angular — hỗ trợ 4 kiểu (success, error, info, warn), queue tối đa 5, tự động dịch qua ngx-translate, và bridge sang micro-frontend qua iFrame messaging.
|
|
4
|
+
|
|
5
|
+
## Tính năng
|
|
6
|
+
|
|
7
|
+
- ✅ 4 kiểu toast: `success` (xanh), `error` (đỏ), `info` (xanh dương), `warn` (vàng)
|
|
8
|
+
- ✅ Queue tối đa 5 — FIFO auto-remove khi overflow
|
|
9
|
+
- ✅ Tích hợp ngx-translate — truyền key hoặc text đều được
|
|
10
|
+
- ✅ interpolateParams với XSS-safe escaping tự động
|
|
11
|
+
- ✅ Callback onClick / onMouseenter
|
|
12
|
+
- ✅ Tùy chỉnh timeRemove, positionRight
|
|
13
|
+
- ✅ iFrame bridge cho micro-frontend architecture
|
|
14
|
+
- ✅ Browser native Notification API (systemSpawnNotification)
|
|
15
|
+
|
|
16
|
+
## Cài đặt
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm install @libs-ui/services-notification
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Import
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
import { LibsUiNotificationService } from '@libs-ui/services-notification';
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Quick Start
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
@Component({ ... })
|
|
32
|
+
export class ExampleComponent {
|
|
33
|
+
private notif = inject(LibsUiNotificationService);
|
|
34
|
+
|
|
35
|
+
onSave() { this.notif.showCompTypeTextSuccess('Lưu thành công!'); }
|
|
36
|
+
onError() { this.notif.showCompTypeTextError('Có lỗi xảy ra.'); }
|
|
37
|
+
onInfo() { this.notif.showCompTypeTextInfo('Phiên làm việc sắp hết hạn.'); }
|
|
38
|
+
onWarn() { this.notif.showCompTypeTextWarning('Dung lượng gần đầy.'); }
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Đầy đủ Config
|
|
43
|
+
|
|
44
|
+
```typescript
|
|
45
|
+
this.notif.showCompTypeTextSuccess('ACTION_SUCCESS', {
|
|
46
|
+
title: 'Thành công',
|
|
47
|
+
timeRemove: 5000, // ms (default: 3000)
|
|
48
|
+
positionRight: 24, // px từ phải màn hình (default: 12)
|
|
49
|
+
eventName: 'click', // 'click' | 'mouseenter'
|
|
50
|
+
callback: () => this.router.navigate(['/home']),
|
|
51
|
+
interpolateParams: {
|
|
52
|
+
// ngx-translate params — tự động escape HTML
|
|
53
|
+
name: 'Nguyễn Văn A',
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## ngx-translate Integration
|
|
59
|
+
|
|
60
|
+
```typescript
|
|
61
|
+
// Truyền translation key
|
|
62
|
+
this.notif.showCompTypeTextSuccess('notifications.save_success');
|
|
63
|
+
|
|
64
|
+
// Với interpolation:
|
|
65
|
+
this.notif.showCompTypeTextError('notifications.delete_error', {
|
|
66
|
+
interpolateParams: { itemName: 'Báo cáo tháng 1' },
|
|
67
|
+
});
|
|
68
|
+
// JSON: { "notifications": { "delete_error": "Không thể xóa '{{itemName}}'" } }
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## iFrame Bridge — Micro-frontend
|
|
72
|
+
|
|
73
|
+
```typescript
|
|
74
|
+
// AppComponent của Shell (parent):
|
|
75
|
+
export class AppComponent {
|
|
76
|
+
private notif = inject(LibsUiNotificationService);
|
|
77
|
+
constructor() {
|
|
78
|
+
this.notif.init(['MICRO_SITE_PUSH_MESSAGE_FROM_CHILD']);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Trong micro-frontend (child iFrame):
|
|
83
|
+
// Gọi notification bình thường — service tự detect isEmbedFrame()
|
|
84
|
+
// và gửi PostMessage lên parent thay vì render tại chỗ
|
|
85
|
+
this.notif.showCompTypeTextSuccess('Upload hoàn tất!');
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Browser Native Notification
|
|
89
|
+
|
|
90
|
+
```typescript
|
|
91
|
+
// Xin quyền trước
|
|
92
|
+
this.notif.systemRequestPermission();
|
|
93
|
+
|
|
94
|
+
// Hiển thị native notification (sau khi granted)
|
|
95
|
+
this.notif
|
|
96
|
+
.systemSpawnNotification('New message', {
|
|
97
|
+
body: 'Bạn có tin nhắn mới từ Team',
|
|
98
|
+
icon: '/assets/icon.png',
|
|
99
|
+
})
|
|
100
|
+
.subscribe({
|
|
101
|
+
next: (e) => console.log('event:', e),
|
|
102
|
+
complete: () => console.log('closed'),
|
|
103
|
+
});
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## API — Public Methods
|
|
107
|
+
|
|
108
|
+
| Method | Mô tả |
|
|
109
|
+
| ------------------------------------------- | ---------------------------------------------------- |
|
|
110
|
+
| `showCompTypeTextSuccess(message, config?)` | Toast màu xanh lá — thành công |
|
|
111
|
+
| `showCompTypeTextError(message, config?)` | Toast màu đỏ — lỗi |
|
|
112
|
+
| `showCompTypeTextInfo(message, config?)` | Toast màu xanh dương — thông tin |
|
|
113
|
+
| `showCompTypeTextWarning(message, config?)` | Toast màu vàng — cảnh báo |
|
|
114
|
+
| `init(messageNames, parentName?)` | Khởi tạo iFrame bridge; gọi 1 lần trong AppComponent |
|
|
115
|
+
| `systemRequestPermission()` | Xin quyền browser native notification |
|
|
116
|
+
| `systemSpawnNotification(title, opts?)` | Hiển thị native notification → `Observable` |
|
|
117
|
+
| `get TranslateService` | Getter cho TranslateService instance |
|
|
118
|
+
|
|
119
|
+
## INotificationTextPublicConfig
|
|
120
|
+
|
|
121
|
+
| Field | Type | Default | Mô tả |
|
|
122
|
+
| ------------------- | ------------------------- | ----------- | ------------------------------------- |
|
|
123
|
+
| `title` | `string` | `undefined` | Tiêu đề trên toast |
|
|
124
|
+
| `timeRemove` | `number (ms)` | `3000` | Thời gian tự động đóng |
|
|
125
|
+
| `positionRight` | `number (px)` | `12` | Khoảng cách từ phải |
|
|
126
|
+
| `eventName` | `'click' \| 'mouseenter'` | `undefined` | Event trigger callback |
|
|
127
|
+
| `callback` | `() => void` | `undefined` | Hàm gọi khi interact |
|
|
128
|
+
| `interpolateParams` | `Record<string, any>` | `undefined` | Params cho translate (tự escape HTML) |
|
|
129
|
+
|
|
130
|
+
## Lưu ý
|
|
131
|
+
|
|
132
|
+
- **Queue MAX 5**: Nếu đang có đủ 5 toast, toast cũ nhất tự bị remove khi toast mới xuất hiện.
|
|
133
|
+
- **interpolateParams escaping**: Mỗi value trong `interpolateParams` tự động qua `escapeHtml()` — safe với user input.
|
|
134
|
+
- **iFrame detection**: Service tự phát hiện `isEmbedFrame()`. Không cần config thêm trong child app.
|
|
135
|
+
- **init() chỉ gọi 1 lần**: Service có guard `isInit` signal — gọi nhiều lần không bị duplicate listener.
|
|
@@ -117,7 +117,8 @@ export class LibsUiNotificationService {
|
|
|
117
117
|
}
|
|
118
118
|
if (isEmbedFrame()) {
|
|
119
119
|
const messageTranslate = this.translateService.instant(message, interpolateParams);
|
|
120
|
-
|
|
120
|
+
const titleTranslate = title ? this.translateService.instant(title, interpolateParams) : title;
|
|
121
|
+
return UtilsCommunicateMicro.PostMessageToParent({ type: this.messageNamePostToParent(), response: encrypt(JSON.stringify({ functionName: config.type, message: messageTranslate, titleTranslate, timeRemove: config.timeRemove || 2000 })) });
|
|
121
122
|
}
|
|
122
123
|
const component = this.dynamicService.resolveComponentFactory(LibUiServicesComponentsTextComponent);
|
|
123
124
|
component.setInput('title', title);
|
|
@@ -187,4 +188,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
187
188
|
providedIn: 'root',
|
|
188
189
|
}]
|
|
189
190
|
}], ctorParameters: () => [] });
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL25vdGlmaWNhdGlvbi9zcmMvbm90aWZpY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBTXBFLE1BQU0sT0FBTyx5QkFBeUI7SUFDcEMsbUJBQW1CO0lBQ1gsc0JBQXNCLEdBQUcsTUFBTSxDQUF5QixTQUFTLENBQUMsQ0FBQztJQUNuRSxZQUFZLEdBQUcsTUFBTSxDQUE0QixJQUFJLEtBQUssRUFBc0IsQ0FBQyxDQUFDO0lBQ2xGLHFCQUFxQixHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztJQUNqQyxpQkFBaUIsR0FBVyxDQUFDLENBQUM7SUFDdkMsTUFBTSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUNoQyx1QkFBdUIsR0FBRyxNQUFNLENBQVMsb0NBQW9DLENBQUMsQ0FBQztJQUV2RixpQkFBaUI7SUFDVCxjQUFjLEdBQUcsTUFBTSxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDdkQsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFcEQ7UUFDRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFRCxlQUFlO0lBQ1IsSUFBSSxDQUFDLGtCQUFpQyxFQUFFLHVCQUFnQztRQUM3RSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQ2xCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsSUFBSSx1QkFBdUIsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBQ0QscUJBQXFCLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDbkUsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7Z0JBQ3BCLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBdUMsQ0FBQztnQkFFbkUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLFVBQVUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUV6SixPQUFPO1lBQ1QsQ0FBQztZQUNELHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFXLGdCQUFnQjtRQUN6QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO0lBRU8seUJBQXlCO1FBQy9CLE9BQU8sY0FBYyxJQUFJLE1BQU0sQ0FBQztJQUNsQyxDQUFDO0lBRU0sdUJBQXVCO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsRUFBRSxDQUFDO1lBQ3RDLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDO1lBQ0gsWUFBWSxDQUFDLGlCQUFpQixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBa0MsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDaEgsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLEtBQUssWUFBWSxTQUFTLEVBQUUsQ0FBQztnQkFDL0IsWUFBWSxDQUFDLGlCQUFpQixDQUFDLENBQUMsVUFBa0MsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDekcsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBWSxVQUFVLENBQUMsVUFBa0M7UUFDdkQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRU0sdUJBQXVCLENBQUMsS0FBYSxFQUFFLE9BQTZCO1FBQ3pFLE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLEVBQUUsQ0FBQztnQkFDdEMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2pCLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNoRCxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDakIsQ0FBQztZQUNELE1BQU0sTUFBTSxHQUFHLElBQUksWUFBWSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztZQUVoRCxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3BCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQztvQkFDZCxZQUFZLEVBQUUsTUFBTTtvQkFDcEIsS0FBSyxFQUFFLENBQUM7aUJBQ1QsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDO1lBQ0YsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNyQixNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUVmLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQztvQkFDZCxZQUFZLEVBQUUsTUFBTTtvQkFDcEIsS0FBSyxFQUFFLENBQUM7aUJBQ1QsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDO1lBQ0YsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNyQixPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUM7b0JBQ2YsWUFBWSxFQUFFLE1BQU07b0JBQ3BCLEtBQUssRUFBRSxDQUFDO2lCQUNULENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQztZQUNGLE1BQU0sQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFO2dCQUNwQixPQUFPLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN4QixDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxPQUFlLEVBQUUsTUFBc0M7UUFDcEYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLElBQUksSUFBSSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN4TyxDQUFDO0lBRU0scUJBQXFCLENBQUMsT0FBZSxFQUFFLE1BQXNDO1FBQ2xGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxJQUFJLElBQUksRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDdE8sQ0FBQztJQUVNLG9CQUFvQixDQUFDLE9BQWUsRUFBRSxNQUFzQztRQUNqRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFVBQVUsSUFBSSxJQUFJLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3JPLENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxPQUFlLEVBQUUsTUFBc0M7UUFDcEYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLElBQUksSUFBSSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNyTyxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsT0FBZSxFQUFFLGlCQUEyQyxFQUFFLEtBQWMsRUFBRSxTQUFrQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtRQUM1SyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksaUJBQWlCLElBQUksT0FBTyxpQkFBaUIsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMvRCxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQzdDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuRSxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLFlBQVksRUFBRSxFQUFFLENBQUM7WUFDbkIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxpQkFBaUIsQ0FBVyxDQUFDO1lBRTdGLE9BQU8scUJBQXFCLENBQUMsbUJBQW1CLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hPLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLHVCQUF1QixDQUFDLG9DQUFvQyxDQUFDLENBQUM7UUFFcEcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdkMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQzNELFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLFNBQVMsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDbEYsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUM5QixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xDLENBQUMsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNqQyxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUNULFNBQVM7Z0JBQ1QsTUFBTTtnQkFDTixPQUFPO2FBQ1IsQ0FBQyxDQUFDO1lBRUgsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRU8sZUFBZSxDQUFDLFNBQWdDO1FBQ3RELElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUM7UUFFOUYsSUFBSSxXQUFXLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNqQyxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDN0IsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3RELE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUssRUFBd0IsQ0FBQztRQUVyRSxZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRU8scUJBQXFCO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEMsT0FBTztRQUNULENBQUM7UUFDRCxZQUFZLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUM1QixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO1lBRXBCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUEyQixFQUFFLEVBQUU7Z0JBQzFELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUM7Z0JBQ3RGLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUU3QyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLFVBQVUsSUFBSSxDQUFDO2dCQUN0QyxVQUFVLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7Z0JBQy9CLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQztnQkFFL0MsSUFBSSxZQUFZLEVBQUUsRUFBRSxDQUFDO29CQUNuQixLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUNiLENBQUM7Z0JBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsR0FBRyxLQUFLLElBQUksQ0FBQztZQUNyQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO3dHQTVNVSx5QkFBeUI7NEdBQXpCLHlCQUF5QixjQUZ4QixNQUFNOzs0RkFFUCx5QkFBeUI7a0JBSHJDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBJbmplY3RhYmxlLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGlic1VpRHluYW1pY0NvbXBvbmVudFNlcnZpY2UgfSBmcm9tICdAbGlicy11aS9zZXJ2aWNlcy1keW5hbWljLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBVdGlsc0NvbW11bmljYXRlTWljcm8sIGVuY3J5cHQsIGVzY2FwZUh0bWwsIGdldCwgaXNFbWJlZEZyYW1lIH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTGliVWlTZXJ2aWNlc0NvbXBvbmVudHNUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzJztcbmltcG9ydCB7IElOb3RpZmljYXRpb25QdXNoRnJvbUlGcmFtZSwgSU5vdGlmaWNhdGlvblF1ZXVlLCBJTm90aWZpY2F0aW9uVGV4dENvbmZpZywgSU5vdGlmaWNhdGlvblRleHRQdWJsaWNDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMvbm90aWZpY2F0aW9uJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaU5vdGlmaWNhdGlvblNlcnZpY2Uge1xuICAvLyAjcmVnaW9uIFBST1BFUlRZXG4gIHByaXZhdGUgbm90aWZpY2F0aW9uUGVybWlzc2lvbiA9IHNpZ25hbDxOb3RpZmljYXRpb25QZXJtaXNzaW9uPignZGVmYXVsdCcpO1xuICBwcml2YXRlIHF1ZXVlTWVzc2FnZSA9IHNpZ25hbDxBcnJheTxJTm90aWZpY2F0aW9uUXVldWU+PihuZXcgQXJyYXk8SU5vdGlmaWNhdGlvblF1ZXVlPigpKTtcbiAgcHJpdmF0ZSB0aW1lb3V0VXBkYXRlUG9zaXRpb24gPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJpdmF0ZSByZWFkb25seSBNQVhfUVVFVUVfTUVTU0FHRTogbnVtYmVyID0gNTtcbiAgcHJpdmF0ZSBpc0luaXQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIG1lc3NhZ2VOYW1lUG9zdFRvUGFyZW50ID0gc2lnbmFsPHN0cmluZz4oJ01JQ1JPX1NJVEVfUFVTSF9NRVNTQUdFX0ZST01fQ0hJTEQnKTtcblxuICAvLyAjcmVnaW9uIElOSkVDVFxuICBwcml2YXRlIGR5bmFtaWNTZXJ2aWNlID0gaW5qZWN0KExpYnNVaUR5bmFtaWNDb21wb25lbnRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMubm90aWZpY2F0aW9uUGVybWlzc2lvbi5zZXQodGhpcy5zeXN0ZW1TdXBwb3J0Tm90aWZpY2F0aW9uKCkgPyAnZGVmYXVsdCcgOiAnZGVuaWVkJyk7XG4gIH1cblxuICAvKiBGVU5DVElPTlMgKi9cbiAgcHVibGljIGluaXQobWVzc2FnZU5hbWVIYW5kbGVyOiBBcnJheTxzdHJpbmc+LCBtZXNzYWdlTmFtZVBvc3RUb1BhcmVudD86IHN0cmluZykge1xuICAgIGlmICh0aGlzLmlzSW5pdCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNJbml0LnNldCh0cnVlKTtcbiAgICBpZiAobWVzc2FnZU5hbWVQb3N0VG9QYXJlbnQpIHtcbiAgICAgIHRoaXMubWVzc2FnZU5hbWVQb3N0VG9QYXJlbnQuc2V0KG1lc3NhZ2VOYW1lUG9zdFRvUGFyZW50KTtcbiAgICB9XG4gICAgVXRpbHNDb21tdW5pY2F0ZU1pY3JvLkdldE1lc3NhZ2UobWVzc2FnZU5hbWVIYW5kbGVyKS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgIGlmICghaXNFbWJlZEZyYW1lKCkpIHtcbiAgICAgICAgY29uc3QgZGF0YU1lc3NhZ2UgPSBlLmRhdGEucmVzcG9uc2UgYXMgSU5vdGlmaWNhdGlvblB1c2hGcm9tSUZyYW1lO1xuXG4gICAgICAgIHRoaXMuc2hvd0NvbXBUeXBlVGV4dChkYXRhTWVzc2FnZS5tZXNzYWdlLCB1bmRlZmluZWQsIGRhdGFNZXNzYWdlLnRpdGxlLCB7IHR5cGU6IGRhdGFNZXNzYWdlLmZ1bmN0aW9uTmFtZSwgdGltZVJlbW92ZTogZGF0YU1lc3NhZ2UudGltZVJlbW92ZSB8fCAyMDAwIH0pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIFV0aWxzQ29tbXVuaWNhdGVNaWNyby5Qb3N0TWVzc2FnZVRvUGFyZW50KGUuZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IFRyYW5zbGF0ZVNlcnZpY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZTtcbiAgfVxuXG4gIHByaXZhdGUgc3lzdGVtU3VwcG9ydE5vdGlmaWNhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gJ05vdGlmaWNhdGlvbicgaW4gd2luZG93O1xuICB9XG5cbiAgcHVibGljIHN5c3RlbVJlcXVlc3RQZXJtaXNzaW9uKCkge1xuICAgIGlmICghdGhpcy5zeXN0ZW1TdXBwb3J0Tm90aWZpY2F0aW9uKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIE5vdGlmaWNhdGlvbi5yZXF1ZXN0UGVybWlzc2lvbigpLnRoZW4oKHBlcm1pc3Npb246IE5vdGlmaWNhdGlvblBlcm1pc3Npb24pID0+ICh0aGlzLlBlcm1pc3Npb24gPSBwZXJtaXNzaW9uKSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFR5cGVFcnJvcikge1xuICAgICAgICBOb3RpZmljYXRpb24ucmVxdWVzdFBlcm1pc3Npb24oKHBlcm1pc3Npb246IE5vdGlmaWNhdGlvblBlcm1pc3Npb24pID0+ICh0aGlzLlBlcm1pc3Npb24gPSBwZXJtaXNzaW9uKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXQgUGVybWlzc2lvbihwZXJtaXNzaW9uOiBOb3RpZmljYXRpb25QZXJtaXNzaW9uKSB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25QZXJtaXNzaW9uLnNldChwZXJtaXNzaW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBzeXN0ZW1TcGF3bk5vdGlmaWNhdGlvbih0aXRsZTogc3RyaW5nLCBvcHRpb25zPzogTm90aWZpY2F0aW9uT3B0aW9ucyk6IE9ic2VydmFibGU8dW5rbm93bj4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuc3lzdGVtU3VwcG9ydE5vdGlmaWNhdGlvbigpKSB7XG4gICAgICAgIG9icy5jb21wbGV0ZSgpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubm90aWZpY2F0aW9uUGVybWlzc2lvbigpICE9PSAnZ3JhbnRlZCcpIHtcbiAgICAgICAgb2JzLmNvbXBsZXRlKCk7XG4gICAgICB9XG4gICAgICBjb25zdCBub3RpZnkgPSBuZXcgTm90aWZpY2F0aW9uKHRpdGxlLCBvcHRpb25zKTtcblxuICAgICAgbm90aWZ5Lm9uc2hvdyA9IChlKSA9PiB7XG4gICAgICAgIHJldHVybiBvYnMubmV4dCh7XG4gICAgICAgICAgbm90aWZpY2F0aW9uOiBub3RpZnksXG4gICAgICAgICAgZXZlbnQ6IGUsXG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIG5vdGlmeS5vbmNsaWNrID0gKGUpID0+IHtcbiAgICAgICAgbm90aWZ5LmNsb3NlKCk7XG4gICAgICAgIHdpbmRvdy5mb2N1cygpO1xuXG4gICAgICAgIHJldHVybiBvYnMubmV4dCh7XG4gICAgICAgICAgbm90aWZpY2F0aW9uOiBub3RpZnksXG4gICAgICAgICAgZXZlbnQ6IGUsXG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIG5vdGlmeS5vbmVycm9yID0gKGUpID0+IHtcbiAgICAgICAgcmV0dXJuIG9icy5lcnJvcih7XG4gICAgICAgICAgbm90aWZpY2F0aW9uOiBub3RpZnksXG4gICAgICAgICAgZXZlbnQ6IGUsXG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIG5vdGlmeS5vbmNsb3NlID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gb2JzLmNvbXBsZXRlKCk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNob3dDb21wVHlwZVRleHRTdWNjZXNzKG1lc3NhZ2U6IHN0cmluZywgY29uZmlnPzogSU5vdGlmaWNhdGlvblRleHRQdWJsaWNDb25maWcpIHtcbiAgICB0aGlzLnNob3dDb21wVHlwZVRleHQobWVzc2FnZSwgY29uZmlnPy5pbnRlcnBvbGF0ZVBhcmFtcywgY29uZmlnPy50aXRsZSwgeyB0eXBlOiAnc3VjY2VzcycsIHRpbWVSZW1vdmU6IGNvbmZpZz8udGltZVJlbW92ZSB8fCAzMDAwLCBwb3NpdGlvblJpZ2h0OiBjb25maWc/LnBvc2l0aW9uUmlnaHQsIGV2ZW50TmFtZTogY29uZmlnPy5ldmVudE5hbWUsIGNhbGxiYWNrOiBjb25maWc/LmNhbGxiYWNrIH0pO1xuICB9XG5cbiAgcHVibGljIHNob3dDb21wVHlwZVRleHRFcnJvcihtZXNzYWdlOiBzdHJpbmcsIGNvbmZpZz86IElOb3RpZmljYXRpb25UZXh0UHVibGljQ29uZmlnKSB7XG4gICAgdGhpcy5zaG93Q29tcFR5cGVUZXh0KG1lc3NhZ2UsIGNvbmZpZz8uaW50ZXJwb2xhdGVQYXJhbXMsIGNvbmZpZz8udGl0bGUsIHsgdHlwZTogJ2Vycm9yJywgdGltZVJlbW92ZTogY29uZmlnPy50aW1lUmVtb3ZlIHx8IDMwMDAsIHBvc2l0aW9uUmlnaHQ6IGNvbmZpZz8ucG9zaXRpb25SaWdodCwgZXZlbnROYW1lOiBjb25maWc/LmV2ZW50TmFtZSwgY2FsbGJhY2s6IGNvbmZpZz8uY2FsbGJhY2sgfSk7XG4gIH1cblxuICBwdWJsaWMgc2hvd0NvbXBUeXBlVGV4dEluZm8obWVzc2FnZTogc3RyaW5nLCBjb25maWc/OiBJTm90aWZpY2F0aW9uVGV4dFB1YmxpY0NvbmZpZykge1xuICAgIHRoaXMuc2hvd0NvbXBUeXBlVGV4dChtZXNzYWdlLCBjb25maWc/LmludGVycG9sYXRlUGFyYW1zLCBjb25maWc/LnRpdGxlLCB7IHR5cGU6ICdpbmZvJywgdGltZVJlbW92ZTogY29uZmlnPy50aW1lUmVtb3ZlIHx8IDMwMDAsIHBvc2l0aW9uUmlnaHQ6IGNvbmZpZz8ucG9zaXRpb25SaWdodCwgZXZlbnROYW1lOiBjb25maWc/LmV2ZW50TmFtZSwgY2FsbGJhY2s6IGNvbmZpZz8uY2FsbGJhY2sgfSk7XG4gIH1cblxuICBwdWJsaWMgc2hvd0NvbXBUeXBlVGV4dFdhcm5pbmcobWVzc2FnZTogc3RyaW5nLCBjb25maWc/OiBJTm90aWZpY2F0aW9uVGV4dFB1YmxpY0NvbmZpZykge1xuICAgIHRoaXMuc2hvd0NvbXBUeXBlVGV4dChtZXNzYWdlLCBjb25maWc/LmludGVycG9sYXRlUGFyYW1zLCBjb25maWc/LnRpdGxlLCB7IHR5cGU6ICd3YXJuJywgdGltZVJlbW92ZTogY29uZmlnPy50aW1lUmVtb3ZlIHx8IDMwMDAsIHBvc2l0aW9uUmlnaHQ6IGNvbmZpZz8ucG9zaXRpb25SaWdodCwgZXZlbnROYW1lOiBjb25maWc/LmV2ZW50TmFtZSwgY2FsbGJhY2s6IGNvbmZpZz8uY2FsbGJhY2sgfSk7XG4gIH1cblxuICBwcml2YXRlIHNob3dDb21wVHlwZVRleHQobWVzc2FnZTogc3RyaW5nLCBpbnRlcnBvbGF0ZVBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB0aXRsZT86IHN0cmluZywgY29uZmlnOiBJTm90aWZpY2F0aW9uVGV4dENvbmZpZyA9IHsgdHlwZTogJ3N1Y2Nlc3MnLCB0aW1lUmVtb3ZlOiAyMDAwIH0pOiB2b2lkIHtcbiAgICBpZiAoIW1lc3NhZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNoZWNrUXVldWVNZXNzYWdlKCk7XG4gICAgaWYgKGludGVycG9sYXRlUGFyYW1zICYmIHR5cGVvZiBpbnRlcnBvbGF0ZVBhcmFtcyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIE9iamVjdC5rZXlzKGludGVycG9sYXRlUGFyYW1zKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgaW50ZXJwb2xhdGVQYXJhbXNba2V5XSA9IGVzY2FwZUh0bWwoZ2V0KGludGVycG9sYXRlUGFyYW1zLCBrZXkpKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChpc0VtYmVkRnJhbWUoKSkge1xuICAgICAgY29uc3QgbWVzc2FnZVRyYW5zbGF0ZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KG1lc3NhZ2UsIGludGVycG9sYXRlUGFyYW1zKSBhcyBzdHJpbmc7XG5cbiAgICAgIHJldHVybiBVdGlsc0NvbW11bmljYXRlTWljcm8uUG9zdE1lc3NhZ2VUb1BhcmVudCh7IHR5cGU6IHRoaXMubWVzc2FnZU5hbWVQb3N0VG9QYXJlbnQoKSwgcmVzcG9uc2U6IGVuY3J5cHQoSlNPTi5zdHJpbmdpZnkoeyBmdW5jdGlvbk5hbWU6IGNvbmZpZy50eXBlLCBtZXNzYWdlOiBtZXNzYWdlVHJhbnNsYXRlLCB0aXRsZSwgdGltZVJlbW92ZTogY29uZmlnLnRpbWVSZW1vdmUgfHwgMjAwMCB9KSkgfSk7XG4gICAgfVxuICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuZHluYW1pY1NlcnZpY2UucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoTGliVWlTZXJ2aWNlc0NvbXBvbmVudHNUZXh0Q29tcG9uZW50KTtcblxuICAgIGNvbXBvbmVudC5zZXRJbnB1dCgndGl0bGUnLCB0aXRsZSk7XG4gICAgY29tcG9uZW50LnNldElucHV0KCdtZXNzYWdlJywgbWVzc2FnZSk7XG4gICAgY29tcG9uZW50LnNldElucHV0KCdpbnRlcnBvbGF0ZVBhcmFtcycsIGludGVycG9sYXRlUGFyYW1zKTtcbiAgICBjb21wb25lbnQuc2V0SW5wdXQoJ2NvbmZpZycsIGNvbmZpZyk7XG4gICAgY29tcG9uZW50LnNldElucHV0KCdyZW1vdmVDb21wb25lbnQnLCB0aGlzLnJlbW92ZUNvbXBvbmVudC5iaW5kKHRoaXMsIGNvbXBvbmVudCkpO1xuICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucmVtb3ZlQ29tcG9uZW50KGNvbXBvbmVudCk7XG4gICAgfSwgY29uZmlnPy50aW1lUmVtb3ZlKTtcblxuICAgIHRoaXMucXVldWVNZXNzYWdlLnVwZGF0ZSgocXVldWUpID0+IHtcbiAgICAgIHF1ZXVlLnB1c2goe1xuICAgICAgICBjb21wb25lbnQsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgdGltZW91dCxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gWy4uLnF1ZXVlXTtcbiAgICB9KTtcbiAgICB0aGlzLmR5bmFtaWNTZXJ2aWNlLmFkZFRvQm9keShjb21wb25lbnQpO1xuICAgIHRoaXMudXBkYXRlUG9zaXRpb25NZXNzYWdlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUNvbXBvbmVudChjb21wb25lbnQ6IENvbXBvbmVudFJlZjx1bmtub3duPikge1xuICAgIHRoaXMuZHluYW1pY1NlcnZpY2UucmVtb3ZlKGNvbXBvbmVudCk7XG4gICAgY29uc3QgaW5kZXhSZW1vdmUgPSB0aGlzLnF1ZXVlTWVzc2FnZSgpLmZpbmRJbmRleCgoY29uZmlnKSA9PiBjb25maWcuY29tcG9uZW50ID09PSBjb21wb25lbnQpO1xuXG4gICAgaWYgKGluZGV4UmVtb3ZlICE9PSAtMSkge1xuICAgICAgdGhpcy5xdWV1ZU1lc3NhZ2UudXBkYXRlKChxdWV1ZSkgPT4ge1xuICAgICAgICBxdWV1ZS5zcGxpY2UoaW5kZXhSZW1vdmUsIDEpO1xuICAgICAgICByZXR1cm4gWy4uLnF1ZXVlXTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tRdWV1ZU1lc3NhZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucXVldWVNZXNzYWdlLmxlbmd0aCA8IHRoaXMuTUFYX1FVRVVFX01FU1NBR0UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZmlyc3RRdWV1ZSA9IHRoaXMucXVldWVNZXNzYWdlKCkuc2hpZnQoKSBhcyBJTm90aWZpY2F0aW9uUXVldWU7XG5cbiAgICBjbGVhclRpbWVvdXQoZmlyc3RRdWV1ZS50aW1lb3V0KTtcbiAgICB0aGlzLmR5bmFtaWNTZXJ2aWNlLnJlbW92ZShmaXJzdFF1ZXVlLmNvbXBvbmVudCk7XG4gICAgdGhpcy51cGRhdGVQb3NpdGlvbk1lc3NhZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUG9zaXRpb25NZXNzYWdlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5xdWV1ZU1lc3NhZ2UoKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dFVwZGF0ZVBvc2l0aW9uKCkpO1xuICAgIHRoaXMudGltZW91dFVwZGF0ZVBvc2l0aW9uLnNldChcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBsZXQgdG9wTWVzc2FnZSA9IDEyO1xuXG4gICAgICAgIHRoaXMucXVldWVNZXNzYWdlKCkuZm9yRWFjaCgobWVzc2FnZTogSU5vdGlmaWNhdGlvblF1ZXVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgZmlyc3RFbCA9IG1lc3NhZ2UuY29tcG9uZW50Lmluc3RhbmNlLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICAgICAgICBjb25zdCByZWN0ID0gZmlyc3RFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICAgIGZpcnN0RWwuc3R5bGUudG9wID0gYCR7dG9wTWVzc2FnZX1weGA7XG4gICAgICAgICAgdG9wTWVzc2FnZSArPSByZWN0LmhlaWdodCArIDEyO1xuICAgICAgICAgIGxldCByaWdodCA9IG1lc3NhZ2UuY29uZmlnLnBvc2l0aW9uUmlnaHQgPz8gMTI7XG5cbiAgICAgICAgICBpZiAoaXNFbWJlZEZyYW1lKCkpIHtcbiAgICAgICAgICAgIHJpZ2h0ID0gNDA7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZpcnN0RWwuc3R5bGUucmlnaHQgPSBgJHtyaWdodH1weGA7XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL25vdGlmaWNhdGlvbi9zcmMvbm90aWZpY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBTXBFLE1BQU0sT0FBTyx5QkFBeUI7SUFDcEMsbUJBQW1CO0lBQ1gsc0JBQXNCLEdBQUcsTUFBTSxDQUF5QixTQUFTLENBQUMsQ0FBQztJQUNuRSxZQUFZLEdBQUcsTUFBTSxDQUE0QixJQUFJLEtBQUssRUFBc0IsQ0FBQyxDQUFDO0lBQ2xGLHFCQUFxQixHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztJQUNqQyxpQkFBaUIsR0FBVyxDQUFDLENBQUM7SUFDdkMsTUFBTSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUNoQyx1QkFBdUIsR0FBRyxNQUFNLENBQVMsb0NBQW9DLENBQUMsQ0FBQztJQUV2RixpQkFBaUI7SUFDVCxjQUFjLEdBQUcsTUFBTSxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDdkQsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFcEQ7UUFDRSxJQUFJLENB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QUMsaUJBQWlCLENBQUM7Z0JBQ3RGLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUU3QyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLFVBQVUsSUFBSSxDQUFDO2dCQUN0QyxVQUFVLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7Z0JBQy9CLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQztnQkFFL0MsSUFBSSxZQUFZLEVBQUUsRUFBRSxDQUFDO29CQUNuQixLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUNiLENBQUM7Z0JBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsR0FBRyxLQUFLLElBQUksQ0FBQztZQUNyQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO3dHQTdNVSx5QkFBeUI7NEdBQXpCLHlCQUF5QixjQUZ4QixNQUFNOzs0RkFFUCx5QkFBeUI7a0JBSHJDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBJbmplY3RhYmxlLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGlic1VpRHluYW1pY0NvbXBvbmVudFNlcnZpY2UgfSBmcm9tICdAbGlicy11aS9zZXJ2aWNlcy1keW5hbWljLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBVdGlsc0NvbW11bmljYXRlTWljcm8sIGVuY3J5cHQsIGVzY2FwZUh0bWwsIGdldCwgaXNFbWJlZEZyYW1lIH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTGliVWlTZXJ2aWNlc0NvbXBvbmVudHNUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzJztcbmltcG9ydCB7IElOb3RpZmljYXRpb25QdXNoRnJvbUlGcmFtZSwgSU5vdGlmaWNhdGlvblF1ZXVlLCBJTm90aWZpY2F0aW9uVGV4dENvbmZpZywgSU5vdGlmaWNhdGlvblRleHRQdWJsaWNDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMvbm90aWZpY2F0aW9uJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaU5vdGlmaWNhdGlvblNlcnZpY2Uge1xuICAvLyAjcmVnaW9uIFBST1BFUlRZXG4gIHByaXZhdGUgbm90aWZpY2F0aW9uUGVybWlzc2lvbiA9IHNpZ25hbDxOb3RpZmljYXRpb25QZXJtaXNzaW9uPignZGVmYXVsdCcpO1xuICBwcml2YXRlIHF1ZXVlTWVzc2FnZSA9IHNpZ25hbDxBcnJheTxJTm90aWZpY2F0aW9uUXVldWU+PihuZXcgQXJyYXk8SU5vdGlmaWNhdGlvblF1ZXVlPigpKTtcbiAgcHJpdmF0ZSB0aW1lb3V0VXBkYXRlUG9zaXRpb24gPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJpdmF0ZSByZWFkb25seSBNQVhfUVVFVUVfTUVTU0FHRTogbnVtYmVyID0gNTtcbiAgcHJpdmF0ZSBpc0luaXQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIG1lc3NhZ2VOYW1lUG9zdFRvUGFyZW50ID0gc2lnbmFsPHN0cmluZz4oJ01JQ1JPX1NJVEVfUFVTSF9NRVNTQUdFX0ZST01fQ0hJTEQnKTtcblxuICAvLyAjcmVnaW9uIElOSkVDVFxuICBwcml2YXRlIGR5bmFtaWNTZXJ2aWNlID0gaW5qZWN0KExpYnNVaUR5bmFtaWNDb21wb25lbnRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMubm90aWZpY2F0aW9uUGVybWlzc2lvbi5zZXQodGhpcy5zeXN0ZW1TdXBwb3J0Tm90aWZpY2F0aW9uKCkgPyAnZGVmYXVsdCcgOiAnZGVuaWVkJyk7XG4gIH1cblxuICAvKiBGVU5DVElPTlMgKi9cbiAgcHVibGljIGluaXQobWVzc2FnZU5hbWVIYW5kbGVyOiBBcnJheTxzdHJpbmc+LCBtZXNzYWdlTmFtZVBvc3RUb1BhcmVudD86IHN0cmluZykge1xuICAgIGlmICh0aGlzLmlzSW5pdCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNJbml0LnNldCh0cnVlKTtcbiAgICBpZiAobWVzc2FnZU5hbWVQb3N0VG9QYXJlbnQpIHtcbiAgICAgIHRoaXMubWVzc2FnZU5hbWVQb3N0VG9QYXJlbnQuc2V0KG1lc3NhZ2VOYW1lUG9zdFRvUGFyZW50KTtcbiAgICB9XG4gICAgVXRpbHNDb21tdW5pY2F0ZU1pY3JvLkdldE1lc3NhZ2UobWVzc2FnZU5hbWVIYW5kbGVyKS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgIGlmICghaXNFbWJlZEZyYW1lKCkpIHtcbiAgICAgICAgY29uc3QgZGF0YU1lc3NhZ2UgPSBlLmRhdGEucmVzcG9uc2UgYXMgSU5vdGlmaWNhdGlvblB1c2hGcm9tSUZyYW1lO1xuXG4gICAgICAgIHRoaXMuc2hvd0NvbXBUeXBlVGV4dChkYXRhTWVzc2FnZS5tZXNzYWdlLCB1bmRlZmluZWQsIGRhdGFNZXNzYWdlLnRpdGxlLCB7IHR5cGU6IGRhdGFNZXNzYWdlLmZ1bmN0aW9uTmFtZSwgdGltZVJlbW92ZTogZGF0YU1lc3NhZ2UudGltZVJlbW92ZSB8fCAyMDAwIH0pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIFV0aWxzQ29tbXVuaWNhdGVNaWNyby5Qb3N0TWVzc2FnZVRvUGFyZW50KGUuZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IFRyYW5zbGF0ZVNlcnZpY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZTtcbiAgfVxuXG4gIHByaXZhdGUgc3lzdGVtU3VwcG9ydE5vdGlmaWNhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gJ05vdGlmaWNhdGlvbicgaW4gd2luZG93O1xuICB9XG5cbiAgcHVibGljIHN5c3RlbVJlcXVlc3RQZXJtaXNzaW9uKCkge1xuICAgIGlmICghdGhpcy5zeXN0ZW1TdXBwb3J0Tm90aWZpY2F0aW9uKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIE5vdGlmaWNhdGlvbi5yZXF1ZXN0UGVybWlzc2lvbigpLnRoZW4oKHBlcm1pc3Npb246IE5vdGlmaWNhdGlvblBlcm1pc3Npb24pID0+ICh0aGlzLlBlcm1pc3Npb24gPSBwZXJtaXNzaW9uKSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFR5cGVFcnJvcikge1xuICAgICAgICBOb3RpZmljYXRpb24ucmVxdWVzdFBlcm1pc3Npb24oKHBlcm1pc3Npb246IE5vdGlmaWNhdGlvblBlcm1pc3Npb24pID0+ICh0aGlzLlBlcm1pc3Npb24gPSBwZXJtaXNzaW9uKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXQgUGVybWlzc2lvbihwZXJtaXNzaW9uOiBOb3RpZmljYXRpb25QZXJtaXNzaW9uKSB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25QZXJtaXNzaW9uLnNldChwZXJtaXNzaW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBzeXN0ZW1TcGF3bk5vdGlmaWNhdGlvbih0aXRsZTogc3RyaW5nLCBvcHRpb25zPzogTm90aWZpY2F0aW9uT3B0aW9ucyk6IE9ic2VydmFibGU8dW5rbm93bj4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuc3lzdGVtU3VwcG9ydE5vdGlmaWNhdGlvbigpKSB7XG4gICAgICAgIG9icy5jb21wbGV0ZSgpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubm90aWZpY2F0aW9uUGVybWlzc2lvbigpICE9PSAnZ3JhbnRlZCcpIHtcbiAgICAgICAgb2JzLmNvbXBsZXRlKCk7XG4gICAgICB9XG4gICAgICBjb25zdCBub3RpZnkgPSBuZXcgTm90aWZpY2F0aW9uKHRpdGxlLCBvcHRpb25zKTtcblxuICAgICAgbm90aWZ5Lm9uc2hvdyA9IChlKSA9PiB7XG4gICAgICAgIHJldHVybiBvYnMubmV4dCh7XG4gICAgICAgICAgbm90aWZpY2F0aW9uOiBub3RpZnksXG4gICAgICAgICAgZXZlbnQ6IGUsXG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIG5vdGlmeS5vbmNsaWNrID0gKGUpID0+IHtcbiAgICAgICAgbm90aWZ5LmNsb3NlKCk7XG4gICAgICAgIHdpbmRvdy5mb2N1cygpO1xuXG4gICAgICAgIHJldHVybiBvYnMubmV4dCh7XG4gICAgICAgICAgbm90aWZpY2F0aW9uOiBub3RpZnksXG4gICAgICAgICAgZXZlbnQ6IGUsXG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIG5vdGlmeS5vbmVycm9yID0gKGUpID0+IHtcbiAgICAgICAgcmV0dXJuIG9icy5lcnJvcih7XG4gICAgICAgICAgbm90aWZpY2F0aW9uOiBub3RpZnksXG4gICAgICAgICAgZXZlbnQ6IGUsXG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIG5vdGlmeS5vbmNsb3NlID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gb2JzLmNvbXBsZXRlKCk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNob3dDb21wVHlwZVRleHRTdWNjZXNzKG1lc3NhZ2U6IHN0cmluZywgY29uZmlnPzogSU5vdGlmaWNhdGlvblRleHRQdWJsaWNDb25maWcpIHtcbiAgICB0aGlzLnNob3dDb21wVHlwZVRleHQobWVzc2FnZSwgY29uZmlnPy5pbnRlcnBvbGF0ZVBhcmFtcywgY29uZmlnPy50aXRsZSwgeyB0eXBlOiAnc3VjY2VzcycsIHRpbWVSZW1vdmU6IGNvbmZpZz8udGltZVJlbW92ZSB8fCAzMDAwLCBwb3NpdGlvblJpZ2h0OiBjb25maWc/LnBvc2l0aW9uUmlnaHQsIGV2ZW50TmFtZTogY29uZmlnPy5ldmVudE5hbWUsIGNhbGxiYWNrOiBjb25maWc/LmNhbGxiYWNrIH0pO1xuICB9XG5cbiAgcHVibGljIHNob3dDb21wVHlwZVRleHRFcnJvcihtZXNzYWdlOiBzdHJpbmcsIGNvbmZpZz86IElOb3RpZmljYXRpb25UZXh0UHVibGljQ29uZmlnKSB7XG4gICAgdGhpcy5zaG93Q29tcFR5cGVUZXh0KG1lc3NhZ2UsIGNvbmZpZz8uaW50ZXJwb2xhdGVQYXJhbXMsIGNvbmZpZz8udGl0bGUsIHsgdHlwZTogJ2Vycm9yJywgdGltZVJlbW92ZTogY29uZmlnPy50aW1lUmVtb3ZlIHx8IDMwMDAsIHBvc2l0aW9uUmlnaHQ6IGNvbmZpZz8ucG9zaXRpb25SaWdodCwgZXZlbnROYW1lOiBjb25maWc/LmV2ZW50TmFtZSwgY2FsbGJhY2s6IGNvbmZpZz8uY2FsbGJhY2sgfSk7XG4gIH1cblxuICBwdWJsaWMgc2hvd0NvbXBUeXBlVGV4dEluZm8obWVzc2FnZTogc3RyaW5nLCBjb25maWc/OiBJTm90aWZpY2F0aW9uVGV4dFB1YmxpY0NvbmZpZykge1xuICAgIHRoaXMuc2hvd0NvbXBUeXBlVGV4dChtZXNzYWdlLCBjb25maWc/LmludGVycG9sYXRlUGFyYW1zLCBjb25maWc/LnRpdGxlLCB7IHR5cGU6ICdpbmZvJywgdGltZVJlbW92ZTogY29uZmlnPy50aW1lUmVtb3ZlIHx8IDMwMDAsIHBvc2l0aW9uUmlnaHQ6IGNvbmZpZz8ucG9zaXRpb25SaWdodCwgZXZlbnROYW1lOiBjb25maWc/LmV2ZW50TmFtZSwgY2FsbGJhY2s6IGNvbmZpZz8uY2FsbGJhY2sgfSk7XG4gIH1cblxuICBwdWJsaWMgc2hvd0NvbXBUeXBlVGV4dFdhcm5pbmcobWVzc2FnZTogc3RyaW5nLCBjb25maWc/OiBJTm90aWZpY2F0aW9uVGV4dFB1YmxpY0NvbmZpZykge1xuICAgIHRoaXMuc2hvd0NvbXBUeXBlVGV4dChtZXNzYWdlLCBjb25maWc/LmludGVycG9sYXRlUGFyYW1zLCBjb25maWc/LnRpdGxlLCB7IHR5cGU6ICd3YXJuJywgdGltZVJlbW92ZTogY29uZmlnPy50aW1lUmVtb3ZlIHx8IDMwMDAsIHBvc2l0aW9uUmlnaHQ6IGNvbmZpZz8ucG9zaXRpb25SaWdodCwgZXZlbnROYW1lOiBjb25maWc/LmV2ZW50TmFtZSwgY2FsbGJhY2s6IGNvbmZpZz8uY2FsbGJhY2sgfSk7XG4gIH1cblxuICBwcml2YXRlIHNob3dDb21wVHlwZVRleHQobWVzc2FnZTogc3RyaW5nLCBpbnRlcnBvbGF0ZVBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB0aXRsZT86IHN0cmluZywgY29uZmlnOiBJTm90aWZpY2F0aW9uVGV4dENvbmZpZyA9IHsgdHlwZTogJ3N1Y2Nlc3MnLCB0aW1lUmVtb3ZlOiAyMDAwIH0pOiB2b2lkIHtcbiAgICBpZiAoIW1lc3NhZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNoZWNrUXVldWVNZXNzYWdlKCk7XG4gICAgaWYgKGludGVycG9sYXRlUGFyYW1zICYmIHR5cGVvZiBpbnRlcnBvbGF0ZVBhcmFtcyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIE9iamVjdC5rZXlzKGludGVycG9sYXRlUGFyYW1zKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgaW50ZXJwb2xhdGVQYXJhbXNba2V5XSA9IGVzY2FwZUh0bWwoZ2V0KGludGVycG9sYXRlUGFyYW1zLCBrZXkpKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChpc0VtYmVkRnJhbWUoKSkge1xuICAgICAgY29uc3QgbWVzc2FnZVRyYW5zbGF0ZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KG1lc3NhZ2UsIGludGVycG9sYXRlUGFyYW1zKSBhcyBzdHJpbmc7XG4gICAgICBjb25zdCB0aXRsZVRyYW5zbGF0ZSA9IHRpdGxlPyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0aXRsZSwgaW50ZXJwb2xhdGVQYXJhbXMpIDogdGl0bGU7XG5cbiAgICAgIHJldHVybiBVdGlsc0NvbW11bmljYXRlTWljcm8uUG9zdE1lc3NhZ2VUb1BhcmVudCh7IHR5cGU6IHRoaXMubWVzc2FnZU5hbWVQb3N0VG9QYXJlbnQoKSwgcmVzcG9uc2U6IGVuY3J5cHQoSlNPTi5zdHJpbmdpZnkoeyBmdW5jdGlvbk5hbWU6IGNvbmZpZy50eXBlLCBtZXNzYWdlOiBtZXNzYWdlVHJhbnNsYXRlLCB0aXRsZVRyYW5zbGF0ZSwgdGltZVJlbW92ZTogY29uZmlnLnRpbWVSZW1vdmUgfHwgMjAwMCB9KSkgfSk7XG4gICAgfVxuICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuZHluYW1pY1NlcnZpY2UucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoTGliVWlTZXJ2aWNlc0NvbXBvbmVudHNUZXh0Q29tcG9uZW50KTtcblxuICAgIGNvbXBvbmVudC5zZXRJbnB1dCgndGl0bGUnLCB0aXRsZSk7XG4gICAgY29tcG9uZW50LnNldElucHV0KCdtZXNzYWdlJywgbWVzc2FnZSk7XG4gICAgY29tcG9uZW50LnNldElucHV0KCdpbnRlcnBvbGF0ZVBhcmFtcycsIGludGVycG9sYXRlUGFyYW1zKTtcbiAgICBjb21wb25lbnQuc2V0SW5wdXQoJ2NvbmZpZycsIGNvbmZpZyk7XG4gICAgY29tcG9uZW50LnNldElucHV0KCdyZW1vdmVDb21wb25lbnQnLCB0aGlzLnJlbW92ZUNvbXBvbmVudC5iaW5kKHRoaXMsIGNvbXBvbmVudCkpO1xuICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucmVtb3ZlQ29tcG9uZW50KGNvbXBvbmVudCk7XG4gICAgfSwgY29uZmlnPy50aW1lUmVtb3ZlKTtcblxuICAgIHRoaXMucXVldWVNZXNzYWdlLnVwZGF0ZSgocXVldWUpID0+IHtcbiAgICAgIHF1ZXVlLnB1c2goe1xuICAgICAgICBjb21wb25lbnQsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgdGltZW91dCxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gWy4uLnF1ZXVlXTtcbiAgICB9KTtcbiAgICB0aGlzLmR5bmFtaWNTZXJ2aWNlLmFkZFRvQm9keShjb21wb25lbnQpO1xuICAgIHRoaXMudXBkYXRlUG9zaXRpb25NZXNzYWdlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUNvbXBvbmVudChjb21wb25lbnQ6IENvbXBvbmVudFJlZjx1bmtub3duPikge1xuICAgIHRoaXMuZHluYW1pY1NlcnZpY2UucmVtb3ZlKGNvbXBvbmVudCk7XG4gICAgY29uc3QgaW5kZXhSZW1vdmUgPSB0aGlzLnF1ZXVlTWVzc2FnZSgpLmZpbmRJbmRleCgoY29uZmlnKSA9PiBjb25maWcuY29tcG9uZW50ID09PSBjb21wb25lbnQpO1xuXG4gICAgaWYgKGluZGV4UmVtb3ZlICE9PSAtMSkge1xuICAgICAgdGhpcy5xdWV1ZU1lc3NhZ2UudXBkYXRlKChxdWV1ZSkgPT4ge1xuICAgICAgICBxdWV1ZS5zcGxpY2UoaW5kZXhSZW1vdmUsIDEpO1xuICAgICAgICByZXR1cm4gWy4uLnF1ZXVlXTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tRdWV1ZU1lc3NhZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucXVldWVNZXNzYWdlLmxlbmd0aCA8IHRoaXMuTUFYX1FVRVVFX01FU1NBR0UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZmlyc3RRdWV1ZSA9IHRoaXMucXVldWVNZXNzYWdlKCkuc2hpZnQoKSBhcyBJTm90aWZpY2F0aW9uUXVldWU7XG5cbiAgICBjbGVhclRpbWVvdXQoZmlyc3RRdWV1ZS50aW1lb3V0KTtcbiAgICB0aGlzLmR5bmFtaWNTZXJ2aWNlLnJlbW92ZShmaXJzdFF1ZXVlLmNvbXBvbmVudCk7XG4gICAgdGhpcy51cGRhdGVQb3NpdGlvbk1lc3NhZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUG9zaXRpb25NZXNzYWdlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5xdWV1ZU1lc3NhZ2UoKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dFVwZGF0ZVBvc2l0aW9uKCkpO1xuICAgIHRoaXMudGltZW91dFVwZGF0ZVBvc2l0aW9uLnNldChcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBsZXQgdG9wTWVzc2FnZSA9IDEyO1xuXG4gICAgICAgIHRoaXMucXVldWVNZXNzYWdlKCkuZm9yRWFjaCgobWVzc2FnZTogSU5vdGlmaWNhdGlvblF1ZXVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgZmlyc3RFbCA9IG1lc3NhZ2UuY29tcG9uZW50Lmluc3RhbmNlLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICAgICAgICBjb25zdCByZWN0ID0gZmlyc3RFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICAgIGZpcnN0RWwuc3R5bGUudG9wID0gYCR7dG9wTWVzc2FnZX1weGA7XG4gICAgICAgICAgdG9wTWVzc2FnZSArPSByZWN0LmhlaWdodCArIDEyO1xuICAgICAgICAgIGxldCByaWdodCA9IG1lc3NhZ2UuY29uZmlnLnBvc2l0aW9uUmlnaHQgPz8gMTI7XG5cbiAgICAgICAgICBpZiAoaXNFbWJlZEZyYW1lKCkpIHtcbiAgICAgICAgICAgIHJpZ2h0ID0gNDA7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZpcnN0RWwuc3R5bGUucmlnaHQgPSBgJHtyaWdodH1weGA7XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -192,7 +192,8 @@ class LibsUiNotificationService {
|
|
|
192
192
|
}
|
|
193
193
|
if (isEmbedFrame()) {
|
|
194
194
|
const messageTranslate = this.translateService.instant(message, interpolateParams);
|
|
195
|
-
|
|
195
|
+
const titleTranslate = title ? this.translateService.instant(title, interpolateParams) : title;
|
|
196
|
+
return UtilsCommunicateMicro.PostMessageToParent({ type: this.messageNamePostToParent(), response: encrypt(JSON.stringify({ functionName: config.type, message: messageTranslate, titleTranslate, timeRemove: config.timeRemove || 2000 })) });
|
|
196
197
|
}
|
|
197
198
|
const component = this.dynamicService.resolveComponentFactory(LibUiServicesComponentsTextComponent);
|
|
198
199
|
component.setInput('title', title);
|
|
@@ -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 { Directive, OnDestroy, input } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { INotificationTextConfig } from '../interfaces/notification';\n@Directive()\nexport class LibUiServiceNotificationBaseComponent implements OnDestroy {\n // #region PROPERTY\n protected onDestroy = new Subject<void>();\n\n // #region 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 // #region PROPERTY\n protected containerClass = signal<string>('');\n protected icon = signal<string>('');\n\n // #region 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\n 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\n class=\"libs-ui-font-h5m text-break\"\n [innerHtml]=\"title() | translate\"></div>\n }\n @if (message()) {\n <div\n 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() || {}\"></div>\n }\n </div>\n <div class=\"flex items-center\">\n <i\n class=\"libs-ui-icon-close mr-0 ml-[8px] cursor-pointer\"\n (click)=\"handlerClickClose($event)\"></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})\nexport class LibsUiNotificationService {\n // #region 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 private messageNamePostToParent = signal<string>('MICRO_SITE_PUSH_MESSAGE_FROM_CHILD');\n\n // #region 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>, messageNamePostToParent?: string) {\n if (this.isInit()) {\n return;\n }\n this.isInit.set(true);\n if (messageNamePostToParent) {\n this.messageNamePostToParent.set(messageNamePostToParent);\n }\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: this.messageNamePostToParent(), 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(\n 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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;MAIa,qCAAqC,CAAA;;AAEtC,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ;;AAGhC,IAAA,OAAO,GAAG,KAAK,CAAS,EAAE,CAAC;IAC3B,iBAAiB,GAAG,KAAK,EAA2B;AACpD,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,CAAC;AACzB,IAAA,MAAM,GAAG,KAAK,CAA0B,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC9E,IAAA,eAAe,GAAG,KAAK,CAAC,QAAQ,EAAyC;IAElF,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;IAC3B;wGAdW,qCAAqC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAArC,qCAAqC,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAArC,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBADjD;;;ACYK,MAAO,oCAAqC,SAAQ,qCAAqC,CAAA;;AAEnF,IAAA,cAAc,GAAG,MAAM,CAAS,EAAE,CAAC;AACnC,IAAA,IAAI,GAAG,MAAM,CAAS,EAAE,CAAC;;AAG3B,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEvC,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;IACT;IAEA,QAAQ,GAAA;AACN,QAAA,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI;AACxB,YAAA,KAAK,SAAS;AACZ,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,uBAAuB,CAAC;AAChD,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iCAAiC,CAAC;gBAChD;AAEF,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,oBAAoB,CAAC;AAC7C,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC;gBAC3C;AAEF,YAAA,KAAK,OAAO;AACV,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,qBAAqB,CAAC;AAC9C,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iCAAiC,CAAC;gBAChD;AAEF,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,uBAAuB,CAAC;AAChD,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,mCAAmC,CAAC;gBAClD;AAEF,YAAA;AACE,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,oCAAoC,CAAC;AAC7D,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC;;QAEzC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;AAE7C,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE;YAC3B;QACF;AACA,QAAA,IAAI,SAAS,KAAK,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAA,EAAG,KAAK,CAAA,eAAA,CAAiB,CAAC;QAClE;AACA,QAAA,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC;IAClH;;AAIU,IAAA,iBAAiB,CAAC,CAAQ,EAAA;QAClC,CAAC,CAAC,eAAe,EAAE;AACnB,QAAA,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IAC3B;wGAtDW,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApC,oCAAoC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECfjD,i1BA4BA,EAAA,MAAA,EAAA,CAAA,+9BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDhBY,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAGd,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAThD,SAAS;+BAEE,+CAA+C,EAAA,UAAA,EAG7C,IAAI,EAAA,OAAA,EACP,CAAC,eAAe,CAAC,EAAA,eAAA,EACT,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,i1BAAA,EAAA,MAAA,EAAA,CAAA,+9BAAA,CAAA,EAAA;;;MEFpC,yBAAyB,CAAA;;AAE5B,IAAA,sBAAsB,GAAG,MAAM,CAAyB,SAAS,CAAC;AAClE,IAAA,YAAY,GAAG,MAAM,CAA4B,IAAI,KAAK,EAAsB,CAAC;AACjF,IAAA,qBAAqB,GAAG,MAAM,CAAS,CAAC,CAAC;IAChC,iBAAiB,GAAW,CAAC;AACtC,IAAA,MAAM,GAAG,MAAM,CAAU,KAAK,CAAC;AAC/B,IAAA,uBAAuB,GAAG,MAAM,CAAS,oCAAoC,CAAC;;AAG9E,IAAA,cAAc,GAAG,MAAM,CAAC,6BAA6B,CAAC;AACtD,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEnD,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC1F;;IAGO,IAAI,CAAC,kBAAiC,EAAE,uBAAgC,EAAA;AAC7E,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACjB;QACF;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QACrB,IAAI,uBAAuB,EAAE;AAC3B,YAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,uBAAuB,CAAC;QAC3D;QACA,qBAAqB,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AACnE,YAAA,IAAI,CAAC,YAAY,EAAE,EAAE;AACnB,gBAAA,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,QAAuC;AAElE,gBAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,YAAY,EAAE,UAAU,EAAE,WAAW,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;gBAExJ;YACF;AACA,YAAA,qBAAqB,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC;AACnD,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,IAAW,gBAAgB,GAAA;QACzB,OAAO,IAAI,CAAC,gBAAgB;IAC9B;IAEQ,yBAAyB,GAAA;QAC/B,OAAO,cAAc,IAAI,MAAM;IACjC;IAEO,uBAAuB,GAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE;YACrC;QACF;AACA,QAAA,IAAI;AACF,YAAA,YAAY,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAC,UAAkC,MAAM,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC;QAC/G;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,KAAK,YAAY,SAAS,EAAE;AAC9B,gBAAA,YAAY,CAAC,iBAAiB,CAAC,CAAC,UAAkC,MAAM,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC;YACxG;QACF;IACF;IAEA,IAAY,UAAU,CAAC,UAAkC,EAAA;AACvD,QAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC;IAC7C;IAEO,uBAAuB,CAAC,KAAa,EAAE,OAA6B,EAAA;AACzE,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,GAAG,KAAI;AAC5B,YAAA,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE;gBACrC,GAAG,CAAC,QAAQ,EAAE;YAChB;AACA,YAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE,KAAK,SAAS,EAAE;gBAC/C,GAAG,CAAC,QAAQ,EAAE;YAChB;YACA,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC;AAE/C,YAAA,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAI;gBACpB,OAAO,GAAG,CAAC,IAAI,CAAC;AACd,oBAAA,YAAY,EAAE,MAAM;AACpB,oBAAA,KAAK,EAAE,CAAC;AACT,iBAAA,CAAC;AACJ,YAAA,CAAC;AACD,YAAA,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,KAAI;gBACrB,MAAM,CAAC,KAAK,EAAE;gBACd,MAAM,CAAC,KAAK,EAAE;gBAEd,OAAO,GAAG,CAAC,IAAI,CAAC;AACd,oBAAA,YAAY,EAAE,MAAM;AACpB,oBAAA,KAAK,EAAE,CAAC;AACT,iBAAA,CAAC;AACJ,YAAA,CAAC;AACD,YAAA,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,KAAI;gBACrB,OAAO,GAAG,CAAC,KAAK,CAAC;AACf,oBAAA,YAAY,EAAE,MAAM;AACpB,oBAAA,KAAK,EAAE,CAAC;AACT,iBAAA,CAAC;AACJ,YAAA,CAAC;AACD,YAAA,MAAM,CAAC,OAAO,GAAG,MAAK;AACpB,gBAAA,OAAO,GAAG,CAAC,QAAQ,EAAE;AACvB,YAAA,CAAC;AACH,QAAA,CAAC,CAAC;IACJ;IAEO,uBAAuB,CAAC,OAAe,EAAE,MAAsC,EAAA;QACpF,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,IAAI,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACvO;IAEO,qBAAqB,CAAC,OAAe,EAAE,MAAsC,EAAA;QAClF,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,IAAI,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACrO;IAEO,oBAAoB,CAAC,OAAe,EAAE,MAAsC,EAAA;QACjF,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,IAAI,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACpO;IAEO,uBAAuB,CAAC,OAAe,EAAE,MAAsC,EAAA;QACpF,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,IAAI,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACpO;AAEQ,IAAA,gBAAgB,CAAC,OAAe,EAAE,iBAA2C,EAAE,KAAc,EAAE,MAAA,GAAkC,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,EAAA;QAC5K,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;QAEA,IAAI,CAAC,iBAAiB,EAAE;AACxB,QAAA,IAAI,iBAAiB,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE;YAC9D,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAC7C,gBAAA,iBAAiB,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;AAClE,YAAA,CAAC,CAAC;QACJ;QAEA,IAAI,YAAY,EAAE,EAAE;AAClB,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,iBAAiB,CAAW;YAE5F,OAAO,qBAAqB,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACvO;QACA,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,oCAAoC,CAAC;AAEnG,QAAA,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;AAClC,QAAA,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;AACtC,QAAA,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,iBAAiB,CAAC;AAC1D,QAAA,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;AACpC,QAAA,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACjF,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAK;AAC9B,YAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;AACjC,QAAA,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC;QAEtB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,KAAI;YACjC,KAAK,CAAC,IAAI,CAAC;gBACT,SAAS;gBACT,MAAM;gBACN,OAAO;AACR,aAAA,CAAC;AAEF,YAAA,OAAO,CAAC,GAAG,KAAK,CAAC;AACnB,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC;QACxC,IAAI,CAAC,qBAAqB,EAAE;IAC9B;AAEQ,IAAA,eAAe,CAAC,SAAgC,EAAA;AACtD,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC;AAE7F,QAAA,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;YACtB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,KAAI;AACjC,gBAAA,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AAC5B,gBAAA,OAAO,CAAC,GAAG,KAAK,CAAC;AACnB,YAAA,CAAC,CAAC;QACJ;IACF;IAEQ,iBAAiB,GAAA;QACvB,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE;YACrD;QACF;QACA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,EAAwB;AAEpE,QAAA,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;QAChD,IAAI,CAAC,qBAAqB,EAAE;IAC9B;IAEQ,qBAAqB,GAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE;YAC/B;QACF;AACA,QAAA,YAAY,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC1C,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAC5B,UAAU,CAAC,MAAK;YACd,IAAI,UAAU,GAAG,EAAE;YAEnB,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,OAA2B,KAAI;AAC1D,gBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,iBAAiB;AACrF,gBAAA,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE;gBAE5C,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,UAAU,IAAI;AACrC,gBAAA,UAAU,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE;gBAC9B,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE;gBAE9C,IAAI,YAAY,EAAE,EAAE;oBAClB,KAAK,GAAG,EAAE;gBACZ;gBACA,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAA,EAAG,KAAK,IAAI;AACpC,YAAA,CAAC,CAAC;QACJ,CAAC,CAAC,CACH;IACH;wGA5MW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,cAFxB,MAAM,EAAA,CAAA;;4FAEP,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACVD;;AAEG;;;;"}
|
|
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 // #region PROPERTY\n protected onDestroy = new Subject<void>();\n\n // #region 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 // #region PROPERTY\n protected containerClass = signal<string>('');\n protected icon = signal<string>('');\n\n // #region 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\n 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\n class=\"libs-ui-font-h5m text-break\"\n [innerHtml]=\"title() | translate\"></div>\n }\n @if (message()) {\n <div\n 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() || {}\"></div>\n }\n </div>\n <div class=\"flex items-center\">\n <i\n class=\"libs-ui-icon-close mr-0 ml-[8px] cursor-pointer\"\n (click)=\"handlerClickClose($event)\"></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})\nexport class LibsUiNotificationService {\n // #region 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 private messageNamePostToParent = signal<string>('MICRO_SITE_PUSH_MESSAGE_FROM_CHILD');\n\n // #region 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>, messageNamePostToParent?: string) {\n if (this.isInit()) {\n return;\n }\n this.isInit.set(true);\n if (messageNamePostToParent) {\n this.messageNamePostToParent.set(messageNamePostToParent);\n }\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 const titleTranslate = title? this.translateService.instant(title, interpolateParams) : title;\n\n return UtilsCommunicateMicro.PostMessageToParent({ type: this.messageNamePostToParent(), response: encrypt(JSON.stringify({ functionName: config.type, message: messageTranslate, titleTranslate, 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(\n 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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libs-ui/services-notification",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.356-0",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/core": ">=18.0.0",
|
|
6
6
|
"rxjs": "~7.8.0",
|
|
7
7
|
"@ngx-translate/core": "^15.0.0",
|
|
8
|
-
"@libs-ui/services-dynamic-component": "0.2.
|
|
9
|
-
"@libs-ui/utils": "0.2.
|
|
8
|
+
"@libs-ui/services-dynamic-component": "0.2.356-0",
|
|
9
|
+
"@libs-ui/utils": "0.2.356-0"
|
|
10
10
|
},
|
|
11
11
|
"sideEffects": false,
|
|
12
12
|
"module": "fesm2022/libs-ui-services-notification.mjs",
|