@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 nhiều tùy chọn hiển thịtích hợp nâng cao cho Angular.
3
+ > Component checkbox đơn lẻ với hỗ trợ nhãn, hình ảnh, avatar, popover, bullet tả chi tiết cho Angular.
4
4
 
5
5
  ## Giới thiệu
6
6
 
7
- `LibsUiComponentsCheckboxSingleComponent` là một standalone Angular component cung cấp giải pháp checkbox linh hoạt, không chỉ đơn thuần một ô chọn còn tích hợp nhiều yếu tố UI phổ biến như:
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
- - Hiển thị nhãn (label) với định dạng linh hoạt
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ợ Bullet (chấm tròn màu) để phân loại
13
- - ✅ Hiển thị Description (mô tả chi tiết dưới nhãn)
14
- - ✅ Hỗ trợ Component Outlet để render nội dung tùy chỉnh
15
- - ✅ Trạng thái Error Disable toàn diện
16
- - ✅ Sử dụng Angular Signals & Model cho reactivity tối ưu
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
- # yarn
25
- yarn add @libs-ui/components-checkbox-single
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
- ## Sử dụng
55
+ ## dụ sử dụng
29
56
 
30
- ### Import Component
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
- [(checked)]="isSelected"
43
- label="Chấp nhận điều khoản"
44
- (outChange)="onStatusChange($event)"></libs_ui-components-checkbox-single>
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 ExampleComponent {
48
- isSelected = signal(false);
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
- onStatusChange(event: ICheckboxEvent) {
51
- console.log('Trạng thái checkbox:', event.checked);
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
- ## API Reference
57
-
58
- ### Inputs
59
-
60
- | Tên | Kiểu | Mặc định | tả |
61
- | ------------------------ | ---------------------------- | -------------------- | ------------------------------------------------------------------------------------------------------------ |
62
- | `avatarConfig` | `IAvatarConfig` | `undefined` | Cấu hình cho component Avatar hiển thị cạnh checkbox. |
63
- | `bullet` | `ICheckboxBullet` | `undefined` | Cấu hình cho dấu chấm tròn màu (bullet) hiển thị cạnh checkbox. |
64
- | `checked` | `model<boolean>` | `false` | Trạng thái chọn của checkbox (hỗ trợ two-way binding). |
65
- | `classIconInclude` | `string` | `undefined` | Class CSS bổ sung cho thẻ chứa icon. |
66
- | `classImageInclude` | `string` | `undefined` | Class CSS bổ sung cho phần hình ảnh. |
67
- | `classInclude` | `string` | `''` | Class CSS bổ sung cho container chính của component. |
68
- | `classLabelInclude` | `string` | `'libs-ui-font-h5r'` | Class CSS cho phần nhãn văn bản. |
69
- | `clickExactly` | `boolean` | `true` | Nếu `true`, chỉ click vào checkbox/label mới đổi trạng thái. Nếu `false`, click vào toàn bộ area sẽ trigger. |
70
- | `componentOutlet` | `any` | `undefined` | Component tùy chỉnh để render thông qua `ngComponentOutlet`. |
71
- | `dataComponentOutlet` | `TYPE_COMPONENT_OUTLET_DATA` | `undefined` | Dữ liệu truyền vào cho `componentOutlet`. |
72
- | `description` | `ICheckboxItemDescription` | `undefined` | Nội dung mô tả chi tiết hiển thị bên dưới nhãn. |
73
- | `disable` | `boolean` | `false` | Vô hiệu hóa toàn bộ tương tác với checkbox. |
74
- | `disableLabel` | `boolean` | `false` | Vô hiệu hóa tương tác click trên nhãn văn bản. |
75
- | `error` | `boolean` | `false` | Đánh dấu checkbox đang ở trạng thái lỗi. |
76
- | `iconImageClass` | `string` | `undefined` | Class icon (ví dụ: `fa fa-user`) hiển thị cạnh checkbox. |
77
- | `ignoreCheckbox` | `boolean` | `false` | Ẩn ô chọn checkbox, chỉ hiển thị nhãn và các thành phần khác. |
78
- | `ignoreShowPopoverLabel` | `boolean` | `false` | Nếu `true`, sẽ không hiển thị popover khi di chuột vào nhãn. |
79
- | `imgTypeIcon` | `boolean` | `false` | Xác định hình ảnh truyền vào là dạng icon. |
80
- | `key` | `string` | `undefined` | Khóa định danh duy nhất cho checkbox. |
81
- | `label` | `string` | `undefined` | Văn bản hiển thị cho nhãn checkbox. |
82
- | `linkImage` | `model<string>` | `undefined` | URL hình ảnh hiển thị cạnh checkbox. |
83
- | `linkImageError` | `string` | `undefined` | URL hình ảnh hiển thị khi `linkImage` bị lỗi load. |
84
- | `modeBorder` | `boolean` | `false` | Hiển thị viền bao quanh toàn bộ component. |
85
- | `popover` | `IPopover` | `undefined` | Cấu hình Popover hiển thị khi di chuột vào nhãn. |
86
- | `showBorderError` | `boolean` | `false` | Hiển thị viền đỏ bao quanh khi `error` là `true`. |
87
- | `stillOtherOptions` | `boolean` | `false` | Hiển thị trạng thái "còn các lựa chọn khác" (dạng mờ/indicator). |
88
- | `typeLabelPopover` | `'text' \| 'component'` | `'text'` | Loại nội dung của popover trên nhãn. |
89
- | `zIndexLabel` | `number` | `1200` | Giá trị z-index cho phần nhãn và popover. |
90
-
91
- ### Outputs
92
-
93
- | Tên | Kiểu | Mô tả |
94
- | ------------------------------- | -------------------- | ------------------------------------------------------------------------------------- |
95
- | `outChange` | `ICheckboxEvent` | Phát ra khi trạng thái `checked` thay đổi. Gửi kèm key, trạng thái mới và hàm revert. |
96
- | `outChangStageFlagMousePopover` | `IFlagMouse` | Phát ra khi trạng thái chuột thay đổi trên vùng nhãn (để điều khiển popover). |
97
- | `outClickLabel` | `void` | Phát ra khi người dùng click trực tiếp vào nhãn văn bản. |
98
- | `outEventPopover` | `TYPE_POPOVER_EVENT` | Phát ra các sự kiện tương tác từ Popover. |
99
-
100
- ## Interfaces & Types
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
- ## Công nghệ sử dụng
416
+ ### ICheckboxItemDescription
134
417
 
135
- - **Angular 18+** - Standalone Components
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 tả chi tiết hiển thị bên dưới nhãn.
138
419
 
139
- ## Demo
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
- Demo có sẵn trong ứng dụng `core-ui`:
429
+ ### ICheckboxChecked
142
430
 
143
- ```bash
144
- npx nx serve core-ui
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
- **File demo:** `apps/core-ui/src/app/components/checkbox-single/checkbox-single.component.ts`
442
+ ## Lưu ý quan trọng
148
443
 
149
- ### Tính năng Demo
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
- - 🎮 **Basic Usage**: Sử dụng bản với nhãn trạng thái.
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 `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
- ## Unit Tests
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
- # Chạy tests
160
- npx nx test components-checkbox-single
459
+ npx nx serve core-ui
161
460
  ```
162
461
 
163
- ## License
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, ChangeDetectionStrategy, Component } from '@angular/core';
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":"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"}
package/package.json CHANGED
@@ -1,12 +1,14 @@
1
1
  {
2
2
  "name": "@libs-ui/components-checkbox-single",
3
- "version": "0.2.356-9",
3
+ "version": "0.2.357-0",
4
4
  "peerDependencies": {
5
5
  "@angular/core": ">=18.0.0",
6
- "@libs-ui/components-avatar": "0.2.356-9",
7
- "@libs-ui/components-popover": "0.2.356-9",
8
- "@libs-ui/utils": "0.2.356-9",
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",