@libs-ui/components-inputs-quill2x 0.2.357-2 → 0.2.357-20

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
@@ -101,8 +101,8 @@ import { LibsUiComponentsInputsQuill2xComponent } from '@libs-ui/components-inpu
101
101
  templateUrl: './my.component.html',
102
102
  })
103
103
  export class MyComponent {
104
- protected formData = signal<Record<string, string>>({
105
- content: '<p>Xin chào! Đây là nội dung ban đầu.</p>',
104
+ protected basicData = signal<Record<string, string>>({
105
+ content: '<p>Xin chào! Đây là trình soạn thảo <strong>Quill2x</strong>.</p>',
106
106
  });
107
107
 
108
108
  protected handlerChange(html: string): void {
@@ -115,9 +115,9 @@ export class MyComponent {
115
115
  ```html
116
116
  <!-- my.component.html -->
117
117
  <libs_ui-components-inputs-quill2x
118
- [(item)]="formData"
118
+ [(item)]="basicData"
119
119
  [fieldBind]="'content'"
120
- [placeholder]="'Nhập nội dung...'"
120
+ [placeholder]="'Nhập nội dung ngắn...'"
121
121
  (outChange)="handlerChange($event)">
122
122
  </libs_ui-components-inputs-quill2x>
123
123
  ```
@@ -136,11 +136,12 @@ import { LibsUiComponentsInputsQuill2xComponent, IQuill2xCustomConfig } from '@l
136
136
  templateUrl: './my.component.html',
137
137
  })
138
138
  export class MyComponent {
139
- protected articleData = signal<Record<string, string>>({
140
- body: '<h1>Tiêu đề bài viết</h1><p>Nội dung bài viết tại đây.</p>',
139
+ protected fullData = signal<Record<string, string>>({
140
+ content: '<h1>Tiêu đề lớn</h1><p>Nội dung với đầy đủ các công cụ hỗ trợ.</p><ul><li>Danh mục 1</li><li>Danh mục 2</li></ul>',
141
141
  });
142
142
 
143
- protected fullConfig: IQuill2xCustomConfig = {
143
+ // toolbar.type = 'all' hiển thị đầy đủ các nhóm công cụ; resize='vertical' cho phép kéo rộng editor
144
+ protected fullConfig = {
144
145
  toolbar: signal({
145
146
  type: signal<'all'>('all'),
146
147
  }),
@@ -158,8 +159,8 @@ export class MyComponent {
158
159
  ```html
159
160
  <!-- my.component.html -->
160
161
  <libs_ui-components-inputs-quill2x
161
- [(item)]="articleData"
162
- [fieldBind]="'body'"
162
+ [(item)]="fullData"
163
+ [fieldBind]="'content'"
163
164
  [quillCustomConfig]="fullConfig"
164
165
  [resize]="'vertical'"
165
166
  [minHeightEditorContentDefault]="150"
@@ -185,13 +186,13 @@ import { IMentionConfig } from '@libs-ui/components-inputs-mention';
185
186
  templateUrl: './my.component.html',
186
187
  })
187
188
  export class MyComponent {
188
- protected commentData = signal<Record<string, string>>({ comment: '' });
189
+ protected mentionData = signal<Record<string, string>>({ content: '<p>Thử gõ @ để mention...</p>' });
189
190
 
190
191
  protected mentionConfig: IMentionConfig = {
191
192
  items: [
192
- { id: '1', name: 'Anh Tuấn', username: 'tuan@company.com' },
193
- { id: '2', name: 'Bảo Ngọc', username: 'ngoc@company.com' },
194
- { id: '3', name: 'Công Thành', username: 'thanh@company.com' },
193
+ { id: '1', name: 'Anh Tuấn', username: 'tuan@example.com' },
194
+ { id: '2', name: 'Bảo Ngọc', username: 'ngoc@example.com' },
195
+ { id: '3', name: 'Công Thành', username: 'thanh@example.com' },
195
196
  ],
196
197
  triggerChar: '@',
197
198
  labelKey: 'name',
@@ -209,13 +210,46 @@ export class MyComponent {
209
210
  ```html
210
211
  <!-- my.component.html -->
211
212
  <libs_ui-components-inputs-quill2x
212
- [(item)]="commentData"
213
- [fieldBind]="'comment'"
214
- [dataConfigMention]="mentionConfig"
215
- [placeholder]="'Nhập bình luận, gõ @ để mention...'">
213
+ [(item)]="mentionData"
214
+ [fieldBind]="'content'"
215
+ [dataConfigMention]="mentionConfig">
216
216
  </libs_ui-components-inputs-quill2x>
217
217
  ```
218
218
 
219
+ #### 3.1. Mention dạng chip (icon + nhãn)
220
+
221
+ Mặc định node mention render text thuần (giá trị trả về từ `mentionSelect`). Truyền thêm `mentionInsertData` trả về key `chip` — chuỗi JSON của `Array<IQuill2xMentionChipPiece>` — để blot dựng chip pill (icon + nhãn) thay cho text.
222
+
223
+ ```typescript
224
+ // component.ts
225
+ import { IMentionConfig } from '@libs-ui/components-inputs-mention';
226
+ import { IQuill2xMentionChipPiece } from '@libs-ui/components-inputs-quill2x';
227
+
228
+ protected mentionConfig: IMentionConfig = {
229
+ items: [{ id: '1', name: 'Deal ABC' }],
230
+ triggerChar: '@',
231
+ labelKey: 'name',
232
+ mentionSelect: (item: Record<string, string>) => `@${item['name']}`,
233
+ mentionInsertData: (item: Record<string, string>) => {
234
+ const pieces: Array<IQuill2xMentionChipPiece> = [
235
+ { className: 'libs-ui-icon-deal' },
236
+ { className: 'libs-ui-font-h7r', text: item['name'] },
237
+ ];
238
+
239
+ return { chip: JSON.stringify(pieces) };
240
+ },
241
+ };
242
+ ```
243
+
244
+ | Hành vi | Kết quả |
245
+ |---|---|
246
+ | Không truyền `mentionInsertData` | Node mention giữ nguyên text thuần (không breaking change) |
247
+ | `chip` là JSON mảng hợp lệ | Render `<span>` wrapper dạng pill, mỗi piece là 1 `<span>` con |
248
+ | `chip` JSON hỏng hoặc mảng rỗng | Fallback về text `value` như mention thường |
249
+ | Nội dung piece | Gán bằng `textContent` — không dùng `innerHTML`, an toàn XSS |
250
+
251
+ > ⚠️ **Chip được persist trong HTML**: attribute `chip` nằm trên node mention và được `static value()` đọc lại, nên nội dung lưu xuống DB và load lại vẫn giữ đúng chip.
252
+
219
253
  ### 4. Upload ảnh — custom upload function
220
254
 
221
255
  ```typescript
@@ -278,12 +312,13 @@ import { LibsUiComponentsInputsQuill2xComponent, IQuill2xCustomConfig } from '@l
278
312
  export class MyComponent implements AfterViewInit {
279
313
  @ViewChild('triggerBtn') triggerBtn?: ElementRef<HTMLButtonElement>;
280
314
 
281
- protected floatingData = signal<Record<string, string>>({ content: '' });
282
- protected floatingConfig = signal<IQuill2xCustomConfig | undefined>(undefined);
315
+ protected positionFixedData = signal<Record<string, string>>({ content: '<p>Nội dung với toolbar floating...</p>' });
316
+ protected positionFixedConfig = signal<IQuill2xCustomConfig | undefined>(undefined);
283
317
 
318
+ // #triggerBtn dùng ViewChild — element phải tồn tại trước khi khởi tạo positionFixed
284
319
  ngAfterViewInit(): void {
285
320
  if (!this.triggerBtn) return;
286
- this.floatingConfig.set({
321
+ this.positionFixedConfig.set({
287
322
  toolbar: signal({
288
323
  type: signal<'default'>('default'),
289
324
  positionFixed: signal({
@@ -304,15 +339,17 @@ export class MyComponent implements AfterViewInit {
304
339
 
305
340
  ```html
306
341
  <!-- my.component.html -->
307
- <button #triggerBtn class="px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600">
308
- Mở toolbar
309
- </button>
310
- <libs_ui-components-inputs-quill2x
311
- [(item)]="floatingData"
312
- [fieldBind]="'content'"
313
- [quillCustomConfig]="floatingConfig()"
314
- [minHeightEditorContentDefault]="150">
315
- </libs_ui-components-inputs-quill2x>
342
+ <div>
343
+ <button #triggerBtn class="px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600">
344
+ Click để mở Quill Editor
345
+ </button>
346
+ <libs_ui-components-inputs-quill2x
347
+ [(item)]="positionFixedData"
348
+ [fieldBind]="'content'"
349
+ [quillCustomConfig]="positionFixedConfig()"
350
+ [displayToolbar]="true">
351
+ </libs_ui-components-inputs-quill2x>
352
+ </div>
316
353
  ```
317
354
 
318
355
  ### 6. Lập trình điều khiển editor qua FunctionsControl
@@ -399,7 +436,7 @@ export class MyComponent {
399
436
 
400
437
  | Output | Type | Mô tả | Handler TS | Binding HTML |
401
438
  |---|---|---|---|---|
402
- | `(outChange)` | `string` | Emit nội dung HTML (đã qua XSS filter) mỗi khi nội dung thay đổi. | `handlerChange(html: string): void { event.stopPropagation?.(); this.savedHtml = html; }` | `(outChange)="handlerChange($event)"` |
439
+ | `(outChange)` | `string` | Emit nội dung HTML (đã qua XSS filter) mỗi khi nội dung thay đổi. | `handlerChange(html: string): void { this.savedHtml = html; }` | `(outChange)="handlerChange($event)"` |
403
440
  | `(outFocus)` | `void` | Emit khi editor nhận focus. | `handlerFocus(): void { this.isEditing.set(true); }` | `(outFocus)="handlerFocus()"` |
404
441
  | `(outBlur)` | `void` | Emit khi editor mất focus. | `handlerBlur(): void { this.isEditing.set(false); }` | `(outBlur)="handlerBlur()"` |
405
442
  | `(outFunctionsControl)` | `IQuill2xFunctionControlEvent` | Emit ngay khi editor khởi tạo xong, trả về object chứa các hàm điều khiển editor. | `handlerFunctionsControl(ctrl: IQuill2xFunctionControlEvent): void { this.editorCtrl = ctrl; }` | `(outFunctionsControl)="handlerFunctionsControl($event)"` |
@@ -449,6 +486,7 @@ import {
449
486
  IQuill2xBlotRegister,
450
487
  IQuill2xSelectionChange,
451
488
  IQuill2xTextChange,
489
+ IQuill2xMentionChipPiece,
452
490
  QUILL2X_TYPE_MODE_BAR_CONFIG_OPTION,
453
491
  } from '@libs-ui/components-inputs-quill2x';
454
492
  import { WritableSignal } from '@angular/core';
@@ -545,6 +583,14 @@ interface IQuill2xTextChange {
545
583
  quill: Quill2x;
546
584
  delta: Delta;
547
585
  }
586
+
587
+ // 1 mảnh nội dung trong chip mention — xem ví dụ 3.1
588
+ // Mảnh icon: chỉ cần className. Mảnh nhãn: className (tuỳ chọn) + text.
589
+ // Mảng các mảnh này được JSON.stringify rồi truyền qua IMentionItem.mentionInsertData() dưới key `chip`.
590
+ interface IQuill2xMentionChipPiece {
591
+ className?: string;
592
+ text?: string;
593
+ }
548
594
  ```
549
595
 
550
596
  ## Utility Functions
@@ -589,11 +635,3 @@ const delta = getDeltaOfQuill2xFromHTML(html);
589
635
  ⚠️ **Tính toán toolbar**: Toolbar tự tính toán độ rộng sau khi render. Nếu component cha có animation hoặc thay đổi kích thước, gọi `editorCtrl?.reCalculatorToolbar()` sau khi animation kết thúc để toolbar hiển thị đúng.
590
636
 
591
637
  ⚠️ **convertStandardList khi lưu**: HTML được lưu vào `item[fieldBind]` đã qua `convertStandardList()` để chuẩn hóa định dạng danh sách. Khi hiển thị lại nội dung, dùng component `@libs-ui/components-inputs-quill2x-preview` hoặc apply CSS Quill Snow theme.
592
-
593
- ## Demo
594
-
595
- ```bash
596
- npx nx serve core-ui
597
- ```
598
-
599
- Truy cập: http://localhost:4500/inputs/quill2x
@@ -7,8 +7,10 @@ export declare class QuillMention2xBlot extends Embed {
7
7
  id: string;
8
8
  feId: string;
9
9
  value: string;
10
+ chip?: string;
10
11
  }): any;
11
12
  static value(domNode: HTMLElement): {
13
+ chip?: string | undefined;
12
14
  id: string | null;
13
15
  feId: string | null;
14
16
  value: string | null;
@@ -1,23 +1,63 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  import Quill2x from 'quill2x';
3
3
  const Embed = Quill2x.import('blots/embed');
4
+ // Đặt trên WRAPPER riêng vì Embed constructor của quill 2 sẽ bọc children vào contentNode — style
5
+ // để trên node ngoài sẽ không còn ôm trực tiếp các piece sau khi bị bọc.
6
+ const CHIP_WRAPPER_STYLE = 'display:inline-flex;align-items:center;gap:4px;padding:0 6px;height:20px;max-width:100%;overflow:hidden;border-radius:4px;background:#f1f3f5;vertical-align:middle;white-space:nowrap;user-select:none';
7
+ // Dựng nội dung chip từ attr `chip` (JSON mảng pieces) — textContent thuần, KHÔNG innerHTML (an toàn XSS).
8
+ // JSON hỏng → fallback hiển thị text `value` như blot thường.
9
+ const buildChipContent = (node, chip, value) => {
10
+ let pieces;
11
+ try {
12
+ pieces = JSON.parse(chip);
13
+ }
14
+ catch {
15
+ node.innerText += value;
16
+ return;
17
+ }
18
+ if (!Array.isArray(pieces) || !pieces.length) {
19
+ node.innerText += value;
20
+ return;
21
+ }
22
+ const wrapper = document.createElement('span');
23
+ wrapper.setAttribute('style', CHIP_WRAPPER_STYLE);
24
+ pieces.forEach((piece) => {
25
+ const span = document.createElement('span');
26
+ if (piece.className) {
27
+ span.className = piece.className;
28
+ }
29
+ if (piece.text !== undefined) {
30
+ span.textContent = piece.text;
31
+ }
32
+ wrapper.appendChild(span);
33
+ });
34
+ node.appendChild(wrapper);
35
+ };
4
36
  export class QuillMention2xBlot extends Embed {
5
37
  static blotName = 'mention';
6
38
  static tagName = 'span';
7
39
  static className = 'libs-ui-quill-mention';
8
40
  static create(data) {
9
41
  const node = super.create();
10
- node.innerText += data.value;
11
42
  node.setAttribute('id', data.id);
12
43
  node.setAttribute('feId', data.feId);
13
44
  node.setAttribute('value', data.value);
45
+ if (data.chip) {
46
+ // Chip giàu (icon + nhãn) — pieces do consumer cấp qua IMentionItem.mentionInsertData.
47
+ node.setAttribute('chip', data.chip);
48
+ buildChipContent(node, data.chip, data.value);
49
+ return node;
50
+ }
51
+ node.innerText += data.value;
14
52
  return node;
15
53
  }
16
54
  static value(domNode) {
55
+ const chip = domNode.getAttribute('chip');
17
56
  return {
18
57
  id: domNode.getAttribute('id'),
19
58
  feId: domNode.getAttribute('feId'),
20
59
  value: domNode.getAttribute('value'),
60
+ ...(chip ? { chip } : {}),
21
61
  };
22
62
  }
23
63
  attach() {
@@ -32,4 +72,4 @@ export class QuillMention2xBlot extends Embed {
32
72
  event.stopPropagation();
33
73
  }
34
74
  }
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudGlvbjJ4LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9pbnB1dHMvcXVpbGwyeC9zcmMvYmxvdHMtY3VzdG9tL21lbnRpb24yeC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUU5QixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBUSxDQUFDO0FBRW5ELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxLQUFLO0lBQzNDLE1BQU0sQ0FBVSxRQUFRLEdBQUcsU0FBUyxDQUFDO0lBQ3JDLE1BQU0sQ0FBVSxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQ2pDLE1BQU0sQ0FBVSxTQUFTLEdBQUcsdUJBQXVCLENBQUM7SUFDcEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFpRDtRQUM3RCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBb0I7UUFDL0IsT0FBTztZQUNMLEVBQUUsRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztZQUM5QixJQUFJLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7WUFDbEMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO1NBQ3JDLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTTtRQUNKLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkUsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsS0FBWTtRQUMxQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDMUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCBRdWlsbDJ4IGZyb20gJ3F1aWxsMngnO1xuXG5jb25zdCBFbWJlZCA9IFF1aWxsMnguaW1wb3J0KCdibG90cy9lbWJlZCcpIGFzIGFueTtcblxuZXhwb3J0IGNsYXNzIFF1aWxsTWVudGlvbjJ4QmxvdCBleHRlbmRzIEVtYmVkIHtcbiAgc3RhdGljIHJlYWRvbmx5IGJsb3ROYW1lID0gJ21lbnRpb24nO1xuICBzdGF0aWMgcmVhZG9ubHkgdGFnTmFtZSA9ICdzcGFuJztcbiAgc3RhdGljIHJlYWRvbmx5IGNsYXNzTmFtZSA9ICdsaWJzLXVpLXF1aWxsLW1lbnRpb24nO1xuICBzdGF0aWMgY3JlYXRlKGRhdGE6IHsgaWQ6IHN0cmluZzsgZmVJZDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0pIHtcbiAgICBjb25zdCBub2RlID0gc3VwZXIuY3JlYXRlKCk7XG4gICAgbm9kZS5pbm5lclRleHQgKz0gZGF0YS52YWx1ZTtcbiAgICBub2RlLnNldEF0dHJpYnV0ZSgnaWQnLCBkYXRhLmlkKTtcbiAgICBub2RlLnNldEF0dHJpYnV0ZSgnZmVJZCcsIGRhdGEuZmVJZCk7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgZGF0YS52YWx1ZSk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBzdGF0aWMgdmFsdWUoZG9tTm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGRvbU5vZGUuZ2V0QXR0cmlidXRlKCdpZCcpLFxuICAgICAgZmVJZDogZG9tTm9kZS5nZXRBdHRyaWJ1dGUoJ2ZlSWQnKSxcbiAgICAgIHZhbHVlOiBkb21Ob2RlLmdldEF0dHJpYnV0ZSgndmFsdWUnKSxcbiAgICB9O1xuICB9XG5cbiAgYXR0YWNoKCkge1xuICAgIHN1cGVyLmF0dGFjaCgpO1xuICAgIGlmICghdGhpcy5tb3VudGVkKSB7XG4gICAgICB0aGlzLm1vdW50ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5jbGlja0hhbmRsZXIgPSB0aGlzLmdldENsaWNrSGFuZGxlcjtcbiAgICAgIHRoaXMuZG9tTm9kZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuY2xpY2tIYW5kbGVyLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q2xpY2tIYW5kbGVyKGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG59XG4iXX0=
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudGlvbjJ4LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9pbnB1dHMvcXVpbGwyeC9zcmMvYmxvdHMtY3VzdG9tL21lbnRpb24yeC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUc5QixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBUSxDQUFDO0FBRW5ELGtHQUFrRztBQUNsRyx5RUFBeUU7QUFDekUsTUFBTSxrQkFBa0IsR0FBRyx3TUFBd00sQ0FBQztBQUVwTywyR0FBMkc7QUFDM0csOERBQThEO0FBQzlELE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxJQUFpQixFQUFFLElBQVksRUFBRSxLQUFhLEVBQVEsRUFBRTtJQUNoRixJQUFJLE1BQXVDLENBQUM7SUFDNUMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLElBQUksQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDO1FBQ3hCLE9BQU87SUFDVCxDQUFDO0lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0MsSUFBSSxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUM7UUFDeEIsT0FBTztJQUNULENBQUM7SUFDRCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDbEQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUMsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ25DLENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ2hDLENBQUM7UUFDRCxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUM7QUFFRixNQUFNLE9BQU8sa0JBQW1CLFNBQVEsS0FBSztJQUMzQyxNQUFNLENBQVUsUUFBUSxHQUFHLFNBQVMsQ0FBQztJQUNyQyxNQUFNLENBQVUsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUNqQyxNQUFNLENBQVUsU0FBUyxHQUFHLHVCQUF1QixDQUFDO0lBQ3BELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBZ0U7UUFDNUUsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2QsdUZBQXVGO1lBQ3ZGLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBb0I7UUFDL0IsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQyxPQUFPO1lBQ0wsRUFBRSxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO1lBQzlCLElBQUksRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztZQUNsQyxLQUFLLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7WUFDcEMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQzFCLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTTtRQUNKLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkUsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsS0FBWTtRQUMxQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDMUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCBRdWlsbDJ4IGZyb20gJ3F1aWxsMngnO1xuaW1wb3J0IHsgSVF1aWxsMnhNZW50aW9uQ2hpcFBpZWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9xdWlsbDJ4LmludGVyZmFjZSc7XG5cbmNvbnN0IEVtYmVkID0gUXVpbGwyeC5pbXBvcnQoJ2Jsb3RzL2VtYmVkJykgYXMgYW55O1xuXG4vLyDEkOG6t3QgdHLDqm4gV1JBUFBFUiByacOqbmcgdsOsIEVtYmVkIGNvbnN0cnVjdG9yIGPhu6dhIHF1aWxsIDIgc+G6vSBi4buNYyBjaGlsZHJlbiB2w6BvIGNvbnRlbnROb2RlIOKAlCBzdHlsZVxuLy8gxJHhu4MgdHLDqm4gbm9kZSBuZ2/DoGkgc+G6vSBraMO0bmcgY8OybiDDtG0gdHLhu7FjIHRp4bq/cCBjw6FjIHBpZWNlIHNhdSBraGkgYuG7iyBi4buNYy5cbmNvbnN0IENISVBfV1JBUFBFUl9TVFlMRSA9ICdkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4O3BhZGRpbmc6MCA2cHg7aGVpZ2h0OjIwcHg7bWF4LXdpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlci1yYWRpdXM6NHB4O2JhY2tncm91bmQ6I2YxZjNmNTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7d2hpdGUtc3BhY2U6bm93cmFwO3VzZXItc2VsZWN0Om5vbmUnO1xuXG4vLyBE4buxbmcgbuG7mWkgZHVuZyBjaGlwIHThu6sgYXR0ciBgY2hpcGAgKEpTT04gbeG6o25nIHBpZWNlcykg4oCUIHRleHRDb250ZW50IHRodeG6p24sIEtIw5RORyBpbm5lckhUTUwgKGFuIHRvw6BuIFhTUykuXG4vLyBKU09OIGjhu49uZyDihpIgZmFsbGJhY2sgaGnhu4NuIHRo4buLIHRleHQgYHZhbHVlYCBuaMawIGJsb3QgdGjGsOG7nW5nLlxuY29uc3QgYnVpbGRDaGlwQ29udGVudCA9IChub2RlOiBIVE1MRWxlbWVudCwgY2hpcDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCA9PiB7XG4gIGxldCBwaWVjZXM6IEFycmF5PElRdWlsbDJ4TWVudGlvbkNoaXBQaWVjZT47XG4gIHRyeSB7XG4gICAgcGllY2VzID0gSlNPTi5wYXJzZShjaGlwKTtcbiAgfSBjYXRjaCB7XG4gICAgbm9kZS5pbm5lclRleHQgKz0gdmFsdWU7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICghQXJyYXkuaXNBcnJheShwaWVjZXMpIHx8ICFwaWVjZXMubGVuZ3RoKSB7XG4gICAgbm9kZS5pbm5lclRleHQgKz0gdmFsdWU7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHdyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gIHdyYXBwZXIuc2V0QXR0cmlidXRlKCdzdHlsZScsIENISVBfV1JBUFBFUl9TVFlMRSk7XG4gIHBpZWNlcy5mb3JFYWNoKChwaWVjZSkgPT4ge1xuICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgaWYgKHBpZWNlLmNsYXNzTmFtZSkge1xuICAgICAgc3Bhbi5jbGFzc05hbWUgPSBwaWVjZS5jbGFzc05hbWU7XG4gICAgfVxuICAgIGlmIChwaWVjZS50ZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHNwYW4udGV4dENvbnRlbnQgPSBwaWVjZS50ZXh0O1xuICAgIH1cbiAgICB3cmFwcGVyLmFwcGVuZENoaWxkKHNwYW4pO1xuICB9KTtcbiAgbm9kZS5hcHBlbmRDaGlsZCh3cmFwcGVyKTtcbn07XG5cbmV4cG9ydCBjbGFzcyBRdWlsbE1lbnRpb24yeEJsb3QgZXh0ZW5kcyBFbWJlZCB7XG4gIHN0YXRpYyByZWFkb25seSBibG90TmFtZSA9ICdtZW50aW9uJztcbiAgc3RhdGljIHJlYWRvbmx5IHRhZ05hbWUgPSAnc3Bhbic7XG4gIHN0YXRpYyByZWFkb25seSBjbGFzc05hbWUgPSAnbGlicy11aS1xdWlsbC1tZW50aW9uJztcbiAgc3RhdGljIGNyZWF0ZShkYXRhOiB7IGlkOiBzdHJpbmc7IGZlSWQ6IHN0cmluZzsgdmFsdWU6IHN0cmluZzsgY2hpcD86IHN0cmluZyB9KSB7XG4gICAgY29uc3Qgbm9kZSA9IHN1cGVyLmNyZWF0ZSgpO1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKCdpZCcsIGRhdGEuaWQpO1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKCdmZUlkJywgZGF0YS5mZUlkKTtcbiAgICBub2RlLnNldEF0dHJpYnV0ZSgndmFsdWUnLCBkYXRhLnZhbHVlKTtcbiAgICBpZiAoZGF0YS5jaGlwKSB7XG4gICAgICAvLyBDaGlwIGdpw6B1IChpY29uICsgbmjDo24pIOKAlCBwaWVjZXMgZG8gY29uc3VtZXIgY+G6pXAgcXVhIElNZW50aW9uSXRlbS5tZW50aW9uSW5zZXJ0RGF0YS5cbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCdjaGlwJywgZGF0YS5jaGlwKTtcbiAgICAgIGJ1aWxkQ2hpcENvbnRlbnQobm9kZSwgZGF0YS5jaGlwLCBkYXRhLnZhbHVlKTtcbiAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICBub2RlLmlubmVyVGV4dCArPSBkYXRhLnZhbHVlO1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgc3RhdGljIHZhbHVlKGRvbU5vZGU6IEhUTUxFbGVtZW50KSB7XG4gICAgY29uc3QgY2hpcCA9IGRvbU5vZGUuZ2V0QXR0cmlidXRlKCdjaGlwJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBkb21Ob2RlLmdldEF0dHJpYnV0ZSgnaWQnKSxcbiAgICAgIGZlSWQ6IGRvbU5vZGUuZ2V0QXR0cmlidXRlKCdmZUlkJyksXG4gICAgICB2YWx1ZTogZG9tTm9kZS5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJyksXG4gICAgICAuLi4oY2hpcCA/IHsgY2hpcCB9IDoge30pLFxuICAgIH07XG4gIH1cblxuICBhdHRhY2goKSB7XG4gICAgc3VwZXIuYXR0YWNoKCk7XG4gICAgaWYgKCF0aGlzLm1vdW50ZWQpIHtcbiAgICAgIHRoaXMubW91bnRlZCA9IHRydWU7XG4gICAgICB0aGlzLmNsaWNrSGFuZGxlciA9IHRoaXMuZ2V0Q2xpY2tIYW5kbGVyO1xuICAgICAgdGhpcy5kb21Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5jbGlja0hhbmRsZXIsIGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBnZXRDbGlja0hhbmRsZXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpbGwyeC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL3F1aWxsMngvc3JjL2ludGVyZmFjZXMvcXVpbGwyeC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTGFiZWwgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWxhYmVsJztcbmltcG9ydCBEZWx0YSBmcm9tICdxdWlsbC1kZWx0YSc7XG5pbXBvcnQgUXVpbGwyeCwgeyBFbWl0dGVyU291cmNlLCBSYW5nZSB9IGZyb20gJ3F1aWxsMngnO1xuZXhwb3J0IHR5cGUgUVVJTEwyWF9UWVBFX01PREVfQkFSX0NPTkZJR19PUFRJT04gPSAnYWxsJyB8ICdkZWZhdWx0JyB8ICdiYXNpYycgfCAnY3VzdG9tJztcblxuZXhwb3J0IGludGVyZmFjZSBJUXVpbGwyeEN1c3RvbUNvbmZpZyB7XG4gIGNsYXNzQ29udGFpbmVyPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbiAgdG9vbGJhcj86IFdyaXRhYmxlU2lnbmFsPHtcbiAgICBwb3NpdGlvbkZpeGVkPzogV3JpdGFibGVTaWduYWw8e1xuICAgICAgZXZlbnQ6IFdyaXRhYmxlU2lnbmFsPCdjbGljaycgfCAnbW91c2VlbnRlcic+O1xuICAgICAgZWxlbWVudFNob3c6IFdyaXRhYmxlU2lnbmFsPEhUTUxFbGVtZW50PjtcbiAgICAgIHBvc2l0aW9uPzogV3JpdGFibGVTaWduYWw8J3RvcCcgfCAnYm90dG9tJz47XG4gICAgICBhbGlnbj86IFdyaXRhYmxlU2lnbmFsPCdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0Jz47XG4gICAgICB6SW5kZXg6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj47XG4gICAgICB3aWR0aDogV3JpdGFibGVTaWduYWw8bnVtYmVyPjtcbiAgICAgIGdhcFZlcnRpY2FsPzogV3JpdGFibGVTaWduYWw8bnVtYmVyPjtcbiAgICAgIGdhcEhvcml6b250YWw/OiBXcml0YWJsZVNpZ25hbDxudW1iZXI+O1xuICAgIH0+O1xuICAgIHN0eWxlcz86IFdyaXRhYmxlU2lnbmFsPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgICB0eXBlOiBXcml0YWJsZVNpZ25hbDxRVUlMTDJYX1RZUEVfTU9ERV9CQVJfQ09ORklHX09QVElPTj47XG4gICAgb3B0aW9ucz86IFdyaXRhYmxlU2lnbmFsPEFycmF5PElRdWlsbDJ4VG9vbGJhckNvbmZpZz4+O1xuICAgIGNsYXNzQ3VzdG9tQ29udGFpbmVyVG9vbGJhcj86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4gICAgbGVzc1dpZHRoVG9vbGJhclJlY2FsbENhbGN1bGF0b3I/OiBXcml0YWJsZVNpZ25hbDxudW1iZXI+O1xuICAgIG1heGltdW1SZWNhbGxDYWxjdWxhdG9yPzogV3JpdGFibGVTaWduYWw8bnVtYmVyPjtcbiAgfT47XG4gIGVkaXRvcj86IFdyaXRhYmxlU2lnbmFsPHtcbiAgICBjbGFzc0N1c3RvbUNvbnRhaW5lckVkaXRvcj86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4gIH0+O1xufVxuZXhwb3J0IGludGVyZmFjZSBJUXVpbGwyeFRvb2xiYXJDb25maWcge1xuICB0eXBlOiBzdHJpbmc7XG4gIG1vZGU/OiBBcnJheTxRVUlMTDJYX1RZUEVfTU9ERV9CQVJfQ09ORklHX09QVElPTj47XG4gIHdpZHRoOiBudW1iZXI7XG4gIGRpc3BsYXk/OiBib29sZWFuO1xuICBjbGFzc0luY2x1ZGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVF1aWxsMnhFdmVudFNhdmUge1xuICBsaW5rOiBzdHJpbmc7XG4gIHdpZHRoPzogbnVtYmVyO1xuICBoZWlnaHQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVF1aWxsMnhVcGxvYWRJbWFnZUNvbmZpZyB7XG4gIG1vZGVDdXN0b206IGJvb2xlYW47XG4gIHNob3dJY29uPzogYm9vbGVhbjtcbiAgekluZGV4PzogbnVtYmVyO1xuICBtYXhJbWFnZVNpemU/OiBudW1iZXI7XG4gIGxhYmVsPzogSUxhYmVsO1xuICBvbmx5QWNjZXB0SW1hZ2VIdHRwc0xpbms/OiBib29sZWFuO1xuICBmdW5jdGlvblVwbG9hZEltYWdlPzogKGZpbGVzOiBBcnJheTxGaWxlPikgPT4gUHJvbWlzZTxBcnJheTxzdHJpbmcgfCBBcnJheUJ1ZmZlcj4+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElRdWlsbDJ4RnVuY3Rpb25Db250cm9sRXZlbnQge1xuICBjaGVja0lzVmFsaWQ6ICgpID0+IFByb21pc2U8Ym9vbGVhbj47XG4gIHJlZnJlc2hJdGVtVmFsdWU6ICgpID0+IHZvaWQ7XG4gIHNldENvbnRlbnQ6IChjb250ZW50OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGluc2VydFRleHQ6ICh2YWx1ZTogc3RyaW5nLCBpbmRleD86IG51bWJlciwgZm9jdXNMdD86IGJvb2xlYW4pID0+IFByb21pc2U8dm9pZD47XG4gIGluc2VydExpbms6ICh2YWx1ZTogc3RyaW5nLCB1cmw6IHN0cmluZywgaW5kZXg/OiBudW1iZXIpID0+IFByb21pc2U8dm9pZD47XG4gIGluc2VydEltYWdlOiAoY29udGVudDogc3RyaW5nLCBpbmRleD86IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPjtcbiAgc2V0Rm9udFNpemU6IChzaXplOiBudW1iZXIpID0+IFByb21pc2U8RGVsdGEgfCB1bmRlZmluZWQ+O1xuICBzZXRDb2xvcjogKGNvbG9yOiBzdHJpbmcpID0+IFByb21pc2U8RGVsdGEgfCB1bmRlZmluZWQ+O1xuICBzZXRCYWNrZ3JvdW5kOiAoY29sb3I6IHN0cmluZykgPT4gUHJvbWlzZTxEZWx0YSB8IHVuZGVmaW5lZD47XG4gIHNldE1lc3NhZ2VFcnJvcjogKG1lc3NhZ2U6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcXVpbGw6ICgpID0+IFF1aWxsMnggfCB1bmRlZmluZWQ7XG4gIHJlQ2FsY3VsYXRvclRvb2xiYXI6ICgpID0+IFByb21pc2U8dm9pZD47XG4gIHVwZGF0ZVBvc2l0aW9uVG9vbGJhcjogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUXVpbGwyeExpbmsge1xuICB0aXRsZTogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbiAgcmFuZ2U6IHtcbiAgICBpbmRleDogbnVtYmVyO1xuICAgIGxlbmd0aDogbnVtYmVyO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElRdWlsbDJ4QmxvdFJlZ2lzdGVyIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgY29tcG9uZW50OiBhbnk7XG4gIGNsYXNzTmFtZTogc3RyaW5nO1xuICBzdHlsZTogc3RyaW5nO1xuICBpZ25vcmVEZWxldGU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElRdWlsbDJ4U2VsZWN0aW9uQ2hhbmdlIHtcbiAgcXVpbGw6IFF1aWxsMng7XG4gIHJhbmdlOiBSYW5nZTtcbiAgb2xkUmFuZ2U6IFJhbmdlO1xuICBzb3VyY2U6IEVtaXR0ZXJTb3VyY2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVF1aWxsMnhUZXh0Q2hhbmdlIHtcbiAgcXVpbGw6IFF1aWxsMng7XG4gIGRlbHRhOiBEZWx0YTtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpbGwyeC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL3F1aWxsMngvc3JjL2ludGVyZmFjZXMvcXVpbGwyeC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTGFiZWwgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWxhYmVsJztcbmltcG9ydCBEZWx0YSBmcm9tICdxdWlsbC1kZWx0YSc7XG5pbXBvcnQgUXVpbGwyeCwgeyBFbWl0dGVyU291cmNlLCBSYW5nZSB9IGZyb20gJ3F1aWxsMngnO1xuZXhwb3J0IHR5cGUgUVVJTEwyWF9UWVBFX01PREVfQkFSX0NPTkZJR19PUFRJT04gPSAnYWxsJyB8ICdkZWZhdWx0JyB8ICdiYXNpYycgfCAnY3VzdG9tJztcblxuZXhwb3J0IGludGVyZmFjZSBJUXVpbGwyeEN1c3RvbUNvbmZpZyB7XG4gIGNsYXNzQ29udGFpbmVyPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbiAgdG9vbGJhcj86IFdyaXRhYmxlU2lnbmFsPHtcbiAgICBwb3NpdGlvbkZpeGVkPzogV3JpdGFibGVTaWduYWw8e1xuICAgICAgZXZlbnQ6IFdyaXRhYmxlU2lnbmFsPCdjbGljaycgfCAnbW91c2VlbnRlcic+O1xuICAgICAgZWxlbWVudFNob3c6IFdyaXRhYmxlU2lnbmFsPEhUTUxFbGVtZW50PjtcbiAgICAgIHBvc2l0aW9uPzogV3JpdGFibGVTaWduYWw8J3RvcCcgfCAnYm90dG9tJz47XG4gICAgICBhbGlnbj86IFdyaXRhYmxlU2lnbmFsPCdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0Jz47XG4gICAgICB6SW5kZXg6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj47XG4gICAgICB3aWR0aDogV3JpdGFibGVTaWduYWw8bnVtYmVyPjtcbiAgICAgIGdhcFZlcnRpY2FsPzogV3JpdGFibGVTaWduYWw8bnVtYmVyPjtcbiAgICAgIGdhcEhvcml6b250YWw/OiBXcml0YWJsZVNpZ25hbDxudW1iZXI+O1xuICAgIH0+O1xuICAgIHN0eWxlcz86IFdyaXRhYmxlU2lnbmFsPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgICB0eXBlOiBXcml0YWJsZVNpZ25hbDxRVUlMTDJYX1RZUEVfTU9ERV9CQVJfQ09ORklHX09QVElPTj47XG4gICAgb3B0aW9ucz86IFdyaXRhYmxlU2lnbmFsPEFycmF5PElRdWlsbDJ4VG9vbGJhckNvbmZpZz4+O1xuICAgIGNsYXNzQ3VzdG9tQ29udGFpbmVyVG9vbGJhcj86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4gICAgbGVzc1dpZHRoVG9vbGJhclJlY2FsbENhbGN1bGF0b3I/OiBXcml0YWJsZVNpZ25hbDxudW1iZXI+O1xuICAgIG1heGltdW1SZWNhbGxDYWxjdWxhdG9yPzogV3JpdGFibGVTaWduYWw8bnVtYmVyPjtcbiAgfT47XG4gIGVkaXRvcj86IFdyaXRhYmxlU2lnbmFsPHtcbiAgICBjbGFzc0N1c3RvbUNvbnRhaW5lckVkaXRvcj86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4gIH0+O1xufVxuZXhwb3J0IGludGVyZmFjZSBJUXVpbGwyeFRvb2xiYXJDb25maWcge1xuICB0eXBlOiBzdHJpbmc7XG4gIG1vZGU/OiBBcnJheTxRVUlMTDJYX1RZUEVfTU9ERV9CQVJfQ09ORklHX09QVElPTj47XG4gIHdpZHRoOiBudW1iZXI7XG4gIGRpc3BsYXk/OiBib29sZWFuO1xuICBjbGFzc0luY2x1ZGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVF1aWxsMnhFdmVudFNhdmUge1xuICBsaW5rOiBzdHJpbmc7XG4gIHdpZHRoPzogbnVtYmVyO1xuICBoZWlnaHQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVF1aWxsMnhVcGxvYWRJbWFnZUNvbmZpZyB7XG4gIG1vZGVDdXN0b206IGJvb2xlYW47XG4gIHNob3dJY29uPzogYm9vbGVhbjtcbiAgekluZGV4PzogbnVtYmVyO1xuICBtYXhJbWFnZVNpemU/OiBudW1iZXI7XG4gIGxhYmVsPzogSUxhYmVsO1xuICBvbmx5QWNjZXB0SW1hZ2VIdHRwc0xpbms/OiBib29sZWFuO1xuICBmdW5jdGlvblVwbG9hZEltYWdlPzogKGZpbGVzOiBBcnJheTxGaWxlPikgPT4gUHJvbWlzZTxBcnJheTxzdHJpbmcgfCBBcnJheUJ1ZmZlcj4+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElRdWlsbDJ4RnVuY3Rpb25Db250cm9sRXZlbnQge1xuICBjaGVja0lzVmFsaWQ6ICgpID0+IFByb21pc2U8Ym9vbGVhbj47XG4gIHJlZnJlc2hJdGVtVmFsdWU6ICgpID0+IHZvaWQ7XG4gIHNldENvbnRlbnQ6IChjb250ZW50OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGluc2VydFRleHQ6ICh2YWx1ZTogc3RyaW5nLCBpbmRleD86IG51bWJlciwgZm9jdXNMdD86IGJvb2xlYW4pID0+IFByb21pc2U8dm9pZD47XG4gIGluc2VydExpbms6ICh2YWx1ZTogc3RyaW5nLCB1cmw6IHN0cmluZywgaW5kZXg/OiBudW1iZXIpID0+IFByb21pc2U8dm9pZD47XG4gIGluc2VydEltYWdlOiAoY29udGVudDogc3RyaW5nLCBpbmRleD86IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPjtcbiAgc2V0Rm9udFNpemU6IChzaXplOiBudW1iZXIpID0+IFByb21pc2U8RGVsdGEgfCB1bmRlZmluZWQ+O1xuICBzZXRDb2xvcjogKGNvbG9yOiBzdHJpbmcpID0+IFByb21pc2U8RGVsdGEgfCB1bmRlZmluZWQ+O1xuICBzZXRCYWNrZ3JvdW5kOiAoY29sb3I6IHN0cmluZykgPT4gUHJvbWlzZTxEZWx0YSB8IHVuZGVmaW5lZD47XG4gIHNldE1lc3NhZ2VFcnJvcjogKG1lc3NhZ2U6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcXVpbGw6ICgpID0+IFF1aWxsMnggfCB1bmRlZmluZWQ7XG4gIHJlQ2FsY3VsYXRvclRvb2xiYXI6ICgpID0+IFByb21pc2U8dm9pZD47XG4gIHVwZGF0ZVBvc2l0aW9uVG9vbGJhcjogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUXVpbGwyeExpbmsge1xuICB0aXRsZTogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbiAgcmFuZ2U6IHtcbiAgICBpbmRleDogbnVtYmVyO1xuICAgIGxlbmd0aDogbnVtYmVyO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElRdWlsbDJ4QmxvdFJlZ2lzdGVyIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgY29tcG9uZW50OiBhbnk7XG4gIGNsYXNzTmFtZTogc3RyaW5nO1xuICBzdHlsZTogc3RyaW5nO1xuICBpZ25vcmVEZWxldGU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElRdWlsbDJ4U2VsZWN0aW9uQ2hhbmdlIHtcbiAgcXVpbGw6IFF1aWxsMng7XG4gIHJhbmdlOiBSYW5nZTtcbiAgb2xkUmFuZ2U6IFJhbmdlO1xuICBzb3VyY2U6IEVtaXR0ZXJTb3VyY2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVF1aWxsMnhUZXh0Q2hhbmdlIHtcbiAgcXVpbGw6IFF1aWxsMng7XG4gIGRlbHRhOiBEZWx0YTtcbn1cblxuLyoqXG4gKiAxIG3huqNuaCBu4buZaSBkdW5nIGLDqm4gdHJvbmcgY2hpcCBtZW50aW9uIGPhu6dhIGJsb3QgYG1lbnRpb25gLlxuICogLSBN4bqjbmggaWNvbjogY2jhu4kgY+G6p24gYGNsYXNzTmFtZWAuXG4gKiAtIE3huqNuaCBuaMOjbjogYGNsYXNzTmFtZWAgKHR14buzIGNo4buNbikgKyBgdGV4dGAuXG4gKlxuICogTeG6o25nIGPDoWMgbeG6o25oIG7DoHkgxJHGsOG7o2MgSlNPTi5zdHJpbmdpZnkgcuG7k2kgdHJ1eeG7gW4gcXVhIGBJTWVudGlvbkl0ZW0ubWVudGlvbkluc2VydERhdGEoKWBcbiAqIGTGsOG7m2kga2V5IGBjaGlwYCDEkeG7gyBibG90IGThu7FuZyBjaGlwIGdpw6B1IHRoYXkgY2hvIHRleHQgdGh14bqnbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUXVpbGwyeE1lbnRpb25DaGlwUGllY2Uge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHRleHQ/OiBzdHJpbmc7XG59XG4iXX0=
@@ -3,7 +3,7 @@ import { LibsUiComponentsInputsValidComponent } from '@libs-ui/components-inputs
3
3
  import { LibsUiComponentsModalComponent } from '@libs-ui/components-modal';
4
4
  import { patternUrl } from '@libs-ui/utils';
5
5
  import * as i0 from "@angular/core";
6
- export class LibsUiComponentsInputsQuillLinkComponent {
6
+ export class LibsUiComponentsInputsQuill2xLinkComponent {
7
7
  dataLink = signal({ title: '', link: '' });
8
8
  patternLink = signal(patternUrl());
9
9
  inputValidFunctionControl = signal([]);
@@ -42,11 +42,11 @@ export class LibsUiComponentsInputsQuillLinkComponent {
42
42
  this.outClose.emit();
43
43
  }
44
44
  }
45
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsInputsQuillLinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
46
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: LibsUiComponentsInputsQuillLinkComponent, isStandalone: true, selector: "libs_ui-components-inputs-quill-link", inputs: { zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null }, ignoreCommunicateMicroEvent: { classPropertyName: "ignoreCommunicateMicroEvent", publicName: "ignoreCommunicateMicroEvent", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { outClose: "outClose", outSaveLink: "outSaveLink" }, ngImport: i0, template: "<libs_ui-components-modal\n [title]=\"'i18n_insert_link'\"\n [mode]=\"'center'\"\n [height]=\"'auto'\"\n [width]=\"'598px'\"\n [ignoreCommunicateMicroEvent]=\"ignoreCommunicateMicroEvent()\"\n [headerConfig]=\"{ ignoreHeaderTheme: true }\"\n [zIndex]=\"zIndex()\"\n (outEvent)=\"handlerEvent($event)\">\n <div class=\"libs-ui-modal-body-custom\">\n <libs_ui-components-inputs-valid\n [labelConfig]=\"{ labelLeft: 'i18n_content', required: true }\"\n [(item)]=\"dataLink\"\n [fieldNameBind]=\"'title'\"\n [placeholder]=\"'i18n_import_content'\"\n [validRequired]=\"{ isRequired: true }\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\" />\n <div class=\"mt-[16px]\">\n <libs_ui-components-inputs-valid\n [labelConfig]=\"{ labelLeft: 'Link', required: true }\"\n [(item)]=\"dataLink\"\n [fieldNameBind]=\"'link'\"\n [placeholder]=\"'https://example.com'\"\n [validRequired]=\"{ isRequired: true }\"\n [validPattern]=\"[{ pattern: patternLink(), valuePatternShowError: false }]\"\n [keySelectedUnitLeft]=\"'1'\"\n [unitsLeft]=\"[{ id: '1', label: 'URL' }]\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\" />\n </div>\n </div>\n</libs_ui-components-modal>\n", dependencies: [{ kind: "component", type: LibsUiComponentsModalComponent, selector: "libs_ui-components-modal", inputs: ["show", "mode", "isBackdropTransparent", "isBackgroundTransparentModal", "isSizeBackdropByWidthHeightInput", "hasShadowBoxWhenHiddenBackDropTransparent", "classIncludeModalWrapper", "zIndex", "width", "height", "maxWidth", "maxHeight", "minWidth", "isFullScreen", "disable", "ignoreCommunicateMicroEvent", "escapeKeyboardCloseModal", "isClickOutsideClose", "headerConfig", "bodyConfig", "footerConfig", "buttonsFooter", "title", "titleUseXssFilter", "titleUseTooltip", "titleUseInnerText"], outputs: ["showChange", "widthChange", "heightChange", "maxWidthChange", "maxHeightChange", "minWidthChange", "disableChange", "buttonsFooterChange", "outScrollContent", "outEvent", "outFunctionControl", "outClose"] }, { kind: "component", type: LibsUiComponentsInputsValidComponent, selector: "libs_ui-components-inputs-valid", inputs: ["item", "labelConfig", "emitEmptyInDataTypeNumber", "ignoreBlockInputMaxValue", "fieldNameBind", "showCount", "typeComponentSelectItem", "valueComponentSelectItem", "disableComponentSelectItem", "tagInput", "dataType", "typeInput", "modeInput", "resetAutoCompletePassword", "textAreaEnterNotNewLine", "fixedFloat", "acceptNegativeValue", "valueUpDownNumber", "ignoreWidthInput100", "classIncludeInput", "classContainerInput", "readonly", "disable", "noBorder", "backgroundNone", "useColorModeExist", "placeholder", "keepPlaceholderOnly", "classContainerBottomInput", "autoRemoveEmoji", "defaultHeight", "maxHeightTextArea", "minHeightTextArea", "ignoreShowError", "ignoreShowMessageError", "borderError", "iconLeftClass", "popoverContentIconLeft", "iconRightClass", "popoverContentIconRight", "zIndexPopoverContent", "unitsLeft", "configUnitLeft", "keySelectedUnitLeft", "unitsRight", "configUnitRight", "keySelectedUnitRight", "maxValueNumber", "minValueNumber", "ignoreContentLeft", "ignoreContentRight", "isBaselineStyle", "valuePatternShowError", "validPattern", "validRequired", "validMinLength", "validMinValue", "validMaxValue", "validMaxLength", "functionValid", "maxLength", "positionMessageErrorStartInput", "classInclude", "resize", "templateLeftBottomInput", "templateRightBottomInput", "onlyAcceptNegativeValue", "autoAddZeroLessThan10InTypeInt", "maxLengthNumberCount", "classMessageErrorInclude", "ignoreStopPropagationEvent", "ignoreUnitRightClassReadOnly", "paddingRightCustomSpecific", "focusTimeOut", "debounceTimeValidate"], outputs: ["itemChange", "outValueChange", "outSelect", "outIconLeft", "outIconRight", "outClickButtonLabel", "outSwitchEventLabel", "outLabelRightClick", "outEnterInputEvent", "outHeightAreaChange", "outFunctionsControl", "outFocusAndBlur", "outChangeValueByButtonUpDown"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
45
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsInputsQuill2xLinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
46
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: LibsUiComponentsInputsQuill2xLinkComponent, isStandalone: true, selector: "libs_ui-components-inputs-quill2x-link", inputs: { zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null }, ignoreCommunicateMicroEvent: { classPropertyName: "ignoreCommunicateMicroEvent", publicName: "ignoreCommunicateMicroEvent", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { outClose: "outClose", outSaveLink: "outSaveLink" }, ngImport: i0, template: "<libs_ui-components-modal\n [title]=\"'i18n_insert_link'\"\n [mode]=\"'center'\"\n [height]=\"'auto'\"\n [width]=\"'598px'\"\n [ignoreCommunicateMicroEvent]=\"ignoreCommunicateMicroEvent()\"\n [headerConfig]=\"{ ignoreHeaderTheme: true }\"\n [zIndex]=\"zIndex()\"\n (outEvent)=\"handlerEvent($event)\">\n <div class=\"libs-ui-modal-body-custom\">\n <libs_ui-components-inputs-valid\n [labelConfig]=\"{ labelLeft: 'i18n_content', required: true }\"\n [(item)]=\"dataLink\"\n [fieldNameBind]=\"'title'\"\n [placeholder]=\"'i18n_import_content'\"\n [validRequired]=\"{ isRequired: true }\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\" />\n <div class=\"mt-[16px]\">\n <libs_ui-components-inputs-valid\n [labelConfig]=\"{ labelLeft: 'Link', required: true }\"\n [(item)]=\"dataLink\"\n [fieldNameBind]=\"'link'\"\n [placeholder]=\"'https://example.com'\"\n [validRequired]=\"{ isRequired: true }\"\n [validPattern]=\"[{ pattern: patternLink(), valuePatternShowError: false }]\"\n [keySelectedUnitLeft]=\"'1'\"\n [unitsLeft]=\"[{ id: '1', label: 'URL' }]\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\" />\n </div>\n </div>\n</libs_ui-components-modal>\n", dependencies: [{ kind: "component", type: LibsUiComponentsModalComponent, selector: "libs_ui-components-modal", inputs: ["show", "mode", "isBackdropTransparent", "isBackgroundTransparentModal", "isSizeBackdropByWidthHeightInput", "hasShadowBoxWhenHiddenBackDropTransparent", "classIncludeModalWrapper", "zIndex", "width", "height", "maxWidth", "maxHeight", "minWidth", "isFullScreen", "disable", "ignoreCommunicateMicroEvent", "escapeKeyboardCloseModal", "isClickOutsideClose", "headerConfig", "bodyConfig", "footerConfig", "buttonsFooter", "title", "titleUseXssFilter", "titleUseTooltip", "titleUseInnerText"], outputs: ["showChange", "widthChange", "heightChange", "maxWidthChange", "maxHeightChange", "minWidthChange", "disableChange", "buttonsFooterChange", "outScrollContent", "outEvent", "outFunctionControl", "outClose"] }, { kind: "component", type: LibsUiComponentsInputsValidComponent, selector: "libs_ui-components-inputs-valid", inputs: ["item", "labelConfig", "emitEmptyInDataTypeNumber", "ignoreBlockInputMaxValue", "fieldNameBind", "showCount", "typeComponentSelectItem", "valueComponentSelectItem", "disableComponentSelectItem", "tagInput", "dataType", "typeInput", "modeInput", "resetAutoCompletePassword", "textAreaEnterNotNewLine", "fixedFloat", "acceptNegativeValue", "valueUpDownNumber", "ignoreWidthInput100", "classIncludeInput", "classContainerInput", "readonly", "disable", "noBorder", "backgroundNone", "useColorModeExist", "placeholder", "keepPlaceholderOnly", "classContainerBottomInput", "autoRemoveEmoji", "defaultHeight", "maxHeightTextArea", "minHeightTextArea", "ignoreShowError", "ignoreShowMessageError", "borderError", "iconLeftClass", "popoverContentIconLeft", "iconRightClass", "popoverContentIconRight", "zIndexPopoverContent", "unitsLeft", "configUnitLeft", "keySelectedUnitLeft", "unitsRight", "configUnitRight", "keySelectedUnitRight", "maxValueNumber", "minValueNumber", "ignoreContentLeft", "ignoreContentRight", "isBaselineStyle", "valuePatternShowError", "validPattern", "validRequired", "validMinLength", "validMinValue", "validMaxValue", "validMaxLength", "functionValid", "maxLength", "positionMessageErrorStartInput", "classInclude", "resize", "templateLeftBottomInput", "templateRightBottomInput", "onlyAcceptNegativeValue", "autoAddZeroLessThan10InTypeInt", "maxLengthNumberCount", "classMessageErrorInclude", "ignoreStopPropagationEvent", "ignoreUnitRightClassReadOnly", "paddingRightCustomSpecific", "focusTimeOut", "debounceTimeValidate"], outputs: ["itemChange", "outValueChange", "outSelect", "outIconLeft", "outIconRight", "outClickButtonLabel", "outSwitchEventLabel", "outLabelRightClick", "outEnterInputEvent", "outHeightAreaChange", "outFunctionsControl", "outFocusAndBlur", "outChangeValueByButtonUpDown"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
47
47
  }
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsInputsQuillLinkComponent, decorators: [{
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsInputsQuill2xLinkComponent, decorators: [{
49
49
  type: Component,
50
- args: [{ selector: 'libs_ui-components-inputs-quill-link', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [LibsUiComponentsModalComponent, LibsUiComponentsInputsValidComponent], template: "<libs_ui-components-modal\n [title]=\"'i18n_insert_link'\"\n [mode]=\"'center'\"\n [height]=\"'auto'\"\n [width]=\"'598px'\"\n [ignoreCommunicateMicroEvent]=\"ignoreCommunicateMicroEvent()\"\n [headerConfig]=\"{ ignoreHeaderTheme: true }\"\n [zIndex]=\"zIndex()\"\n (outEvent)=\"handlerEvent($event)\">\n <div class=\"libs-ui-modal-body-custom\">\n <libs_ui-components-inputs-valid\n [labelConfig]=\"{ labelLeft: 'i18n_content', required: true }\"\n [(item)]=\"dataLink\"\n [fieldNameBind]=\"'title'\"\n [placeholder]=\"'i18n_import_content'\"\n [validRequired]=\"{ isRequired: true }\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\" />\n <div class=\"mt-[16px]\">\n <libs_ui-components-inputs-valid\n [labelConfig]=\"{ labelLeft: 'Link', required: true }\"\n [(item)]=\"dataLink\"\n [fieldNameBind]=\"'link'\"\n [placeholder]=\"'https://example.com'\"\n [validRequired]=\"{ isRequired: true }\"\n [validPattern]=\"[{ pattern: patternLink(), valuePatternShowError: false }]\"\n [keySelectedUnitLeft]=\"'1'\"\n [unitsLeft]=\"[{ id: '1', label: 'URL' }]\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\" />\n </div>\n </div>\n</libs_ui-components-modal>\n" }]
50
+ args: [{ selector: 'libs_ui-components-inputs-quill2x-link', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [LibsUiComponentsModalComponent, LibsUiComponentsInputsValidComponent], template: "<libs_ui-components-modal\n [title]=\"'i18n_insert_link'\"\n [mode]=\"'center'\"\n [height]=\"'auto'\"\n [width]=\"'598px'\"\n [ignoreCommunicateMicroEvent]=\"ignoreCommunicateMicroEvent()\"\n [headerConfig]=\"{ ignoreHeaderTheme: true }\"\n [zIndex]=\"zIndex()\"\n (outEvent)=\"handlerEvent($event)\">\n <div class=\"libs-ui-modal-body-custom\">\n <libs_ui-components-inputs-valid\n [labelConfig]=\"{ labelLeft: 'i18n_content', required: true }\"\n [(item)]=\"dataLink\"\n [fieldNameBind]=\"'title'\"\n [placeholder]=\"'i18n_import_content'\"\n [validRequired]=\"{ isRequired: true }\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\" />\n <div class=\"mt-[16px]\">\n <libs_ui-components-inputs-valid\n [labelConfig]=\"{ labelLeft: 'Link', required: true }\"\n [(item)]=\"dataLink\"\n [fieldNameBind]=\"'link'\"\n [placeholder]=\"'https://example.com'\"\n [validRequired]=\"{ isRequired: true }\"\n [validPattern]=\"[{ pattern: patternLink(), valuePatternShowError: false }]\"\n [keySelectedUnitLeft]=\"'1'\"\n [unitsLeft]=\"[{ id: '1', label: 'URL' }]\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\" />\n </div>\n </div>\n</libs_ui-components-modal>\n" }]
51
51
  }] });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL3F1aWxsMngvc3JjL2xpbmsvbGluay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL3F1aWxsMngvc3JjL2xpbmsvbGluay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBbUMsb0NBQW9DLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6SCxPQUFPLEVBQUUsOEJBQThCLEVBQW9CLE1BQU0sMkJBQTJCLENBQUM7QUFDN0YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQVU1QyxNQUFNLE9BQU8sd0NBQXdDO0lBQ3pDLFFBQVEsR0FBRyxNQUFNLENBQWtDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1RSxXQUFXLEdBQUcsTUFBTSxDQUFTLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFFcEMseUJBQXlCLEdBQUcsTUFBTSxDQUF5QyxFQUFFLENBQUMsQ0FBQztJQUV2RixNQUFNLEdBQUcsS0FBSyxDQUFTLElBQUksQ0FBQyxDQUFDO0lBQzdCLEtBQUssR0FBRyxLQUFLLEVBQVUsQ0FBQztJQUN4QixJQUFJLEdBQUcsS0FBSyxFQUFVLENBQUM7SUFDdkIsMkJBQTJCLEdBQUcsS0FBSyxFQUFXLENBQUM7SUFFL0MsUUFBUSxHQUFHLE1BQU0sRUFBUSxDQUFDO0lBQzFCLFdBQVcsR0FBRyxNQUFNLEVBQW1DLENBQUM7SUFFakUsUUFBUTtRQUNOLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0RixDQUFDO0lBQ0gsQ0FBQztJQUVTLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxLQUFzQztRQUM1RSxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVPLEtBQUssQ0FBQyxRQUFRO1FBQ3BCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztRQUNqQixLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLENBQUMsTUFBTSxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUNwQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ2hCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRVMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUF1QjtRQUNsRCxJQUFJLEtBQUssS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7d0dBN0NVLHdDQUF3Qzs0RkFBeEMsd0NBQXdDLDZzQkNickQsaXhDQStCQSw0Q0RwQlksOEJBQThCLGt4QkFBRSxvQ0FBb0M7OzRGQUVuRSx3Q0FBd0M7a0JBUnBELFNBQVM7K0JBRUUsc0NBQXNDLGNBRXBDLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLDhCQUE4QixFQUFFLG9DQUFvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5wdXQsIE9uSW5pdCwgb3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElJbnB1dFZhbGlkRnVuY3Rpb25Db250cm9sRXZlbnQsIExpYnNVaUNvbXBvbmVudHNJbnB1dHNWYWxpZENvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtaW5wdXRzLXZhbGlkJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNNb2RhbENvbXBvbmVudCwgVFlQRV9NT0RBTF9FVkVOVCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtbW9kYWwnO1xuaW1wb3J0IHsgcGF0dGVyblVybCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlic191aS1jb21wb25lbnRzLWlucHV0cy1xdWlsbC1saW5rJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpbmsuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW0xpYnNVaUNvbXBvbmVudHNNb2RhbENvbXBvbmVudCwgTGlic1VpQ29tcG9uZW50c0lucHV0c1ZhbGlkQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c0lucHV0c1F1aWxsTGlua0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByb3RlY3RlZCBkYXRhTGluayA9IHNpZ25hbDx7IHRpdGxlOiBzdHJpbmc7IGxpbms6IHN0cmluZyB9Pih7IHRpdGxlOiAnJywgbGluazogJycgfSk7XG4gIHByb3RlY3RlZCBwYXR0ZXJuTGluayA9IHNpZ25hbDxSZWdFeHA+KHBhdHRlcm5VcmwoKSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpbnB1dFZhbGlkRnVuY3Rpb25Db250cm9sID0gc2lnbmFsPEFycmF5PElJbnB1dFZhbGlkRnVuY3Rpb25Db250cm9sRXZlbnQ+PihbXSk7XG5cbiAgcmVhZG9ubHkgekluZGV4ID0gaW5wdXQ8bnVtYmVyPigxMjAwKTtcbiAgcmVhZG9ubHkgdGl0bGUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IGxpbmsgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IGlnbm9yZUNvbW11bmljYXRlTWljcm9FdmVudCA9IGlucHV0PGJvb2xlYW4+KCk7XG5cbiAgcmVhZG9ubHkgb3V0Q2xvc2UgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcmVhZG9ubHkgb3V0U2F2ZUxpbmsgPSBvdXRwdXQ8eyB0aXRsZTogc3RyaW5nOyBsaW5rOiBzdHJpbmcgfT4oKTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCB0aXRsZSA9IHRoaXMudGl0bGUoKTtcbiAgICBjb25zdCBsaW5rID0gdGhpcy5saW5rKCk7XG4gICAgaWYgKHRpdGxlIHx8IGxpbmspIHtcbiAgICAgIHRoaXMuZGF0YUxpbmsudXBkYXRlKChpdGVtKSA9PiAoeyAuLi5pdGVtLCB0aXRsZTogdGl0bGUgfHwgJycsIGxpbms6IGxpbmsgfHwgJycgfSkpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVyRnVuY3Rpb25zQ29udHJvbChldmVudDogSUlucHV0VmFsaWRGdW5jdGlvbkNvbnRyb2xFdmVudCkge1xuICAgIHRoaXMuaW5wdXRWYWxpZEZ1bmN0aW9uQ29udHJvbC51cGRhdGUoKGl0ZW1zKSA9PiBbLi4uaXRlbXMsIGV2ZW50XSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHZhbGlkYXRlKCkge1xuICAgIGxldCB2YWxpZCA9IHRydWU7XG4gICAgZm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMuaW5wdXRWYWxpZEZ1bmN0aW9uQ29udHJvbCgpKSB7XG4gICAgICBpZiAoIShhd2FpdCBjb250cm9sLmNoZWNrSXNWYWxpZCgpKSkge1xuICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmFsaWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlckV2ZW50KGV2ZW50OiBUWVBFX01PREFMX0VWRU5UKSB7XG4gICAgaWYgKGV2ZW50ICE9PSAnYWdyZWUnKSB7XG4gICAgICB0aGlzLm91dENsb3NlLmVtaXQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGF3YWl0IHRoaXMudmFsaWRhdGUoKSkge1xuICAgICAgdGhpcy5vdXRTYXZlTGluay5lbWl0KHRoaXMuZGF0YUxpbmsoKSk7XG4gICAgICB0aGlzLm91dENsb3NlLmVtaXQoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxsaWJzX3VpLWNvbXBvbmVudHMtbW9kYWxcbiAgW3RpdGxlXT1cIidpMThuX2luc2VydF9saW5rJ1wiXG4gIFttb2RlXT1cIidjZW50ZXInXCJcbiAgW2hlaWdodF09XCInYXV0bydcIlxuICBbd2lkdGhdPVwiJzU5OHB4J1wiXG4gIFtpZ25vcmVDb21tdW5pY2F0ZU1pY3JvRXZlbnRdPVwiaWdub3JlQ29tbXVuaWNhdGVNaWNyb0V2ZW50KClcIlxuICBbaGVhZGVyQ29uZmlnXT1cInsgaWdub3JlSGVhZGVyVGhlbWU6IHRydWUgfVwiXG4gIFt6SW5kZXhdPVwiekluZGV4KClcIlxuICAob3V0RXZlbnQpPVwiaGFuZGxlckV2ZW50KCRldmVudClcIj5cbiAgPGRpdiBjbGFzcz1cImxpYnMtdWktbW9kYWwtYm9keS1jdXN0b21cIj5cbiAgICA8bGlic191aS1jb21wb25lbnRzLWlucHV0cy12YWxpZFxuICAgICAgW2xhYmVsQ29uZmlnXT1cInsgbGFiZWxMZWZ0OiAnaTE4bl9jb250ZW50JywgcmVxdWlyZWQ6IHRydWUgfVwiXG4gICAgICBbKGl0ZW0pXT1cImRhdGFMaW5rXCJcbiAgICAgIFtmaWVsZE5hbWVCaW5kXT1cIid0aXRsZSdcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cIidpMThuX2ltcG9ydF9jb250ZW50J1wiXG4gICAgICBbdmFsaWRSZXF1aXJlZF09XCJ7IGlzUmVxdWlyZWQ6IHRydWUgfVwiXG4gICAgICAob3V0RnVuY3Rpb25zQ29udHJvbCk9XCJoYW5kbGVyRnVuY3Rpb25zQ29udHJvbCgkZXZlbnQpXCIgLz5cbiAgICA8ZGl2IGNsYXNzPVwibXQtWzE2cHhdXCI+XG4gICAgICA8bGlic191aS1jb21wb25lbnRzLWlucHV0cy12YWxpZFxuICAgICAgICBbbGFiZWxDb25maWddPVwieyBsYWJlbExlZnQ6ICdMaW5rJywgcmVxdWlyZWQ6IHRydWUgfVwiXG4gICAgICAgIFsoaXRlbSldPVwiZGF0YUxpbmtcIlxuICAgICAgICBbZmllbGROYW1lQmluZF09XCInbGluaydcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2h0dHBzOi8vZXhhbXBsZS5jb20nXCJcbiAgICAgICAgW3ZhbGlkUmVxdWlyZWRdPVwieyBpc1JlcXVpcmVkOiB0cnVlIH1cIlxuICAgICAgICBbdmFsaWRQYXR0ZXJuXT1cIlt7IHBhdHRlcm46IHBhdHRlcm5MaW5rKCksIHZhbHVlUGF0dGVyblNob3dFcnJvcjogZmFsc2UgfV1cIlxuICAgICAgICBba2V5U2VsZWN0ZWRVbml0TGVmdF09XCInMSdcIlxuICAgICAgICBbdW5pdHNMZWZ0XT1cIlt7IGlkOiAnMScsIGxhYmVsOiAnVVJMJyB9XVwiXG4gICAgICAgIChvdXRGdW5jdGlvbnNDb250cm9sKT1cImhhbmRsZXJGdW5jdGlvbnNDb250cm9sKCRldmVudClcIiAvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbGlic191aS1jb21wb25lbnRzLW1vZGFsPlxuIl19
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL3F1aWxsMngvc3JjL2xpbmsvbGluay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL3F1aWxsMngvc3JjL2xpbmsvbGluay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBbUMsb0NBQW9DLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6SCxPQUFPLEVBQUUsOEJBQThCLEVBQW9CLE1BQU0sMkJBQTJCLENBQUM7QUFDN0YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQVU1QyxNQUFNLE9BQU8sMENBQTBDO0lBQzNDLFFBQVEsR0FBRyxNQUFNLENBQWtDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1RSxXQUFXLEdBQUcsTUFBTSxDQUFTLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFFcEMseUJBQXlCLEdBQUcsTUFBTSxDQUF5QyxFQUFFLENBQUMsQ0FBQztJQUV2RixNQUFNLEdBQUcsS0FBSyxDQUFTLElBQUksQ0FBQyxDQUFDO0lBQzdCLEtBQUssR0FBRyxLQUFLLEVBQVUsQ0FBQztJQUN4QixJQUFJLEdBQUcsS0FBSyxFQUFVLENBQUM7SUFDdkIsMkJBQTJCLEdBQUcsS0FBSyxFQUFXLENBQUM7SUFFL0MsUUFBUSxHQUFHLE1BQU0sRUFBUSxDQUFDO0lBQzFCLFdBQVcsR0FBRyxNQUFNLEVBQW1DLENBQUM7SUFFakUsUUFBUTtRQUNOLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0RixDQUFDO0lBQ0gsQ0FBQztJQUVTLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxLQUFzQztRQUM1RSxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVPLEtBQUssQ0FBQyxRQUFRO1FBQ3BCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztRQUNqQixLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLENBQUMsTUFBTSxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUNwQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ2hCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRVMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUF1QjtRQUNsRCxJQUFJLEtBQUssS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7d0dBN0NVLDBDQUEwQzs0RkFBMUMsMENBQTBDLCtzQkNidkQsaXhDQStCQSw0Q0RwQlksOEJBQThCLGt4QkFBRSxvQ0FBb0M7OzRGQUVuRSwwQ0FBMEM7a0JBUnRELFNBQVM7K0JBRUUsd0NBQXdDLGNBRXRDLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLDhCQUE4QixFQUFFLG9DQUFvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5wdXQsIE9uSW5pdCwgb3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElJbnB1dFZhbGlkRnVuY3Rpb25Db250cm9sRXZlbnQsIExpYnNVaUNvbXBvbmVudHNJbnB1dHNWYWxpZENvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtaW5wdXRzLXZhbGlkJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNNb2RhbENvbXBvbmVudCwgVFlQRV9NT0RBTF9FVkVOVCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtbW9kYWwnO1xuaW1wb3J0IHsgcGF0dGVyblVybCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlic191aS1jb21wb25lbnRzLWlucHV0cy1xdWlsbDJ4LWxpbmsnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGluay5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbTGlic1VpQ29tcG9uZW50c01vZGFsQ29tcG9uZW50LCBMaWJzVWlDb21wb25lbnRzSW5wdXRzVmFsaWRDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzSW5wdXRzUXVpbGwyeExpbmtDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcm90ZWN0ZWQgZGF0YUxpbmsgPSBzaWduYWw8eyB0aXRsZTogc3RyaW5nOyBsaW5rOiBzdHJpbmcgfT4oeyB0aXRsZTogJycsIGxpbms6ICcnIH0pO1xuICBwcm90ZWN0ZWQgcGF0dGVybkxpbmsgPSBzaWduYWw8UmVnRXhwPihwYXR0ZXJuVXJsKCkpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5wdXRWYWxpZEZ1bmN0aW9uQ29udHJvbCA9IHNpZ25hbDxBcnJheTxJSW5wdXRWYWxpZEZ1bmN0aW9uQ29udHJvbEV2ZW50Pj4oW10pO1xuXG4gIHJlYWRvbmx5IHpJbmRleCA9IGlucHV0PG51bWJlcj4oMTIwMCk7XG4gIHJlYWRvbmx5IHRpdGxlID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBsaW5rID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBpZ25vcmVDb21tdW5pY2F0ZU1pY3JvRXZlbnQgPSBpbnB1dDxib29sZWFuPigpO1xuXG4gIHJlYWRvbmx5IG91dENsb3NlID0gb3V0cHV0PHZvaWQ+KCk7XG4gIHJlYWRvbmx5IG91dFNhdmVMaW5rID0gb3V0cHV0PHsgdGl0bGU6IHN0cmluZzsgbGluazogc3RyaW5nIH0+KCk7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgdGl0bGUgPSB0aGlzLnRpdGxlKCk7XG4gICAgY29uc3QgbGluayA9IHRoaXMubGluaygpO1xuICAgIGlmICh0aXRsZSB8fCBsaW5rKSB7XG4gICAgICB0aGlzLmRhdGFMaW5rLnVwZGF0ZSgoaXRlbSkgPT4gKHsgLi4uaXRlbSwgdGl0bGU6IHRpdGxlIHx8ICcnLCBsaW5rOiBsaW5rIHx8ICcnIH0pKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlckZ1bmN0aW9uc0NvbnRyb2woZXZlbnQ6IElJbnB1dFZhbGlkRnVuY3Rpb25Db250cm9sRXZlbnQpIHtcbiAgICB0aGlzLmlucHV0VmFsaWRGdW5jdGlvbkNvbnRyb2wudXBkYXRlKChpdGVtcykgPT4gWy4uLml0ZW1zLCBldmVudF0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB2YWxpZGF0ZSgpIHtcbiAgICBsZXQgdmFsaWQgPSB0cnVlO1xuICAgIGZvciAoY29uc3QgY29udHJvbCBvZiB0aGlzLmlucHV0VmFsaWRGdW5jdGlvbkNvbnRyb2woKSkge1xuICAgICAgaWYgKCEoYXdhaXQgY29udHJvbC5jaGVja0lzVmFsaWQoKSkpIHtcbiAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZXJFdmVudChldmVudDogVFlQRV9NT0RBTF9FVkVOVCkge1xuICAgIGlmIChldmVudCAhPT0gJ2FncmVlJykge1xuICAgICAgdGhpcy5vdXRDbG9zZS5lbWl0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhd2FpdCB0aGlzLnZhbGlkYXRlKCkpIHtcbiAgICAgIHRoaXMub3V0U2F2ZUxpbmsuZW1pdCh0aGlzLmRhdGFMaW5rKCkpO1xuICAgICAgdGhpcy5vdXRDbG9zZS5lbWl0KCk7XG4gICAgfVxuICB9XG59XG4iLCI8bGlic191aS1jb21wb25lbnRzLW1vZGFsXG4gIFt0aXRsZV09XCInaTE4bl9pbnNlcnRfbGluaydcIlxuICBbbW9kZV09XCInY2VudGVyJ1wiXG4gIFtoZWlnaHRdPVwiJ2F1dG8nXCJcbiAgW3dpZHRoXT1cIic1OThweCdcIlxuICBbaWdub3JlQ29tbXVuaWNhdGVNaWNyb0V2ZW50XT1cImlnbm9yZUNvbW11bmljYXRlTWljcm9FdmVudCgpXCJcbiAgW2hlYWRlckNvbmZpZ109XCJ7IGlnbm9yZUhlYWRlclRoZW1lOiB0cnVlIH1cIlxuICBbekluZGV4XT1cInpJbmRleCgpXCJcbiAgKG91dEV2ZW50KT1cImhhbmRsZXJFdmVudCgkZXZlbnQpXCI+XG4gIDxkaXYgY2xhc3M9XCJsaWJzLXVpLW1vZGFsLWJvZHktY3VzdG9tXCI+XG4gICAgPGxpYnNfdWktY29tcG9uZW50cy1pbnB1dHMtdmFsaWRcbiAgICAgIFtsYWJlbENvbmZpZ109XCJ7IGxhYmVsTGVmdDogJ2kxOG5fY29udGVudCcsIHJlcXVpcmVkOiB0cnVlIH1cIlxuICAgICAgWyhpdGVtKV09XCJkYXRhTGlua1wiXG4gICAgICBbZmllbGROYW1lQmluZF09XCIndGl0bGUnXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCInaTE4bl9pbXBvcnRfY29udGVudCdcIlxuICAgICAgW3ZhbGlkUmVxdWlyZWRdPVwieyBpc1JlcXVpcmVkOiB0cnVlIH1cIlxuICAgICAgKG91dEZ1bmN0aW9uc0NvbnRyb2wpPVwiaGFuZGxlckZ1bmN0aW9uc0NvbnRyb2woJGV2ZW50KVwiIC8+XG4gICAgPGRpdiBjbGFzcz1cIm10LVsxNnB4XVwiPlxuICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1pbnB1dHMtdmFsaWRcbiAgICAgICAgW2xhYmVsQ29uZmlnXT1cInsgbGFiZWxMZWZ0OiAnTGluaycsIHJlcXVpcmVkOiB0cnVlIH1cIlxuICAgICAgICBbKGl0ZW0pXT1cImRhdGFMaW5rXCJcbiAgICAgICAgW2ZpZWxkTmFtZUJpbmRdPVwiJ2xpbmsnXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidodHRwczovL2V4YW1wbGUuY29tJ1wiXG4gICAgICAgIFt2YWxpZFJlcXVpcmVkXT1cInsgaXNSZXF1aXJlZDogdHJ1ZSB9XCJcbiAgICAgICAgW3ZhbGlkUGF0dGVybl09XCJbeyBwYXR0ZXJuOiBwYXR0ZXJuTGluaygpLCB2YWx1ZVBhdHRlcm5TaG93RXJyb3I6IGZhbHNlIH1dXCJcbiAgICAgICAgW2tleVNlbGVjdGVkVW5pdExlZnRdPVwiJzEnXCJcbiAgICAgICAgW3VuaXRzTGVmdF09XCJbeyBpZDogJzEnLCBsYWJlbDogJ1VSTCcgfV1cIlxuICAgICAgICAob3V0RnVuY3Rpb25zQ29udHJvbCk9XCJoYW5kbGVyRnVuY3Rpb25zQ29udHJvbCgkZXZlbnQpXCIgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2xpYnNfdWktY29tcG9uZW50cy1tb2RhbD5cbiJdfQ==