@libs-ui/components-checkbox-single 0.2.356-9 → 0.2.357-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,165 +1,462 @@
|
|
|
1
1
|
# @libs-ui/components-checkbox-single
|
|
2
2
|
|
|
3
|
-
> Component checkbox đơn lẻ với
|
|
3
|
+
> Component checkbox đơn lẻ với hỗ trợ nhãn, hình ảnh, avatar, popover, bullet và mô tả chi tiết cho Angular.
|
|
4
4
|
|
|
5
5
|
## Giới thiệu
|
|
6
6
|
|
|
7
|
-
`LibsUiComponentsCheckboxSingleComponent` là một
|
|
7
|
+
`LibsUiComponentsCheckboxSingleComponent` là một Standalone Angular component cung cấp giải pháp checkbox linh hoạt, vượt xa ô chọn thông thường. Component hỗ trợ hiển thị nhãn văn bản (có thể dịch i18n), tích hợp Popover khi di chuột, hiển thị hình ảnh hoặc Avatar cạnh ô chọn, bullet màu sắc để phân loại, và khu vực mô tả chi tiết bên dưới nhãn. Được xây dựng trên Angular Signals với `ChangeDetectionStrategy.OnPush`, đảm bảo hiệu năng tối ưu trong mọi tình huống sử dụng.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## Tính năng
|
|
10
|
+
|
|
11
|
+
- ✅ Two-way binding trạng thái `checked` qua Angular `model()`
|
|
12
|
+
- ✅ Hiển thị nhãn văn bản hỗ trợ i18n (TranslateModule)
|
|
10
13
|
- ✅ Tích hợp Popover (tooltip) khi di chuột vào nhãn
|
|
11
|
-
- ✅ Hiển thị hình ảnh hoặc Avatar cạnh checkbox
|
|
12
|
-
- ✅ Hỗ trợ
|
|
13
|
-
- ✅
|
|
14
|
-
- ✅
|
|
15
|
-
- ✅
|
|
16
|
-
- ✅
|
|
14
|
+
- ✅ Hiển thị hình ảnh hoặc Avatar cạnh ô checkbox
|
|
15
|
+
- ✅ Hỗ trợ icon class cạnh checkbox
|
|
16
|
+
- ✅ Bullet (chấm tròn màu) để phân loại trực quan
|
|
17
|
+
- ✅ Description (mô tả chi tiết HTML) dưới nhãn
|
|
18
|
+
- ✅ Chế độ `modeBorder` hiển thị viền bao quanh toàn component
|
|
19
|
+
- ✅ Trạng thái `disable`, `disableLabel`, `error`, `showBorderError`
|
|
20
|
+
- ✅ Trạng thái `stillOtherOptions` (indeterminate) cho checkbox nhóm
|
|
21
|
+
- ✅ `ignoreCheckbox` để ẩn ô chọn, chỉ hiển thị nhãn/ảnh
|
|
22
|
+
- ✅ Component Outlet tùy chỉnh nội dung qua `ngComponentOutlet`
|
|
23
|
+
- ✅ Hàm `revert()` trong sự kiện `outChange` để hoàn tác khi cần (ví dụ: API thất bại)
|
|
24
|
+
- ✅ Keyboard accessibility (Enter/Space)
|
|
25
|
+
|
|
26
|
+
## Khi nào sử dụng
|
|
27
|
+
|
|
28
|
+
- Cần một ô chọn (checkbox) đơn lẻ với nhãn văn bản rõ ràng
|
|
29
|
+
- Cần hiển thị thông tin bổ sung cạnh checkbox (ảnh đại diện, logo, icon phân loại)
|
|
30
|
+
- Cần giải thích chi tiết qua popover khi người dùng di chuột vào nhãn
|
|
31
|
+
- Dùng trong form cài đặt, lựa chọn cấu hình phức tạp nhiều trường
|
|
32
|
+
- Muốn hiển thị danh sách lựa chọn dạng checkbox có kèm hình ảnh minh họa
|
|
33
|
+
- Cần đánh dấu màu sắc phân loại (bullet) bên cạnh mỗi lựa chọn
|
|
17
34
|
|
|
18
35
|
## Cài đặt
|
|
19
36
|
|
|
20
37
|
```bash
|
|
21
|
-
# npm
|
|
22
38
|
npm install @libs-ui/components-checkbox-single
|
|
39
|
+
```
|
|
23
40
|
|
|
24
|
-
|
|
25
|
-
|
|
41
|
+
## Import
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
import { LibsUiComponentsCheckboxSingleComponent } from '@libs-ui/components-checkbox-single';
|
|
45
|
+
|
|
46
|
+
// Interfaces & Types
|
|
47
|
+
import {
|
|
48
|
+
ICheckboxEvent,
|
|
49
|
+
ICheckboxBullet,
|
|
50
|
+
ICheckboxItemDescription,
|
|
51
|
+
ICheckboxChecked,
|
|
52
|
+
} from '@libs-ui/components-checkbox-single';
|
|
26
53
|
```
|
|
27
54
|
|
|
28
|
-
##
|
|
55
|
+
## Ví dụ sử dụng
|
|
29
56
|
|
|
30
|
-
###
|
|
57
|
+
### 1. Cơ bản — Checkbox với nhãn và two-way binding
|
|
31
58
|
|
|
32
59
|
```typescript
|
|
33
60
|
import { Component, signal } from '@angular/core';
|
|
34
61
|
import { LibsUiComponentsCheckboxSingleComponent, ICheckboxEvent } from '@libs-ui/components-checkbox-single';
|
|
35
62
|
|
|
36
63
|
@Component({
|
|
37
|
-
selector: 'app-example',
|
|
64
|
+
selector: 'app-basic-example',
|
|
38
65
|
standalone: true,
|
|
39
66
|
imports: [LibsUiComponentsCheckboxSingleComponent],
|
|
40
67
|
template: `
|
|
41
68
|
<libs_ui-components-checkbox-single
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
69
|
+
key="accept-terms"
|
|
70
|
+
[(checked)]="isAccepted"
|
|
71
|
+
label="Tôi đồng ý với điều khoản sử dụng"
|
|
72
|
+
(outChange)="handlerChange($event)"
|
|
73
|
+
/>
|
|
74
|
+
<p>Trạng thái: {{ isAccepted() ? 'Đã đồng ý' : 'Chưa đồng ý' }}</p>
|
|
45
75
|
`,
|
|
46
76
|
})
|
|
47
|
-
export class
|
|
48
|
-
|
|
77
|
+
export class BasicExampleComponent {
|
|
78
|
+
isAccepted = signal(false);
|
|
79
|
+
|
|
80
|
+
handlerChange(event: ICheckboxEvent): void {
|
|
81
|
+
event; // stopPropagation đã được xử lý bên trong component
|
|
82
|
+
console.log('key:', event.key, 'checked:', event.checked);
|
|
83
|
+
// Nếu cần hoàn tác (ví dụ: gọi API thất bại)
|
|
84
|
+
// event.revert();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### 2. Checkbox với hình ảnh và Avatar
|
|
49
90
|
|
|
50
|
-
|
|
51
|
-
|
|
91
|
+
```typescript
|
|
92
|
+
import { Component, signal } from '@angular/core';
|
|
93
|
+
import { LibsUiComponentsCheckboxSingleComponent, ICheckboxEvent } from '@libs-ui/components-checkbox-single';
|
|
94
|
+
import { IAvatarConfig } from '@libs-ui/components-avatar';
|
|
95
|
+
|
|
96
|
+
@Component({
|
|
97
|
+
selector: 'app-image-example',
|
|
98
|
+
standalone: true,
|
|
99
|
+
imports: [LibsUiComponentsCheckboxSingleComponent],
|
|
100
|
+
template: `
|
|
101
|
+
<!-- Checkbox với hình ảnh -->
|
|
102
|
+
<libs_ui-components-checkbox-single
|
|
103
|
+
key="item-with-image"
|
|
104
|
+
[(checked)]="imageChecked"
|
|
105
|
+
label="Sản phẩm A"
|
|
106
|
+
linkImage="https://example.com/product-a.png"
|
|
107
|
+
linkImageError="https://example.com/placeholder.png"
|
|
108
|
+
classImageInclude="w-[32px] h-[32px] rounded-[4px]"
|
|
109
|
+
(outChange)="handlerChange($event)"
|
|
110
|
+
/>
|
|
111
|
+
|
|
112
|
+
<!-- Checkbox với Avatar -->
|
|
113
|
+
<libs_ui-components-checkbox-single
|
|
114
|
+
key="user-avatar"
|
|
115
|
+
[(checked)]="avatarChecked"
|
|
116
|
+
label="Nguyễn Văn An"
|
|
117
|
+
[avatarConfig]="userAvatarConfig"
|
|
118
|
+
(outChange)="handlerChange($event)"
|
|
119
|
+
/>
|
|
120
|
+
`,
|
|
121
|
+
})
|
|
122
|
+
export class ImageExampleComponent {
|
|
123
|
+
imageChecked = signal(false);
|
|
124
|
+
avatarChecked = signal(true);
|
|
125
|
+
|
|
126
|
+
readonly userAvatarConfig: IAvatarConfig = {
|
|
127
|
+
linkAvatar: 'https://i.pravatar.cc/150?u=nguyen-van-an',
|
|
128
|
+
linkAvatarError: 'https://i.pravatar.cc/150?u=fallback',
|
|
129
|
+
size: 32,
|
|
130
|
+
textAvatar: 'Nguyễn Văn An',
|
|
131
|
+
idGenColor: 'nguyen-van-an',
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
handlerChange(event: ICheckboxEvent): void {
|
|
135
|
+
event;
|
|
136
|
+
console.log('checked:', event.checked);
|
|
52
137
|
}
|
|
53
138
|
}
|
|
54
139
|
```
|
|
55
140
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
141
|
+
### 3. Checkbox với Popover và Description
|
|
142
|
+
|
|
143
|
+
```typescript
|
|
144
|
+
import { Component, signal } from '@angular/core';
|
|
145
|
+
import { LibsUiComponentsCheckboxSingleComponent, ICheckboxEvent, ICheckboxItemDescription } from '@libs-ui/components-checkbox-single';
|
|
146
|
+
import { IPopover } from '@libs-ui/components-popover';
|
|
147
|
+
|
|
148
|
+
@Component({
|
|
149
|
+
selector: 'app-popover-example',
|
|
150
|
+
standalone: true,
|
|
151
|
+
imports: [LibsUiComponentsCheckboxSingleComponent],
|
|
152
|
+
template: `
|
|
153
|
+
<libs_ui-components-checkbox-single
|
|
154
|
+
key="advanced-option"
|
|
155
|
+
[(checked)]="advancedChecked"
|
|
156
|
+
label="Kích hoạt chế độ nâng cao"
|
|
157
|
+
[popover]="advancedPopover"
|
|
158
|
+
[description]="advancedDescription"
|
|
159
|
+
[modeBorder]="true"
|
|
160
|
+
(outChange)="handlerChange($event)"
|
|
161
|
+
/>
|
|
162
|
+
`,
|
|
163
|
+
})
|
|
164
|
+
export class PopoverExampleComponent {
|
|
165
|
+
advancedChecked = signal(false);
|
|
166
|
+
|
|
167
|
+
readonly advancedPopover: IPopover = {
|
|
168
|
+
dataView: 'Chế độ nâng cao cho phép cấu hình thêm nhiều tùy chọn chi tiết hơn.',
|
|
169
|
+
config: {
|
|
170
|
+
direction: 'right',
|
|
171
|
+
} as any,
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
readonly advancedDescription: ICheckboxItemDescription = {
|
|
175
|
+
content: 'Lưu ý: Chế độ này yêu cầu quyền <strong>Admin</strong> mới có thể sử dụng.',
|
|
176
|
+
classInclude: 'text-sm text-orange-500 mt-1 ml-6',
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
handlerChange(event: ICheckboxEvent): void {
|
|
180
|
+
event;
|
|
181
|
+
console.log('advanced mode:', event.checked);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### 4. Các trạng thái — Disable, Error, Indeterminate
|
|
187
|
+
|
|
188
|
+
```typescript
|
|
189
|
+
import { Component, signal } from '@angular/core';
|
|
190
|
+
import { LibsUiComponentsCheckboxSingleComponent } from '@libs-ui/components-checkbox-single';
|
|
191
|
+
|
|
192
|
+
@Component({
|
|
193
|
+
selector: 'app-states-example',
|
|
194
|
+
standalone: true,
|
|
195
|
+
imports: [LibsUiComponentsCheckboxSingleComponent],
|
|
196
|
+
template: `
|
|
197
|
+
<!-- Disabled (checked) -->
|
|
198
|
+
<libs_ui-components-checkbox-single
|
|
199
|
+
label="Tùy chọn bắt buộc (không thay đổi được)"
|
|
200
|
+
[checked]="true"
|
|
201
|
+
[disable]="true"
|
|
202
|
+
/>
|
|
203
|
+
|
|
204
|
+
<!-- Error state với viền đỏ -->
|
|
205
|
+
<libs_ui-components-checkbox-single
|
|
206
|
+
key="required-accept"
|
|
207
|
+
label="Bắt buộc phải đồng ý"
|
|
208
|
+
[error]="true"
|
|
209
|
+
[showBorderError]="true"
|
|
210
|
+
/>
|
|
211
|
+
|
|
212
|
+
<!-- Indeterminate — còn lựa chọn khác -->
|
|
213
|
+
<libs_ui-components-checkbox-single
|
|
214
|
+
label="Chọn tất cả (một phần đã chọn)"
|
|
215
|
+
[stillOtherOptions]="true"
|
|
216
|
+
/>
|
|
217
|
+
|
|
218
|
+
<!-- Ẩn ô checkbox, chỉ hiển thị nhãn -->
|
|
219
|
+
<libs_ui-components-checkbox-single
|
|
220
|
+
label="Chỉ hiển thị nhãn"
|
|
221
|
+
[ignoreCheckbox]="true"
|
|
222
|
+
/>
|
|
223
|
+
`,
|
|
224
|
+
})
|
|
225
|
+
export class StatesExampleComponent {}
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### 5. Checkbox với Bullet màu và modeBorder
|
|
229
|
+
|
|
230
|
+
```typescript
|
|
231
|
+
import { Component, signal } from '@angular/core';
|
|
232
|
+
import { LibsUiComponentsCheckboxSingleComponent, ICheckboxEvent, ICheckboxBullet } from '@libs-ui/components-checkbox-single';
|
|
233
|
+
|
|
234
|
+
@Component({
|
|
235
|
+
selector: 'app-bullet-example',
|
|
236
|
+
standalone: true,
|
|
237
|
+
imports: [LibsUiComponentsCheckboxSingleComponent],
|
|
238
|
+
template: `
|
|
239
|
+
<libs_ui-components-checkbox-single
|
|
240
|
+
key="status-active"
|
|
241
|
+
[(checked)]="activeChecked"
|
|
242
|
+
label="Hoạt động"
|
|
243
|
+
[bullet]="activeBullet"
|
|
244
|
+
[modeBorder]="true"
|
|
245
|
+
classInclude="mb-2"
|
|
246
|
+
(outChange)="handlerChange($event)"
|
|
247
|
+
/>
|
|
248
|
+
|
|
249
|
+
<libs_ui-components-checkbox-single
|
|
250
|
+
key="status-pending"
|
|
251
|
+
[(checked)]="pendingChecked"
|
|
252
|
+
label="Đang chờ"
|
|
253
|
+
[bullet]="pendingBullet"
|
|
254
|
+
[modeBorder]="true"
|
|
255
|
+
(outChange)="handlerChange($event)"
|
|
256
|
+
/>
|
|
257
|
+
`,
|
|
258
|
+
})
|
|
259
|
+
export class BulletExampleComponent {
|
|
260
|
+
activeChecked = signal(true);
|
|
261
|
+
pendingChecked = signal(false);
|
|
262
|
+
|
|
263
|
+
readonly activeBullet: ICheckboxBullet = {
|
|
264
|
+
backgroundColor: '#52c41a',
|
|
265
|
+
width: 8,
|
|
266
|
+
height: 8,
|
|
267
|
+
};
|
|
268
|
+
|
|
269
|
+
readonly pendingBullet: ICheckboxBullet = {
|
|
270
|
+
backgroundColor: '#faad14',
|
|
271
|
+
width: 8,
|
|
272
|
+
height: 8,
|
|
273
|
+
classInclude: 'rounded-full',
|
|
274
|
+
};
|
|
275
|
+
|
|
276
|
+
handlerChange(event: ICheckboxEvent): void {
|
|
277
|
+
event;
|
|
278
|
+
console.log('key:', event.key, 'checked:', event.checked);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### 6. Revert trạng thái khi API thất bại
|
|
284
|
+
|
|
285
|
+
```typescript
|
|
286
|
+
import { Component, signal, inject } from '@angular/core';
|
|
287
|
+
import { LibsUiComponentsCheckboxSingleComponent, ICheckboxEvent } from '@libs-ui/components-checkbox-single';
|
|
288
|
+
import { catchError, of } from 'rxjs';
|
|
289
|
+
import { takeUntilDestroyed, DestroyRef } from '@angular/core/rxjs-interop';
|
|
290
|
+
|
|
291
|
+
@Component({
|
|
292
|
+
selector: 'app-revert-example',
|
|
293
|
+
standalone: true,
|
|
294
|
+
imports: [LibsUiComponentsCheckboxSingleComponent],
|
|
295
|
+
template: `
|
|
296
|
+
<libs_ui-components-checkbox-single
|
|
297
|
+
key="newsletter"
|
|
298
|
+
[(checked)]="newsletterEnabled"
|
|
299
|
+
label="Đăng ký nhận bản tin"
|
|
300
|
+
(outChange)="handlerToggleNewsletter($event)"
|
|
301
|
+
/>
|
|
302
|
+
`,
|
|
303
|
+
})
|
|
304
|
+
export class RevertExampleComponent {
|
|
305
|
+
private readonly destroyRef = inject(DestroyRef);
|
|
306
|
+
newsletterEnabled = signal(false);
|
|
307
|
+
|
|
308
|
+
handlerToggleNewsletter(event: ICheckboxEvent): void {
|
|
309
|
+
event;
|
|
310
|
+
// Gọi API cập nhật, nếu thất bại thì revert trạng thái checkbox
|
|
311
|
+
this.settingsService.updateNewsletter(event.checked)
|
|
312
|
+
.pipe(
|
|
313
|
+
catchError(() => {
|
|
314
|
+
event.revert(); // Hoàn tác về trạng thái trước
|
|
315
|
+
return of(null);
|
|
316
|
+
}),
|
|
317
|
+
takeUntilDestroyed(this.destroyRef),
|
|
318
|
+
)
|
|
319
|
+
.subscribe();
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
// Giả lập service (trong thực tế sẽ inject thật)
|
|
323
|
+
private readonly settingsService = {
|
|
324
|
+
updateNewsletter: (enabled: boolean) => of({ success: true }),
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
## @Input()
|
|
330
|
+
|
|
331
|
+
| Input | Type | Default | Mô tả | Ví dụ |
|
|
332
|
+
|---|---|---|---|---|
|
|
333
|
+
| `avatarConfig` | `IAvatarConfig` | `undefined` | Cấu hình Avatar hiển thị cạnh checkbox thay cho hình ảnh thông thường | `[avatarConfig]="{ linkAvatar: 'url', size: 32, textAvatar: 'AB' }"` |
|
|
334
|
+
| `bullet` | `ICheckboxBullet` | `undefined` | Chấm tròn màu sắc phân loại hiển thị cạnh checkbox | `[bullet]="{ backgroundColor: '#52c41a', width: 8, height: 8 }"` |
|
|
335
|
+
| `checked` | `boolean` | `false` | Trạng thái chọn — hỗ trợ two-way binding qua `model()` | `[(checked)]="isSelected"` |
|
|
336
|
+
| `classIconInclude` | `string` | `undefined` | Class CSS bổ sung cho thẻ `<i>` chứa icon checkbox | `classIconInclude="text-[20px]"` |
|
|
337
|
+
| `classImageInclude` | `string` | `undefined` | Class CSS bổ sung cho thẻ `<img>` | `classImageInclude="w-[32px] h-[32px] rounded"` |
|
|
338
|
+
| `classInclude` | `string` | `''` | Class CSS bổ sung cho container chính (wrapper) | `classInclude="mb-2 w-full"` |
|
|
339
|
+
| `classLabelInclude` | `string` | `'libs-ui-font-h5r'` | Class CSS cho phần nhãn văn bản — mặc định typography h5 regular | `classLabelInclude="libs-ui-font-h5m text-blue-600"` |
|
|
340
|
+
| `clickExactly` | `boolean` | `true` | Khi `true`, chỉ click vào icon checkbox hoặc nhãn mới đổi trạng thái. Khi `false`, click bất kỳ vị trí nào trong container đều trigger | `[clickExactly]="false"` |
|
|
341
|
+
| `componentOutlet` | `any` | `undefined` | Component tùy chỉnh render thông qua `ngComponentOutlet` bên trong checkbox | `[componentOutlet]="MyCustomBadge"` |
|
|
342
|
+
| `dataComponentOutlet` | `TYPE_COMPONENT_OUTLET_DATA` | `undefined` | Dữ liệu (inputs) truyền vào component được render qua `componentOutlet` | `[dataComponentOutlet]="{ status: 'active' }"` |
|
|
343
|
+
| `description` | `ICheckboxItemDescription` | `undefined` | Mô tả chi tiết hiển thị bên dưới nhãn, hỗ trợ nội dung HTML và i18n | `[description]="{ content: 'Ghi chú', classInclude: 'text-sm text-gray-500' }"` |
|
|
344
|
+
| `disable` | `boolean` | `undefined` | Vô hiệu hóa toàn bộ tương tác với component | `[disable]="true"` |
|
|
345
|
+
| `disableLabel` | `boolean` | `undefined` | Vô hiệu hóa chỉ phần nhãn (click nhãn không đổi trạng thái checkbox) | `[disableLabel]="true"` |
|
|
346
|
+
| `error` | `boolean` | `undefined` | Đánh dấu checkbox ở trạng thái lỗi (icon checkbox chuyển màu đỏ) | `[error]="hasError"` |
|
|
347
|
+
| `iconImageClass` | `string` | `undefined` | Class icon CSS (ví dụ: từ icon font) hiển thị cạnh checkbox thay cho `<img>` | `iconImageClass="libs-ui-icon-user"` |
|
|
348
|
+
| `ignoreCheckbox` | `boolean` | `undefined` | Ẩn ô chọn icon checkbox — chỉ hiển thị nhãn, ảnh và các thành phần khác | `[ignoreCheckbox]="true"` |
|
|
349
|
+
| `ignoreShowPopoverLabel` | `boolean` | `undefined` | Ẩn popover khi di chuột vào nhãn (override cấu hình popover) | `[ignoreShowPopoverLabel]="true"` |
|
|
350
|
+
| `imgTypeIcon` | `boolean` | `undefined` | Xác định hình ảnh truyền qua `linkImage` là dạng icon nhỏ (18x18px) | `[imgTypeIcon]="true"` |
|
|
351
|
+
| `key` | `string` | `undefined` | Khóa định danh duy nhất, được gửi kèm trong sự kiện `outChange` để phân biệt các checkbox | `key="accept-terms"` |
|
|
352
|
+
| `label` | `string` | `undefined` | Văn bản nhãn hiển thị cạnh checkbox, hỗ trợ i18n key | `label="Đồng ý điều khoản"` hoặc `label="i18n_key"` |
|
|
353
|
+
| `linkImage` | `string` | `undefined` | URL hình ảnh hiển thị cạnh checkbox — hỗ trợ two-way binding qua `model()` | `[(linkImage)]="productImageUrl"` |
|
|
354
|
+
| `linkImageError` | `string` | `undefined` | URL hình ảnh dự phòng khi `linkImage` bị lỗi tải | `linkImageError="assets/placeholder.png"` |
|
|
355
|
+
| `modeBorder` | `boolean` | `undefined` | Hiển thị viền bao quanh toàn bộ component, viền xanh khi đang chọn | `[modeBorder]="true"` |
|
|
356
|
+
| `popover` | `IPopover` | `undefined` | Cấu hình Popover (tooltip) hiển thị khi di chuột vào phần nhãn | `[popover]="{ dataView: 'Mô tả thêm', config: { direction: 'right' } }"` |
|
|
357
|
+
| `showBorderError` | `boolean` | `undefined` | Hiển thị viền màu đỏ bao quanh component khi `error` là `true` | `[showBorderError]="formSubmitted && !isAccepted()"` |
|
|
358
|
+
| `stillOtherOptions` | `boolean` | `undefined` | Hiển thị icon trạng thái indeterminate (một phần đã chọn) thay cho checked/unchecked | `[stillOtherOptions]="someSelected"` |
|
|
359
|
+
| `typeLabelPopover` | `TYPE_POPOVER_TYPE` | `'text'` | Kiểu nội dung của popover trên nhãn (`'text'` hoặc `'component'`) | `typeLabelPopover="text"` |
|
|
360
|
+
| `zIndexLabel` | `number` | `1200` | Giá trị `z-index` CSS cho phần nhãn và popover | `[zIndexLabel]="1500"` |
|
|
361
|
+
|
|
362
|
+
## @Output()
|
|
363
|
+
|
|
364
|
+
| Output | Type | Mô tả | Handler TS | Binding HTML |
|
|
365
|
+
|---|---|---|---|---|
|
|
366
|
+
| `(outChange)` | `ICheckboxEvent` | Phát ra mỗi khi trạng thái `checked` thay đổi. Kèm theo `key`, `checked` và hàm `revert()` để hoàn tác nếu cần | `handlerChange(event: ICheckboxEvent): void { event; /* logic */ }` | `(outChange)="handlerChange($event)"` |
|
|
367
|
+
| `(outChangStageFlagMousePopover)` | `IFlagMouse` | Phát ra khi trạng thái chuột thay đổi trên vùng nhãn — dùng để đồng bộ trạng thái popover từ component cha | `handlerFlagMouse(event: IFlagMouse): void { event; /* logic */ }` | `(outChangStageFlagMousePopover)="handlerFlagMouse($event)"` |
|
|
368
|
+
| `(outClickLabel)` | `void` | Phát ra khi người dùng click trực tiếp vào nhãn văn bản | `handlerClickLabel(): void { /* logic */ }` | `(outClickLabel)="handlerClickLabel()"` |
|
|
369
|
+
| `(outEventPopover)` | `TYPE_POPOVER_EVENT` | Phát ra các sự kiện tương tác từ Popover (hover, click, close...) | `handlerEventPopover(event: TYPE_POPOVER_EVENT): void { event; /* logic */ }` | `(outEventPopover)="handlerEventPopover($event)"` |
|
|
370
|
+
|
|
371
|
+
## Types & Interfaces
|
|
372
|
+
|
|
373
|
+
```typescript
|
|
374
|
+
import {
|
|
375
|
+
ICheckboxEvent,
|
|
376
|
+
ICheckboxBullet,
|
|
377
|
+
ICheckboxItemDescription,
|
|
378
|
+
ICheckboxChecked,
|
|
379
|
+
} from '@libs-ui/components-checkbox-single';
|
|
380
|
+
```
|
|
101
381
|
|
|
102
382
|
### ICheckboxEvent
|
|
103
383
|
|
|
384
|
+
Sự kiện phát ra mỗi khi trạng thái checkbox thay đổi.
|
|
385
|
+
|
|
104
386
|
```typescript
|
|
105
387
|
interface ICheckboxEvent {
|
|
388
|
+
/** Khóa định danh của checkbox (từ input [key]) */
|
|
106
389
|
key: any;
|
|
390
|
+
/** Trạng thái chọn sau khi thay đổi */
|
|
107
391
|
checked: boolean;
|
|
392
|
+
/** Danh sách các checkbox đang được chọn — dùng khi kết hợp với checkbox group */
|
|
108
393
|
allCheckboxChecked?: Array<ICheckboxChecked>;
|
|
394
|
+
/** Hàm callback để hoàn tác trạng thái về trước — ví dụ khi gọi API thất bại */
|
|
109
395
|
revert: () => void;
|
|
110
396
|
}
|
|
111
397
|
```
|
|
112
398
|
|
|
113
|
-
### ICheckboxItemDescription
|
|
114
|
-
|
|
115
|
-
```typescript
|
|
116
|
-
interface ICheckboxItemDescription {
|
|
117
|
-
content: string; // Nội dung mô tả (Hỗ trợ HTML)
|
|
118
|
-
classInclude: string; // Class CSS bổ sung
|
|
119
|
-
}
|
|
120
|
-
```
|
|
121
|
-
|
|
122
399
|
### ICheckboxBullet
|
|
123
400
|
|
|
401
|
+
Cấu hình chấm tròn màu sắc (bullet) hiển thị cạnh checkbox.
|
|
402
|
+
|
|
124
403
|
```typescript
|
|
125
404
|
interface ICheckboxBullet {
|
|
405
|
+
/** Class CSS bổ sung (ví dụ: 'rounded-full') */
|
|
126
406
|
classInclude?: string;
|
|
407
|
+
/** Màu nền của bullet — bất kỳ giá trị CSS color hợp lệ */
|
|
127
408
|
backgroundColor: string;
|
|
409
|
+
/** Chiều rộng tính bằng pixel */
|
|
128
410
|
width: number;
|
|
411
|
+
/** Chiều cao tính bằng pixel */
|
|
129
412
|
height: number;
|
|
130
413
|
}
|
|
131
414
|
```
|
|
132
415
|
|
|
133
|
-
|
|
416
|
+
### ICheckboxItemDescription
|
|
134
417
|
|
|
135
|
-
|
|
136
|
-
- **Angular Signals & Model** - Modern reactive state management
|
|
137
|
-
- **NG-Zorro Style Integration** - Tuân thủ phong cách thiết kế chuyên nghiệp
|
|
418
|
+
Cấu hình phần mô tả chi tiết hiển thị bên dưới nhãn.
|
|
138
419
|
|
|
139
|
-
|
|
420
|
+
```typescript
|
|
421
|
+
interface ICheckboxItemDescription {
|
|
422
|
+
/** Nội dung mô tả — hỗ trợ HTML và i18n key */
|
|
423
|
+
content: string;
|
|
424
|
+
/** Class CSS bổ sung cho thẻ wrapper của mô tả */
|
|
425
|
+
classInclude: string;
|
|
426
|
+
}
|
|
427
|
+
```
|
|
140
428
|
|
|
141
|
-
|
|
429
|
+
### ICheckboxChecked
|
|
142
430
|
|
|
143
|
-
|
|
144
|
-
|
|
431
|
+
Thông tin một checkbox đang được chọn trong context nhóm.
|
|
432
|
+
|
|
433
|
+
```typescript
|
|
434
|
+
interface ICheckboxChecked {
|
|
435
|
+
/** Khóa định danh */
|
|
436
|
+
key: string;
|
|
437
|
+
/** Dữ liệu item liên quan */
|
|
438
|
+
item: any;
|
|
439
|
+
}
|
|
145
440
|
```
|
|
146
441
|
|
|
147
|
-
|
|
442
|
+
## Lưu ý quan trọng
|
|
148
443
|
|
|
149
|
-
|
|
444
|
+
⚠️ **Hàm `revert()` trong `outChange`**: Luôn lưu tham chiếu `event` trước khi gọi API bất đồng bộ. Gọi `event.revert()` trong khối `catchError` để hoàn tác trạng thái checkbox về trước nếu thao tác thất bại — tránh sai lệch giữa UI và server.
|
|
150
445
|
|
|
151
|
-
|
|
152
|
-
- 🖼️ **Image & Avatar**: Kết hợp checkbox với hình ảnh minh họa.
|
|
153
|
-
- 💡 **Popover & Description**: Hiển thị thông tin chi tiết khi tương tác.
|
|
154
|
-
- 🛠️ **Interactive Demo**: Thử nghiệm các flag `disable`, `error`, `ignoreCheckbox`.
|
|
446
|
+
⚠️ **`clickExactly` mặc định là `true`**: Mặc định chỉ click vào icon checkbox hoặc nhãn mới trigger thay đổi. Nếu muốn toàn bộ area (card, row) có thể click, đặt `[clickExactly]="false"`.
|
|
155
447
|
|
|
156
|
-
|
|
448
|
+
⚠️ **`description.content` hỗ trợ HTML**: Nội dung trong `ICheckboxItemDescription.content` được render qua `[innerHtml]` và đã qua `escapeHtml` bảo mật tự động. Truyền chuỗi HTML bình thường, không cần escape thủ công.
|
|
449
|
+
|
|
450
|
+
⚠️ **`label` hỗ trợ i18n**: Giá trị `label` được pipe qua `translate` tự động. Có thể truyền i18n key (`label="i18n_accept_terms"`) hoặc chuỗi trực tiếp.
|
|
451
|
+
|
|
452
|
+
⚠️ **`modeBorder` và trạng thái**: Khi `modeBorder="true"`, component hiển thị viền xám khi chưa chọn và viền màu primary khi đã chọn — phù hợp cho danh sách lựa chọn dạng card.
|
|
453
|
+
|
|
454
|
+
⚠️ **`stillOtherOptions` vs `checked`**: Hai trạng thái này độc lập. `stillOtherOptions` hiển thị icon indeterminate thay cho cả checked và unchecked icon — dùng để biểu thị "một phần đã chọn" trong nhóm checkbox.
|
|
455
|
+
|
|
456
|
+
## Demo
|
|
157
457
|
|
|
158
458
|
```bash
|
|
159
|
-
|
|
160
|
-
npx nx test components-checkbox-single
|
|
459
|
+
npx nx serve core-ui
|
|
161
460
|
```
|
|
162
461
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
MIT
|
|
462
|
+
Truy cập: http://localhost:4500/components/checkbox/single
|
|
@@ -136,10 +136,10 @@ export class LibsUiComponentsCheckboxSingleComponent {
|
|
|
136
136
|
this.outChangStageFlagMousePopover.emit(event);
|
|
137
137
|
}
|
|
138
138
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsCheckboxSingleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
139
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsCheckboxSingleComponent, isStandalone: true, selector: "libs_ui-components-checkbox-single", inputs: { key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, classLabelInclude: { classPropertyName: "classLabelInclude", publicName: "classLabelInclude", isSignal: true, isRequired: false, transformFunction: null }, ignoreShowPopoverLabel: { classPropertyName: "ignoreShowPopoverLabel", publicName: "ignoreShowPopoverLabel", isSignal: true, isRequired: false, transformFunction: null }, typeLabelPopover: { classPropertyName: "typeLabelPopover", publicName: "typeLabelPopover", isSignal: true, isRequired: false, transformFunction: null }, popover: { classPropertyName: "popover", publicName: "popover", isSignal: true, isRequired: false, transformFunction: null }, linkImage: { classPropertyName: "linkImage", publicName: "linkImage", isSignal: true, isRequired: false, transformFunction: null }, linkImageError: { classPropertyName: "linkImageError", publicName: "linkImageError", isSignal: true, isRequired: false, transformFunction: null }, avatarConfig: { classPropertyName: "avatarConfig", publicName: "avatarConfig", isSignal: true, isRequired: false, transformFunction: null }, classImageInclude: { classPropertyName: "classImageInclude", publicName: "classImageInclude", isSignal: true, isRequired: false, transformFunction: null }, imgTypeIcon: { classPropertyName: "imgTypeIcon", publicName: "imgTypeIcon", isSignal: true, isRequired: false, transformFunction: null }, bullet: { classPropertyName: "bullet", publicName: "bullet", isSignal: true, isRequired: false, transformFunction: null }, classInclude: { classPropertyName: "classInclude", publicName: "classInclude", isSignal: true, isRequired: false, transformFunction: null }, clickExactly: { classPropertyName: "clickExactly", publicName: "clickExactly", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, disableLabel: { classPropertyName: "disableLabel", publicName: "disableLabel", isSignal: true, isRequired: false, transformFunction: null }, ignoreCheckbox: { classPropertyName: "ignoreCheckbox", publicName: "ignoreCheckbox", isSignal: true, isRequired: false, transformFunction: null }, zIndexLabel: { classPropertyName: "zIndexLabel", publicName: "zIndexLabel", isSignal: true, isRequired: false, transformFunction: null }, stillOtherOptions: { classPropertyName: "stillOtherOptions", publicName: "stillOtherOptions", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, showBorderError: { classPropertyName: "showBorderError", publicName: "showBorderError", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, iconImageClass: { classPropertyName: "iconImageClass", publicName: "iconImageClass", isSignal: true, isRequired: false, transformFunction: null }, classIconInclude: { classPropertyName: "classIconInclude", publicName: "classIconInclude", isSignal: true, isRequired: false, transformFunction: null }, modeBorder: { classPropertyName: "modeBorder", publicName: "modeBorder", isSignal: true, isRequired: false, transformFunction: null }, dataComponentOutlet: { classPropertyName: "dataComponentOutlet", publicName: "dataComponentOutlet", isSignal: true, isRequired: false, transformFunction: null }, componentOutlet: { classPropertyName: "componentOutlet", publicName: "componentOutlet", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange", linkImage: "linkImageChange", outChange: "outChange", outEventPopover: "outEventPopover", outClickLabel: "outClickLabel", outChangStageFlagMousePopover: "outChangStageFlagMousePopover" }, ngImport: i0, template: "<div\n class=\"libs-ui-checkbox {{ classInclude() || '' }}\"\n [class.cursor-pointer]=\"!clickExactly() && !disable()\"\n [class.p-[8px]]=\"modeBorder()\"\n [class.rounded-[4px]]=\"modeBorder()\"\n [class.libs-ui-border-general]=\"modeBorder() && !checked()\"\n [class.libs-ui-border-primary-general]=\"modeBorder() && checked()\"\n (click)=\"handlerClickRelatively($event)\">\n @if (!ignoreCheckbox()) {\n <i\n class=\"{{ classIconInclude() || '' }}\"\n [class.libs-ui-icon-checkbox-unselected]=\"!checked() && !stillOtherOptions()\"\n [class.libs-ui-icon-checkbox-selected]=\"checked() && !stillOtherOptions()\"\n [class.libs-ui-icon-checkbox-indeterminate]=\"stillOtherOptions()\"\n [class.libs-ui-disable]=\"disable()\"\n [class.pointer-events-none]=\"disable()\"\n [class.libs-ui-disable-active]=\"disable() && (checked() || stillOtherOptions())\"\n [class.libs-ui-text-error]=\"showBorderError() || error()\"\n (click)=\"handlerChange($event)\"></i>\n }\n @if (linkImage()) {\n <img\n [src]=\"linkImage()\"\n class=\"libs-ui-checkbox-image {{ classImageInclude() || '' }}\"\n [class.cursor-default]=\"disable()\"\n [class.w-[18px]]=\"imgTypeIcon()\"\n [class.h-[18px]]=\"imgTypeIcon()\"\n (click)=\"handlerChange($event)\"\n (error)=\"handlerErrorImage($event)\" />\n }\n @if (avatarConfig(); as avatarConfig) {\n <libs_ui-components-avatar\n [typeShape]=\"avatarConfig.typeShape\"\n [classInclude]=\"avatarConfig.classInclude\"\n [size]=\"avatarConfig.size || 24\"\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\" />\n }\n @if (!linkImage() && iconImageClass()) {\n <div\n [class]=\"iconImageClass()\"\n [class.cursor-default]=\"disable()\"></div>\n }\n @if (bullet(); as bullet) {\n <div\n class=\"libs-ui-checkbox-bullet {{ bullet.classInclude || '' }}\"\n [style.background-color]=\"bullet.backgroundColor\"\n [style.width.px]=\"bullet.width\"\n [style.height.px]=\"bullet.height\"\n [class.cursor-default]=\"disable()\"\n (click)=\"handlerChange($event)\"></div>\n }\n @if (label(); as label) {\n <div\n LibsUiComponentsPopoverDirective\n [type]=\"typeLabelPopover() || 'text'\"\n [attr.isLabel]=\"true\"\n [classInclude]=\"classLabelInclude() + (disable() ? ' cursor-default' : '')\"\n [class.libs-ui-disable]=\"disableLabel()\"\n [ignoreShowPopover]=\"ignoreShowPopoverLabel()\"\n [config]=\"{ content: label, timerDestroy: 50, zIndex: zIndexLabel() }\"\n [ignoreCursorPointerModeLikeClick]=\"disableLabel() || disable()\"\n [innerHTML]=\"label | translate\"\n (outEvent)=\"handlerEventLabel($event)\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"></div>\n }\n @if (popover(); as popover) {\n <libs_ui-components-popover\n class=\"flex\"\n [config]=\"popover.config\"\n (outEvent)=\"handlerEventPopover($event)\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\">\n @if (!popover.dataView) {\n <i [class]=\"popover.classInclude ?? 'libs-ui-icon-tooltip-outline'\"></i>\n }\n @if (popover.dataView) {\n <div [innerHtml]=\"popover.dataView | translate\"></div>\n }\n </libs_ui-components-popover>\n }\n @if (dataComponentOutletComputed(); as dataComponentOutletComputed) {\n <ng-container *ngComponentOutlet=\"dataComponentOutletComputed.component; inputs: dataComponentOutletComputed.inputs\" />\n }\n</div>\n@if (description(); as description) {\n <div\n [class]=\"description.classInclude\"\n [innerHtml]=\"descriptionComputed() | translate\"></div>\n}\n", styles: [":host .libs-ui-checkbox{display:flex;align-items:center}:host .libs-ui-checkbox .libs-ui-icon-checkbox-selected:before,:host .libs-ui-checkbox .libs-ui-icon-checkbox-indeterminate:before{color:var(--libs-ui-color-default, #226ff5)}:host .libs-ui-checkbox .libs-ui-checkbox-image{width:24px;height:24px;margin-right:8px;border-radius:12px;border:solid 1px #e6e8ed;cursor:pointer;flex-shrink:0}:host .libs-ui-checkbox .libs-ui-checkbox-bullet{min-width:10px;min-height:10px;border-radius:50%;margin-right:8px;cursor:pointer}:host .libs-ui-checkbox libs_ui-components-popover[isLabel=true]{margin-right:8px;max-width:100%;cursor:pointer}:host .libs-ui-checkbox>[class*=libs-ui-icon-],:host .libs-ui-checkbox>[class*=icon-font-3rd]{font-size:16px;cursor:pointer;margin-right:8px}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "component", type: LibsUiComponentsAvatarComponent, selector: "libs_ui-components-avatar", inputs: ["typeShape", "classInclude", "size", "linkAvatar", "linkAvatarError", "classImageInclude", "zIndexPreviewImage", "clickPreviewImage", "idGenColor", "getLastTextAfterSpace", "textAvatar", "textAvatarClassInclude", "containerTextAvatarClassInclude"], outputs: ["outAvatarError", "outEventPreviewImage"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
139
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsCheckboxSingleComponent, isStandalone: true, selector: "libs_ui-components-checkbox-single", inputs: { key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, classLabelInclude: { classPropertyName: "classLabelInclude", publicName: "classLabelInclude", isSignal: true, isRequired: false, transformFunction: null }, ignoreShowPopoverLabel: { classPropertyName: "ignoreShowPopoverLabel", publicName: "ignoreShowPopoverLabel", isSignal: true, isRequired: false, transformFunction: null }, typeLabelPopover: { classPropertyName: "typeLabelPopover", publicName: "typeLabelPopover", isSignal: true, isRequired: false, transformFunction: null }, popover: { classPropertyName: "popover", publicName: "popover", isSignal: true, isRequired: false, transformFunction: null }, linkImage: { classPropertyName: "linkImage", publicName: "linkImage", isSignal: true, isRequired: false, transformFunction: null }, linkImageError: { classPropertyName: "linkImageError", publicName: "linkImageError", isSignal: true, isRequired: false, transformFunction: null }, avatarConfig: { classPropertyName: "avatarConfig", publicName: "avatarConfig", isSignal: true, isRequired: false, transformFunction: null }, classImageInclude: { classPropertyName: "classImageInclude", publicName: "classImageInclude", isSignal: true, isRequired: false, transformFunction: null }, imgTypeIcon: { classPropertyName: "imgTypeIcon", publicName: "imgTypeIcon", isSignal: true, isRequired: false, transformFunction: null }, bullet: { classPropertyName: "bullet", publicName: "bullet", isSignal: true, isRequired: false, transformFunction: null }, classInclude: { classPropertyName: "classInclude", publicName: "classInclude", isSignal: true, isRequired: false, transformFunction: null }, clickExactly: { classPropertyName: "clickExactly", publicName: "clickExactly", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, disableLabel: { classPropertyName: "disableLabel", publicName: "disableLabel", isSignal: true, isRequired: false, transformFunction: null }, ignoreCheckbox: { classPropertyName: "ignoreCheckbox", publicName: "ignoreCheckbox", isSignal: true, isRequired: false, transformFunction: null }, zIndexLabel: { classPropertyName: "zIndexLabel", publicName: "zIndexLabel", isSignal: true, isRequired: false, transformFunction: null }, stillOtherOptions: { classPropertyName: "stillOtherOptions", publicName: "stillOtherOptions", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, showBorderError: { classPropertyName: "showBorderError", publicName: "showBorderError", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, iconImageClass: { classPropertyName: "iconImageClass", publicName: "iconImageClass", isSignal: true, isRequired: false, transformFunction: null }, classIconInclude: { classPropertyName: "classIconInclude", publicName: "classIconInclude", isSignal: true, isRequired: false, transformFunction: null }, modeBorder: { classPropertyName: "modeBorder", publicName: "modeBorder", isSignal: true, isRequired: false, transformFunction: null }, dataComponentOutlet: { classPropertyName: "dataComponentOutlet", publicName: "dataComponentOutlet", isSignal: true, isRequired: false, transformFunction: null }, componentOutlet: { classPropertyName: "componentOutlet", publicName: "componentOutlet", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange", linkImage: "linkImageChange", outChange: "outChange", outEventPopover: "outEventPopover", outClickLabel: "outClickLabel", outChangStageFlagMousePopover: "outChangStageFlagMousePopover" }, ngImport: i0, template: "<div\n class=\"libs-ui-checkbox {{ classInclude() || '' }}\"\n tabindex=\"0\"\n [class.cursor-pointer]=\"!clickExactly() && !disable()\"\n [class.p-[8px]]=\"modeBorder()\"\n [class.rounded-[4px]]=\"modeBorder()\"\n [class.libs-ui-border-general]=\"modeBorder() && !checked()\"\n [class.libs-ui-border-primary-general]=\"modeBorder() && checked()\"\n (click)=\"handlerClickRelatively($event)\"\n (keydown.enter)=\"handlerClickRelatively($any($event))\"\n (keydown.space)=\"handlerClickRelatively($any($event))\">\n @if (!ignoreCheckbox()) {\n <i\n class=\"{{ classIconInclude() || '' }}\"\n tabindex=\"0\"\n [class.libs-ui-icon-checkbox-unselected]=\"!checked() && !stillOtherOptions()\"\n [class.libs-ui-icon-checkbox-selected]=\"checked() && !stillOtherOptions()\"\n [class.libs-ui-icon-checkbox-indeterminate]=\"stillOtherOptions()\"\n [class.libs-ui-disable]=\"disable()\"\n [class.pointer-events-none]=\"disable()\"\n [class.libs-ui-disable-active]=\"disable() && (checked() || stillOtherOptions())\"\n [class.libs-ui-text-error]=\"showBorderError() || error()\"\n (click)=\"handlerChange($event)\"\n (keydown.enter)=\"handlerChange($any($event))\"\n (keydown.space)=\"handlerChange($any($event))\"></i>\n }\n @if (linkImage()) {\n <img\n [src]=\"linkImage()\"\n class=\"libs-ui-checkbox-image {{ classImageInclude() || '' }}\"\n alt=\"\"\n tabindex=\"0\"\n [class.cursor-default]=\"disable()\"\n [class.w-[18px]]=\"imgTypeIcon()\"\n [class.h-[18px]]=\"imgTypeIcon()\"\n (click)=\"handlerChange($event)\"\n (keydown.enter)=\"handlerChange($any($event))\"\n (keydown.space)=\"handlerChange($any($event))\"\n (error)=\"handlerErrorImage($event)\" />\n }\n @if (avatarConfig(); as avatarConfig) {\n <libs_ui-components-avatar\n [typeShape]=\"avatarConfig.typeShape\"\n [classInclude]=\"avatarConfig.classInclude\"\n [size]=\"avatarConfig.size || 24\"\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\" />\n }\n @if (!linkImage() && iconImageClass()) {\n <div\n [class]=\"iconImageClass()\"\n [class.cursor-default]=\"disable()\"></div>\n }\n @if (bullet(); as bullet) {\n <div\n class=\"libs-ui-checkbox-bullet {{ bullet.classInclude || '' }}\"\n tabindex=\"0\"\n [style.background-color]=\"bullet.backgroundColor\"\n [style.width.px]=\"bullet.width\"\n [style.height.px]=\"bullet.height\"\n [class.cursor-default]=\"disable()\"\n (click)=\"handlerChange($event)\"\n (keydown.enter)=\"handlerChange($any($event))\"\n (keydown.space)=\"handlerChange($any($event))\"></div>\n }\n @if (label(); as label) {\n <div\n LibsUiComponentsPopoverDirective\n [type]=\"typeLabelPopover() || 'text'\"\n [attr.isLabel]=\"true\"\n [classInclude]=\"classLabelInclude() + (disable() ? ' cursor-default' : '')\"\n [class.libs-ui-disable]=\"disableLabel()\"\n [ignoreShowPopover]=\"ignoreShowPopoverLabel()\"\n [config]=\"{ content: label, timerDestroy: 50, zIndex: zIndexLabel() }\"\n [ignoreCursorPointerModeLikeClick]=\"disableLabel() || disable()\"\n [innerHTML]=\"label | translate\"\n (outEvent)=\"handlerEventLabel($event)\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"></div>\n }\n @if (popover(); as popover) {\n <libs_ui-components-popover\n class=\"flex\"\n [config]=\"popover.config\"\n (outEvent)=\"handlerEventPopover($event)\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\">\n @if (!popover.dataView) {\n <i [class]=\"popover.classInclude ?? 'libs-ui-icon-tooltip-outline'\"></i>\n }\n @if (popover.dataView) {\n <div [innerHtml]=\"popover.dataView | translate\"></div>\n }\n </libs_ui-components-popover>\n }\n @if (dataComponentOutletComputed(); as dataComponentOutletComputed) {\n <ng-container *ngComponentOutlet=\"dataComponentOutletComputed.component; inputs: dataComponentOutletComputed.inputs\" />\n }\n</div>\n@if (description(); as description) {\n <div\n [class]=\"description.classInclude\"\n [innerHtml]=\"descriptionComputed() | translate\"></div>\n}\n", styles: [":host .libs-ui-checkbox{display:flex;align-items:center}:host .libs-ui-checkbox .libs-ui-icon-checkbox-selected:before,:host .libs-ui-checkbox .libs-ui-icon-checkbox-indeterminate:before{color:var(--libs-ui-color-default, #226ff5)}:host .libs-ui-checkbox .libs-ui-checkbox-image{width:24px;height:24px;margin-right:8px;border-radius:12px;border:solid 1px #e6e8ed;cursor:pointer;flex-shrink:0}:host .libs-ui-checkbox .libs-ui-checkbox-bullet{min-width:10px;min-height:10px;border-radius:50%;margin-right:8px;cursor:pointer}:host .libs-ui-checkbox libs_ui-components-popover[isLabel=true]{margin-right:8px;max-width:100%;cursor:pointer}:host .libs-ui-checkbox>[class*=libs-ui-icon-],:host .libs-ui-checkbox>[class*=icon-font-3rd]{font-size:16px;cursor:pointer;margin-right:8px}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "component", type: LibsUiComponentsAvatarComponent, selector: "libs_ui-components-avatar", inputs: ["typeShape", "classInclude", "size", "linkAvatar", "linkAvatarError", "classImageInclude", "zIndexPreviewImage", "clickPreviewImage", "idGenColor", "getLastTextAfterSpace", "textAvatar", "textAvatarClassInclude", "containerTextAvatarClassInclude"], outputs: ["outAvatarError", "outEventPreviewImage"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
140
140
|
}
|
|
141
141
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsCheckboxSingleComponent, decorators: [{
|
|
142
142
|
type: Component,
|
|
143
|
-
args: [{ selector: 'libs_ui-components-checkbox-single', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [TranslateModule, NgComponentOutlet, LibsUiComponentsAvatarComponent, LibsUiComponentsPopoverComponent], template: "<div\n class=\"libs-ui-checkbox {{ classInclude() || '' }}\"\n [class.cursor-pointer]=\"!clickExactly() && !disable()\"\n [class.p-[8px]]=\"modeBorder()\"\n [class.rounded-[4px]]=\"modeBorder()\"\n [class.libs-ui-border-general]=\"modeBorder() && !checked()\"\n [class.libs-ui-border-primary-general]=\"modeBorder() && checked()\"\n (click)=\"handlerClickRelatively($event)\">\n @if (!ignoreCheckbox()) {\n <i\n class=\"{{ classIconInclude() || '' }}\"\n [class.libs-ui-icon-checkbox-unselected]=\"!checked() && !stillOtherOptions()\"\n [class.libs-ui-icon-checkbox-selected]=\"checked() && !stillOtherOptions()\"\n [class.libs-ui-icon-checkbox-indeterminate]=\"stillOtherOptions()\"\n [class.libs-ui-disable]=\"disable()\"\n [class.pointer-events-none]=\"disable()\"\n [class.libs-ui-disable-active]=\"disable() && (checked() || stillOtherOptions())\"\n [class.libs-ui-text-error]=\"showBorderError() || error()\"\n (click)=\"handlerChange($event)\"></i>\n }\n @if (linkImage()) {\n <img\n [src]=\"linkImage()\"\n class=\"libs-ui-checkbox-image {{ classImageInclude() || '' }}\"\n [class.cursor-default]=\"disable()\"\n [class.w-[18px]]=\"imgTypeIcon()\"\n [class.h-[18px]]=\"imgTypeIcon()\"\n (click)=\"handlerChange($event)\"\n (error)=\"handlerErrorImage($event)\" />\n }\n @if (avatarConfig(); as avatarConfig) {\n <libs_ui-components-avatar\n [typeShape]=\"avatarConfig.typeShape\"\n [classInclude]=\"avatarConfig.classInclude\"\n [size]=\"avatarConfig.size || 24\"\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\" />\n }\n @if (!linkImage() && iconImageClass()) {\n <div\n [class]=\"iconImageClass()\"\n [class.cursor-default]=\"disable()\"></div>\n }\n @if (bullet(); as bullet) {\n <div\n class=\"libs-ui-checkbox-bullet {{ bullet.classInclude || '' }}\"\n [style.background-color]=\"bullet.backgroundColor\"\n [style.width.px]=\"bullet.width\"\n [style.height.px]=\"bullet.height\"\n [class.cursor-default]=\"disable()\"\n (click)=\"handlerChange($event)\"></div>\n }\n @if (label(); as label) {\n <div\n LibsUiComponentsPopoverDirective\n [type]=\"typeLabelPopover() || 'text'\"\n [attr.isLabel]=\"true\"\n [classInclude]=\"classLabelInclude() + (disable() ? ' cursor-default' : '')\"\n [class.libs-ui-disable]=\"disableLabel()\"\n [ignoreShowPopover]=\"ignoreShowPopoverLabel()\"\n [config]=\"{ content: label, timerDestroy: 50, zIndex: zIndexLabel() }\"\n [ignoreCursorPointerModeLikeClick]=\"disableLabel() || disable()\"\n [innerHTML]=\"label | translate\"\n (outEvent)=\"handlerEventLabel($event)\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"></div>\n }\n @if (popover(); as popover) {\n <libs_ui-components-popover\n class=\"flex\"\n [config]=\"popover.config\"\n (outEvent)=\"handlerEventPopover($event)\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\">\n @if (!popover.dataView) {\n <i [class]=\"popover.classInclude ?? 'libs-ui-icon-tooltip-outline'\"></i>\n }\n @if (popover.dataView) {\n <div [innerHtml]=\"popover.dataView | translate\"></div>\n }\n </libs_ui-components-popover>\n }\n @if (dataComponentOutletComputed(); as dataComponentOutletComputed) {\n <ng-container *ngComponentOutlet=\"dataComponentOutletComputed.component; inputs: dataComponentOutletComputed.inputs\" />\n }\n</div>\n@if (description(); as description) {\n <div\n [class]=\"description.classInclude\"\n [innerHtml]=\"descriptionComputed() | translate\"></div>\n}\n", styles: [":host .libs-ui-checkbox{display:flex;align-items:center}:host .libs-ui-checkbox .libs-ui-icon-checkbox-selected:before,:host .libs-ui-checkbox .libs-ui-icon-checkbox-indeterminate:before{color:var(--libs-ui-color-default, #226ff5)}:host .libs-ui-checkbox .libs-ui-checkbox-image{width:24px;height:24px;margin-right:8px;border-radius:12px;border:solid 1px #e6e8ed;cursor:pointer;flex-shrink:0}:host .libs-ui-checkbox .libs-ui-checkbox-bullet{min-width:10px;min-height:10px;border-radius:50%;margin-right:8px;cursor:pointer}:host .libs-ui-checkbox libs_ui-components-popover[isLabel=true]{margin-right:8px;max-width:100%;cursor:pointer}:host .libs-ui-checkbox>[class*=libs-ui-icon-],:host .libs-ui-checkbox>[class*=icon-font-3rd]{font-size:16px;cursor:pointer;margin-right:8px}\n"] }]
|
|
143
|
+
args: [{ selector: 'libs_ui-components-checkbox-single', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [TranslateModule, NgComponentOutlet, LibsUiComponentsAvatarComponent, LibsUiComponentsPopoverComponent], template: "<div\n class=\"libs-ui-checkbox {{ classInclude() || '' }}\"\n tabindex=\"0\"\n [class.cursor-pointer]=\"!clickExactly() && !disable()\"\n [class.p-[8px]]=\"modeBorder()\"\n [class.rounded-[4px]]=\"modeBorder()\"\n [class.libs-ui-border-general]=\"modeBorder() && !checked()\"\n [class.libs-ui-border-primary-general]=\"modeBorder() && checked()\"\n (click)=\"handlerClickRelatively($event)\"\n (keydown.enter)=\"handlerClickRelatively($any($event))\"\n (keydown.space)=\"handlerClickRelatively($any($event))\">\n @if (!ignoreCheckbox()) {\n <i\n class=\"{{ classIconInclude() || '' }}\"\n tabindex=\"0\"\n [class.libs-ui-icon-checkbox-unselected]=\"!checked() && !stillOtherOptions()\"\n [class.libs-ui-icon-checkbox-selected]=\"checked() && !stillOtherOptions()\"\n [class.libs-ui-icon-checkbox-indeterminate]=\"stillOtherOptions()\"\n [class.libs-ui-disable]=\"disable()\"\n [class.pointer-events-none]=\"disable()\"\n [class.libs-ui-disable-active]=\"disable() && (checked() || stillOtherOptions())\"\n [class.libs-ui-text-error]=\"showBorderError() || error()\"\n (click)=\"handlerChange($event)\"\n (keydown.enter)=\"handlerChange($any($event))\"\n (keydown.space)=\"handlerChange($any($event))\"></i>\n }\n @if (linkImage()) {\n <img\n [src]=\"linkImage()\"\n class=\"libs-ui-checkbox-image {{ classImageInclude() || '' }}\"\n alt=\"\"\n tabindex=\"0\"\n [class.cursor-default]=\"disable()\"\n [class.w-[18px]]=\"imgTypeIcon()\"\n [class.h-[18px]]=\"imgTypeIcon()\"\n (click)=\"handlerChange($event)\"\n (keydown.enter)=\"handlerChange($any($event))\"\n (keydown.space)=\"handlerChange($any($event))\"\n (error)=\"handlerErrorImage($event)\" />\n }\n @if (avatarConfig(); as avatarConfig) {\n <libs_ui-components-avatar\n [typeShape]=\"avatarConfig.typeShape\"\n [classInclude]=\"avatarConfig.classInclude\"\n [size]=\"avatarConfig.size || 24\"\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\" />\n }\n @if (!linkImage() && iconImageClass()) {\n <div\n [class]=\"iconImageClass()\"\n [class.cursor-default]=\"disable()\"></div>\n }\n @if (bullet(); as bullet) {\n <div\n class=\"libs-ui-checkbox-bullet {{ bullet.classInclude || '' }}\"\n tabindex=\"0\"\n [style.background-color]=\"bullet.backgroundColor\"\n [style.width.px]=\"bullet.width\"\n [style.height.px]=\"bullet.height\"\n [class.cursor-default]=\"disable()\"\n (click)=\"handlerChange($event)\"\n (keydown.enter)=\"handlerChange($any($event))\"\n (keydown.space)=\"handlerChange($any($event))\"></div>\n }\n @if (label(); as label) {\n <div\n LibsUiComponentsPopoverDirective\n [type]=\"typeLabelPopover() || 'text'\"\n [attr.isLabel]=\"true\"\n [classInclude]=\"classLabelInclude() + (disable() ? ' cursor-default' : '')\"\n [class.libs-ui-disable]=\"disableLabel()\"\n [ignoreShowPopover]=\"ignoreShowPopoverLabel()\"\n [config]=\"{ content: label, timerDestroy: 50, zIndex: zIndexLabel() }\"\n [ignoreCursorPointerModeLikeClick]=\"disableLabel() || disable()\"\n [innerHTML]=\"label | translate\"\n (outEvent)=\"handlerEventLabel($event)\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"></div>\n }\n @if (popover(); as popover) {\n <libs_ui-components-popover\n class=\"flex\"\n [config]=\"popover.config\"\n (outEvent)=\"handlerEventPopover($event)\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\">\n @if (!popover.dataView) {\n <i [class]=\"popover.classInclude ?? 'libs-ui-icon-tooltip-outline'\"></i>\n }\n @if (popover.dataView) {\n <div [innerHtml]=\"popover.dataView | translate\"></div>\n }\n </libs_ui-components-popover>\n }\n @if (dataComponentOutletComputed(); as dataComponentOutletComputed) {\n <ng-container *ngComponentOutlet=\"dataComponentOutletComputed.component; inputs: dataComponentOutletComputed.inputs\" />\n }\n</div>\n@if (description(); as description) {\n <div\n [class]=\"description.classInclude\"\n [innerHtml]=\"descriptionComputed() | translate\"></div>\n}\n", styles: [":host .libs-ui-checkbox{display:flex;align-items:center}:host .libs-ui-checkbox .libs-ui-icon-checkbox-selected:before,:host .libs-ui-checkbox .libs-ui-icon-checkbox-indeterminate:before{color:var(--libs-ui-color-default, #226ff5)}:host .libs-ui-checkbox .libs-ui-checkbox-image{width:24px;height:24px;margin-right:8px;border-radius:12px;border:solid 1px #e6e8ed;cursor:pointer;flex-shrink:0}:host .libs-ui-checkbox .libs-ui-checkbox-bullet{min-width:10px;min-height:10px;border-radius:50%;margin-right:8px;cursor:pointer}:host .libs-ui-checkbox libs_ui-components-popover[isLabel=true]{margin-right:8px;max-width:100%;cursor:pointer}:host .libs-ui-checkbox>[class*=libs-ui-icon-],:host .libs-ui-checkbox>[class*=icon-font-3rd]{font-size:16px;cursor:pointer;margin-right:8px}\n"] }]
|
|
144
144
|
}] });
|
|
145
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtc2luZ2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9jaGVja2JveC9zaW5nbGUvc3JjL2NoZWNrYm94LXNpbmdsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvY2hlY2tib3gvc2luZ2xlL3NyYy9jaGVja2JveC1zaW5nbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBaUIsK0JBQStCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU1RixPQUFPLEVBQXdCLGdDQUFnQyxFQUF5QyxNQUFNLDZCQUE2QixDQUFDO0FBQzVJLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQUd0RDs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFVSCxNQUFNLE9BQU8sdUNBQXVDO0lBQ2xELG1CQUFtQjtJQUNULG1CQUFtQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLDJCQUEyQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO1lBQzVCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFD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LENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUgsQ0FBQztJQUVTLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxLQUFhO1FBQzdDLElBQUksS0FBSyxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBRVMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLEtBQXlCO1FBQzNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFUyxLQUFLLENBQUMsMEJBQTBCLENBQUMsS0FBaUI7UUFDMUQsSUFBSSxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDO3dHQXRIVSx1Q0FBdUM7NEZBQXZDLHVDQUF1Qyx1cklDckNwRCxveEhBMkZBLGswQkR4RFksZUFBZSw0RkFBRSxpQkFBaUIsb1BBQUUsK0JBQStCLDZYQUFFLGdDQUFnQzs7NEZBRXBHLHVDQUF1QztrQkFUbkQsU0FBUzsrQkFFRSxvQ0FBb0MsY0FHbEMsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsZUFBZSxFQUFFLGlCQUFpQixFQUFFLCtCQUErQixFQUFFLGdDQUFnQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgTmdDb21wb25lbnRPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0LCBtb2RlbCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJQXZhdGFyQ29uZmlnLCBMaWJzVWlDb21wb25lbnRzQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1hdmF0YXInO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0NvbXBvbmVudE91dGxldENvbXBvbmVudCwgVFlQRV9DT01QT05FTlRfT1VUTEVUX0RBVEEgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWNvbXBvbmVudC1vdXRsZXQnO1xuaW1wb3J0IHsgSUZsYWdNb3VzZSwgSVBvcG92ZXIsIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyQ29tcG9uZW50LCBUWVBFX1BPUE9WRVJfRVZFTlQsIFRZUEVfUE9QT1ZFUl9UWVBFIH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1wb3BvdmVyJztcbmltcG9ydCB7IGVzY2FwZUh0bWwgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IElDaGVja2JveEJ1bGxldCwgSUNoZWNrYm94RXZlbnQsIElDaGVja2JveEl0ZW1EZXNjcmlwdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5cbi8qKlxuICogQ2hlY2tib3ggU2luZ2xlIENvbXBvbmVudCAtIE3hu5l0IGNoZWNrYm94IMSRxqFuIGzhursgduG7m2kgbmhp4buBdSB0w7l5IGNo4buNbiBoaeG7g24gdGjhu4sgKG5ow6NuLCDhuqNuaCwgYXZhdGFyLCBwb3BvdmVyLCBkZXNjcmlwdGlvbikuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBI4buXIHRy4bujIG5oaeG7gXUgdMOtbmggbsSDbmcgbsOibmcgY2FvIG5oxrAgaGnhu4NuIHRo4buLIGjDrG5oIOG6o25oL2F2YXRhciBj4bqhbmggY2hlY2tib3gsXG4gKiB0w61jaCBo4bujcCBwb3BvdmVyIGtoaSBkaSBjaHXhu5l0IHbDoG8gbmjDo24sIHbDoCBoaeG7g24gdGjhu4sgcGjhuqduIG3DtCB04bqjIGNoaSB0aeG6v3QuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxsaWJzX3VpLWNvbXBvbmVudHMtY2hlY2tib3gtc2luZ2xlXG4gKiAgIFsoY2hlY2tlZCldPVwiaXNTZWxlY3RlZFwiXG4gKiAgIGxhYmVsPVwixJDhu5NuZyDDvSDEkWnhu4F1IGtob+G6o25cIlxuICogICAob3V0Q2hhbmdlKT1cIm9uU3RhdHVzQ2hhbmdlKCRldmVudClcIlxuICogLz5cbiAqIGBgYFxuICpcbiAqIEBwdWJsaWNBcGlcbiAqL1xuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlic191aS1jb21wb25lbnRzLWNoZWNrYm94LXNpbmdsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGVja2JveC1zaW5nbGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC1zaW5nbGUuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtUcmFuc2xhdGVNb2R1bGUsIE5nQ29tcG9uZW50T3V0bGV0LCBMaWJzVWlDb21wb25lbnRzQXZhdGFyQ29tcG9uZW50LCBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNDaGVja2JveFNpbmdsZUNvbXBvbmVudCB7XG4gIC8vICNyZWdpb24gUFJPUEVSVFlcbiAgcHJvdGVjdGVkIGRlc2NyaXB0aW9uQ29tcHV0ZWQgPSBjb21wdXRlZCgoKSA9PiBlc2NhcGVIdG1sKHRoaXMuZGVzY3JpcHRpb24oKT8uY29udGVudCB8fCAnJykpO1xuICBwcm90ZWN0ZWQgZGF0YUNvbXBvbmVudE91dGxldENvbXB1dGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICghdGhpcy5jb21wb25lbnRPdXRsZXQoKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbXBvbmVudDogdGhpcy5jb21wb25lbnRPdXRsZXQoKSxcbiAgICAgIGlucHV0czogdGhpcy5kYXRhQ29tcG9uZW50T3V0bGV0KCkgfHwge30sXG4gICAgfTtcbiAgfSk7XG5cbiAgLy8gI3JlZ2lvbiBJTlBVVFxuICAvKiogS2jDs2EgxJHhu4tuaCBkYW5oIGNobyBjaGVja2JveCAqL1xuICByZWFkb25seSBrZXkgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIC8qKiBUcuG6oW5nIHRow6FpIGNo4buNbiBj4bunYSBjaGVja2JveCAoVHdvLXdheSBiaW5kaW5nKSAqL1xuICByZWFkb25seSBjaGVja2VkID0gbW9kZWw8Ym9vbGVhbj4oZmFsc2UpO1xuICAvKiogTmjDo24gaGnhu4NuIHRo4buLIGLDqm4gY+G6oW5oIGNoZWNrYm94ICovXG4gIHJlYWRvbmx5IGxhYmVsID0gaW5wdXQ8c3RyaW5nPigpO1xuICAvKiogQ2xhc3MgQ1NTIGLhu5Ugc3VuZyBjaG8gbmjDo24gKi9cbiAgcmVhZG9ubHkgY2xhc3NMYWJlbEluY2x1ZGUgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQsIHN0cmluZyB8IHVuZGVmaW5lZD4oJ2xpYnMtdWktZm9udC1oNXInLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyAnbGlicy11aS1mb250LWg1cicgfSk7XG4gIC8qKiDhuqhuIHBvcG92ZXIga2hpIGRpIGNodeG7mXQgdsOgbyBuaMOjbiAqL1xuICByZWFkb25seSBpZ25vcmVTaG93UG9wb3ZlckxhYmVsID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgLyoqIExv4bqhaSBwb3BvdmVyIGhp4buDbiB0aOG7iyB0csOqbiBuaMOjbiAqL1xuICByZWFkb25seSB0eXBlTGFiZWxQb3BvdmVyID0gaW5wdXQ8VFlQRV9QT1BPVkVSX1RZUEUsIFRZUEVfUE9QT1ZFUl9UWVBFPigndGV4dCcsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/ICd0ZXh0JyB9KTtcbiAgLyoqIEPhuqV1IGjDrG5oIHBvcG92ZXIgY2hpIHRp4bq/dCAqL1xuICByZWFkb25seSBwb3BvdmVyID0gaW5wdXQ8SVBvcG92ZXI+KCk7XG4gIC8qKiDEkMaw4budbmcgZOG6q24gaMOsbmgg4bqjbmggaGnhu4NuIHRo4buLIGPhuqFuaCBjaGVja2JveCAqL1xuICByZWFkb25seSBsaW5rSW1hZ2UgPSBtb2RlbDxzdHJpbmc+KCk7XG4gIC8qKiBIw6xuaCDhuqNuaCBoaeG7g24gdGjhu4sgZOG7sSBwaMOybmcga2hpIGzhu5dpICovXG4gIHJlYWRvbmx5IGxpbmtJbWFnZUVycm9yID0gaW5wdXQ8c3RyaW5nPigpO1xuICAvKiogQ+G6pXUgaMOsbmggQXZhdGFyIChu4bq/dSBkw7luZyB0aGF5IGNobyBow6xuaCDhuqNuaCkgKi9cbiAgcmVhZG9ubHkgYXZhdGFyQ29uZmlnID0gaW5wdXQ8SUF2YXRhckNvbmZpZz4oKTtcbiAgLyoqIENsYXNzIENTUyBi4buVIHN1bmcgY2hvIHBo4bqnbiBow6xuaCDhuqNuaCAqL1xuICByZWFkb25seSBjbGFzc0ltYWdlSW5jbHVkZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgLyoqIMSQw6FuaCBk4bqldSBow6xuaCDhuqNuaCBsw6AgZOG6oW5nIGljb24gKi9cbiAgcmVhZG9ubHkgaW1nVHlwZUljb24gPSBpbnB1dDxib29sZWFuPigpO1xuICAvKiogQ+G6pXUgaMOsbmggYnVsbGV0IChjaOG6pW0gdHLDsm4gbcOgdSkgYsOqbiBj4bqhbmggY2hlY2tib3ggKi9cbiAgcmVhZG9ubHkgYnVsbGV0ID0gaW5wdXQ8SUNoZWNrYm94QnVsbGV0PigpO1xuICAvKiogQ2xhc3MgQ1NTIGLhu5Ugc3VuZyBjaG8gY29udGFpbmVyIGNow61uaCAqL1xuICByZWFkb25seSBjbGFzc0luY2x1ZGUgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQsIHN0cmluZyB8IHVuZGVmaW5lZD4oJycsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/ICcnIH0pO1xuICAvKiogQ2jhu4kgeOG7rSBsw70gdGhheSDEkeG7lWkga2hpIGNsaWNrIGNow61uaCB4w6FjIHbDoG8gY2hlY2tib3ggaG/hurdjIG5ow6NuICovXG4gIHJlYWRvbmx5IGNsaWNrRXhhY3RseSA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQsIGJvb2xlYW4gfCB1bmRlZmluZWQ+KHRydWUsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IHRydWUgfSk7XG4gIC8qKiBUcuG6oW5nIHRow6FpIHbDtCBoaeG7h3UgaMOzYSB0b8OgbiBi4buZIGNvbXBvbmVudCAqL1xuICByZWFkb25seSBkaXNhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgLyoqIFRy4bqhbmcgdGjDoWkgdsO0IGhp4buHdSBow7NhIG5ow6NuIChraMO0bmcgY2hvIGNsaWNrIG5ow6NuIMSR4buDIMSR4buVaSB0cuG6oW5nIHRow6FpKSAqL1xuICByZWFkb25seSBkaXNhYmxlTGFiZWwgPSBpbnB1dDxib29sZWFuPigpO1xuICAvKiog4bqobiDDtCBjaGVja2JveCwgY2jhu4kgaGnhu4NuIHRo4buLIG5ow6NuL+G6o25oICovXG4gIHJlYWRvbmx5IGlnbm9yZUNoZWNrYm94ID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgLyoqIMSQ4buZIMawdSB0acOqbiBoaeG7g24gdGjhu4sgKHotaW5kZXgpIGPhu6dhIG5ow6NuL3BvcG92ZXIgKi9cbiAgcmVhZG9ubHkgekluZGV4TGFiZWwgPSBpbnB1dDxudW1iZXIgfCB1bmRlZmluZWQsIG51bWJlciB8IHVuZGVmaW5lZD4oMTIwMCwgeyB0cmFuc2Zvcm06ICh2YWx1ZSkgPT4gdmFsdWUgPz8gMTIwMCB9KTtcbiAgLyoqIEhp4buDbiB0aOG7iyB0cuG6oW5nIHRow6FpIFwiY8OybiBjw6FjIGzhu7FhIGNo4buNbiBraMOhY1wiICovXG4gIHJlYWRvbmx5IHN0aWxsT3RoZXJPcHRpb25zID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgLyoqIFRy4bqhbmcgdGjDoWkgbOG7l2kgKi9cbiAgcmVhZG9ubHkgZXJyb3IgPSBpbnB1dDxib29sZWFuPigpO1xuICAvKiogSGnhu4NuIHRo4buLIHZp4buBbiDEkeG7jyBraGkgY8OzIGzhu5dpICovXG4gIHJlYWRvbmx5IHNob3dCb3JkZXJFcnJvciA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIC8qKiBQaOG6p24gbcO0IHThuqMgY2hpIHRp4bq/dCBwaMOtYSBkxrDhu5tpIG5ow6NuICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uID0gaW5wdXQ8SUNoZWNrYm94SXRlbURlc2NyaXB0aW9uPigpO1xuICAvKiogQ2xhc3MgaWNvbiBoaeG7g24gdGjhu4sgKHRoYXkgY2hvIGltYWdlL2F2YXRhcikgKi9cbiAgcmVhZG9ubHkgaWNvbkltYWdlQ2xhc3MgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIC8qKiBDbGFzcyBDU1MgY2hvIGljb24gKi9cbiAgcmVhZG9ubHkgY2xhc3NJY29uSW5jbHVkZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgLyoqIEhp4buDbiB0aOG7iyB2aeG7gW4gYmFvIHF1YW5oIHRvw6BuIGLhu5kgY29tcG9uZW50ICovXG4gIHJlYWRvbmx5IG1vZGVCb3JkZXIgPSBpbnB1dDxib29sZWFuPigpO1xuXG4gIC8qKiBE4buvIGxp4buHdSB0cnV54buBbiB2w6BvIENvbXBvbmVudCBPdXRsZXQgKi9cbiAgcmVhZG9ubHkgZGF0YUNvbXBvbmVudE91dGxldCA9IGlucHV0PFRZUEVfQ09NUE9ORU5UX09VVExFVF9EQVRBPigpO1xuICAvKiogQ29tcG9uZW50IHTDuXkgY2jhu4luaCBoaeG7g24gdGjhu4sgdGjDtG5nIHF1YSBvdXRsZXQgKi9cbiAgcmVhZG9ubHkgY29tcG9uZW50T3V0bGV0ID0gaW5wdXQ8TGlic1VpQ29tcG9uZW50c0NvbXBvbmVudE91dGxldENvbXBvbmVudCB8IGFueT4oKTtcblxuICAvLyAjcmVnaW9uIE9VVFBVVFxuICAvKiogUGjDoXQgcmEga2hpIHRy4bqhbmcgdGjDoWkgY2hlY2tib3ggdGhheSDEkeG7lWkgKi9cbiAgcmVhZG9ubHkgb3V0Q2hhbmdlID0gb3V0cHV0PElDaGVja2JveEV2ZW50PigpO1xuICAvKiogUGjDoXQgY8OhYyBz4buxIGtp4buHbiB04burIHBvcG92ZXIgbmjDo24gKi9cbiAgcmVhZG9ubHkgb3V0RXZlbnRQb3BvdmVyID0gb3V0cHV0PFRZUEVfUE9QT1ZFUl9FVkVOVD4oKTtcbiAgLyoqIFBow6F0IGtoaSBuZ8aw4budaSBkw7luZyBjbGljayB2w6BvIG5ow6NuICovXG4gIHJlYWRvbmx5IG91dENsaWNrTGFiZWwgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgLyoqIFBow6F0IHRy4bqhbmcgdGjDoWkgY2h14buZdCB0csOqbiBuaMOjbiDEkeG7gyDEkWnhu4F1IGtoaeG7g24gcG9wb3ZlciAqL1xuICByZWFkb25seSBvdXRDaGFuZ1N0YWdlRmxhZ01vdXNlUG9wb3ZlciA9IG91dHB1dDxJRmxhZ01vdXNlPigpO1xuXG4gIC8qIEZVTkNUSU9OUyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlckVycm9ySW1hZ2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5saW5rSW1hZ2Uuc2V0KHRoaXMubGlua0ltYWdlRXJyb3IoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlckNsaWNrUmVsYXRpdmVseShldmVudD86IEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuY2xpY2tFeGFjdGx5KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuaGFuZGxlckNoYW5nZShldmVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlckNoYW5nZShldmVudD86IEV2ZW50KSB7XG4gICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICh0aGlzLmRpc2FibGUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNoZWNrZWQudXBkYXRlKChjaGVja2VkKSA9PiAhY2hlY2tlZCk7XG4gICAgdGhpcy5vdXRDaGFuZ2UuZW1pdCh7IGtleTogdGhpcy5rZXkoKSwgY2hlY2tlZDogdGhpcy5jaGVja2VkKCksIHJldmVydDogKCkgPT4gdGhpcy5jaGVja2VkLnVwZGF0ZSgoY2hlY2tlZCkgPT4gIWNoZWNrZWQpIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZXJFdmVudExhYmVsKGV2ZW50OiBzdHJpbmcpIHtcbiAgICBpZiAoZXZlbnQgPT09ICdjbGljaycpIHtcbiAgICAgIHRoaXMub3V0Q2xpY2tMYWJlbC5lbWl0KCk7XG4gICAgICB0aGlzLmhhbmRsZXJDaGFuZ2UoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlckV2ZW50UG9wb3ZlcihldmVudDogVFlQRV9QT1BPVkVSX0VWRU5UKSB7XG4gICAgdGhpcy5vdXRFdmVudFBvcG92ZXIuZW1pdChldmVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlckNoYW5nU3RhZ2VGbGFnTW91c2UoZXZlbnQ6IElGbGFnTW91c2UpIHtcbiAgICB0aGlzLm91dENoYW5nU3RhZ2VGbGFnTW91c2VQb3BvdmVyLmVtaXQoZXZlbnQpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwibGlicy11aS1jaGVja2JveCB7eyBjbGFzc0luY2x1ZGUoKSB8fCAnJyB9fVwiXG4gIFtjbGFzcy5jdXJzb3ItcG9pbnRlcl09XCIhY2xpY2tFeGFjdGx5KCkgJiYgIWRpc2FibGUoKVwiXG4gIFtjbGFzcy5wLVs4cHhdXT1cIm1vZGVCb3JkZXIoKVwiXG4gIFtjbGFzcy5yb3VuZGVkLVs0cHhdXT1cIm1vZGVCb3JkZXIoKVwiXG4gIFtjbGFzcy5saWJzLXVpLWJvcmRlci1nZW5lcmFsXT1cIm1vZGVCb3JkZXIoKSAmJiAhY2hlY2tlZCgpXCJcbiAgW2NsYXNzLmxpYnMtdWktYm9yZGVyLXByaW1hcnktZ2VuZXJhbF09XCJtb2RlQm9yZGVyKCkgJiYgY2hlY2tlZCgpXCJcbiAgKGNsaWNrKT1cImhhbmRsZXJDbGlja1JlbGF0aXZlbHkoJGV2ZW50KVwiPlxuICBAaWYgKCFpZ25vcmVDaGVja2JveCgpKSB7XG4gICAgPGlcbiAgICAgIGNsYXNzPVwie3sgY2xhc3NJY29uSW5jbHVkZSgpIHx8ICcnIH19XCJcbiAgICAgIFtjbGFzcy5saWJzLXVpLWljb24tY2hlY2tib3gtdW5zZWxlY3RlZF09XCIhY2hlY2tlZCgpICYmICFzdGlsbE90aGVyT3B0aW9ucygpXCJcbiAgICAgIFtjbGFzcy5saWJzLXVpLWljb24tY2hlY2tib3gtc2VsZWN0ZWRdPVwiY2hlY2tlZCgpICYmICFzdGlsbE90aGVyT3B0aW9ucygpXCJcbiAgICAgIFtjbGFzcy5saWJzLXVpLWljb24tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZV09XCJzdGlsbE90aGVyT3B0aW9ucygpXCJcbiAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiZGlzYWJsZSgpXCJcbiAgICAgIFtjbGFzcy5wb2ludGVyLWV2ZW50cy1ub25lXT1cImRpc2FibGUoKVwiXG4gICAgICBbY2xhc3MubGlicy11aS1kaXNhYmxlLWFjdGl2ZV09XCJkaXNhYmxlKCkgJiYgKGNoZWNrZWQoKSB8fCBzdGlsbE90aGVyT3B0aW9ucygpKVwiXG4gICAgICBbY2xhc3MubGlicy11aS10ZXh0LWVycm9yXT1cInNob3dCb3JkZXJFcnJvcigpIHx8IGVycm9yKClcIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZXJDaGFuZ2UoJGV2ZW50KVwiPjwvaT5cbiAgfVxuICBAaWYgKGxpbmtJbWFnZSgpKSB7XG4gICAgPGltZ1xuICAgICAgW3NyY109XCJsaW5rSW1hZ2UoKVwiXG4gICAgICBjbGFzcz1cImxpYnMtdWktY2hlY2tib3gtaW1hZ2Uge3sgY2xhc3NJbWFnZUluY2x1ZGUoKSB8fCAnJyB9fVwiXG4gICAgICBbY2xhc3MuY3Vyc29yLWRlZmF1bHRdPVwiZGlzYWJsZSgpXCJcbiAgICAgIFtjbGFzcy53LVsxOHB4XV09XCJpbWdUeXBlSWNvbigpXCJcbiAgICAgIFtjbGFzcy5oLVsxOHB4XV09XCJpbWdUeXBlSWNvbigpXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVyQ2hhbmdlKCRldmVudClcIlxuICAgICAgKGVycm9yKT1cImhhbmRsZXJFcnJvckltYWdlKCRldmVudClcIiAvPlxuICB9XG4gIEBpZiAoYXZhdGFyQ29uZmlnKCk7IGFzIGF2YXRhckNvbmZpZykge1xuICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYXZhdGFyXG4gICAgICBbdHlwZVNoYXBlXT1cImF2YXRhckNvbmZpZy50eXBlU2hhcGVcIlxuICAgICAgW2NsYXNzSW5jbHVkZV09XCJhdmF0YXJDb25maWcuY2xhc3NJbmNsdWRlXCJcbiAgICAgIFtzaXplXT1cImF2YXRhckNvbmZpZy5zaXplIHx8IDI0XCJcbiAgICAgIFtsaW5rQXZhdGFyXT1cImF2YXRhckNvbmZpZy5saW5rQXZhdGFyXCJcbiAgICAgIFtsaW5rQXZhdGFyRXJyb3JdPVwiYXZhdGFyQ29uZmlnLmxpbmtBdmF0YXJFcnJvclwiXG4gICAgICBbaWRHZW5Db2xvcl09XCJhdmF0YXJDb25maWcuaWRHZW5Db2xvclwiXG4gICAgICBbdGV4dEF2YXRhcl09XCJhdmF0YXJDb25maWcudGV4dEF2YXRhclwiIC8+XG4gIH1cbiAgQGlmICghbGlua0ltYWdlKCkgJiYgaWNvbkltYWdlQ2xhc3MoKSkge1xuICAgIDxkaXZcbiAgICAgIFtjbGFzc109XCJpY29uSW1hZ2VDbGFzcygpXCJcbiAgICAgIFtjbGFzcy5jdXJzb3ItZGVmYXVsdF09XCJkaXNhYmxlKClcIj48L2Rpdj5cbiAgfVxuICBAaWYgKGJ1bGxldCgpOyBhcyBidWxsZXQpIHtcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImxpYnMtdWktY2hlY2tib3gtYnVsbGV0IHt7IGJ1bGxldC5jbGFzc0luY2x1ZGUgfHwgJycgfX1cIlxuICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiYnVsbGV0LmJhY2tncm91bmRDb2xvclwiXG4gICAgICBbc3R5bGUud2lkdGgucHhdPVwiYnVsbGV0LndpZHRoXCJcbiAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiYnVsbGV0LmhlaWdodFwiXG4gICAgICBbY2xhc3MuY3Vyc29yLWRlZmF1bHRdPVwiZGlzYWJsZSgpXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVyQ2hhbmdlKCRldmVudClcIj48L2Rpdj5cbiAgfVxuICBAaWYgKGxhYmVsKCk7IGFzIGxhYmVsKSB7XG4gICAgPGRpdlxuICAgICAgTGlic1VpQ29tcG9uZW50c1BvcG92ZXJEaXJlY3RpdmVcbiAgICAgIFt0eXBlXT1cInR5cGVMYWJlbFBvcG92ZXIoKSB8fCAndGV4dCdcIlxuICAgICAgW2F0dHIuaXNMYWJlbF09XCJ0cnVlXCJcbiAgICAgIFtjbGFzc0luY2x1ZGVdPVwiY2xhc3NMYWJlbEluY2x1ZGUoKSArIChkaXNhYmxlKCkgPyAnIGN1cnNvci1kZWZhdWx0JyA6ICcnKVwiXG4gICAgICBbY2xhc3MubGlicy11aS1kaXNhYmxlXT1cImRpc2FibGVMYWJlbCgpXCJcbiAgICAgIFtpZ25vcmVTaG93UG9wb3Zlcl09XCJpZ25vcmVTaG93UG9wb3ZlckxhYmVsKClcIlxuICAgICAgW2NvbmZpZ109XCJ7IGNvbnRlbnQ6IGxhYmVsLCB0aW1lckRlc3Ryb3k6IDUwLCB6SW5kZXg6IHpJbmRleExhYmVsKCkgfVwiXG4gICAgICBbaWdub3JlQ3Vyc29yUG9pbnRlck1vZGVMaWtlQ2xpY2tdPVwiZGlzYWJsZUxhYmVsKCkgfHwgZGlzYWJsZSgpXCJcbiAgICAgIFtpbm5lckhUTUxdPVwibGFiZWwgfCB0cmFuc2xhdGVcIlxuICAgICAgKG91dEV2ZW50KT1cImhhbmRsZXJFdmVudExhYmVsKCRldmVudClcIlxuICAgICAgKG91dENoYW5nU3RhZ2VGbGFnTW91c2UpPVwiaGFuZGxlckNoYW5nU3RhZ2VGbGFnTW91c2UoJGV2ZW50KVwiPjwvZGl2PlxuICB9XG4gIEBpZiAocG9wb3ZlcigpOyBhcyBwb3BvdmVyKSB7XG4gICAgPGxpYnNfdWktY29tcG9uZW50cy1wb3BvdmVyXG4gICAgICBjbGFzcz1cImZsZXhcIlxuICAgICAgW2NvbmZpZ109XCJwb3BvdmVyLmNvbmZpZ1wiXG4gICAgICAob3V0RXZlbnQpPVwiaGFuZGxlckV2ZW50UG9wb3ZlcigkZXZlbnQpXCJcbiAgICAgIChvdXRDaGFuZ1N0YWdlRmxhZ01vdXNlKT1cImhhbmRsZXJDaGFuZ1N0YWdlRmxhZ01vdXNlKCRldmVudClcIj5cbiAgICAgIEBpZiAoIXBvcG92ZXIuZGF0YVZpZXcpIHtcbiAgICAgICAgPGkgW2NsYXNzXT1cInBvcG92ZXIuY2xhc3NJbmNsdWRlID8/ICdsaWJzLXVpLWljb24tdG9vbHRpcC1vdXRsaW5lJ1wiPjwvaT5cbiAgICAgIH1cbiAgICAgIEBpZiAocG9wb3Zlci5kYXRhVmlldykge1xuICAgICAgICA8ZGl2IFtpbm5lckh0bWxdPVwicG9wb3Zlci5kYXRhVmlldyB8IHRyYW5zbGF0ZVwiPjwvZGl2PlxuICAgICAgfVxuICAgIDwvbGlic191aS1jb21wb25lbnRzLXBvcG92ZXI+XG4gIH1cbiAgQGlmIChkYXRhQ29tcG9uZW50T3V0bGV0Q29tcHV0ZWQoKTsgYXMgZGF0YUNvbXBvbmVudE91dGxldENvbXB1dGVkKSB7XG4gICAgPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCJkYXRhQ29tcG9uZW50T3V0bGV0Q29tcHV0ZWQuY29tcG9uZW50OyBpbnB1dHM6IGRhdGFDb21wb25lbnRPdXRsZXRDb21wdXRlZC5pbnB1dHNcIiAvPlxuICB9XG48L2Rpdj5cbkBpZiAoZGVzY3JpcHRpb24oKTsgYXMgZGVzY3JpcHRpb24pIHtcbiAgPGRpdlxuICAgIFtjbGFzc109XCJkZXNjcmlwdGlvbi5jbGFzc0luY2x1ZGVcIlxuICAgIFtpbm5lckh0bWxdPVwiZGVzY3JpcHRpb25Db21wdXRlZCgpIHwgdHJhbnNsYXRlXCI+PC9kaXY+XG59XG4iXX0=
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtc2luZ2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9jaGVja2JveC9zaW5nbGUvc3JjL2NoZWNrYm94LXNpbmdsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvY2hlY2tib3gvc2luZ2xlL3NyYy9jaGVja2JveC1zaW5nbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBaUIsK0JBQStCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU1RixPQUFPLEVBQXdCLGdDQUFnQyxFQUF5QyxNQUFNLDZCQUE2QixDQUFDO0FBQzVJLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQUd0RDs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFVSCxNQUFNLE9BQU8sdUNBQXVDO0lBQ2xELG1CQUFtQjtJQUNULG1CQUFtQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLDJCQUEyQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO1lBQzVCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFD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LENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUgsQ0FBQztJQUVTLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxLQUFhO1FBQzdDLElBQUksS0FBSyxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBRVMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLEtBQXlCO1FBQzNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFUyxLQUFLLENBQUMsMEJBQTBCLENBQUMsS0FBaUI7UUFDMUQsSUFBSSxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDO3dHQXRIVSx1Q0FBdUM7NEZBQXZDLHVDQUF1Qyx1cklDckNwRCwweklBd0dBLGswQkRyRVksZUFBZSw0RkFBRSxpQkFBaUIsb1BBQUUsK0JBQStCLDZYQUFFLGdDQUFnQzs7NEZBRXBHLHVDQUF1QztrQkFUbkQsU0FBUzsrQkFFRSxvQ0FBb0MsY0FHbEMsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsZUFBZSxFQUFFLGlCQUFpQixFQUFFLCtCQUErQixFQUFFLGdDQUFnQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgTmdDb21wb25lbnRPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0LCBtb2RlbCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJQXZhdGFyQ29uZmlnLCBMaWJzVWlDb21wb25lbnRzQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1hdmF0YXInO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0NvbXBvbmVudE91dGxldENvbXBvbmVudCwgVFlQRV9DT01QT05FTlRfT1VUTEVUX0RBVEEgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWNvbXBvbmVudC1vdXRsZXQnO1xuaW1wb3J0IHsgSUZsYWdNb3VzZSwgSVBvcG92ZXIsIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyQ29tcG9uZW50LCBUWVBFX1BPUE9WRVJfRVZFTlQsIFRZUEVfUE9QT1ZFUl9UWVBFIH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1wb3BvdmVyJztcbmltcG9ydCB7IGVzY2FwZUh0bWwgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IElDaGVja2JveEJ1bGxldCwgSUNoZWNrYm94RXZlbnQsIElDaGVja2JveEl0ZW1EZXNjcmlwdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5cbi8qKlxuICogQ2hlY2tib3ggU2luZ2xlIENvbXBvbmVudCAtIE3hu5l0IGNoZWNrYm94IMSRxqFuIGzhursgduG7m2kgbmhp4buBdSB0w7l5IGNo4buNbiBoaeG7g24gdGjhu4sgKG5ow6NuLCDhuqNuaCwgYXZhdGFyLCBwb3BvdmVyLCBkZXNjcmlwdGlvbikuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBI4buXIHRy4bujIG5oaeG7gXUgdMOtbmggbsSDbmcgbsOibmcgY2FvIG5oxrAgaGnhu4NuIHRo4buLIGjDrG5oIOG6o25oL2F2YXRhciBj4bqhbmggY2hlY2tib3gsXG4gKiB0w61jaCBo4bujcCBwb3BvdmVyIGtoaSBkaSBjaHXhu5l0IHbDoG8gbmjDo24sIHbDoCBoaeG7g24gdGjhu4sgcGjhuqduIG3DtCB04bqjIGNoaSB0aeG6v3QuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxsaWJzX3VpLWNvbXBvbmVudHMtY2hlY2tib3gtc2luZ2xlXG4gKiAgIFsoY2hlY2tlZCldPVwiaXNTZWxlY3RlZFwiXG4gKiAgIGxhYmVsPVwixJDhu5NuZyDDvSDEkWnhu4F1IGtob+G6o25cIlxuICogICAob3V0Q2hhbmdlKT1cIm9uU3RhdHVzQ2hhbmdlKCRldmVudClcIlxuICogLz5cbiAqIGBgYFxuICpcbiAqIEBwdWJsaWNBcGlcbiAqL1xuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlic191aS1jb21wb25lbnRzLWNoZWNrYm94LXNpbmdsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGVja2JveC1zaW5nbGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC1zaW5nbGUuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtUcmFuc2xhdGVNb2R1bGUsIE5nQ29tcG9uZW50T3V0bGV0LCBMaWJzVWlDb21wb25lbnRzQXZhdGFyQ29tcG9uZW50LCBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNDaGVja2JveFNpbmdsZUNvbXBvbmVudCB7XG4gIC8vICNyZWdpb24gUFJPUEVSVFlcbiAgcHJvdGVjdGVkIGRlc2NyaXB0aW9uQ29tcHV0ZWQgPSBjb21wdXRlZCgoKSA9PiBlc2NhcGVIdG1sKHRoaXMuZGVzY3JpcHRpb24oKT8uY29udGVudCB8fCAnJykpO1xuICBwcm90ZWN0ZWQgZGF0YUNvbXBvbmVudE91dGxldENvbXB1dGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICghdGhpcy5jb21wb25lbnRPdXRsZXQoKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbXBvbmVudDogdGhpcy5jb21wb25lbnRPdXRsZXQoKSxcbiAgICAgIGlucHV0czogdGhpcy5kYXRhQ29tcG9uZW50T3V0bGV0KCkgfHwge30sXG4gICAgfTtcbiAgfSk7XG5cbiAgLy8gI3JlZ2lvbiBJTlBVVFxuICAvKiogS2jDs2EgxJHhu4tuaCBkYW5oIGNobyBjaGVja2JveCAqL1xuICByZWFkb25seSBrZXkgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIC8qKiBUcuG6oW5nIHRow6FpIGNo4buNbiBj4bunYSBjaGVja2JveCAoVHdvLXdheSBiaW5kaW5nKSAqL1xuICByZWFkb25seSBjaGVja2VkID0gbW9kZWw8Ym9vbGVhbj4oZmFsc2UpO1xuICAvKiogTmjDo24gaGnhu4NuIHRo4buLIGLDqm4gY+G6oW5oIGNoZWNrYm94ICovXG4gIHJlYWRvbmx5IGxhYmVsID0gaW5wdXQ8c3RyaW5nPigpO1xuICAvKiogQ2xhc3MgQ1NTIGLhu5Ugc3VuZyBjaG8gbmjDo24gKi9cbiAgcmVhZG9ubHkgY2xhc3NMYWJlbEluY2x1ZGUgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQsIHN0cmluZyB8IHVuZGVmaW5lZD4oJ2xpYnMtdWktZm9udC1oNXInLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyAnbGlicy11aS1mb250LWg1cicgfSk7XG4gIC8qKiDhuqhuIHBvcG92ZXIga2hpIGRpIGNodeG7mXQgdsOgbyBuaMOjbiAqL1xuICByZWFkb25seSBpZ25vcmVTaG93UG9wb3ZlckxhYmVsID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgLyoqIExv4bqhaSBwb3BvdmVyIGhp4buDbiB0aOG7iyB0csOqbiBuaMOjbiAqL1xuICByZWFkb25seSB0eXBlTGFiZWxQb3BvdmVyID0gaW5wdXQ8VFlQRV9QT1BPVkVSX1RZUEUsIFRZUEVfUE9QT1ZFUl9UWVBFPigndGV4dCcsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/ICd0ZXh0JyB9KTtcbiAgLyoqIEPhuqV1IGjDrG5oIHBvcG92ZXIgY2hpIHRp4bq/dCAqL1xuICByZWFkb25seSBwb3BvdmVyID0gaW5wdXQ8SVBvcG92ZXI+KCk7XG4gIC8qKiDEkMaw4budbmcgZOG6q24gaMOsbmgg4bqjbmggaGnhu4NuIHRo4buLIGPhuqFuaCBjaGVja2JveCAqL1xuICByZWFkb25seSBsaW5rSW1hZ2UgPSBtb2RlbDxzdHJpbmc+KCk7XG4gIC8qKiBIw6xuaCDhuqNuaCBoaeG7g24gdGjhu4sgZOG7sSBwaMOybmcga2hpIGzhu5dpICovXG4gIHJlYWRvbmx5IGxpbmtJbWFnZUVycm9yID0gaW5wdXQ8c3RyaW5nPigpO1xuICAvKiogQ+G6pXUgaMOsbmggQXZhdGFyIChu4bq/dSBkw7luZyB0aGF5IGNobyBow6xuaCDhuqNuaCkgKi9cbiAgcmVhZG9ubHkgYXZhdGFyQ29uZmlnID0gaW5wdXQ8SUF2YXRhckNvbmZpZz4oKTtcbiAgLyoqIENsYXNzIENTUyBi4buVIHN1bmcgY2hvIHBo4bqnbiBow6xuaCDhuqNuaCAqL1xuICByZWFkb25seSBjbGFzc0ltYWdlSW5jbHVkZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgLyoqIMSQw6FuaCBk4bqldSBow6xuaCDhuqNuaCBsw6AgZOG6oW5nIGljb24gKi9cbiAgcmVhZG9ubHkgaW1nVHlwZUljb24gPSBpbnB1dDxib29sZWFuPigpO1xuICAvKiogQ+G6pXUgaMOsbmggYnVsbGV0IChjaOG6pW0gdHLDsm4gbcOgdSkgYsOqbiBj4bqhbmggY2hlY2tib3ggKi9cbiAgcmVhZG9ubHkgYnVsbGV0ID0gaW5wdXQ8SUNoZWNrYm94QnVsbGV0PigpO1xuICAvKiogQ2xhc3MgQ1NTIGLhu5Ugc3VuZyBjaG8gY29udGFpbmVyIGNow61uaCAqL1xuICByZWFkb25seSBjbGFzc0luY2x1ZGUgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQsIHN0cmluZyB8IHVuZGVmaW5lZD4oJycsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/ICcnIH0pO1xuICAvKiogQ2jhu4kgeOG7rSBsw70gdGhheSDEkeG7lWkga2hpIGNsaWNrIGNow61uaCB4w6FjIHbDoG8gY2hlY2tib3ggaG/hurdjIG5ow6NuICovXG4gIHJlYWRvbmx5IGNsaWNrRXhhY3RseSA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQsIGJvb2xlYW4gfCB1bmRlZmluZWQ+KHRydWUsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IHRydWUgfSk7XG4gIC8qKiBUcuG6oW5nIHRow6FpIHbDtCBoaeG7h3UgaMOzYSB0b8OgbiBi4buZIGNvbXBvbmVudCAqL1xuICByZWFkb25seSBkaXNhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgLyoqIFRy4bqhbmcgdGjDoWkgdsO0IGhp4buHdSBow7NhIG5ow6NuIChraMO0bmcgY2hvIGNsaWNrIG5ow6NuIMSR4buDIMSR4buVaSB0cuG6oW5nIHRow6FpKSAqL1xuICByZWFkb25seSBkaXNhYmxlTGFiZWwgPSBpbnB1dDxib29sZWFuPigpO1xuICAvKiog4bqobiDDtCBjaGVja2JveCwgY2jhu4kgaGnhu4NuIHRo4buLIG5ow6NuL+G6o25oICovXG4gIHJlYWRvbmx5IGlnbm9yZUNoZWNrYm94ID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgLyoqIMSQ4buZIMawdSB0acOqbiBoaeG7g24gdGjhu4sgKHotaW5kZXgpIGPhu6dhIG5ow6NuL3BvcG92ZXIgKi9cbiAgcmVhZG9ubHkgekluZGV4TGFiZWwgPSBpbnB1dDxudW1iZXIgfCB1bmRlZmluZWQsIG51bWJlciB8IHVuZGVmaW5lZD4oMTIwMCwgeyB0cmFuc2Zvcm06ICh2YWx1ZSkgPT4gdmFsdWUgPz8gMTIwMCB9KTtcbiAgLyoqIEhp4buDbiB0aOG7iyB0cuG6oW5nIHRow6FpIFwiY8OybiBjw6FjIGzhu7FhIGNo4buNbiBraMOhY1wiICovXG4gIHJlYWRvbmx5IHN0aWxsT3RoZXJPcHRpb25zID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgLyoqIFRy4bqhbmcgdGjDoWkgbOG7l2kgKi9cbiAgcmVhZG9ubHkgZXJyb3IgPSBpbnB1dDxib29sZWFuPigpO1xuICAvKiogSGnhu4NuIHRo4buLIHZp4buBbiDEkeG7jyBraGkgY8OzIGzhu5dpICovXG4gIHJlYWRvbmx5IHNob3dCb3JkZXJFcnJvciA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIC8qKiBQaOG6p24gbcO0IHThuqMgY2hpIHRp4bq/dCBwaMOtYSBkxrDhu5tpIG5ow6NuICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uID0gaW5wdXQ8SUNoZWNrYm94SXRlbURlc2NyaXB0aW9uPigpO1xuICAvKiogQ2xhc3MgaWNvbiBoaeG7g24gdGjhu4sgKHRoYXkgY2hvIGltYWdlL2F2YXRhcikgKi9cbiAgcmVhZG9ubHkgaWNvbkltYWdlQ2xhc3MgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIC8qKiBDbGFzcyBDU1MgY2hvIGljb24gKi9cbiAgcmVhZG9ubHkgY2xhc3NJY29uSW5jbHVkZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgLyoqIEhp4buDbiB0aOG7iyB2aeG7gW4gYmFvIHF1YW5oIHRvw6BuIGLhu5kgY29tcG9uZW50ICovXG4gIHJlYWRvbmx5IG1vZGVCb3JkZXIgPSBpbnB1dDxib29sZWFuPigpO1xuXG4gIC8qKiBE4buvIGxp4buHdSB0cnV54buBbiB2w6BvIENvbXBvbmVudCBPdXRsZXQgKi9cbiAgcmVhZG9ubHkgZGF0YUNvbXBvbmVudE91dGxldCA9IGlucHV0PFRZUEVfQ09NUE9ORU5UX09VVExFVF9EQVRBPigpO1xuICAvKiogQ29tcG9uZW50IHTDuXkgY2jhu4luaCBoaeG7g24gdGjhu4sgdGjDtG5nIHF1YSBvdXRsZXQgKi9cbiAgcmVhZG9ubHkgY29tcG9uZW50T3V0bGV0ID0gaW5wdXQ8TGlic1VpQ29tcG9uZW50c0NvbXBvbmVudE91dGxldENvbXBvbmVudCB8IGFueT4oKTtcblxuICAvLyAjcmVnaW9uIE9VVFBVVFxuICAvKiogUGjDoXQgcmEga2hpIHRy4bqhbmcgdGjDoWkgY2hlY2tib3ggdGhheSDEkeG7lWkgKi9cbiAgcmVhZG9ubHkgb3V0Q2hhbmdlID0gb3V0cHV0PElDaGVja2JveEV2ZW50PigpO1xuICAvKiogUGjDoXQgY8OhYyBz4buxIGtp4buHbiB04burIHBvcG92ZXIgbmjDo24gKi9cbiAgcmVhZG9ubHkgb3V0RXZlbnRQb3BvdmVyID0gb3V0cHV0PFRZUEVfUE9QT1ZFUl9FVkVOVD4oKTtcbiAgLyoqIFBow6F0IGtoaSBuZ8aw4budaSBkw7luZyBjbGljayB2w6BvIG5ow6NuICovXG4gIHJlYWRvbmx5IG91dENsaWNrTGFiZWwgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgLyoqIFBow6F0IHRy4bqhbmcgdGjDoWkgY2h14buZdCB0csOqbiBuaMOjbiDEkeG7gyDEkWnhu4F1IGtoaeG7g24gcG9wb3ZlciAqL1xuICByZWFkb25seSBvdXRDaGFuZ1N0YWdlRmxhZ01vdXNlUG9wb3ZlciA9IG91dHB1dDxJRmxhZ01vdXNlPigpO1xuXG4gIC8qIEZVTkNUSU9OUyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlckVycm9ySW1hZ2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5saW5rSW1hZ2Uuc2V0KHRoaXMubGlua0ltYWdlRXJyb3IoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlckNsaWNrUmVsYXRpdmVseShldmVudD86IEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuY2xpY2tFeGFjdGx5KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuaGFuZGxlckNoYW5nZShldmVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlckNoYW5nZShldmVudD86IEV2ZW50KSB7XG4gICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICh0aGlzLmRpc2FibGUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNoZWNrZWQudXBkYXRlKChjaGVja2VkKSA9PiAhY2hlY2tlZCk7XG4gICAgdGhpcy5vdXRDaGFuZ2UuZW1pdCh7IGtleTogdGhpcy5rZXkoKSwgY2hlY2tlZDogdGhpcy5jaGVja2VkKCksIHJldmVydDogKCkgPT4gdGhpcy5jaGVja2VkLnVwZGF0ZSgoY2hlY2tlZCkgPT4gIWNoZWNrZWQpIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZXJFdmVudExhYmVsKGV2ZW50OiBzdHJpbmcpIHtcbiAgICBpZiAoZXZlbnQgPT09ICdjbGljaycpIHtcbiAgICAgIHRoaXMub3V0Q2xpY2tMYWJlbC5lbWl0KCk7XG4gICAgICB0aGlzLmhhbmRsZXJDaGFuZ2UoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlckV2ZW50UG9wb3ZlcihldmVudDogVFlQRV9QT1BPVkVSX0VWRU5UKSB7XG4gICAgdGhpcy5vdXRFdmVudFBvcG92ZXIuZW1pdChldmVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlckNoYW5nU3RhZ2VGbGFnTW91c2UoZXZlbnQ6IElGbGFnTW91c2UpIHtcbiAgICB0aGlzLm91dENoYW5nU3RhZ2VGbGFnTW91c2VQb3BvdmVyLmVtaXQoZXZlbnQpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwibGlicy11aS1jaGVja2JveCB7eyBjbGFzc0luY2x1ZGUoKSB8fCAnJyB9fVwiXG4gIHRhYmluZGV4PVwiMFwiXG4gIFtjbGFzcy5jdXJzb3ItcG9pbnRlcl09XCIhY2xpY2tFeGFjdGx5KCkgJiYgIWRpc2FibGUoKVwiXG4gIFtjbGFzcy5wLVs4cHhdXT1cIm1vZGVCb3JkZXIoKVwiXG4gIFtjbGFzcy5yb3VuZGVkLVs0cHhdXT1cIm1vZGVCb3JkZXIoKVwiXG4gIFtjbGFzcy5saWJzLXVpLWJvcmRlci1nZW5lcmFsXT1cIm1vZGVCb3JkZXIoKSAmJiAhY2hlY2tlZCgpXCJcbiAgW2NsYXNzLmxpYnMtdWktYm9yZGVyLXByaW1hcnktZ2VuZXJhbF09XCJtb2RlQm9yZGVyKCkgJiYgY2hlY2tlZCgpXCJcbiAgKGNsaWNrKT1cImhhbmRsZXJDbGlja1JlbGF0aXZlbHkoJGV2ZW50KVwiXG4gIChrZXlkb3duLmVudGVyKT1cImhhbmRsZXJDbGlja1JlbGF0aXZlbHkoJGFueSgkZXZlbnQpKVwiXG4gIChrZXlkb3duLnNwYWNlKT1cImhhbmRsZXJDbGlja1JlbGF0aXZlbHkoJGFueSgkZXZlbnQpKVwiPlxuICBAaWYgKCFpZ25vcmVDaGVja2JveCgpKSB7XG4gICAgPGlcbiAgICAgIGNsYXNzPVwie3sgY2xhc3NJY29uSW5jbHVkZSgpIHx8ICcnIH19XCJcbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICBbY2xhc3MubGlicy11aS1pY29uLWNoZWNrYm94LXVuc2VsZWN0ZWRdPVwiIWNoZWNrZWQoKSAmJiAhc3RpbGxPdGhlck9wdGlvbnMoKVwiXG4gICAgICBbY2xhc3MubGlicy11aS1pY29uLWNoZWNrYm94LXNlbGVjdGVkXT1cImNoZWNrZWQoKSAmJiAhc3RpbGxPdGhlck9wdGlvbnMoKVwiXG4gICAgICBbY2xhc3MubGlicy11aS1pY29uLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVdPVwic3RpbGxPdGhlck9wdGlvbnMoKVwiXG4gICAgICBbY2xhc3MubGlicy11aS1kaXNhYmxlXT1cImRpc2FibGUoKVwiXG4gICAgICBbY2xhc3MucG9pbnRlci1ldmVudHMtbm9uZV09XCJkaXNhYmxlKClcIlxuICAgICAgW2NsYXNzLmxpYnMtdWktZGlzYWJsZS1hY3RpdmVdPVwiZGlzYWJsZSgpICYmIChjaGVja2VkKCkgfHwgc3RpbGxPdGhlck9wdGlvbnMoKSlcIlxuICAgICAgW2NsYXNzLmxpYnMtdWktdGV4dC1lcnJvcl09XCJzaG93Qm9yZGVyRXJyb3IoKSB8fCBlcnJvcigpXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVyQ2hhbmdlKCRldmVudClcIlxuICAgICAgKGtleWRvd24uZW50ZXIpPVwiaGFuZGxlckNoYW5nZSgkYW55KCRldmVudCkpXCJcbiAgICAgIChrZXlkb3duLnNwYWNlKT1cImhhbmRsZXJDaGFuZ2UoJGFueSgkZXZlbnQpKVwiPjwvaT5cbiAgfVxuICBAaWYgKGxpbmtJbWFnZSgpKSB7XG4gICAgPGltZ1xuICAgICAgW3NyY109XCJsaW5rSW1hZ2UoKVwiXG4gICAgICBjbGFzcz1cImxpYnMtdWktY2hlY2tib3gtaW1hZ2Uge3sgY2xhc3NJbWFnZUluY2x1ZGUoKSB8fCAnJyB9fVwiXG4gICAgICBhbHQ9XCJcIlxuICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgIFtjbGFzcy5jdXJzb3ItZGVmYXVsdF09XCJkaXNhYmxlKClcIlxuICAgICAgW2NsYXNzLnctWzE4cHhdXT1cImltZ1R5cGVJY29uKClcIlxuICAgICAgW2NsYXNzLmgtWzE4cHhdXT1cImltZ1R5cGVJY29uKClcIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZXJDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAoa2V5ZG93bi5lbnRlcik9XCJoYW5kbGVyQ2hhbmdlKCRhbnkoJGV2ZW50KSlcIlxuICAgICAgKGtleWRvd24uc3BhY2UpPVwiaGFuZGxlckNoYW5nZSgkYW55KCRldmVudCkpXCJcbiAgICAgIChlcnJvcik9XCJoYW5kbGVyRXJyb3JJbWFnZSgkZXZlbnQpXCIgLz5cbiAgfVxuICBAaWYgKGF2YXRhckNvbmZpZygpOyBhcyBhdmF0YXJDb25maWcpIHtcbiAgICA8bGlic191aS1jb21wb25lbnRzLWF2YXRhclxuICAgICAgW3R5cGVTaGFwZV09XCJhdmF0YXJDb25maWcudHlwZVNoYXBlXCJcbiAgICAgIFtjbGFzc0luY2x1ZGVdPVwiYXZhdGFyQ29uZmlnLmNsYXNzSW5jbHVkZVwiXG4gICAgICBbc2l6ZV09XCJhdmF0YXJDb25maWcuc2l6ZSB8fCAyNFwiXG4gICAgICBbbGlua0F2YXRhcl09XCJhdmF0YXJDb25maWcubGlua0F2YXRhclwiXG4gICAgICBbbGlua0F2YXRhckVycm9yXT1cImF2YXRhckNvbmZpZy5saW5rQXZhdGFyRXJyb3JcIlxuICAgICAgW2lkR2VuQ29sb3JdPVwiYXZhdGFyQ29uZmlnLmlkR2VuQ29sb3JcIlxuICAgICAgW3RleHRBdmF0YXJdPVwiYXZhdGFyQ29uZmlnLnRleHRBdmF0YXJcIiAvPlxuICB9XG4gIEBpZiAoIWxpbmtJbWFnZSgpICYmIGljb25JbWFnZUNsYXNzKCkpIHtcbiAgICA8ZGl2XG4gICAgICBbY2xhc3NdPVwiaWNvbkltYWdlQ2xhc3MoKVwiXG4gICAgICBbY2xhc3MuY3Vyc29yLWRlZmF1bHRdPVwiZGlzYWJsZSgpXCI+PC9kaXY+XG4gIH1cbiAgQGlmIChidWxsZXQoKTsgYXMgYnVsbGV0KSB7XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJsaWJzLXVpLWNoZWNrYm94LWJ1bGxldCB7eyBidWxsZXQuY2xhc3NJbmNsdWRlIHx8ICcnIH19XCJcbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJidWxsZXQuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgIFtzdHlsZS53aWR0aC5weF09XCJidWxsZXQud2lkdGhcIlxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJidWxsZXQuaGVpZ2h0XCJcbiAgICAgIFtjbGFzcy5jdXJzb3ItZGVmYXVsdF09XCJkaXNhYmxlKClcIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZXJDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAoa2V5ZG93bi5lbnRlcik9XCJoYW5kbGVyQ2hhbmdlKCRhbnkoJGV2ZW50KSlcIlxuICAgICAgKGtleWRvd24uc3BhY2UpPVwiaGFuZGxlckNoYW5nZSgkYW55KCRldmVudCkpXCI+PC9kaXY+XG4gIH1cbiAgQGlmIChsYWJlbCgpOyBhcyBsYWJlbCkge1xuICAgIDxkaXZcbiAgICAgIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyRGlyZWN0aXZlXG4gICAgICBbdHlwZV09XCJ0eXBlTGFiZWxQb3BvdmVyKCkgfHwgJ3RleHQnXCJcbiAgICAgIFthdHRyLmlzTGFiZWxdPVwidHJ1ZVwiXG4gICAgICBbY2xhc3NJbmNsdWRlXT1cImNsYXNzTGFiZWxJbmNsdWRlKCkgKyAoZGlzYWJsZSgpID8gJyBjdXJzb3ItZGVmYXVsdCcgOiAnJylcIlxuICAgICAgW2NsYXNzLmxpYnMtdWktZGlzYWJsZV09XCJkaXNhYmxlTGFiZWwoKVwiXG4gICAgICBbaWdub3JlU2hvd1BvcG92ZXJdPVwiaWdub3JlU2hvd1BvcG92ZXJMYWJlbCgpXCJcbiAgICAgIFtjb25maWddPVwieyBjb250ZW50OiBsYWJlbCwgdGltZXJEZXN0cm95OiA1MCwgekluZGV4OiB6SW5kZXhMYWJlbCgpIH1cIlxuICAgICAgW2lnbm9yZUN1cnNvclBvaW50ZXJNb2RlTGlrZUNsaWNrXT1cImRpc2FibGVMYWJlbCgpIHx8IGRpc2FibGUoKVwiXG4gICAgICBbaW5uZXJIVE1MXT1cImxhYmVsIHwgdHJhbnNsYXRlXCJcbiAgICAgIChvdXRFdmVudCk9XCJoYW5kbGVyRXZlbnRMYWJlbCgkZXZlbnQpXCJcbiAgICAgIChvdXRDaGFuZ1N0YWdlRmxhZ01vdXNlKT1cImhhbmRsZXJDaGFuZ1N0YWdlRmxhZ01vdXNlKCRldmVudClcIj48L2Rpdj5cbiAgfVxuICBAaWYgKHBvcG92ZXIoKTsgYXMgcG9wb3Zlcikge1xuICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtcG9wb3ZlclxuICAgICAgY2xhc3M9XCJmbGV4XCJcbiAgICAgIFtjb25maWddPVwicG9wb3Zlci5jb25maWdcIlxuICAgICAgKG91dEV2ZW50KT1cImhhbmRsZXJFdmVudFBvcG92ZXIoJGV2ZW50KVwiXG4gICAgICAob3V0Q2hhbmdTdGFnZUZsYWdNb3VzZSk9XCJoYW5kbGVyQ2hhbmdTdGFnZUZsYWdNb3VzZSgkZXZlbnQpXCI+XG4gICAgICBAaWYgKCFwb3BvdmVyLmRhdGFWaWV3KSB7XG4gICAgICAgIDxpIFtjbGFzc109XCJwb3BvdmVyLmNsYXNzSW5jbHVkZSA/PyAnbGlicy11aS1pY29uLXRvb2x0aXAtb3V0bGluZSdcIj48L2k+XG4gICAgICB9XG4gICAgICBAaWYgKHBvcG92ZXIuZGF0YVZpZXcpIHtcbiAgICAgICAgPGRpdiBbaW5uZXJIdG1sXT1cInBvcG92ZXIuZGF0YVZpZXcgfCB0cmFuc2xhdGVcIj48L2Rpdj5cbiAgICAgIH1cbiAgICA8L2xpYnNfdWktY29tcG9uZW50cy1wb3BvdmVyPlxuICB9XG4gIEBpZiAoZGF0YUNvbXBvbmVudE91dGxldENvbXB1dGVkKCk7IGFzIGRhdGFDb21wb25lbnRPdXRsZXRDb21wdXRlZCkge1xuICAgIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwiZGF0YUNvbXBvbmVudE91dGxldENvbXB1dGVkLmNvbXBvbmVudDsgaW5wdXRzOiBkYXRhQ29tcG9uZW50T3V0bGV0Q29tcHV0ZWQuaW5wdXRzXCIgLz5cbiAgfVxuPC9kaXY+XG5AaWYgKGRlc2NyaXB0aW9uKCk7IGFzIGRlc2NyaXB0aW9uKSB7XG4gIDxkaXZcbiAgICBbY2xhc3NdPVwiZGVzY3JpcHRpb24uY2xhc3NJbmNsdWRlXCJcbiAgICBbaW5uZXJIdG1sXT1cImRlc2NyaXB0aW9uQ29tcHV0ZWQoKSB8IHRyYW5zbGF0ZVwiPjwvZGl2PlxufVxuIl19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NgComponentOutlet } from '@angular/common';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { computed, input, model, output,
|
|
3
|
+
import { computed, input, model, output, Component, ChangeDetectionStrategy } from '@angular/core';
|
|
4
4
|
import { LibsUiComponentsAvatarComponent } from '@libs-ui/components-avatar';
|
|
5
5
|
import { LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';
|
|
6
6
|
import { escapeHtml } from '@libs-ui/utils';
|
|
@@ -137,11 +137,11 @@ class LibsUiComponentsCheckboxSingleComponent {
|
|
|
137
137
|
this.outChangStageFlagMousePopover.emit(event);
|
|
138
138
|
}
|
|
139
139
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsCheckboxSingleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
140
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsCheckboxSingleComponent, isStandalone: true, selector: "libs_ui-components-checkbox-single", inputs: { key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, classLabelInclude: { classPropertyName: "classLabelInclude", publicName: "classLabelInclude", isSignal: true, isRequired: false, transformFunction: null }, ignoreShowPopoverLabel: { classPropertyName: "ignoreShowPopoverLabel", publicName: "ignoreShowPopoverLabel", isSignal: true, isRequired: false, transformFunction: null }, typeLabelPopover: { classPropertyName: "typeLabelPopover", publicName: "typeLabelPopover", isSignal: true, isRequired: false, transformFunction: null }, popover: { classPropertyName: "popover", publicName: "popover", isSignal: true, isRequired: false, transformFunction: null }, linkImage: { classPropertyName: "linkImage", publicName: "linkImage", isSignal: true, isRequired: false, transformFunction: null }, linkImageError: { classPropertyName: "linkImageError", publicName: "linkImageError", isSignal: true, isRequired: false, transformFunction: null }, avatarConfig: { classPropertyName: "avatarConfig", publicName: "avatarConfig", isSignal: true, isRequired: false, transformFunction: null }, classImageInclude: { classPropertyName: "classImageInclude", publicName: "classImageInclude", isSignal: true, isRequired: false, transformFunction: null }, imgTypeIcon: { classPropertyName: "imgTypeIcon", publicName: "imgTypeIcon", isSignal: true, isRequired: false, transformFunction: null }, bullet: { classPropertyName: "bullet", publicName: "bullet", isSignal: true, isRequired: false, transformFunction: null }, classInclude: { classPropertyName: "classInclude", publicName: "classInclude", isSignal: true, isRequired: false, transformFunction: null }, clickExactly: { classPropertyName: "clickExactly", publicName: "clickExactly", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, disableLabel: { classPropertyName: "disableLabel", publicName: "disableLabel", isSignal: true, isRequired: false, transformFunction: null }, ignoreCheckbox: { classPropertyName: "ignoreCheckbox", publicName: "ignoreCheckbox", isSignal: true, isRequired: false, transformFunction: null }, zIndexLabel: { classPropertyName: "zIndexLabel", publicName: "zIndexLabel", isSignal: true, isRequired: false, transformFunction: null }, stillOtherOptions: { classPropertyName: "stillOtherOptions", publicName: "stillOtherOptions", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, showBorderError: { classPropertyName: "showBorderError", publicName: "showBorderError", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, iconImageClass: { classPropertyName: "iconImageClass", publicName: "iconImageClass", isSignal: true, isRequired: false, transformFunction: null }, classIconInclude: { classPropertyName: "classIconInclude", publicName: "classIconInclude", isSignal: true, isRequired: false, transformFunction: null }, modeBorder: { classPropertyName: "modeBorder", publicName: "modeBorder", isSignal: true, isRequired: false, transformFunction: null }, dataComponentOutlet: { classPropertyName: "dataComponentOutlet", publicName: "dataComponentOutlet", isSignal: true, isRequired: false, transformFunction: null }, componentOutlet: { classPropertyName: "componentOutlet", publicName: "componentOutlet", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange", linkImage: "linkImageChange", outChange: "outChange", outEventPopover: "outEventPopover", outClickLabel: "outClickLabel", outChangStageFlagMousePopover: "outChangStageFlagMousePopover" }, ngImport: i0, template: "<div\n class=\"libs-ui-checkbox {{ classInclude() || '' }}\"\n [class.cursor-pointer]=\"!clickExactly() && !disable()\"\n [class.p-[8px]]=\"modeBorder()\"\n [class.rounded-[4px]]=\"modeBorder()\"\n [class.libs-ui-border-general]=\"modeBorder() && !checked()\"\n [class.libs-ui-border-primary-general]=\"modeBorder() && checked()\"\n (click)=\"handlerClickRelatively($event)\">\n @if (!ignoreCheckbox()) {\n <i\n class=\"{{ classIconInclude() || '' }}\"\n [class.libs-ui-icon-checkbox-unselected]=\"!checked() && !stillOtherOptions()\"\n [class.libs-ui-icon-checkbox-selected]=\"checked() && !stillOtherOptions()\"\n [class.libs-ui-icon-checkbox-indeterminate]=\"stillOtherOptions()\"\n [class.libs-ui-disable]=\"disable()\"\n [class.pointer-events-none]=\"disable()\"\n [class.libs-ui-disable-active]=\"disable() && (checked() || stillOtherOptions())\"\n [class.libs-ui-text-error]=\"showBorderError() || error()\"\n (click)=\"handlerChange($event)\"></i>\n }\n @if (linkImage()) {\n <img\n [src]=\"linkImage()\"\n class=\"libs-ui-checkbox-image {{ classImageInclude() || '' }}\"\n [class.cursor-default]=\"disable()\"\n [class.w-[18px]]=\"imgTypeIcon()\"\n [class.h-[18px]]=\"imgTypeIcon()\"\n (click)=\"handlerChange($event)\"\n (error)=\"handlerErrorImage($event)\" />\n }\n @if (avatarConfig(); as avatarConfig) {\n <libs_ui-components-avatar\n [typeShape]=\"avatarConfig.typeShape\"\n [classInclude]=\"avatarConfig.classInclude\"\n [size]=\"avatarConfig.size || 24\"\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\" />\n }\n @if (!linkImage() && iconImageClass()) {\n <div\n [class]=\"iconImageClass()\"\n [class.cursor-default]=\"disable()\"></div>\n }\n @if (bullet(); as bullet) {\n <div\n class=\"libs-ui-checkbox-bullet {{ bullet.classInclude || '' }}\"\n [style.background-color]=\"bullet.backgroundColor\"\n [style.width.px]=\"bullet.width\"\n [style.height.px]=\"bullet.height\"\n [class.cursor-default]=\"disable()\"\n (click)=\"handlerChange($event)\"></div>\n }\n @if (label(); as label) {\n <div\n LibsUiComponentsPopoverDirective\n [type]=\"typeLabelPopover() || 'text'\"\n [attr.isLabel]=\"true\"\n [classInclude]=\"classLabelInclude() + (disable() ? ' cursor-default' : '')\"\n [class.libs-ui-disable]=\"disableLabel()\"\n [ignoreShowPopover]=\"ignoreShowPopoverLabel()\"\n [config]=\"{ content: label, timerDestroy: 50, zIndex: zIndexLabel() }\"\n [ignoreCursorPointerModeLikeClick]=\"disableLabel() || disable()\"\n [innerHTML]=\"label | translate\"\n (outEvent)=\"handlerEventLabel($event)\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"></div>\n }\n @if (popover(); as popover) {\n <libs_ui-components-popover\n class=\"flex\"\n [config]=\"popover.config\"\n (outEvent)=\"handlerEventPopover($event)\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\">\n @if (!popover.dataView) {\n <i [class]=\"popover.classInclude ?? 'libs-ui-icon-tooltip-outline'\"></i>\n }\n @if (popover.dataView) {\n <div [innerHtml]=\"popover.dataView | translate\"></div>\n }\n </libs_ui-components-popover>\n }\n @if (dataComponentOutletComputed(); as dataComponentOutletComputed) {\n <ng-container *ngComponentOutlet=\"dataComponentOutletComputed.component; inputs: dataComponentOutletComputed.inputs\" />\n }\n</div>\n@if (description(); as description) {\n <div\n [class]=\"description.classInclude\"\n [innerHtml]=\"descriptionComputed() | translate\"></div>\n}\n", styles: [":host .libs-ui-checkbox{display:flex;align-items:center}:host .libs-ui-checkbox .libs-ui-icon-checkbox-selected:before,:host .libs-ui-checkbox .libs-ui-icon-checkbox-indeterminate:before{color:var(--libs-ui-color-default, #226ff5)}:host .libs-ui-checkbox .libs-ui-checkbox-image{width:24px;height:24px;margin-right:8px;border-radius:12px;border:solid 1px #e6e8ed;cursor:pointer;flex-shrink:0}:host .libs-ui-checkbox .libs-ui-checkbox-bullet{min-width:10px;min-height:10px;border-radius:50%;margin-right:8px;cursor:pointer}:host .libs-ui-checkbox libs_ui-components-popover[isLabel=true]{margin-right:8px;max-width:100%;cursor:pointer}:host .libs-ui-checkbox>[class*=libs-ui-icon-],:host .libs-ui-checkbox>[class*=icon-font-3rd]{font-size:16px;cursor:pointer;margin-right:8px}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "component", type: LibsUiComponentsAvatarComponent, selector: "libs_ui-components-avatar", inputs: ["typeShape", "classInclude", "size", "linkAvatar", "linkAvatarError", "classImageInclude", "zIndexPreviewImage", "clickPreviewImage", "idGenColor", "getLastTextAfterSpace", "textAvatar", "textAvatarClassInclude", "containerTextAvatarClassInclude"], outputs: ["outAvatarError", "outEventPreviewImage"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
140
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsCheckboxSingleComponent, isStandalone: true, selector: "libs_ui-components-checkbox-single", inputs: { key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, classLabelInclude: { classPropertyName: "classLabelInclude", publicName: "classLabelInclude", isSignal: true, isRequired: false, transformFunction: null }, ignoreShowPopoverLabel: { classPropertyName: "ignoreShowPopoverLabel", publicName: "ignoreShowPopoverLabel", isSignal: true, isRequired: false, transformFunction: null }, typeLabelPopover: { classPropertyName: "typeLabelPopover", publicName: "typeLabelPopover", isSignal: true, isRequired: false, transformFunction: null }, popover: { classPropertyName: "popover", publicName: "popover", isSignal: true, isRequired: false, transformFunction: null }, linkImage: { classPropertyName: "linkImage", publicName: "linkImage", isSignal: true, isRequired: false, transformFunction: null }, linkImageError: { classPropertyName: "linkImageError", publicName: "linkImageError", isSignal: true, isRequired: false, transformFunction: null }, avatarConfig: { classPropertyName: "avatarConfig", publicName: "avatarConfig", isSignal: true, isRequired: false, transformFunction: null }, classImageInclude: { classPropertyName: "classImageInclude", publicName: "classImageInclude", isSignal: true, isRequired: false, transformFunction: null }, imgTypeIcon: { classPropertyName: "imgTypeIcon", publicName: "imgTypeIcon", isSignal: true, isRequired: false, transformFunction: null }, bullet: { classPropertyName: "bullet", publicName: "bullet", isSignal: true, isRequired: false, transformFunction: null }, classInclude: { classPropertyName: "classInclude", publicName: "classInclude", isSignal: true, isRequired: false, transformFunction: null }, clickExactly: { classPropertyName: "clickExactly", publicName: "clickExactly", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, disableLabel: { classPropertyName: "disableLabel", publicName: "disableLabel", isSignal: true, isRequired: false, transformFunction: null }, ignoreCheckbox: { classPropertyName: "ignoreCheckbox", publicName: "ignoreCheckbox", isSignal: true, isRequired: false, transformFunction: null }, zIndexLabel: { classPropertyName: "zIndexLabel", publicName: "zIndexLabel", isSignal: true, isRequired: false, transformFunction: null }, stillOtherOptions: { classPropertyName: "stillOtherOptions", publicName: "stillOtherOptions", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, showBorderError: { classPropertyName: "showBorderError", publicName: "showBorderError", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, iconImageClass: { classPropertyName: "iconImageClass", publicName: "iconImageClass", isSignal: true, isRequired: false, transformFunction: null }, classIconInclude: { classPropertyName: "classIconInclude", publicName: "classIconInclude", isSignal: true, isRequired: false, transformFunction: null }, modeBorder: { classPropertyName: "modeBorder", publicName: "modeBorder", isSignal: true, isRequired: false, transformFunction: null }, dataComponentOutlet: { classPropertyName: "dataComponentOutlet", publicName: "dataComponentOutlet", isSignal: true, isRequired: false, transformFunction: null }, componentOutlet: { classPropertyName: "componentOutlet", publicName: "componentOutlet", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange", linkImage: "linkImageChange", outChange: "outChange", outEventPopover: "outEventPopover", outClickLabel: "outClickLabel", outChangStageFlagMousePopover: "outChangStageFlagMousePopover" }, ngImport: i0, template: "<div\n class=\"libs-ui-checkbox {{ classInclude() || '' }}\"\n tabindex=\"0\"\n [class.cursor-pointer]=\"!clickExactly() && !disable()\"\n [class.p-[8px]]=\"modeBorder()\"\n [class.rounded-[4px]]=\"modeBorder()\"\n [class.libs-ui-border-general]=\"modeBorder() && !checked()\"\n [class.libs-ui-border-primary-general]=\"modeBorder() && checked()\"\n (click)=\"handlerClickRelatively($event)\"\n (keydown.enter)=\"handlerClickRelatively($any($event))\"\n (keydown.space)=\"handlerClickRelatively($any($event))\">\n @if (!ignoreCheckbox()) {\n <i\n class=\"{{ classIconInclude() || '' }}\"\n tabindex=\"0\"\n [class.libs-ui-icon-checkbox-unselected]=\"!checked() && !stillOtherOptions()\"\n [class.libs-ui-icon-checkbox-selected]=\"checked() && !stillOtherOptions()\"\n [class.libs-ui-icon-checkbox-indeterminate]=\"stillOtherOptions()\"\n [class.libs-ui-disable]=\"disable()\"\n [class.pointer-events-none]=\"disable()\"\n [class.libs-ui-disable-active]=\"disable() && (checked() || stillOtherOptions())\"\n [class.libs-ui-text-error]=\"showBorderError() || error()\"\n (click)=\"handlerChange($event)\"\n (keydown.enter)=\"handlerChange($any($event))\"\n (keydown.space)=\"handlerChange($any($event))\"></i>\n }\n @if (linkImage()) {\n <img\n [src]=\"linkImage()\"\n class=\"libs-ui-checkbox-image {{ classImageInclude() || '' }}\"\n alt=\"\"\n tabindex=\"0\"\n [class.cursor-default]=\"disable()\"\n [class.w-[18px]]=\"imgTypeIcon()\"\n [class.h-[18px]]=\"imgTypeIcon()\"\n (click)=\"handlerChange($event)\"\n (keydown.enter)=\"handlerChange($any($event))\"\n (keydown.space)=\"handlerChange($any($event))\"\n (error)=\"handlerErrorImage($event)\" />\n }\n @if (avatarConfig(); as avatarConfig) {\n <libs_ui-components-avatar\n [typeShape]=\"avatarConfig.typeShape\"\n [classInclude]=\"avatarConfig.classInclude\"\n [size]=\"avatarConfig.size || 24\"\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\" />\n }\n @if (!linkImage() && iconImageClass()) {\n <div\n [class]=\"iconImageClass()\"\n [class.cursor-default]=\"disable()\"></div>\n }\n @if (bullet(); as bullet) {\n <div\n class=\"libs-ui-checkbox-bullet {{ bullet.classInclude || '' }}\"\n tabindex=\"0\"\n [style.background-color]=\"bullet.backgroundColor\"\n [style.width.px]=\"bullet.width\"\n [style.height.px]=\"bullet.height\"\n [class.cursor-default]=\"disable()\"\n (click)=\"handlerChange($event)\"\n (keydown.enter)=\"handlerChange($any($event))\"\n (keydown.space)=\"handlerChange($any($event))\"></div>\n }\n @if (label(); as label) {\n <div\n LibsUiComponentsPopoverDirective\n [type]=\"typeLabelPopover() || 'text'\"\n [attr.isLabel]=\"true\"\n [classInclude]=\"classLabelInclude() + (disable() ? ' cursor-default' : '')\"\n [class.libs-ui-disable]=\"disableLabel()\"\n [ignoreShowPopover]=\"ignoreShowPopoverLabel()\"\n [config]=\"{ content: label, timerDestroy: 50, zIndex: zIndexLabel() }\"\n [ignoreCursorPointerModeLikeClick]=\"disableLabel() || disable()\"\n [innerHTML]=\"label | translate\"\n (outEvent)=\"handlerEventLabel($event)\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"></div>\n }\n @if (popover(); as popover) {\n <libs_ui-components-popover\n class=\"flex\"\n [config]=\"popover.config\"\n (outEvent)=\"handlerEventPopover($event)\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\">\n @if (!popover.dataView) {\n <i [class]=\"popover.classInclude ?? 'libs-ui-icon-tooltip-outline'\"></i>\n }\n @if (popover.dataView) {\n <div [innerHtml]=\"popover.dataView | translate\"></div>\n }\n </libs_ui-components-popover>\n }\n @if (dataComponentOutletComputed(); as dataComponentOutletComputed) {\n <ng-container *ngComponentOutlet=\"dataComponentOutletComputed.component; inputs: dataComponentOutletComputed.inputs\" />\n }\n</div>\n@if (description(); as description) {\n <div\n [class]=\"description.classInclude\"\n [innerHtml]=\"descriptionComputed() | translate\"></div>\n}\n", styles: [":host .libs-ui-checkbox{display:flex;align-items:center}:host .libs-ui-checkbox .libs-ui-icon-checkbox-selected:before,:host .libs-ui-checkbox .libs-ui-icon-checkbox-indeterminate:before{color:var(--libs-ui-color-default, #226ff5)}:host .libs-ui-checkbox .libs-ui-checkbox-image{width:24px;height:24px;margin-right:8px;border-radius:12px;border:solid 1px #e6e8ed;cursor:pointer;flex-shrink:0}:host .libs-ui-checkbox .libs-ui-checkbox-bullet{min-width:10px;min-height:10px;border-radius:50%;margin-right:8px;cursor:pointer}:host .libs-ui-checkbox libs_ui-components-popover[isLabel=true]{margin-right:8px;max-width:100%;cursor:pointer}:host .libs-ui-checkbox>[class*=libs-ui-icon-],:host .libs-ui-checkbox>[class*=icon-font-3rd]{font-size:16px;cursor:pointer;margin-right:8px}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "component", type: LibsUiComponentsAvatarComponent, selector: "libs_ui-components-avatar", inputs: ["typeShape", "classInclude", "size", "linkAvatar", "linkAvatarError", "classImageInclude", "zIndexPreviewImage", "clickPreviewImage", "idGenColor", "getLastTextAfterSpace", "textAvatar", "textAvatarClassInclude", "containerTextAvatarClassInclude"], outputs: ["outAvatarError", "outEventPreviewImage"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
141
141
|
}
|
|
142
142
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsCheckboxSingleComponent, decorators: [{
|
|
143
143
|
type: Component,
|
|
144
|
-
args: [{ selector: 'libs_ui-components-checkbox-single', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [TranslateModule, NgComponentOutlet, LibsUiComponentsAvatarComponent, LibsUiComponentsPopoverComponent], template: "<div\n class=\"libs-ui-checkbox {{ classInclude() || '' }}\"\n [class.cursor-pointer]=\"!clickExactly() && !disable()\"\n [class.p-[8px]]=\"modeBorder()\"\n [class.rounded-[4px]]=\"modeBorder()\"\n [class.libs-ui-border-general]=\"modeBorder() && !checked()\"\n [class.libs-ui-border-primary-general]=\"modeBorder() && checked()\"\n (click)=\"handlerClickRelatively($event)\">\n @if (!ignoreCheckbox()) {\n <i\n class=\"{{ classIconInclude() || '' }}\"\n [class.libs-ui-icon-checkbox-unselected]=\"!checked() && !stillOtherOptions()\"\n [class.libs-ui-icon-checkbox-selected]=\"checked() && !stillOtherOptions()\"\n [class.libs-ui-icon-checkbox-indeterminate]=\"stillOtherOptions()\"\n [class.libs-ui-disable]=\"disable()\"\n [class.pointer-events-none]=\"disable()\"\n [class.libs-ui-disable-active]=\"disable() && (checked() || stillOtherOptions())\"\n [class.libs-ui-text-error]=\"showBorderError() || error()\"\n (click)=\"handlerChange($event)\"></i>\n }\n @if (linkImage()) {\n <img\n [src]=\"linkImage()\"\n class=\"libs-ui-checkbox-image {{ classImageInclude() || '' }}\"\n [class.cursor-default]=\"disable()\"\n [class.w-[18px]]=\"imgTypeIcon()\"\n [class.h-[18px]]=\"imgTypeIcon()\"\n (click)=\"handlerChange($event)\"\n (error)=\"handlerErrorImage($event)\" />\n }\n @if (avatarConfig(); as avatarConfig) {\n <libs_ui-components-avatar\n [typeShape]=\"avatarConfig.typeShape\"\n [classInclude]=\"avatarConfig.classInclude\"\n [size]=\"avatarConfig.size || 24\"\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\" />\n }\n @if (!linkImage() && iconImageClass()) {\n <div\n [class]=\"iconImageClass()\"\n [class.cursor-default]=\"disable()\"></div>\n }\n @if (bullet(); as bullet) {\n <div\n class=\"libs-ui-checkbox-bullet {{ bullet.classInclude || '' }}\"\n [style.background-color]=\"bullet.backgroundColor\"\n [style.width.px]=\"bullet.width\"\n [style.height.px]=\"bullet.height\"\n [class.cursor-default]=\"disable()\"\n (click)=\"handlerChange($event)\"></div>\n }\n @if (label(); as label) {\n <div\n LibsUiComponentsPopoverDirective\n [type]=\"typeLabelPopover() || 'text'\"\n [attr.isLabel]=\"true\"\n [classInclude]=\"classLabelInclude() + (disable() ? ' cursor-default' : '')\"\n [class.libs-ui-disable]=\"disableLabel()\"\n [ignoreShowPopover]=\"ignoreShowPopoverLabel()\"\n [config]=\"{ content: label, timerDestroy: 50, zIndex: zIndexLabel() }\"\n [ignoreCursorPointerModeLikeClick]=\"disableLabel() || disable()\"\n [innerHTML]=\"label | translate\"\n (outEvent)=\"handlerEventLabel($event)\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"></div>\n }\n @if (popover(); as popover) {\n <libs_ui-components-popover\n class=\"flex\"\n [config]=\"popover.config\"\n (outEvent)=\"handlerEventPopover($event)\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\">\n @if (!popover.dataView) {\n <i [class]=\"popover.classInclude ?? 'libs-ui-icon-tooltip-outline'\"></i>\n }\n @if (popover.dataView) {\n <div [innerHtml]=\"popover.dataView | translate\"></div>\n }\n </libs_ui-components-popover>\n }\n @if (dataComponentOutletComputed(); as dataComponentOutletComputed) {\n <ng-container *ngComponentOutlet=\"dataComponentOutletComputed.component; inputs: dataComponentOutletComputed.inputs\" />\n }\n</div>\n@if (description(); as description) {\n <div\n [class]=\"description.classInclude\"\n [innerHtml]=\"descriptionComputed() | translate\"></div>\n}\n", styles: [":host .libs-ui-checkbox{display:flex;align-items:center}:host .libs-ui-checkbox .libs-ui-icon-checkbox-selected:before,:host .libs-ui-checkbox .libs-ui-icon-checkbox-indeterminate:before{color:var(--libs-ui-color-default, #226ff5)}:host .libs-ui-checkbox .libs-ui-checkbox-image{width:24px;height:24px;margin-right:8px;border-radius:12px;border:solid 1px #e6e8ed;cursor:pointer;flex-shrink:0}:host .libs-ui-checkbox .libs-ui-checkbox-bullet{min-width:10px;min-height:10px;border-radius:50%;margin-right:8px;cursor:pointer}:host .libs-ui-checkbox libs_ui-components-popover[isLabel=true]{margin-right:8px;max-width:100%;cursor:pointer}:host .libs-ui-checkbox>[class*=libs-ui-icon-],:host .libs-ui-checkbox>[class*=icon-font-3rd]{font-size:16px;cursor:pointer;margin-right:8px}\n"] }]
|
|
144
|
+
args: [{ selector: 'libs_ui-components-checkbox-single', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [TranslateModule, NgComponentOutlet, LibsUiComponentsAvatarComponent, LibsUiComponentsPopoverComponent], template: "<div\n class=\"libs-ui-checkbox {{ classInclude() || '' }}\"\n tabindex=\"0\"\n [class.cursor-pointer]=\"!clickExactly() && !disable()\"\n [class.p-[8px]]=\"modeBorder()\"\n [class.rounded-[4px]]=\"modeBorder()\"\n [class.libs-ui-border-general]=\"modeBorder() && !checked()\"\n [class.libs-ui-border-primary-general]=\"modeBorder() && checked()\"\n (click)=\"handlerClickRelatively($event)\"\n (keydown.enter)=\"handlerClickRelatively($any($event))\"\n (keydown.space)=\"handlerClickRelatively($any($event))\">\n @if (!ignoreCheckbox()) {\n <i\n class=\"{{ classIconInclude() || '' }}\"\n tabindex=\"0\"\n [class.libs-ui-icon-checkbox-unselected]=\"!checked() && !stillOtherOptions()\"\n [class.libs-ui-icon-checkbox-selected]=\"checked() && !stillOtherOptions()\"\n [class.libs-ui-icon-checkbox-indeterminate]=\"stillOtherOptions()\"\n [class.libs-ui-disable]=\"disable()\"\n [class.pointer-events-none]=\"disable()\"\n [class.libs-ui-disable-active]=\"disable() && (checked() || stillOtherOptions())\"\n [class.libs-ui-text-error]=\"showBorderError() || error()\"\n (click)=\"handlerChange($event)\"\n (keydown.enter)=\"handlerChange($any($event))\"\n (keydown.space)=\"handlerChange($any($event))\"></i>\n }\n @if (linkImage()) {\n <img\n [src]=\"linkImage()\"\n class=\"libs-ui-checkbox-image {{ classImageInclude() || '' }}\"\n alt=\"\"\n tabindex=\"0\"\n [class.cursor-default]=\"disable()\"\n [class.w-[18px]]=\"imgTypeIcon()\"\n [class.h-[18px]]=\"imgTypeIcon()\"\n (click)=\"handlerChange($event)\"\n (keydown.enter)=\"handlerChange($any($event))\"\n (keydown.space)=\"handlerChange($any($event))\"\n (error)=\"handlerErrorImage($event)\" />\n }\n @if (avatarConfig(); as avatarConfig) {\n <libs_ui-components-avatar\n [typeShape]=\"avatarConfig.typeShape\"\n [classInclude]=\"avatarConfig.classInclude\"\n [size]=\"avatarConfig.size || 24\"\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\" />\n }\n @if (!linkImage() && iconImageClass()) {\n <div\n [class]=\"iconImageClass()\"\n [class.cursor-default]=\"disable()\"></div>\n }\n @if (bullet(); as bullet) {\n <div\n class=\"libs-ui-checkbox-bullet {{ bullet.classInclude || '' }}\"\n tabindex=\"0\"\n [style.background-color]=\"bullet.backgroundColor\"\n [style.width.px]=\"bullet.width\"\n [style.height.px]=\"bullet.height\"\n [class.cursor-default]=\"disable()\"\n (click)=\"handlerChange($event)\"\n (keydown.enter)=\"handlerChange($any($event))\"\n (keydown.space)=\"handlerChange($any($event))\"></div>\n }\n @if (label(); as label) {\n <div\n LibsUiComponentsPopoverDirective\n [type]=\"typeLabelPopover() || 'text'\"\n [attr.isLabel]=\"true\"\n [classInclude]=\"classLabelInclude() + (disable() ? ' cursor-default' : '')\"\n [class.libs-ui-disable]=\"disableLabel()\"\n [ignoreShowPopover]=\"ignoreShowPopoverLabel()\"\n [config]=\"{ content: label, timerDestroy: 50, zIndex: zIndexLabel() }\"\n [ignoreCursorPointerModeLikeClick]=\"disableLabel() || disable()\"\n [innerHTML]=\"label | translate\"\n (outEvent)=\"handlerEventLabel($event)\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"></div>\n }\n @if (popover(); as popover) {\n <libs_ui-components-popover\n class=\"flex\"\n [config]=\"popover.config\"\n (outEvent)=\"handlerEventPopover($event)\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\">\n @if (!popover.dataView) {\n <i [class]=\"popover.classInclude ?? 'libs-ui-icon-tooltip-outline'\"></i>\n }\n @if (popover.dataView) {\n <div [innerHtml]=\"popover.dataView | translate\"></div>\n }\n </libs_ui-components-popover>\n }\n @if (dataComponentOutletComputed(); as dataComponentOutletComputed) {\n <ng-container *ngComponentOutlet=\"dataComponentOutletComputed.component; inputs: dataComponentOutletComputed.inputs\" />\n }\n</div>\n@if (description(); as description) {\n <div\n [class]=\"description.classInclude\"\n [innerHtml]=\"descriptionComputed() | translate\"></div>\n}\n", styles: [":host .libs-ui-checkbox{display:flex;align-items:center}:host .libs-ui-checkbox .libs-ui-icon-checkbox-selected:before,:host .libs-ui-checkbox .libs-ui-icon-checkbox-indeterminate:before{color:var(--libs-ui-color-default, #226ff5)}:host .libs-ui-checkbox .libs-ui-checkbox-image{width:24px;height:24px;margin-right:8px;border-radius:12px;border:solid 1px #e6e8ed;cursor:pointer;flex-shrink:0}:host .libs-ui-checkbox .libs-ui-checkbox-bullet{min-width:10px;min-height:10px;border-radius:50%;margin-right:8px;cursor:pointer}:host .libs-ui-checkbox libs_ui-components-popover[isLabel=true]{margin-right:8px;max-width:100%;cursor:pointer}:host .libs-ui-checkbox>[class*=libs-ui-icon-],:host .libs-ui-checkbox>[class*=icon-font-3rd]{font-size:16px;cursor:pointer;margin-right:8px}\n"] }]
|
|
145
145
|
}] });
|
|
146
146
|
|
|
147
147
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libs-ui-components-checkbox-single.mjs","sources":["../../../../../../libs-ui/components/checkbox/single/src/checkbox-single.component.ts","../../../../../../libs-ui/components/checkbox/single/src/checkbox-single.component.html","../../../../../../libs-ui/components/checkbox/single/src/libs-ui-components-checkbox-single.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { NgComponentOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, model, output } from '@angular/core';\nimport { IAvatarConfig, LibsUiComponentsAvatarComponent } from '@libs-ui/components-avatar';\nimport { LibsUiComponentsComponentOutletComponent, TYPE_COMPONENT_OUTLET_DATA } from '@libs-ui/components-component-outlet';\nimport { IFlagMouse, IPopover, LibsUiComponentsPopoverComponent, TYPE_POPOVER_EVENT, TYPE_POPOVER_TYPE } from '@libs-ui/components-popover';\nimport { escapeHtml } from '@libs-ui/utils';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ICheckboxBullet, ICheckboxEvent, ICheckboxItemDescription } from './interfaces';\n\n/**\n * Checkbox Single Component - Một checkbox đơn lẻ với nhiều tùy chọn hiển thị (nhãn, ảnh, avatar, popover, description).\n *\n * @description\n * Hỗ trợ nhiều tính năng nâng cao như hiển thị hình ảnh/avatar cạnh checkbox,\n * tích hợp popover khi di chuột vào nhãn, và hiển thị phần mô tả chi tiết.\n *\n * @example\n * ```html\n * <libs_ui-components-checkbox-single\n * [(checked)]=\"isSelected\"\n * label=\"Đồng ý điều khoản\"\n * (outChange)=\"onStatusChange($event)\"\n * />\n * ```\n *\n * @publicApi\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-checkbox-single',\n templateUrl: './checkbox-single.component.html',\n styleUrls: ['./checkbox-single.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslateModule, NgComponentOutlet, LibsUiComponentsAvatarComponent, LibsUiComponentsPopoverComponent],\n})\nexport class LibsUiComponentsCheckboxSingleComponent {\n // #region PROPERTY\n protected descriptionComputed = computed(() => escapeHtml(this.description()?.content || ''));\n protected dataComponentOutletComputed = computed(() => {\n if (!this.componentOutlet()) {\n return undefined;\n }\n return {\n component: this.componentOutlet(),\n inputs: this.dataComponentOutlet() || {},\n };\n });\n\n // #region INPUT\n /** Khóa định danh cho checkbox */\n readonly key = input<string>();\n /** Trạng thái chọn của checkbox (Two-way binding) */\n readonly checked = model<boolean>(false);\n /** Nhãn hiển thị bên cạnh checkbox */\n readonly label = input<string>();\n /** Class CSS bổ sung cho nhãn */\n readonly classLabelInclude = input<string | undefined, string | undefined>('libs-ui-font-h5r', { transform: (value) => value ?? 'libs-ui-font-h5r' });\n /** Ẩn popover khi di chuột vào nhãn */\n readonly ignoreShowPopoverLabel = input<boolean>();\n /** Loại popover hiển thị trên nhãn */\n readonly typeLabelPopover = input<TYPE_POPOVER_TYPE, TYPE_POPOVER_TYPE>('text', { transform: (value) => value ?? 'text' });\n /** Cấu hình popover chi tiết */\n readonly popover = input<IPopover>();\n /** Đường dẫn hình ảnh hiển thị cạnh checkbox */\n readonly linkImage = model<string>();\n /** Hình ảnh hiển thị dự phòng khi lỗi */\n readonly linkImageError = input<string>();\n /** Cấu hình Avatar (nếu dùng thay cho hình ảnh) */\n readonly avatarConfig = input<IAvatarConfig>();\n /** Class CSS bổ sung cho phần hình ảnh */\n readonly classImageInclude = input<string>();\n /** Đánh dấu hình ảnh là dạng icon */\n readonly imgTypeIcon = input<boolean>();\n /** Cấu hình bullet (chấm tròn màu) bên cạnh checkbox */\n readonly bullet = input<ICheckboxBullet>();\n /** Class CSS bổ sung cho container chính */\n readonly classInclude = input<string | undefined, string | undefined>('', { transform: (value) => value ?? '' });\n /** Chỉ xử lý thay đổi khi click chính xác vào checkbox hoặc nhãn */\n readonly clickExactly = input<boolean | undefined, boolean | undefined>(true, { transform: (value) => value ?? true });\n /** Trạng thái vô hiệu hóa toàn bộ component */\n readonly disable = input<boolean>();\n /** Trạng thái vô hiệu hóa nhãn (không cho click nhãn để đổi trạng thái) */\n readonly disableLabel = input<boolean>();\n /** Ẩn ô checkbox, chỉ hiển thị nhãn/ảnh */\n readonly ignoreCheckbox = input<boolean>();\n /** Độ ưu tiên hiển thị (z-index) của nhãn/popover */\n readonly zIndexLabel = input<number | undefined, number | undefined>(1200, { transform: (value) => value ?? 1200 });\n /** Hiển thị trạng thái \"còn các lựa chọn khác\" */\n readonly stillOtherOptions = input<boolean>();\n /** Trạng thái lỗi */\n readonly error = input<boolean>();\n /** Hiển thị viền đỏ khi có lỗi */\n readonly showBorderError = input<boolean>();\n /** Phần mô tả chi tiết phía dưới nhãn */\n readonly description = input<ICheckboxItemDescription>();\n /** Class icon hiển thị (thay cho image/avatar) */\n readonly iconImageClass = input<string>();\n /** Class CSS cho icon */\n readonly classIconInclude = input<string>();\n /** Hiển thị viền bao quanh toàn bộ component */\n readonly modeBorder = input<boolean>();\n\n /** Dữ liệu truyền vào Component Outlet */\n readonly dataComponentOutlet = input<TYPE_COMPONENT_OUTLET_DATA>();\n /** Component tùy chỉnh hiển thị thông qua outlet */\n readonly componentOutlet = input<LibsUiComponentsComponentOutletComponent | any>();\n\n // #region OUTPUT\n /** Phát ra khi trạng thái checkbox thay đổi */\n readonly outChange = output<ICheckboxEvent>();\n /** Phát các sự kiện từ popover nhãn */\n readonly outEventPopover = output<TYPE_POPOVER_EVENT>();\n /** Phát khi người dùng click vào nhãn */\n readonly outClickLabel = output<void>();\n /** Phát trạng thái chuột trên nhãn để điều khiển popover */\n readonly outChangStageFlagMousePopover = output<IFlagMouse>();\n\n /* FUNCTIONS */\n protected async handlerErrorImage(event: Event) {\n event.stopPropagation();\n this.linkImage.set(this.linkImageError());\n }\n\n protected async handlerClickRelatively(event?: Event) {\n if (this.clickExactly()) {\n return;\n }\n event?.stopPropagation();\n this.handlerChange(event);\n }\n\n protected async handlerChange(event?: Event) {\n event?.stopPropagation();\n if (this.disable()) {\n return;\n }\n this.checked.update((checked) => !checked);\n this.outChange.emit({ key: this.key(), checked: this.checked(), revert: () => this.checked.update((checked) => !checked) });\n }\n\n protected async handlerEventLabel(event: string) {\n if (event === 'click') {\n this.outClickLabel.emit();\n this.handlerChange();\n }\n }\n\n protected async handlerEventPopover(event: TYPE_POPOVER_EVENT) {\n this.outEventPopover.emit(event);\n }\n\n protected async handlerChangStageFlagMouse(event: IFlagMouse) {\n this.outChangStageFlagMousePopover.emit(event);\n }\n}\n","<div\n class=\"libs-ui-checkbox {{ classInclude() || '' }}\"\n [class.cursor-pointer]=\"!clickExactly() && !disable()\"\n [class.p-[8px]]=\"modeBorder()\"\n [class.rounded-[4px]]=\"modeBorder()\"\n [class.libs-ui-border-general]=\"modeBorder() && !checked()\"\n [class.libs-ui-border-primary-general]=\"modeBorder() && checked()\"\n (click)=\"handlerClickRelatively($event)\">\n @if (!ignoreCheckbox()) {\n <i\n class=\"{{ classIconInclude() || '' }}\"\n [class.libs-ui-icon-checkbox-unselected]=\"!checked() && !stillOtherOptions()\"\n [class.libs-ui-icon-checkbox-selected]=\"checked() && !stillOtherOptions()\"\n [class.libs-ui-icon-checkbox-indeterminate]=\"stillOtherOptions()\"\n [class.libs-ui-disable]=\"disable()\"\n [class.pointer-events-none]=\"disable()\"\n [class.libs-ui-disable-active]=\"disable() && (checked() || stillOtherOptions())\"\n [class.libs-ui-text-error]=\"showBorderError() || error()\"\n (click)=\"handlerChange($event)\"></i>\n }\n @if (linkImage()) {\n <img\n [src]=\"linkImage()\"\n class=\"libs-ui-checkbox-image {{ classImageInclude() || '' }}\"\n [class.cursor-default]=\"disable()\"\n [class.w-[18px]]=\"imgTypeIcon()\"\n [class.h-[18px]]=\"imgTypeIcon()\"\n (click)=\"handlerChange($event)\"\n (error)=\"handlerErrorImage($event)\" />\n }\n @if (avatarConfig(); as avatarConfig) {\n <libs_ui-components-avatar\n [typeShape]=\"avatarConfig.typeShape\"\n [classInclude]=\"avatarConfig.classInclude\"\n [size]=\"avatarConfig.size || 24\"\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\" />\n }\n @if (!linkImage() && iconImageClass()) {\n <div\n [class]=\"iconImageClass()\"\n [class.cursor-default]=\"disable()\"></div>\n }\n @if (bullet(); as bullet) {\n <div\n class=\"libs-ui-checkbox-bullet {{ bullet.classInclude || '' }}\"\n [style.background-color]=\"bullet.backgroundColor\"\n [style.width.px]=\"bullet.width\"\n [style.height.px]=\"bullet.height\"\n [class.cursor-default]=\"disable()\"\n (click)=\"handlerChange($event)\"></div>\n }\n @if (label(); as label) {\n <div\n LibsUiComponentsPopoverDirective\n [type]=\"typeLabelPopover() || 'text'\"\n [attr.isLabel]=\"true\"\n [classInclude]=\"classLabelInclude() + (disable() ? ' cursor-default' : '')\"\n [class.libs-ui-disable]=\"disableLabel()\"\n [ignoreShowPopover]=\"ignoreShowPopoverLabel()\"\n [config]=\"{ content: label, timerDestroy: 50, zIndex: zIndexLabel() }\"\n [ignoreCursorPointerModeLikeClick]=\"disableLabel() || disable()\"\n [innerHTML]=\"label | translate\"\n (outEvent)=\"handlerEventLabel($event)\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"></div>\n }\n @if (popover(); as popover) {\n <libs_ui-components-popover\n class=\"flex\"\n [config]=\"popover.config\"\n (outEvent)=\"handlerEventPopover($event)\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\">\n @if (!popover.dataView) {\n <i [class]=\"popover.classInclude ?? 'libs-ui-icon-tooltip-outline'\"></i>\n }\n @if (popover.dataView) {\n <div [innerHtml]=\"popover.dataView | translate\"></div>\n }\n </libs_ui-components-popover>\n }\n @if (dataComponentOutletComputed(); as dataComponentOutletComputed) {\n <ng-container *ngComponentOutlet=\"dataComponentOutletComputed.component; inputs: dataComponentOutletComputed.inputs\" />\n }\n</div>\n@if (description(); as description) {\n <div\n [class]=\"description.classInclude\"\n [innerHtml]=\"descriptionComputed() | translate\"></div>\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-components-checkbox-single.mjs","sources":["../../../../../../libs-ui/components/checkbox/single/src/checkbox-single.component.ts","../../../../../../libs-ui/components/checkbox/single/src/checkbox-single.component.html","../../../../../../libs-ui/components/checkbox/single/src/libs-ui-components-checkbox-single.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { NgComponentOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, model, output } from '@angular/core';\nimport { IAvatarConfig, LibsUiComponentsAvatarComponent } from '@libs-ui/components-avatar';\nimport { LibsUiComponentsComponentOutletComponent, TYPE_COMPONENT_OUTLET_DATA } from '@libs-ui/components-component-outlet';\nimport { IFlagMouse, IPopover, LibsUiComponentsPopoverComponent, TYPE_POPOVER_EVENT, TYPE_POPOVER_TYPE } from '@libs-ui/components-popover';\nimport { escapeHtml } from '@libs-ui/utils';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ICheckboxBullet, ICheckboxEvent, ICheckboxItemDescription } from './interfaces';\n\n/**\n * Checkbox Single Component - Một checkbox đơn lẻ với nhiều tùy chọn hiển thị (nhãn, ảnh, avatar, popover, description).\n *\n * @description\n * Hỗ trợ nhiều tính năng nâng cao như hiển thị hình ảnh/avatar cạnh checkbox,\n * tích hợp popover khi di chuột vào nhãn, và hiển thị phần mô tả chi tiết.\n *\n * @example\n * ```html\n * <libs_ui-components-checkbox-single\n * [(checked)]=\"isSelected\"\n * label=\"Đồng ý điều khoản\"\n * (outChange)=\"onStatusChange($event)\"\n * />\n * ```\n *\n * @publicApi\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-checkbox-single',\n templateUrl: './checkbox-single.component.html',\n styleUrls: ['./checkbox-single.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslateModule, NgComponentOutlet, LibsUiComponentsAvatarComponent, LibsUiComponentsPopoverComponent],\n})\nexport class LibsUiComponentsCheckboxSingleComponent {\n // #region PROPERTY\n protected descriptionComputed = computed(() => escapeHtml(this.description()?.content || ''));\n protected dataComponentOutletComputed = computed(() => {\n if (!this.componentOutlet()) {\n return undefined;\n }\n return {\n component: this.componentOutlet(),\n inputs: this.dataComponentOutlet() || {},\n };\n });\n\n // #region INPUT\n /** Khóa định danh cho checkbox */\n readonly key = input<string>();\n /** Trạng thái chọn của checkbox (Two-way binding) */\n readonly checked = model<boolean>(false);\n /** Nhãn hiển thị bên cạnh checkbox */\n readonly label = input<string>();\n /** Class CSS bổ sung cho nhãn */\n readonly classLabelInclude = input<string | undefined, string | undefined>('libs-ui-font-h5r', { transform: (value) => value ?? 'libs-ui-font-h5r' });\n /** Ẩn popover khi di chuột vào nhãn */\n readonly ignoreShowPopoverLabel = input<boolean>();\n /** Loại popover hiển thị trên nhãn */\n readonly typeLabelPopover = input<TYPE_POPOVER_TYPE, TYPE_POPOVER_TYPE>('text', { transform: (value) => value ?? 'text' });\n /** Cấu hình popover chi tiết */\n readonly popover = input<IPopover>();\n /** Đường dẫn hình ảnh hiển thị cạnh checkbox */\n readonly linkImage = model<string>();\n /** Hình ảnh hiển thị dự phòng khi lỗi */\n readonly linkImageError = input<string>();\n /** Cấu hình Avatar (nếu dùng thay cho hình ảnh) */\n readonly avatarConfig = input<IAvatarConfig>();\n /** Class CSS bổ sung cho phần hình ảnh */\n readonly classImageInclude = input<string>();\n /** Đánh dấu hình ảnh là dạng icon */\n readonly imgTypeIcon = input<boolean>();\n /** Cấu hình bullet (chấm tròn màu) bên cạnh checkbox */\n readonly bullet = input<ICheckboxBullet>();\n /** Class CSS bổ sung cho container chính */\n readonly classInclude = input<string | undefined, string | undefined>('', { transform: (value) => value ?? '' });\n /** Chỉ xử lý thay đổi khi click chính xác vào checkbox hoặc nhãn */\n readonly clickExactly = input<boolean | undefined, boolean | undefined>(true, { transform: (value) => value ?? true });\n /** Trạng thái vô hiệu hóa toàn bộ component */\n readonly disable = input<boolean>();\n /** Trạng thái vô hiệu hóa nhãn (không cho click nhãn để đổi trạng thái) */\n readonly disableLabel = input<boolean>();\n /** Ẩn ô checkbox, chỉ hiển thị nhãn/ảnh */\n readonly ignoreCheckbox = input<boolean>();\n /** Độ ưu tiên hiển thị (z-index) của nhãn/popover */\n readonly zIndexLabel = input<number | undefined, number | undefined>(1200, { transform: (value) => value ?? 1200 });\n /** Hiển thị trạng thái \"còn các lựa chọn khác\" */\n readonly stillOtherOptions = input<boolean>();\n /** Trạng thái lỗi */\n readonly error = input<boolean>();\n /** Hiển thị viền đỏ khi có lỗi */\n readonly showBorderError = input<boolean>();\n /** Phần mô tả chi tiết phía dưới nhãn */\n readonly description = input<ICheckboxItemDescription>();\n /** Class icon hiển thị (thay cho image/avatar) */\n readonly iconImageClass = input<string>();\n /** Class CSS cho icon */\n readonly classIconInclude = input<string>();\n /** Hiển thị viền bao quanh toàn bộ component */\n readonly modeBorder = input<boolean>();\n\n /** Dữ liệu truyền vào Component Outlet */\n readonly dataComponentOutlet = input<TYPE_COMPONENT_OUTLET_DATA>();\n /** Component tùy chỉnh hiển thị thông qua outlet */\n readonly componentOutlet = input<LibsUiComponentsComponentOutletComponent | any>();\n\n // #region OUTPUT\n /** Phát ra khi trạng thái checkbox thay đổi */\n readonly outChange = output<ICheckboxEvent>();\n /** Phát các sự kiện từ popover nhãn */\n readonly outEventPopover = output<TYPE_POPOVER_EVENT>();\n /** Phát khi người dùng click vào nhãn */\n readonly outClickLabel = output<void>();\n /** Phát trạng thái chuột trên nhãn để điều khiển popover */\n readonly outChangStageFlagMousePopover = output<IFlagMouse>();\n\n /* FUNCTIONS */\n protected async handlerErrorImage(event: Event) {\n event.stopPropagation();\n this.linkImage.set(this.linkImageError());\n }\n\n protected async handlerClickRelatively(event?: Event) {\n if (this.clickExactly()) {\n return;\n }\n event?.stopPropagation();\n this.handlerChange(event);\n }\n\n protected async handlerChange(event?: Event) {\n event?.stopPropagation();\n if (this.disable()) {\n return;\n }\n this.checked.update((checked) => !checked);\n this.outChange.emit({ key: this.key(), checked: this.checked(), revert: () => this.checked.update((checked) => !checked) });\n }\n\n protected async handlerEventLabel(event: string) {\n if (event === 'click') {\n this.outClickLabel.emit();\n this.handlerChange();\n }\n }\n\n protected async handlerEventPopover(event: TYPE_POPOVER_EVENT) {\n this.outEventPopover.emit(event);\n }\n\n protected async handlerChangStageFlagMouse(event: IFlagMouse) {\n this.outChangStageFlagMousePopover.emit(event);\n }\n}\n","<div\n class=\"libs-ui-checkbox {{ classInclude() || '' }}\"\n tabindex=\"0\"\n [class.cursor-pointer]=\"!clickExactly() && !disable()\"\n [class.p-[8px]]=\"modeBorder()\"\n [class.rounded-[4px]]=\"modeBorder()\"\n [class.libs-ui-border-general]=\"modeBorder() && !checked()\"\n [class.libs-ui-border-primary-general]=\"modeBorder() && checked()\"\n (click)=\"handlerClickRelatively($event)\"\n (keydown.enter)=\"handlerClickRelatively($any($event))\"\n (keydown.space)=\"handlerClickRelatively($any($event))\">\n @if (!ignoreCheckbox()) {\n <i\n class=\"{{ classIconInclude() || '' }}\"\n tabindex=\"0\"\n [class.libs-ui-icon-checkbox-unselected]=\"!checked() && !stillOtherOptions()\"\n [class.libs-ui-icon-checkbox-selected]=\"checked() && !stillOtherOptions()\"\n [class.libs-ui-icon-checkbox-indeterminate]=\"stillOtherOptions()\"\n [class.libs-ui-disable]=\"disable()\"\n [class.pointer-events-none]=\"disable()\"\n [class.libs-ui-disable-active]=\"disable() && (checked() || stillOtherOptions())\"\n [class.libs-ui-text-error]=\"showBorderError() || error()\"\n (click)=\"handlerChange($event)\"\n (keydown.enter)=\"handlerChange($any($event))\"\n (keydown.space)=\"handlerChange($any($event))\"></i>\n }\n @if (linkImage()) {\n <img\n [src]=\"linkImage()\"\n class=\"libs-ui-checkbox-image {{ classImageInclude() || '' }}\"\n alt=\"\"\n tabindex=\"0\"\n [class.cursor-default]=\"disable()\"\n [class.w-[18px]]=\"imgTypeIcon()\"\n [class.h-[18px]]=\"imgTypeIcon()\"\n (click)=\"handlerChange($event)\"\n (keydown.enter)=\"handlerChange($any($event))\"\n (keydown.space)=\"handlerChange($any($event))\"\n (error)=\"handlerErrorImage($event)\" />\n }\n @if (avatarConfig(); as avatarConfig) {\n <libs_ui-components-avatar\n [typeShape]=\"avatarConfig.typeShape\"\n [classInclude]=\"avatarConfig.classInclude\"\n [size]=\"avatarConfig.size || 24\"\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\" />\n }\n @if (!linkImage() && iconImageClass()) {\n <div\n [class]=\"iconImageClass()\"\n [class.cursor-default]=\"disable()\"></div>\n }\n @if (bullet(); as bullet) {\n <div\n class=\"libs-ui-checkbox-bullet {{ bullet.classInclude || '' }}\"\n tabindex=\"0\"\n [style.background-color]=\"bullet.backgroundColor\"\n [style.width.px]=\"bullet.width\"\n [style.height.px]=\"bullet.height\"\n [class.cursor-default]=\"disable()\"\n (click)=\"handlerChange($event)\"\n (keydown.enter)=\"handlerChange($any($event))\"\n (keydown.space)=\"handlerChange($any($event))\"></div>\n }\n @if (label(); as label) {\n <div\n LibsUiComponentsPopoverDirective\n [type]=\"typeLabelPopover() || 'text'\"\n [attr.isLabel]=\"true\"\n [classInclude]=\"classLabelInclude() + (disable() ? ' cursor-default' : '')\"\n [class.libs-ui-disable]=\"disableLabel()\"\n [ignoreShowPopover]=\"ignoreShowPopoverLabel()\"\n [config]=\"{ content: label, timerDestroy: 50, zIndex: zIndexLabel() }\"\n [ignoreCursorPointerModeLikeClick]=\"disableLabel() || disable()\"\n [innerHTML]=\"label | translate\"\n (outEvent)=\"handlerEventLabel($event)\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"></div>\n }\n @if (popover(); as popover) {\n <libs_ui-components-popover\n class=\"flex\"\n [config]=\"popover.config\"\n (outEvent)=\"handlerEventPopover($event)\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\">\n @if (!popover.dataView) {\n <i [class]=\"popover.classInclude ?? 'libs-ui-icon-tooltip-outline'\"></i>\n }\n @if (popover.dataView) {\n <div [innerHtml]=\"popover.dataView | translate\"></div>\n }\n </libs_ui-components-popover>\n }\n @if (dataComponentOutletComputed(); as dataComponentOutletComputed) {\n <ng-container *ngComponentOutlet=\"dataComponentOutletComputed.component; inputs: dataComponentOutletComputed.inputs\" />\n }\n</div>\n@if (description(); as description) {\n <div\n [class]=\"description.classInclude\"\n [innerHtml]=\"descriptionComputed() | translate\"></div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AAAA;AAUA;;;;;;;;;;;;;;;;;AAiBG;MAUU,uCAAuC,CAAA;;AAExC,IAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;AACpF,IAAA,2BAA2B,GAAG,QAAQ,CAAC,MAAK;AACpD,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;AAC3B,YAAA,OAAO,SAAS,CAAC;SAClB;QACD,OAAO;AACL,YAAA,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE;AACjC,YAAA,MAAM,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,EAAE;SACzC,CAAC;AACJ,KAAC,CAAC,CAAC;;;IAIM,GAAG,GAAG,KAAK,EAAU,CAAC;;AAEtB,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;;IAEhC,KAAK,GAAG,KAAK,EAAU,CAAC;;AAExB,IAAA,iBAAiB,GAAG,KAAK,CAAyC,kBAAkB,EAAE,EAAE,SAAS,EAAE,CAAC,KAAK,KAAK,KAAK,IAAI,kBAAkB,EAAE,CAAC,CAAC;;IAE7I,sBAAsB,GAAG,KAAK,EAAW,CAAC;;AAE1C,IAAA,gBAAgB,GAAG,KAAK,CAAuC,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,KAAK,KAAK,KAAK,IAAI,MAAM,EAAE,CAAC,CAAC;;IAElH,OAAO,GAAG,KAAK,EAAY,CAAC;;IAE5B,SAAS,GAAG,KAAK,EAAU,CAAC;;IAE5B,cAAc,GAAG,KAAK,EAAU,CAAC;;IAEjC,YAAY,GAAG,KAAK,EAAiB,CAAC;;IAEtC,iBAAiB,GAAG,KAAK,EAAU,CAAC;;IAEpC,WAAW,GAAG,KAAK,EAAW,CAAC;;IAE/B,MAAM,GAAG,KAAK,EAAmB,CAAC;;AAElC,IAAA,YAAY,GAAG,KAAK,CAAyC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC;;AAExG,IAAA,YAAY,GAAG,KAAK,CAA2C,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC;;IAE9G,OAAO,GAAG,KAAK,EAAW,CAAC;;IAE3B,YAAY,GAAG,KAAK,EAAW,CAAC;;IAEhC,cAAc,GAAG,KAAK,EAAW,CAAC;;AAElC,IAAA,WAAW,GAAG,KAAK,CAAyC,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC;;IAE3G,iBAAiB,GAAG,KAAK,EAAW,CAAC;;IAErC,KAAK,GAAG,KAAK,EAAW,CAAC;;IAEzB,eAAe,GAAG,KAAK,EAAW,CAAC;;IAEnC,WAAW,GAAG,KAAK,EAA4B,CAAC;;IAEhD,cAAc,GAAG,KAAK,EAAU,CAAC;;IAEjC,gBAAgB,GAAG,KAAK,EAAU,CAAC;;IAEnC,UAAU,GAAG,KAAK,EAAW,CAAC;;IAG9B,mBAAmB,GAAG,KAAK,EAA8B,CAAC;;IAE1D,eAAe,GAAG,KAAK,EAAkD,CAAC;;;IAI1E,SAAS,GAAG,MAAM,EAAkB,CAAC;;IAErC,eAAe,GAAG,MAAM,EAAsB,CAAC;;IAE/C,aAAa,GAAG,MAAM,EAAQ,CAAC;;IAE/B,6BAA6B,GAAG,MAAM,EAAc,CAAC;;IAGpD,MAAM,iBAAiB,CAAC,KAAY,EAAA;QAC5C,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;KAC3C;IAES,MAAM,sBAAsB,CAAC,KAAa,EAAA;AAClD,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;YACvB,OAAO;SACR;QACD,KAAK,EAAE,eAAe,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KAC3B;IAES,MAAM,aAAa,CAAC,KAAa,EAAA;QACzC,KAAK,EAAE,eAAe,EAAE,CAAC;AACzB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YAClB,OAAO;SACR;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;KAC7H;IAES,MAAM,iBAAiB,CAAC,KAAa,EAAA;AAC7C,QAAA,IAAI,KAAK,KAAK,OAAO,EAAE;AACrB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;KACF;IAES,MAAM,mBAAmB,CAAC,KAAyB,EAAA;AAC3D,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAClC;IAES,MAAM,0BAA0B,CAAC,KAAiB,EAAA;AAC1D,QAAA,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAChD;wGAtHU,uCAAuC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAvC,uCAAuC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,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,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,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,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,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,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,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,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,6BAAA,EAAA,+BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrCpD,0zIAwGA,EDrEY,MAAA,EAAA,CAAA,2wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,4FAAE,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,kCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,+BAA+B,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,iCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gCAAgC,EAAA,QAAA,EAAA,+DAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,6BAAA,EAAA,cAAA,EAAA,0CAAA,EAAA,4BAAA,EAAA,kCAAA,EAAA,8BAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAEpG,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBATnD,SAAS;AAEE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oCAAoC,EAGlC,UAAA,EAAA,IAAI,EACC,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,eAAe,EAAE,iBAAiB,EAAE,+BAA+B,EAAE,gCAAgC,CAAC,EAAA,QAAA,EAAA,0zIAAA,EAAA,MAAA,EAAA,CAAA,2wBAAA,CAAA,EAAA,CAAA;;;AEnClH;;AAEG;;;;"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libs-ui/components-checkbox-single",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.357-0",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/core": ">=18.0.0",
|
|
6
|
-
"@libs-ui/components-avatar": "0.2.
|
|
7
|
-
"@libs-ui/components-popover": "0.2.
|
|
8
|
-
"@libs-ui/utils": "0.2.
|
|
9
|
-
"@ngx-translate/core": "^15.0.0"
|
|
6
|
+
"@libs-ui/components-avatar": "0.2.357-0",
|
|
7
|
+
"@libs-ui/components-popover": "0.2.357-0",
|
|
8
|
+
"@libs-ui/utils": "0.2.357-0",
|
|
9
|
+
"@ngx-translate/core": "^15.0.0",
|
|
10
|
+
"@angular/common": "~18.2.0",
|
|
11
|
+
"@libs-ui/components-component-outlet": "0.2.357-0"
|
|
10
12
|
},
|
|
11
13
|
"sideEffects": false,
|
|
12
14
|
"module": "fesm2022/libs-ui-components-checkbox-single.mjs",
|