@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 +76 -38
- package/blots-custom/mention2x.component.d.ts +2 -0
- package/esm2022/blots-custom/mention2x.component.mjs +42 -2
- package/esm2022/interfaces/quill2x.interface.mjs +1 -1
- package/esm2022/link/link.component.mjs +6 -6
- package/esm2022/quill2x.component.mjs +41 -27
- package/esm2022/upload-image/upload-image.component.mjs +6 -6
- package/esm2022/utils/data.define.mjs +22 -4
- package/fesm2022/libs-ui-components-inputs-quill2x.mjs +110 -38
- package/fesm2022/libs-ui-components-inputs-quill2x.mjs.map +1 -1
- package/interfaces/quill2x.interface.d.ts +12 -0
- package/link/link.component.d.ts +3 -3
- package/package.json +20 -20
- package/quill2x.component.d.ts +10 -1
- package/upload-image/upload-image.component.d.ts +3 -3
- package/utils/data.define.d.ts +7 -1
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
|
|
105
|
-
content: '<p>Xin chào! Đây là
|
|
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)]="
|
|
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
|
|
140
|
-
|
|
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
|
-
|
|
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)]="
|
|
162
|
-
[fieldBind]="'
|
|
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
|
|
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@
|
|
193
|
-
{ id: '2', name: 'Bảo Ngọc', username: 'ngoc@
|
|
194
|
-
{ id: '3', name: 'Công Thành', username: 'thanh@
|
|
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)]="
|
|
213
|
-
[fieldBind]="'
|
|
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
|
|
282
|
-
protected
|
|
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.
|
|
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
|
-
<
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
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 {
|
|
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,
|
|
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/
|
|
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
|
|
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:
|
|
46
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type:
|
|
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:
|
|
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-
|
|
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,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL3F1aWxsMngvc3JjL2xpbmsvbGluay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL3F1aWxsMngvc3JjL2xpbmsvbGluay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBbUMsb0NBQW9DLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6SCxPQUFPLEVBQUUsOEJBQThCLEVBQW9CLE1BQU0sMkJBQTJCLENBQUM7QUFDN0YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQVU1QyxNQUFNLE9BQU8sMENBQTBDO0lBQzNDLFFBQVEsR0FBRyxNQUFNLENBQWtDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1RSxXQUFXLEdBQUcsTUFBTSxDQUFTLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFFcEMseUJBQXlCLEdBQUcsTUFBTSxDQUF5QyxFQUFFLENBQUMsQ0FBQztJQUV2RixNQUFNLEdBQUcsS0FBSyxDQUFTLElBQUksQ0FBQyxDQUFDO0lBQzdCLEtBQUssR0FBRyxLQUFLLEVBQVUsQ0FBQztJQUN4QixJQUFJLEdBQUcsS0FBSyxFQUFVLENBQUM7SUFDdkIsMkJBQTJCLEdBQUcsS0FBSyxFQUFXLENBQUM7SUFFL0MsUUFBUSxHQUFHLE1BQU0sRUFBUSxDQUFDO0lBQzFCLFdBQVcsR0FBRyxNQUFNLEVBQW1DLENBQUM7SUFFakUsUUFBUTtRQUNOLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0RixDQUFDO0lBQ0gsQ0FBQztJQUVTLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxLQUFzQztRQUM1RSxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVPLEtBQUssQ0FBQyxRQUFRO1FBQ3BCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztRQUNqQixLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLENBQUMsTUFBTSxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUNwQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ2hCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRVMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUF1QjtRQUNsRCxJQUFJLEtBQUssS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7d0dBN0NVLDBDQUEwQzs0RkFBMUMsMENBQTBDLCtzQkNidkQsaXhDQStCQSw0Q0RwQlksOEJBQThCLGt4QkFBRSxvQ0FBb0M7OzRGQUVuRSwwQ0FBMEM7a0JBUnRELFNBQVM7K0JBRUUsd0NBQXdDLGNBRXRDLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLDhCQUE4QixFQUFFLG9DQUFvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5wdXQsIE9uSW5pdCwgb3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElJbnB1dFZhbGlkRnVuY3Rpb25Db250cm9sRXZlbnQsIExpYnNVaUNvbXBvbmVudHNJbnB1dHNWYWxpZENvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtaW5wdXRzLXZhbGlkJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNNb2RhbENvbXBvbmVudCwgVFlQRV9NT0RBTF9FVkVOVCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtbW9kYWwnO1xuaW1wb3J0IHsgcGF0dGVyblVybCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlic191aS1jb21wb25lbnRzLWlucHV0cy1xdWlsbDJ4LWxpbmsnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGluay5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbTGlic1VpQ29tcG9uZW50c01vZGFsQ29tcG9uZW50LCBMaWJzVWlDb21wb25lbnRzSW5wdXRzVmFsaWRDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzSW5wdXRzUXVpbGwyeExpbmtDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcm90ZWN0ZWQgZGF0YUxpbmsgPSBzaWduYWw8eyB0aXRsZTogc3RyaW5nOyBsaW5rOiBzdHJpbmcgfT4oeyB0aXRsZTogJycsIGxpbms6ICcnIH0pO1xuICBwcm90ZWN0ZWQgcGF0dGVybkxpbmsgPSBzaWduYWw8UmVnRXhwPihwYXR0ZXJuVXJsKCkpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5wdXRWYWxpZEZ1bmN0aW9uQ29udHJvbCA9IHNpZ25hbDxBcnJheTxJSW5wdXRWYWxpZEZ1bmN0aW9uQ29udHJvbEV2ZW50Pj4oW10pO1xuXG4gIHJlYWRvbmx5IHpJbmRleCA9IGlucHV0PG51bWJlcj4oMTIwMCk7XG4gIHJlYWRvbmx5IHRpdGxlID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBsaW5rID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBpZ25vcmVDb21tdW5pY2F0ZU1pY3JvRXZlbnQgPSBpbnB1dDxib29sZWFuPigpO1xuXG4gIHJlYWRvbmx5IG91dENsb3NlID0gb3V0cHV0PHZvaWQ+KCk7XG4gIHJlYWRvbmx5IG91dFNhdmVMaW5rID0gb3V0cHV0PHsgdGl0bGU6IHN0cmluZzsgbGluazogc3RyaW5nIH0+KCk7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgdGl0bGUgPSB0aGlzLnRpdGxlKCk7XG4gICAgY29uc3QgbGluayA9IHRoaXMubGluaygpO1xuICAgIGlmICh0aXRsZSB8fCBsaW5rKSB7XG4gICAgICB0aGlzLmRhdGFMaW5rLnVwZGF0ZSgoaXRlbSkgPT4gKHsgLi4uaXRlbSwgdGl0bGU6IHRpdGxlIHx8ICcnLCBsaW5rOiBsaW5rIHx8ICcnIH0pKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlckZ1bmN0aW9uc0NvbnRyb2woZXZlbnQ6IElJbnB1dFZhbGlkRnVuY3Rpb25Db250cm9sRXZlbnQpIHtcbiAgICB0aGlzLmlucHV0VmFsaWRGdW5jdGlvbkNvbnRyb2wudXBkYXRlKChpdGVtcykgPT4gWy4uLml0ZW1zLCBldmVudF0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB2YWxpZGF0ZSgpIHtcbiAgICBsZXQgdmFsaWQgPSB0cnVlO1xuICAgIGZvciAoY29uc3QgY29udHJvbCBvZiB0aGlzLmlucHV0VmFsaWRGdW5jdGlvbkNvbnRyb2woKSkge1xuICAgICAgaWYgKCEoYXdhaXQgY29udHJvbC5jaGVja0lzVmFsaWQoKSkpIHtcbiAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZXJFdmVudChldmVudDogVFlQRV9NT0RBTF9FVkVOVCkge1xuICAgIGlmIChldmVudCAhPT0gJ2FncmVlJykge1xuICAgICAgdGhpcy5vdXRDbG9zZS5lbWl0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhd2FpdCB0aGlzLnZhbGlkYXRlKCkpIHtcbiAgICAgIHRoaXMub3V0U2F2ZUxpbmsuZW1pdCh0aGlzLmRhdGFMaW5rKCkpO1xuICAgICAgdGhpcy5vdXRDbG9zZS5lbWl0KCk7XG4gICAgfVxuICB9XG59XG4iLCI8bGlic191aS1jb21wb25lbnRzLW1vZGFsXG4gIFt0aXRsZV09XCInaTE4bl9pbnNlcnRfbGluaydcIlxuICBbbW9kZV09XCInY2VudGVyJ1wiXG4gIFtoZWlnaHRdPVwiJ2F1dG8nXCJcbiAgW3dpZHRoXT1cIic1OThweCdcIlxuICBbaWdub3JlQ29tbXVuaWNhdGVNaWNyb0V2ZW50XT1cImlnbm9yZUNvbW11bmljYXRlTWljcm9FdmVudCgpXCJcbiAgW2hlYWRlckNvbmZpZ109XCJ7IGlnbm9yZUhlYWRlclRoZW1lOiB0cnVlIH1cIlxuICBbekluZGV4XT1cInpJbmRleCgpXCJcbiAgKG91dEV2ZW50KT1cImhhbmRsZXJFdmVudCgkZXZlbnQpXCI+XG4gIDxkaXYgY2xhc3M9XCJsaWJzLXVpLW1vZGFsLWJvZHktY3VzdG9tXCI+XG4gICAgPGxpYnNfdWktY29tcG9uZW50cy1pbnB1dHMtdmFsaWRcbiAgICAgIFtsYWJlbENvbmZpZ109XCJ7IGxhYmVsTGVmdDogJ2kxOG5fY29udGVudCcsIHJlcXVpcmVkOiB0cnVlIH1cIlxuICAgICAgWyhpdGVtKV09XCJkYXRhTGlua1wiXG4gICAgICBbZmllbGROYW1lQmluZF09XCIndGl0bGUnXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCInaTE4bl9pbXBvcnRfY29udGVudCdcIlxuICAgICAgW3ZhbGlkUmVxdWlyZWRdPVwieyBpc1JlcXVpcmVkOiB0cnVlIH1cIlxuICAgICAgKG91dEZ1bmN0aW9uc0NvbnRyb2wpPVwiaGFuZGxlckZ1bmN0aW9uc0NvbnRyb2woJGV2ZW50KVwiIC8+XG4gICAgPGRpdiBjbGFzcz1cIm10LVsxNnB4XVwiPlxuICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1pbnB1dHMtdmFsaWRcbiAgICAgICAgW2xhYmVsQ29uZmlnXT1cInsgbGFiZWxMZWZ0OiAnTGluaycsIHJlcXVpcmVkOiB0cnVlIH1cIlxuICAgICAgICBbKGl0ZW0pXT1cImRhdGFMaW5rXCJcbiAgICAgICAgW2ZpZWxkTmFtZUJpbmRdPVwiJ2xpbmsnXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidodHRwczovL2V4YW1wbGUuY29tJ1wiXG4gICAgICAgIFt2YWxpZFJlcXVpcmVkXT1cInsgaXNSZXF1aXJlZDogdHJ1ZSB9XCJcbiAgICAgICAgW3ZhbGlkUGF0dGVybl09XCJbeyBwYXR0ZXJuOiBwYXR0ZXJuTGluaygpLCB2YWx1ZVBhdHRlcm5TaG93RXJyb3I6IGZhbHNlIH1dXCJcbiAgICAgICAgW2tleVNlbGVjdGVkVW5pdExlZnRdPVwiJzEnXCJcbiAgICAgICAgW3VuaXRzTGVmdF09XCJbeyBpZDogJzEnLCBsYWJlbDogJ1VSTCcgfV1cIlxuICAgICAgICAob3V0RnVuY3Rpb25zQ29udHJvbCk9XCJoYW5kbGVyRnVuY3Rpb25zQ29udHJvbCgkZXZlbnQpXCIgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2xpYnNfdWktY29tcG9uZW50cy1tb2RhbD5cbiJdfQ==
|