@tolle_/tolle-ui 0.0.28-beta → 0.0.30-beta
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/esm2022/lib/calendar.component.mjs +275 -81
- package/esm2022/lib/date-picker.component.mjs +126 -29
- package/esm2022/lib/date-range-picker.component.mjs +76 -24
- package/esm2022/lib/multi-select.component.mjs +220 -26
- package/esm2022/lib/pagination.component.mjs +1 -1
- package/esm2022/lib/segment.component.mjs +192 -0
- package/esm2022/lib/select-item.component.mjs +98 -14
- package/esm2022/lib/select.component.mjs +29 -36
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/tolle-ui.mjs +1002 -203
- package/fesm2022/tolle-ui.mjs.map +1 -1
- package/lib/button.component.d.ts +2 -2
- package/lib/calendar.component.d.ts +23 -2
- package/lib/date-picker.component.d.ts +16 -2
- package/lib/date-range-picker.component.d.ts +3 -1
- package/lib/multi-select.component.d.ts +13 -1
- package/lib/segment.component.d.ts +38 -0
- package/lib/select-item.component.d.ts +4 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { Component, Input, forwardRef, ViewChildren } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
|
|
4
|
+
import { cn } from './utils/cn';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common";
|
|
7
|
+
export class SegmentedComponent {
|
|
8
|
+
cdr;
|
|
9
|
+
items = [];
|
|
10
|
+
class = '';
|
|
11
|
+
disabled = false;
|
|
12
|
+
itemTemplate; // Allow custom content
|
|
13
|
+
value = null;
|
|
14
|
+
gliderLeft = 0;
|
|
15
|
+
gliderWidth = 0;
|
|
16
|
+
hasValue = false;
|
|
17
|
+
itemElements;
|
|
18
|
+
onChange = () => { };
|
|
19
|
+
onTouched = () => { };
|
|
20
|
+
constructor(cdr) {
|
|
21
|
+
this.cdr = cdr;
|
|
22
|
+
}
|
|
23
|
+
ngAfterViewInit() {
|
|
24
|
+
setTimeout(() => this.updateGlider());
|
|
25
|
+
}
|
|
26
|
+
ngOnChanges(changes) {
|
|
27
|
+
// Recalculate if items change or if value changes externally
|
|
28
|
+
if (changes['items'] && !changes['items'].firstChange) {
|
|
29
|
+
setTimeout(() => this.updateGlider());
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
select(val) {
|
|
33
|
+
if (this.disabled)
|
|
34
|
+
return;
|
|
35
|
+
const item = this.items.find(i => i.value === val);
|
|
36
|
+
if (item?.disabled)
|
|
37
|
+
return;
|
|
38
|
+
this.value = val;
|
|
39
|
+
this.onChange(val);
|
|
40
|
+
this.onTouched();
|
|
41
|
+
this.updateGlider();
|
|
42
|
+
}
|
|
43
|
+
updateGlider() {
|
|
44
|
+
if (!this.itemElements || !this.items.length)
|
|
45
|
+
return;
|
|
46
|
+
const index = this.items.findIndex(i => i.value === this.value);
|
|
47
|
+
if (index === -1) {
|
|
48
|
+
this.hasValue = false;
|
|
49
|
+
this.gliderWidth = 0;
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const activeElement = this.itemElements.get(index)?.nativeElement;
|
|
53
|
+
if (activeElement) {
|
|
54
|
+
this.hasValue = true;
|
|
55
|
+
this.gliderLeft = activeElement.offsetLeft;
|
|
56
|
+
this.gliderWidth = activeElement.offsetWidth;
|
|
57
|
+
this.cdr.detectChanges();
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// CVA Implementation
|
|
61
|
+
writeValue(val) {
|
|
62
|
+
this.value = val;
|
|
63
|
+
setTimeout(() => this.updateGlider());
|
|
64
|
+
}
|
|
65
|
+
registerOnChange(fn) { this.onChange = fn; }
|
|
66
|
+
registerOnTouched(fn) { this.onTouched = fn; }
|
|
67
|
+
setDisabledState(isDisabled) {
|
|
68
|
+
this.disabled = isDisabled;
|
|
69
|
+
this.cdr.markForCheck();
|
|
70
|
+
}
|
|
71
|
+
cn = cn;
|
|
72
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SegmentedComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
73
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: SegmentedComponent, isStandalone: true, selector: "tolle-segment", inputs: { items: "items", class: "class", disabled: "disabled", itemTemplate: "itemTemplate" }, providers: [
|
|
74
|
+
{
|
|
75
|
+
provide: NG_VALUE_ACCESSOR,
|
|
76
|
+
useExisting: forwardRef(() => SegmentedComponent),
|
|
77
|
+
multi: true
|
|
78
|
+
}
|
|
79
|
+
], viewQueries: [{ propertyName: "itemElements", predicate: ["itemEls"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
80
|
+
<div
|
|
81
|
+
#container
|
|
82
|
+
[class]="cn(
|
|
83
|
+
'relative flex items-center p-1 bg-muted rounded-lg select-none w-full gap-1',
|
|
84
|
+
class
|
|
85
|
+
)"
|
|
86
|
+
role="tablist"
|
|
87
|
+
>
|
|
88
|
+
<div
|
|
89
|
+
class="absolute top-1 bottom-1 bg-background shadow-sm rounded-md transition-all duration-300 ease-[cubic-bezier(0.2,0.0,0.2,1)]"
|
|
90
|
+
[style.left.px]="gliderLeft"
|
|
91
|
+
[style.width.px]="gliderWidth"
|
|
92
|
+
[class.opacity-0]="!hasValue"
|
|
93
|
+
></div>
|
|
94
|
+
|
|
95
|
+
<button
|
|
96
|
+
*ngFor="let item of items"
|
|
97
|
+
#itemEls
|
|
98
|
+
type="button"
|
|
99
|
+
role="tab"
|
|
100
|
+
[disabled]="item.disabled || disabled"
|
|
101
|
+
[attr.aria-selected]="value === item.value"
|
|
102
|
+
(click)="select(item.value)"
|
|
103
|
+
[class]="cn(
|
|
104
|
+
'relative z-10 flex-1 px-3 py-1.5 text-sm font-medium transition-colors duration-200 rounded-md text-center focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',
|
|
105
|
+
'flex items-center justify-center gap-2',
|
|
106
|
+
value === item.value
|
|
107
|
+
? 'text-foreground'
|
|
108
|
+
: 'text-muted-foreground hover:text-foreground/70',
|
|
109
|
+
item.disabled && 'opacity-50 cursor-not-allowed',
|
|
110
|
+
item.class
|
|
111
|
+
)"
|
|
112
|
+
>
|
|
113
|
+
<ng-container *ngIf="itemTemplate; else defaultContent">
|
|
114
|
+
<ng-container *ngTemplateOutlet="itemTemplate; context: { $implicit: item, selected: value === item.value }">
|
|
115
|
+
</ng-container>
|
|
116
|
+
</ng-container>
|
|
117
|
+
|
|
118
|
+
<ng-template #defaultContent>
|
|
119
|
+
<i *ngIf="item.icon" [class]="item.icon"></i>
|
|
120
|
+
<span class="truncate">{{ item.label }}</span>
|
|
121
|
+
</ng-template>
|
|
122
|
+
</button>
|
|
123
|
+
</div>
|
|
124
|
+
`, isInline: true, styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }] });
|
|
125
|
+
}
|
|
126
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SegmentedComponent, decorators: [{
|
|
127
|
+
type: Component,
|
|
128
|
+
args: [{ selector: 'tolle-segment', standalone: true, imports: [CommonModule, FormsModule], providers: [
|
|
129
|
+
{
|
|
130
|
+
provide: NG_VALUE_ACCESSOR,
|
|
131
|
+
useExisting: forwardRef(() => SegmentedComponent),
|
|
132
|
+
multi: true
|
|
133
|
+
}
|
|
134
|
+
], template: `
|
|
135
|
+
<div
|
|
136
|
+
#container
|
|
137
|
+
[class]="cn(
|
|
138
|
+
'relative flex items-center p-1 bg-muted rounded-lg select-none w-full gap-1',
|
|
139
|
+
class
|
|
140
|
+
)"
|
|
141
|
+
role="tablist"
|
|
142
|
+
>
|
|
143
|
+
<div
|
|
144
|
+
class="absolute top-1 bottom-1 bg-background shadow-sm rounded-md transition-all duration-300 ease-[cubic-bezier(0.2,0.0,0.2,1)]"
|
|
145
|
+
[style.left.px]="gliderLeft"
|
|
146
|
+
[style.width.px]="gliderWidth"
|
|
147
|
+
[class.opacity-0]="!hasValue"
|
|
148
|
+
></div>
|
|
149
|
+
|
|
150
|
+
<button
|
|
151
|
+
*ngFor="let item of items"
|
|
152
|
+
#itemEls
|
|
153
|
+
type="button"
|
|
154
|
+
role="tab"
|
|
155
|
+
[disabled]="item.disabled || disabled"
|
|
156
|
+
[attr.aria-selected]="value === item.value"
|
|
157
|
+
(click)="select(item.value)"
|
|
158
|
+
[class]="cn(
|
|
159
|
+
'relative z-10 flex-1 px-3 py-1.5 text-sm font-medium transition-colors duration-200 rounded-md text-center focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',
|
|
160
|
+
'flex items-center justify-center gap-2',
|
|
161
|
+
value === item.value
|
|
162
|
+
? 'text-foreground'
|
|
163
|
+
: 'text-muted-foreground hover:text-foreground/70',
|
|
164
|
+
item.disabled && 'opacity-50 cursor-not-allowed',
|
|
165
|
+
item.class
|
|
166
|
+
)"
|
|
167
|
+
>
|
|
168
|
+
<ng-container *ngIf="itemTemplate; else defaultContent">
|
|
169
|
+
<ng-container *ngTemplateOutlet="itemTemplate; context: { $implicit: item, selected: value === item.value }">
|
|
170
|
+
</ng-container>
|
|
171
|
+
</ng-container>
|
|
172
|
+
|
|
173
|
+
<ng-template #defaultContent>
|
|
174
|
+
<i *ngIf="item.icon" [class]="item.icon"></i>
|
|
175
|
+
<span class="truncate">{{ item.label }}</span>
|
|
176
|
+
</ng-template>
|
|
177
|
+
</button>
|
|
178
|
+
</div>
|
|
179
|
+
`, styles: [":host{display:block}\n"] }]
|
|
180
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { items: [{
|
|
181
|
+
type: Input
|
|
182
|
+
}], class: [{
|
|
183
|
+
type: Input
|
|
184
|
+
}], disabled: [{
|
|
185
|
+
type: Input
|
|
186
|
+
}], itemTemplate: [{
|
|
187
|
+
type: Input
|
|
188
|
+
}], itemElements: [{
|
|
189
|
+
type: ViewChildren,
|
|
190
|
+
args: ['itemEls']
|
|
191
|
+
}] } });
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90b2xsZS9zcmMvbGliL3NlZ21lbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFVBQVUsRUFFVixZQUFZLEVBT2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQzs7O0FBMEVoQyxNQUFNLE9BQU8sa0JBQWtCO0lBZ0JUO0lBZlgsS0FBSyxHQUFrQixFQUFFLENBQUM7SUFDMUIsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNYLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsWUFBWSxDQUFvQixDQUFDLHVCQUF1QjtJQUVqRSxLQUFLLEdBQVEsSUFBSSxDQUFDO0lBQ2xCLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDZixXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ2hCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFUSxZQUFZLENBQXNDO0lBRTNFLFFBQVEsR0FBUSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFDekIsU0FBUyxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUUxQixZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtJQUFHLENBQUM7SUFFOUMsZUFBZTtRQUNiLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLDZEQUE2RDtRQUM3RCxJQUFJLE9BQU8sQ0FBQyxPQUFPLENB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V0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsYUFDekI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUM7NEJBQ2pELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZDVDtzRkFRUSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFPbUIsWUFBWTtzQkFBcEMsWUFBWTt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgZm9yd2FyZFJlZixcbiAgRWxlbWVudFJlZixcbiAgVmlld0NoaWxkcmVuLFxuICBRdWVyeUxpc3QsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4vdXRpbHMvY24nO1xuXG5leHBvcnQgdHlwZSBTZWdtZW50SXRlbSA9IHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IGFueTtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBpY29uPzogc3RyaW5nOyAgIC8vIEFkZGVkOiBPcHRpb25hbCBpY29uIGNsYXNzIChlLmcuLCAncmktaG9tZS1saW5lJylcbiAgY2xhc3M/OiBzdHJpbmc7ICAvLyBBZGRlZDogQ3VzdG9tIGNsYXNzIGZvciBzcGVjaWZpYyBpdGVtIHdyYXBwZXJcbiAgZGF0YT86IGFueTsgICAgICAvLyBBZGRlZDogRXh0cmEgZGF0YSBwYXlsb2FkIGZvciBjdXN0b20gdGVtcGxhdGVzXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLXNlZ21lbnQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZV0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2VnbWVudGVkQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgICNjb250YWluZXJcbiAgICAgIFtjbGFzc109XCJjbihcbiAgICAgICAgJ3JlbGF0aXZlIGZsZXggaXRlbXMtY2VudGVyIHAtMSBiZy1tdXRlZCByb3VuZGVkLWxnIHNlbGVjdC1ub25lIHctZnVsbCBnYXAtMScsXG4gICAgICAgIGNsYXNzXG4gICAgICApXCJcbiAgICAgIHJvbGU9XCJ0YWJsaXN0XCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgdG9wLTEgYm90dG9tLTEgYmctYmFja2dyb3VuZCBzaGFkb3ctc20gcm91bmRlZC1tZCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgZWFzZS1bY3ViaWMtYmV6aWVyKDAuMiwwLjAsMC4yLDEpXVwiXG4gICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cImdsaWRlckxlZnRcIlxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiZ2xpZGVyV2lkdGhcIlxuICAgICAgICBbY2xhc3Mub3BhY2l0eS0wXT1cIiFoYXNWYWx1ZVwiXG4gICAgICA+PC9kaXY+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIlxuICAgICAgICAjaXRlbUVsc1xuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgcm9sZT1cInRhYlwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkIHx8IGRpc2FibGVkXCJcbiAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJ2YWx1ZSA9PT0gaXRlbS52YWx1ZVwiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3QoaXRlbS52YWx1ZSlcIlxuICAgICAgICBbY2xhc3NdPVwiY24oXG4gICAgICAgICAgJ3JlbGF0aXZlIHotMTAgZmxleC0xIHB4LTMgcHktMS41IHRleHQtc20gZm9udC1tZWRpdW0gdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMjAwIHJvdW5kZWQtbWQgdGV4dC1jZW50ZXIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcgZm9jdXMtdmlzaWJsZTpyaW5nLW9mZnNldC0yJyxcbiAgICAgICAgICAnZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTInLFxuICAgICAgICAgIHZhbHVlID09PSBpdGVtLnZhbHVlXG4gICAgICAgICAgICA/ICd0ZXh0LWZvcmVncm91bmQnXG4gICAgICAgICAgICA6ICd0ZXh0LW11dGVkLWZvcmVncm91bmQgaG92ZXI6dGV4dC1mb3JlZ3JvdW5kLzcwJyxcbiAgICAgICAgICBpdGVtLmRpc2FibGVkICYmICdvcGFjaXR5LTUwIGN1cnNvci1ub3QtYWxsb3dlZCcsXG4gICAgICAgICAgaXRlbS5jbGFzc1xuICAgICAgICApXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1UZW1wbGF0ZTsgZWxzZSBkZWZhdWx0Q29udGVudFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtLCBzZWxlY3RlZDogdmFsdWUgPT09IGl0ZW0udmFsdWUgfVwiPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDb250ZW50PlxuICAgICAgICAgIDxpICpuZ0lmPVwiaXRlbS5pY29uXCIgW2NsYXNzXT1cIml0ZW0uaWNvblwiPjwvaT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRydW5jYXRlXCI+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgOmhvc3Qge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICBgXVxufSlcbmV4cG9ydCBjbGFzcyBTZWdtZW50ZWRDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgaXRlbXM6IFNlZ21lbnRJdGVtW10gPSBbXTtcbiAgQElucHV0KCkgY2xhc3MgPSAnJztcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgaXRlbVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjsgLy8gQWxsb3cgY3VzdG9tIGNvbnRlbnRcblxuICB2YWx1ZTogYW55ID0gbnVsbDtcbiAgZ2xpZGVyTGVmdCA9IDA7XG4gIGdsaWRlcldpZHRoID0gMDtcbiAgaGFzVmFsdWUgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkcmVuKCdpdGVtRWxzJykgaXRlbUVsZW1lbnRzITogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PjtcblxuICBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG4gIG9uVG91Y2hlZDogYW55ID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlR2xpZGVyKCkpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIC8vIFJlY2FsY3VsYXRlIGlmIGl0ZW1zIGNoYW5nZSBvciBpZiB2YWx1ZSBjaGFuZ2VzIGV4dGVybmFsbHlcbiAgICBpZiAoY2hhbmdlc1snaXRlbXMnXSAmJiAhY2hhbmdlc1snaXRlbXMnXS5maXJzdENoYW5nZSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnVwZGF0ZUdsaWRlcigpKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3QodmFsOiBhbnkpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLml0ZW1zLmZpbmQoaSA9PiBpLnZhbHVlID09PSB2YWwpO1xuICAgIGlmIChpdGVtPy5kaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgdGhpcy52YWx1ZSA9IHZhbDtcbiAgICB0aGlzLm9uQ2hhbmdlKHZhbCk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB0aGlzLnVwZGF0ZUdsaWRlcigpO1xuICB9XG5cbiAgdXBkYXRlR2xpZGVyKCkge1xuICAgIGlmICghdGhpcy5pdGVtRWxlbWVudHMgfHwgIXRoaXMuaXRlbXMubGVuZ3RoKSByZXR1cm47XG5cbiAgICBjb25zdCBpbmRleCA9IHRoaXMuaXRlbXMuZmluZEluZGV4KGkgPT4gaS52YWx1ZSA9PT0gdGhpcy52YWx1ZSk7XG5cbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICB0aGlzLmhhc1ZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLmdsaWRlcldpZHRoID0gMDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhY3RpdmVFbGVtZW50ID0gdGhpcy5pdGVtRWxlbWVudHMuZ2V0KGluZGV4KT8ubmF0aXZlRWxlbWVudDtcblxuICAgIGlmIChhY3RpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLmhhc1ZhbHVlID0gdHJ1ZTtcbiAgICAgIHRoaXMuZ2xpZGVyTGVmdCA9IGFjdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdDtcbiAgICAgIHRoaXMuZ2xpZGVyV2lkdGggPSBhY3RpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENWQSBJbXBsZW1lbnRhdGlvblxuICB3cml0ZVZhbHVlKHZhbDogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbDtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlR2xpZGVyKCkpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7IHRoaXMub25DaGFuZ2UgPSBmbjsgfVxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7IHRoaXMub25Ub3VjaGVkID0gZm47IH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjbiA9IGNuO1xufVxuIl19
|
|
@@ -10,6 +10,8 @@ export class SelectItemComponent {
|
|
|
10
10
|
value;
|
|
11
11
|
class = '';
|
|
12
12
|
selected = false;
|
|
13
|
+
disabled = false;
|
|
14
|
+
multiSelect = false; // Will be set by parent component
|
|
13
15
|
hidden = false;
|
|
14
16
|
constructor(selectService, el) {
|
|
15
17
|
this.selectService = selectService;
|
|
@@ -17,33 +19,85 @@ export class SelectItemComponent {
|
|
|
17
19
|
}
|
|
18
20
|
// Helper method for the parent to get the searchable text
|
|
19
21
|
getLabel() {
|
|
20
|
-
return this.el.nativeElement.
|
|
22
|
+
return this.el.nativeElement.textContent?.trim() || '';
|
|
23
|
+
}
|
|
24
|
+
getItemClasses() {
|
|
25
|
+
return cn(
|
|
26
|
+
// Base state
|
|
27
|
+
'focus:bg-accent focus:text-accent-foreground',
|
|
28
|
+
// Hover states (only if not disabled)
|
|
29
|
+
!this.disabled && [
|
|
30
|
+
'cursor-pointer',
|
|
31
|
+
'hover:bg-accent hover:text-accent-foreground'
|
|
32
|
+
],
|
|
33
|
+
// Selected state
|
|
34
|
+
this.selected && [
|
|
35
|
+
this.multiSelect
|
|
36
|
+
? 'bg-primary/5 text-foreground'
|
|
37
|
+
: 'bg-accent text-accent-foreground'
|
|
38
|
+
],
|
|
39
|
+
// Disabled state
|
|
40
|
+
this.disabled && [
|
|
41
|
+
'opacity-50',
|
|
42
|
+
'cursor-not-allowed',
|
|
43
|
+
'hover:bg-transparent hover:text-foreground'
|
|
44
|
+
]);
|
|
21
45
|
}
|
|
22
46
|
onClick(event) {
|
|
23
|
-
if (this.hidden)
|
|
47
|
+
if (this.hidden || this.disabled)
|
|
24
48
|
return;
|
|
25
49
|
event.stopPropagation();
|
|
26
50
|
if (this.selectService) {
|
|
27
|
-
|
|
28
|
-
|
|
51
|
+
const label = this.getLabel();
|
|
52
|
+
if (this.multiSelect) {
|
|
53
|
+
// For multi-select, toggle selection
|
|
54
|
+
this.selected = !this.selected;
|
|
55
|
+
}
|
|
56
|
+
// For both single and multi-select, notify parent
|
|
29
57
|
this.selectService.registerClick(this.value, label);
|
|
30
58
|
}
|
|
31
59
|
}
|
|
32
60
|
cn = cn;
|
|
33
61
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SelectItemComponent, deps: [{ token: i1.SelectService, optional: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
34
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: SelectItemComponent, isStandalone: true, selector: "tolle-select-item", inputs: { value: "value", class: "class", selected: "selected" }, host: { listeners: { "click": "onClick($event)" } }, ngImport: i0, template: `
|
|
62
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: SelectItemComponent, isStandalone: true, selector: "tolle-select-item", inputs: { value: "value", class: "class", selected: "selected", disabled: "disabled", multiSelect: "multiSelect" }, host: { listeners: { "click": "onClick($event)" } }, ngImport: i0, template: `
|
|
35
63
|
<div
|
|
36
64
|
*ngIf="!hidden"
|
|
37
65
|
[class]="cn(
|
|
38
|
-
'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none
|
|
39
|
-
|
|
66
|
+
'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors',
|
|
67
|
+
getItemClasses(),
|
|
40
68
|
class
|
|
41
69
|
)"
|
|
70
|
+
[attr.aria-disabled]="disabled"
|
|
71
|
+
[attr.aria-selected]="selected"
|
|
72
|
+
role="option"
|
|
42
73
|
>
|
|
43
|
-
|
|
74
|
+
<!-- Single Select: Checkmark -->
|
|
75
|
+
<span *ngIf="!multiSelect && selected" class="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
|
|
44
76
|
<i class="ri-check-line text-primary"></i>
|
|
45
77
|
</span>
|
|
46
|
-
|
|
78
|
+
|
|
79
|
+
<!-- Multi-Select: Checkbox -->
|
|
80
|
+
<span *ngIf="multiSelect" class="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
|
|
81
|
+
<div [class]="cn(
|
|
82
|
+
'flex h-4 w-4 items-center justify-center rounded-sm border transition-all duration-200',
|
|
83
|
+
selected ? 'border-primary bg-primary text-primary-foreground' : 'border-input'
|
|
84
|
+
)">
|
|
85
|
+
<i [class]="cn(
|
|
86
|
+
'ri-check-line text-xs transition-all duration-200',
|
|
87
|
+
selected ? 'opacity-100 scale-100' : 'opacity-0 scale-75'
|
|
88
|
+
)"></i>
|
|
89
|
+
</div>
|
|
90
|
+
</span>
|
|
91
|
+
|
|
92
|
+
<!-- Content -->
|
|
93
|
+
<span class="flex-1 truncate">
|
|
94
|
+
<ng-content></ng-content>
|
|
95
|
+
</span>
|
|
96
|
+
|
|
97
|
+
<!-- Disabled indicator -->
|
|
98
|
+
<span *ngIf="disabled && !selected" class="ml-2 text-xs text-muted-foreground/50">
|
|
99
|
+
<i class="ri-forbid-line"></i>
|
|
100
|
+
</span>
|
|
47
101
|
</div>
|
|
48
102
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
49
103
|
}
|
|
@@ -57,15 +111,41 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
57
111
|
<div
|
|
58
112
|
*ngIf="!hidden"
|
|
59
113
|
[class]="cn(
|
|
60
|
-
'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none
|
|
61
|
-
|
|
114
|
+
'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors',
|
|
115
|
+
getItemClasses(),
|
|
62
116
|
class
|
|
63
117
|
)"
|
|
118
|
+
[attr.aria-disabled]="disabled"
|
|
119
|
+
[attr.aria-selected]="selected"
|
|
120
|
+
role="option"
|
|
64
121
|
>
|
|
65
|
-
|
|
122
|
+
<!-- Single Select: Checkmark -->
|
|
123
|
+
<span *ngIf="!multiSelect && selected" class="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
|
|
66
124
|
<i class="ri-check-line text-primary"></i>
|
|
67
125
|
</span>
|
|
68
|
-
|
|
126
|
+
|
|
127
|
+
<!-- Multi-Select: Checkbox -->
|
|
128
|
+
<span *ngIf="multiSelect" class="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
|
|
129
|
+
<div [class]="cn(
|
|
130
|
+
'flex h-4 w-4 items-center justify-center rounded-sm border transition-all duration-200',
|
|
131
|
+
selected ? 'border-primary bg-primary text-primary-foreground' : 'border-input'
|
|
132
|
+
)">
|
|
133
|
+
<i [class]="cn(
|
|
134
|
+
'ri-check-line text-xs transition-all duration-200',
|
|
135
|
+
selected ? 'opacity-100 scale-100' : 'opacity-0 scale-75'
|
|
136
|
+
)"></i>
|
|
137
|
+
</div>
|
|
138
|
+
</span>
|
|
139
|
+
|
|
140
|
+
<!-- Content -->
|
|
141
|
+
<span class="flex-1 truncate">
|
|
142
|
+
<ng-content></ng-content>
|
|
143
|
+
</span>
|
|
144
|
+
|
|
145
|
+
<!-- Disabled indicator -->
|
|
146
|
+
<span *ngIf="disabled && !selected" class="ml-2 text-xs text-muted-foreground/50">
|
|
147
|
+
<i class="ri-forbid-line"></i>
|
|
148
|
+
</span>
|
|
69
149
|
</div>
|
|
70
150
|
`,
|
|
71
151
|
}]
|
|
@@ -77,8 +157,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
77
157
|
type: Input
|
|
78
158
|
}], selected: [{
|
|
79
159
|
type: Input
|
|
160
|
+
}], disabled: [{
|
|
161
|
+
type: Input
|
|
162
|
+
}], multiSelect: [{
|
|
163
|
+
type: Input
|
|
80
164
|
}], onClick: [{
|
|
81
165
|
type: HostListener,
|
|
82
166
|
args: ['click', ['$event']]
|
|
83
167
|
}] } });
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9zZWxlY3QtaXRlbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFjLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQzs7OztBQWlEaEMsTUFBTSxPQUFPLG1CQUFtQjtJQVVSO0lBQ1o7SUFWRCxLQUFLLENBQU07SUFDWCxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ1gsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyxrQ0FBa0M7SUFFaEUsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUVmLFlBQ3NCLGFBQTRCLEVBQ3hDLEVBQWM7UUFERixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUN4QyxPQUFFLEdBQUYsRUFBRSxDQUFZO0lBQ3JCLENBQUM7SUFFSiwwREFBMEQ7SUFDMUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN6RCxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sRUFBRTtRQUNQLGFBQWE7UUFDYiw4Q0FBOEM7UUFFOUMsc0NBQXNDO1FBQ3RDLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSTtZQUNoQixnQkFBZ0I7WUFDaEIsOENBQThDO1NBQy9DO1FBRUQsaUJBQWlCO1FBQ2pCLElBQUksQ0FBQyxRQUFRLElBQUk7WUFDZixJQUFJLENBQUMsV0FBVztnQkFDZCxDQUFDLENBQUMsOEJBQThCO2dCQUNoQyxDQUFDLENBQUMsa0NBQWtDO1NBQ3ZDO1FBRUQsaUJBQWlCO1FBQ2pCLElBQUksQ0FBQyxRQUFRLElBQUk7WUFDZixZQUFZO1lBQ1osb0JBQW9CO1lBQ3BCLDRDQUE0QztTQUM3QyxDQUNGLENBQUM7SUFDSixDQUFDO0lBR0QsT0FBTyxDQUFDLEtBQWlCO1FBQ3ZCLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFFekMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUU5QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDckIscUNBQXFDO2dCQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNqQyxDQUFDO1lBQ0Qsa0RBQWtEO1lBQ2xELElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEQsQ0FBQztJQUNILENBQUM7SUFFUyxFQUFFLEdBQUcsRUFBRSxDQUFDO3dHQS9EUCxtQkFBbUI7NEZBQW5CLG1CQUFtQixzUEExQ3BCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0NULDJEQXpDUyxZQUFZOzs0RkEyQ1gsbUJBQW1CO2tCQTlDL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Q1Q7aUJBQ0Y7OzBCQVdJLFFBQVE7a0VBVEYsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkEwQ04sT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgSG9zdExpc3RlbmVyLCBFbGVtZW50UmVmLCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgY24gfSBmcm9tICcuL3V0aWxzL2NuJztcbmltcG9ydCB7U2VsZWN0U2VydmljZX0gZnJvbSAnLi9zZWxlY3Quc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLXNlbGVjdC1pdGVtJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCIhaGlkZGVuXCJcbiAgICAgIFtjbGFzc109XCJjbihcbiAgICAgICAgJ3JlbGF0aXZlIGZsZXggdy1mdWxsIGN1cnNvci1kZWZhdWx0IHNlbGVjdC1ub25lIGl0ZW1zLWNlbnRlciByb3VuZGVkLXNtIHB5LTEuNSBwbC04IHByLTIgdGV4dC1zbSBvdXRsaW5lLW5vbmUgdHJhbnNpdGlvbi1jb2xvcnMnLFxuICAgICAgICBnZXRJdGVtQ2xhc3NlcygpLFxuICAgICAgICBjbGFzc1xuICAgICAgKVwiXG4gICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwic2VsZWN0ZWRcIlxuICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgPlxuICAgICAgPCEtLSBTaW5nbGUgU2VsZWN0OiBDaGVja21hcmsgLS0+XG4gICAgICA8c3BhbiAqbmdJZj1cIiFtdWx0aVNlbGVjdCAmJiBzZWxlY3RlZFwiIGNsYXNzPVwiYWJzb2x1dGUgbGVmdC0yIGZsZXggaC0zLjUgdy0zLjUgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgIDxpIGNsYXNzPVwicmktY2hlY2stbGluZSB0ZXh0LXByaW1hcnlcIj48L2k+XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDwhLS0gTXVsdGktU2VsZWN0OiBDaGVja2JveCAtLT5cbiAgICAgIDxzcGFuICpuZ0lmPVwibXVsdGlTZWxlY3RcIiBjbGFzcz1cImFic29sdXRlIGxlZnQtMiBmbGV4IGgtMy41IHctMy41IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICA8ZGl2IFtjbGFzc109XCJjbihcbiAgICAgICAgICAnZmxleCBoLTQgdy00IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLXNtIGJvcmRlciB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDAnLFxuICAgICAgICAgIHNlbGVjdGVkID8gJ2JvcmRlci1wcmltYXJ5IGJnLXByaW1hcnkgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQnIDogJ2JvcmRlci1pbnB1dCdcbiAgICAgICAgKVwiPlxuICAgICAgICAgIDxpIFtjbGFzc109XCJjbihcbiAgICAgICAgICAgICdyaS1jaGVjay1saW5lIHRleHQteHMgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwJyxcbiAgICAgICAgICAgIHNlbGVjdGVkID8gJ29wYWNpdHktMTAwIHNjYWxlLTEwMCcgOiAnb3BhY2l0eS0wIHNjYWxlLTc1J1xuICAgICAgICAgIClcIj48L2k+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8IS0tIENvbnRlbnQgLS0+XG4gICAgICA8c3BhbiBjbGFzcz1cImZsZXgtMSB0cnVuY2F0ZVwiPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDwhLS0gRGlzYWJsZWQgaW5kaWNhdG9yIC0tPlxuICAgICAgPHNwYW4gKm5nSWY9XCJkaXNhYmxlZCAmJiAhc2VsZWN0ZWRcIiBjbGFzcz1cIm1sLTIgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmQvNTBcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJyaS1mb3JiaWQtbGluZVwiPjwvaT5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0SXRlbUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHZhbHVlOiBhbnk7XG4gIEBJbnB1dCgpIGNsYXNzID0gJyc7XG4gIEBJbnB1dCgpIHNlbGVjdGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIG11bHRpU2VsZWN0ID0gZmFsc2U7IC8vIFdpbGwgYmUgc2V0IGJ5IHBhcmVudCBjb21wb25lbnRcblxuICBoaWRkZW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHNlbGVjdFNlcnZpY2U6IFNlbGVjdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZlxuICApIHt9XG5cbiAgLy8gSGVscGVyIG1ldGhvZCBmb3IgdGhlIHBhcmVudCB0byBnZXQgdGhlIHNlYXJjaGFibGUgdGV4dFxuICBnZXRMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQ/LnRyaW0oKSB8fCAnJztcbiAgfVxuXG4gIGdldEl0ZW1DbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNuKFxuICAgICAgLy8gQmFzZSBzdGF0ZVxuICAgICAgJ2ZvY3VzOmJnLWFjY2VudCBmb2N1czp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kJyxcblxuICAgICAgLy8gSG92ZXIgc3RhdGVzIChvbmx5IGlmIG5vdCBkaXNhYmxlZClcbiAgICAgICF0aGlzLmRpc2FibGVkICYmIFtcbiAgICAgICAgJ2N1cnNvci1wb2ludGVyJyxcbiAgICAgICAgJ2hvdmVyOmJnLWFjY2VudCBob3Zlcjp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kJ1xuICAgICAgXSxcblxuICAgICAgLy8gU2VsZWN0ZWQgc3RhdGVcbiAgICAgIHRoaXMuc2VsZWN0ZWQgJiYgW1xuICAgICAgICB0aGlzLm11bHRpU2VsZWN0XG4gICAgICAgICAgPyAnYmctcHJpbWFyeS81IHRleHQtZm9yZWdyb3VuZCdcbiAgICAgICAgICA6ICdiZy1hY2NlbnQgdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCdcbiAgICAgIF0sXG5cbiAgICAgIC8vIERpc2FibGVkIHN0YXRlXG4gICAgICB0aGlzLmRpc2FibGVkICYmIFtcbiAgICAgICAgJ29wYWNpdHktNTAnLFxuICAgICAgICAnY3Vyc29yLW5vdC1hbGxvd2VkJyxcbiAgICAgICAgJ2hvdmVyOmJnLXRyYW5zcGFyZW50IGhvdmVyOnRleHQtZm9yZWdyb3VuZCdcbiAgICAgIF1cbiAgICApO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMuaGlkZGVuIHx8IHRoaXMuZGlzYWJsZWQpIHJldHVybjtcblxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICh0aGlzLnNlbGVjdFNlcnZpY2UpIHtcbiAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5nZXRMYWJlbCgpO1xuXG4gICAgICBpZiAodGhpcy5tdWx0aVNlbGVjdCkge1xuICAgICAgICAvLyBGb3IgbXVsdGktc2VsZWN0LCB0b2dnbGUgc2VsZWN0aW9uXG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSAhdGhpcy5zZWxlY3RlZDtcbiAgICAgIH1cbiAgICAgIC8vIEZvciBib3RoIHNpbmdsZSBhbmQgbXVsdGktc2VsZWN0LCBub3RpZnkgcGFyZW50XG4gICAgICB0aGlzLnNlbGVjdFNlcnZpY2UucmVnaXN0ZXJDbGljayh0aGlzLnZhbHVlLCBsYWJlbCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNuID0gY247XG59XG4iXX0=
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Component, Input, forwardRef, ViewChild, HostListener, ContentChildren } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
|
|
4
|
-
|
|
4
|
+
// 1. Import 'size' middleware
|
|
5
|
+
import { computePosition, flip, shift, offset, autoUpdate, size } from '@floating-ui/dom';
|
|
5
6
|
import { cn } from './utils/cn';
|
|
6
7
|
import { SelectItemComponent } from './select-item.component';
|
|
7
8
|
import { Subscription } from 'rxjs';
|
|
@@ -45,44 +46,25 @@ export class SelectComponent {
|
|
|
45
46
|
this.close();
|
|
46
47
|
}));
|
|
47
48
|
}
|
|
48
|
-
// SIMPLIFIED: Zardui-inspired trigger styling
|
|
49
49
|
get computedTriggerClass() {
|
|
50
|
-
return cn(
|
|
51
|
-
// Base styles
|
|
52
|
-
'flex w-full items-center justify-between rounded-md border transition-all duration-200', 'bg-background text-foreground',
|
|
53
|
-
// Border and shadow
|
|
54
|
-
'border-input shadow-sm',
|
|
55
|
-
// Sizing
|
|
56
|
-
this.size === 'xs' && 'h-8 px-2 text-xs', this.size === 'sm' && 'h-9 px-3 text-sm', this.size === 'default' && 'h-10 px-3 text-sm', this.size === 'lg' && 'h-11 px-4 text-base',
|
|
57
|
-
// Focus state - SIMPLE LIKE ZARDUI
|
|
58
|
-
!(this.readonly || this.disabled) && [
|
|
50
|
+
return cn('flex w-full items-center justify-between rounded-md border transition-all duration-200', 'bg-background text-foreground', 'border-input shadow-sm', this.size === 'xs' && 'h-8 px-2 text-xs', this.size === 'sm' && 'h-9 px-3 text-sm', this.size === 'default' && 'h-10 px-3 text-sm', this.size === 'lg' && 'h-11 px-4 text-base', !(this.readonly || this.disabled) && [
|
|
59
51
|
'focus:outline-none',
|
|
60
52
|
'focus:ring-4',
|
|
61
53
|
'focus:ring-ring/30',
|
|
62
54
|
'focus:ring-offset-0',
|
|
63
55
|
'focus:shadow-none',
|
|
64
|
-
// Border darkens on focus automatically
|
|
65
56
|
'focus:border-primary/80'
|
|
66
|
-
],
|
|
67
|
-
// Hover state
|
|
68
|
-
!(this.readonly || this.disabled) && 'hover:border-accent',
|
|
69
|
-
// Disabled state
|
|
70
|
-
this.disabled && [
|
|
57
|
+
], !(this.readonly || this.disabled) && 'hover:border-accent', this.disabled && [
|
|
71
58
|
'cursor-not-allowed opacity-50',
|
|
72
59
|
'border-opacity-50'
|
|
73
|
-
],
|
|
74
|
-
// Readonly state
|
|
75
|
-
this.readonly && [
|
|
60
|
+
], this.readonly && [
|
|
76
61
|
'cursor-default',
|
|
77
62
|
'border-dashed',
|
|
78
63
|
!this.disabled && 'focus:ring-0 focus:border-opacity-100'
|
|
79
64
|
], this.class);
|
|
80
65
|
}
|
|
81
|
-
// UPDATED: Dynamic icon sizing relative to the trigger size
|
|
82
66
|
get iconClass() {
|
|
83
|
-
return cn('ri-arrow-down-s-line text-muted-foreground ml-2 transition-transform duration-200', this.isOpen ? 'rotate-180' : '', (this.size === 'xs' || this.size === 'sm') ? 'text-[14px]' : 'text-[18px]',
|
|
84
|
-
// Hide or fade icon when interaction is blocked
|
|
85
|
-
(this.disabled || this.readonly) && 'opacity-30');
|
|
67
|
+
return cn('ri-arrow-down-s-line text-muted-foreground ml-2 transition-transform duration-200', this.isOpen ? 'rotate-180' : '', (this.size === 'xs' || this.size === 'sm') ? 'text-[14px]' : 'text-[18px]', (this.disabled || this.readonly) && 'opacity-30');
|
|
86
68
|
}
|
|
87
69
|
ngAfterContentInit() {
|
|
88
70
|
this.updateItemSelection();
|
|
@@ -102,9 +84,7 @@ export class SelectComponent {
|
|
|
102
84
|
}
|
|
103
85
|
open() {
|
|
104
86
|
this.isOpen = true;
|
|
105
|
-
// Trigger focus on the button for focus styling
|
|
106
87
|
this.trigger.nativeElement.focus();
|
|
107
|
-
// Tick to ensure DOM is rendered before positioning
|
|
108
88
|
setTimeout(() => this.updatePosition());
|
|
109
89
|
}
|
|
110
90
|
close() {
|
|
@@ -119,10 +99,25 @@ export class SelectComponent {
|
|
|
119
99
|
return;
|
|
120
100
|
this.cleanupAutoUpdate = autoUpdate(this.trigger.nativeElement, this.popover.nativeElement, () => {
|
|
121
101
|
computePosition(this.trigger.nativeElement, this.popover.nativeElement, {
|
|
102
|
+
strategy: 'fixed', // 3. Use fixed strategy
|
|
122
103
|
placement: 'bottom-start',
|
|
123
|
-
middleware: [
|
|
124
|
-
|
|
104
|
+
middleware: [
|
|
105
|
+
offset(4),
|
|
106
|
+
flip(),
|
|
107
|
+
shift({ padding: 8 }),
|
|
108
|
+
// 4. Use size middleware to sync width and handle constraints
|
|
109
|
+
size({
|
|
110
|
+
apply({ rects, elements, availableHeight }) {
|
|
111
|
+
Object.assign(elements.floating.style, {
|
|
112
|
+
width: `${rects.reference.width}px`,
|
|
113
|
+
maxHeight: `${availableHeight}px`
|
|
114
|
+
});
|
|
115
|
+
},
|
|
116
|
+
}),
|
|
117
|
+
],
|
|
118
|
+
}).then(({ x, y, strategy }) => {
|
|
125
119
|
Object.assign(this.popover.nativeElement.style, {
|
|
120
|
+
position: strategy, // 5. Apply strategy to style
|
|
126
121
|
left: `${x}px`,
|
|
127
122
|
top: `${y}px`,
|
|
128
123
|
visibility: 'visible',
|
|
@@ -173,7 +168,7 @@ export class SelectComponent {
|
|
|
173
168
|
multi: true
|
|
174
169
|
}
|
|
175
170
|
], queries: [{ propertyName: "items", predicate: SelectItemComponent, descendants: true }], viewQueries: [{ propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }, { propertyName: "popover", first: true, predicate: ["popover"], descendants: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: `
|
|
176
|
-
<div [class]="cn('w-full', 'size-' + size)" #container>
|
|
171
|
+
<div [class]="cn('relative w-full', 'size-' + size)" #container>
|
|
177
172
|
<button
|
|
178
173
|
type="button"
|
|
179
174
|
#trigger
|
|
@@ -190,8 +185,7 @@ export class SelectComponent {
|
|
|
190
185
|
<div
|
|
191
186
|
#popover
|
|
192
187
|
*ngIf="isOpen"
|
|
193
|
-
|
|
194
|
-
class="absolute bg-popover z-50 min-w-full max-h-[300px] overflow-auto flex flex-col rounded-md border border-border text-popover-foreground shadow-md"
|
|
188
|
+
class="fixed bg-popover z-[999] overflow-auto flex flex-col rounded-md border border-border text-popover-foreground shadow-md"
|
|
195
189
|
style="visibility: hidden; top: 0; left: 0;">
|
|
196
190
|
<div *ngIf="searchable" class="p-2 border-b border-border bg-popover h-auto">
|
|
197
191
|
<tolle-input
|
|
@@ -212,7 +206,7 @@ export class SelectComponent {
|
|
|
212
206
|
</div>
|
|
213
207
|
</div>
|
|
214
208
|
</div>
|
|
215
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "
|
|
209
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: InputComponent, selector: "tolle-input", inputs: ["id", "label", "hint", "errorMessage", "type", "placeholder", "size", "containerClass", "class", "disabled", "readonly", "error", "hideHintOnFocus"] }] });
|
|
216
210
|
}
|
|
217
211
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SelectComponent, decorators: [{
|
|
218
212
|
type: Component,
|
|
@@ -229,7 +223,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
229
223
|
}
|
|
230
224
|
],
|
|
231
225
|
template: `
|
|
232
|
-
<div [class]="cn('w-full', 'size-' + size)" #container>
|
|
226
|
+
<div [class]="cn('relative w-full', 'size-' + size)" #container>
|
|
233
227
|
<button
|
|
234
228
|
type="button"
|
|
235
229
|
#trigger
|
|
@@ -246,8 +240,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
246
240
|
<div
|
|
247
241
|
#popover
|
|
248
242
|
*ngIf="isOpen"
|
|
249
|
-
|
|
250
|
-
class="absolute bg-popover z-50 min-w-full max-h-[300px] overflow-auto flex flex-col rounded-md border border-border text-popover-foreground shadow-md"
|
|
243
|
+
class="fixed bg-popover z-[999] overflow-auto flex flex-col rounded-md border border-border text-popover-foreground shadow-md"
|
|
251
244
|
style="visibility: hidden; top: 0; left: 0;">
|
|
252
245
|
<div *ngIf="searchable" class="p-2 border-b border-border bg-popover h-auto">
|
|
253
246
|
<tolle-input
|
|
@@ -298,4 +291,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
298
291
|
type: HostListener,
|
|
299
292
|
args: ['document:mousedown', ['$event']]
|
|
300
293
|
}] } });
|
|
301
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvc2VsZWN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxVQUFVLEVBRVYsU0FBUyxFQUVULFlBQVksRUFDWixlQUFlLEVBR2hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEYsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7O0FBd0RuRCxNQUFNLE9BQU8sZUFBZTtJQTBCTjtJQXpCWCxXQUFXLEdBQUcsa0JBQWtCLENBQUM7SUFDakMsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNYLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUNuQixJQUFJLEdBQW1DLFNBQVMsQ0FBQztJQUNqRCxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBRUosT0FBTyxDQUFjO0lBQ3JCLE9BQU8sQ0FBYztJQUNuQixTQUFTLENBQWM7SUFDYyxLQUFLLENBQWtDO0lBRTVGLEdBQUcs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QUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFZ0IsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTO2dCQUNFLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFDSSxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ3VDLEtBQUs7c0JBQWpFLGVBQWU7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQStKM0QsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLG9CQUFvQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgZm9yd2FyZFJlZixcbiAgRWxlbWVudFJlZixcbiAgVmlld0NoaWxkLFxuICBPbkRlc3Ryb3ksXG4gIEhvc3RMaXN0ZW5lcixcbiAgQ29udGVudENoaWxkcmVuLFxuICBRdWVyeUxpc3QsXG4gIEFmdGVyQ29udGVudEluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SLCBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNvbXB1dGVQb3NpdGlvbiwgZmxpcCwgc2hpZnQsIG9mZnNldCwgYXV0b1VwZGF0ZSB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuaW1wb3J0IHsgY24gfSBmcm9tICcuL3V0aWxzL2NuJztcbmltcG9ydCB7IFNlbGVjdEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL3NlbGVjdC1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNlbGVjdFNlcnZpY2UgfSBmcm9tICcuL3NlbGVjdC5zZXJ2aWNlJztcbmltcG9ydCB7IElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0b2xsZS1zZWxlY3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgSW5wdXRDb21wb25lbnRdLFxuICBwcm92aWRlcnM6IFtcbiAgICBTZWxlY3RTZXJ2aWNlLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2VsZWN0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgW2NsYXNzXT1cImNuKCd3LWZ1bGwnLCAnc2l6ZS0nICsgc2l6ZSlcIiAjY29udGFpbmVyPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgI3RyaWdnZXJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZSgpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW2NsYXNzXT1cImNvbXB1dGVkVHJpZ2dlckNsYXNzXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0cnVuY2F0ZVwiIFtjbGFzcy50ZXh0LW11dGVkLWZvcmVncm91bmRdPVwiIXNlbGVjdGVkTGFiZWxcIj5cbiAgICAgICAgICB7eyBzZWxlY3RlZExhYmVsIHx8IHBsYWNlaG9sZGVyIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGkgW2NsYXNzXT1cImljb25DbGFzc1wiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8ZGl2XG4gICAgICAgICNwb3BvdmVyXG4gICAgICAgICpuZ0lmPVwiaXNPcGVuXCJcbiAgICAgICAgW25nU3R5bGVdPVwie21pbldpZHRoOiBjb250YWluZXIuY2xpZW50V2lkdGgrJ3B4J31cIlxuICAgICAgICBjbGFzcz1cImFic29sdXRlIGJnLXBvcG92ZXIgei01MCBtaW4tdy1mdWxsIG1heC1oLVszMDBweF0gb3ZlcmZsb3ctYXV0byBmbGV4IGZsZXgtY29sIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ib3JkZXIgdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgc2hhZG93LW1kXCJcbiAgICAgICAgc3R5bGU9XCJ2aXNpYmlsaXR5OiBoaWRkZW47IHRvcDogMDsgbGVmdDogMDtcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInNlYXJjaGFibGVcIiBjbGFzcz1cInAtMiBib3JkZXItYiBib3JkZXItYm9yZGVyIGJnLXBvcG92ZXIgaC1hdXRvXCI+XG4gICAgICAgICAgPHRvbGxlLWlucHV0XG4gICAgICAgICAgICBzaXplPVwieHNcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hRdWVyeVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlYXJjaENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICA8aSBwcmVmaXggY2xhc3M9XCJyaS1zZWFyY2gtbGluZVwiPjwvaT5cbiAgICAgICAgICA8L3RvbGxlLWlucHV0PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwicC0xIG92ZXJmbG93LXktYXV0byBzY3JvbGxiYXItaGlkZGVuIGdyb3cgaC1mdWxsIHctZnVsbFwiPlxuICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm9SZXN1bHRzXCIgY2xhc3M9XCJweS02IHRleHQtY2VudGVyIHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgICBObyByZXN1bHRzIGZvdW5kLlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnU2VsZWN0IGFuIG9wdGlvbic7XG4gIEBJbnB1dCgpIGNsYXNzID0gJyc7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNlYXJjaGFibGUgPSBmYWxzZTtcbiAgQElucHV0KCkgc2l6ZTogJ3hzJyB8ICdzbScgfCAnZGVmYXVsdCcgfCAnbGcnID0gJ2RlZmF1bHQnO1xuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ3RyaWdnZXInKSB0cmlnZ2VyITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgncG9wb3ZlcicpIHBvcG92ZXIhOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXIhOiBFbGVtZW50UmVmO1xuICBAQ29udGVudENoaWxkcmVuKFNlbGVjdEl0ZW1Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgaXRlbXMhOiBRdWVyeUxpc3Q8U2VsZWN0SXRlbUNvbXBvbmVudD47XG5cbiAgcHJpdmF0ZSBzdWIgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHNlYXJjaFF1ZXJ5ID0gJyc7XG4gIG5vUmVzdWx0cyA9IGZhbHNlO1xuICBpc09wZW4gPSBmYWxzZTtcbiAgdmFsdWU6IGFueSA9IG51bGw7XG4gIHNlbGVjdGVkTGFiZWwgPSAnJztcbiAgY2xlYW51cEF1dG9VcGRhdGU/OiAoKSA9PiB2b2lkO1xuXG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7fTtcblxuICBwcm90ZWN0ZWQgY24gPSBjbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlbGVjdFNlcnZpY2U6IFNlbGVjdFNlcnZpY2UpIHtcbiAgICB0aGlzLnN1Yi5hZGQoXG4gICAgICB0aGlzLnNlbGVjdFNlcnZpY2Uuc2VsZWN0ZWRWYWx1ZSQuc3Vic2NyaWJlKHZhbCA9PiB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWw7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodmFsKTtcbiAgICAgICAgdGhpcy51cGRhdGVJdGVtU2VsZWN0aW9uKCk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnN1Yi5hZGQoXG4gICAgICB0aGlzLnNlbGVjdFNlcnZpY2Uuc2VsZWN0ZWRMYWJlbCQuc3Vic2NyaWJlKGxhYmVsID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZExhYmVsID0gbGFiZWw7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8vIFNJTVBMSUZJRUQ6IFphcmR1aS1pbnNwaXJlZCB0cmlnZ2VyIHN0eWxpbmdcbiAgZ2V0IGNvbXB1dGVkVHJpZ2dlckNsYXNzKCkge1xuICAgIHJldHVybiBjbihcbiAgICAgIC8vIEJhc2Ugc3R5bGVzXG4gICAgICAnZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiByb3VuZGVkLW1kIGJvcmRlciB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDAnLFxuICAgICAgJ2JnLWJhY2tncm91bmQgdGV4dC1mb3JlZ3JvdW5kJyxcblxuICAgICAgLy8gQm9yZGVyIGFuZCBzaGFkb3dcbiAgICAgICdib3JkZXItaW5wdXQgc2hhZG93LXNtJyxcblxuICAgICAgLy8gU2l6aW5nXG4gICAgICB0aGlzLnNpemUgPT09ICd4cycgJiYgJ2gtOCBweC0yIHRleHQteHMnLFxuICAgICAgdGhpcy5zaXplID09PSAnc20nICYmICdoLTkgcHgtMyB0ZXh0LXNtJyxcbiAgICAgIHRoaXMuc2l6ZSA9PT0gJ2RlZmF1bHQnICYmICdoLTEwIHB4LTMgdGV4dC1zbScsXG4gICAgICB0aGlzLnNpemUgPT09ICdsZycgJiYgJ2gtMTEgcHgtNCB0ZXh0LWJhc2UnLFxuXG4gICAgICAvLyBGb2N1cyBzdGF0ZSAtIFNJTVBMRSBMSUtFIFpBUkRVSVxuICAgICAgISh0aGlzLnJlYWRvbmx5IHx8IHRoaXMuZGlzYWJsZWQpICYmIFtcbiAgICAgICAgJ2ZvY3VzOm91dGxpbmUtbm9uZScsXG4gICAgICAgICdmb2N1czpyaW5nLTQnLFxuICAgICAgICAnZm9jdXM6cmluZy1yaW5nLzMwJyxcbiAgICAgICAgJ2ZvY3VzOnJpbmctb2Zmc2V0LTAnLFxuICAgICAgICAnZm9jdXM6c2hhZG93LW5vbmUnLFxuICAgICAgICAvLyBCb3JkZXIgZGFya2VucyBvbiBmb2N1cyBhdXRvbWF0aWNhbGx5XG4gICAgICAgICdmb2N1czpib3JkZXItcHJpbWFyeS84MCdcbiAgICAgIF0sXG5cbiAgICAgIC8vIEhvdmVyIHN0YXRlXG4gICAgICAhKHRoaXMucmVhZG9ubHkgfHwgdGhpcy5kaXNhYmxlZCkgJiYgJ2hvdmVyOmJvcmRlci1hY2NlbnQnLFxuXG4gICAgICAvLyBEaXNhYmxlZCBzdGF0ZVxuICAgICAgdGhpcy5kaXNhYmxlZCAmJiBbXG4gICAgICAgICdjdXJzb3Itbm90LWFsbG93ZWQgb3BhY2l0eS01MCcsXG4gICAgICAgICdib3JkZXItb3BhY2l0eS01MCdcbiAgICAgIF0sXG5cbiAgICAgIC8vIFJlYWRvbmx5IHN0YXRlXG4gICAgICB0aGlzLnJlYWRvbmx5ICYmIFtcbiAgICAgICAgJ2N1cnNvci1kZWZhdWx0JyxcbiAgICAgICAgJ2JvcmRlci1kYXNoZWQnLFxuICAgICAgICAhdGhpcy5kaXNhYmxlZCAmJiAnZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1vcGFjaXR5LTEwMCdcbiAgICAgIF0sXG5cbiAgICAgIHRoaXMuY2xhc3NcbiAgICApO1xuICB9XG5cbiAgLy8gVVBEQVRFRDogRHluYW1pYyBpY29uIHNpemluZyByZWxhdGl2ZSB0byB0aGUgdHJpZ2dlciBzaXplXG4gIGdldCBpY29uQ2xhc3MoKSB7XG4gICAgcmV0dXJuIGNuKFxuICAgICAgJ3JpLWFycm93LWRvd24tcy1saW5lIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBtbC0yIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTIwMCcsXG4gICAgICB0aGlzLmlzT3BlbiA/ICdyb3RhdGUtMTgwJyA6ICcnLFxuICAgICAgKHRoaXMuc2l6ZSA9PT0gJ3hzJyB8fCB0aGlzLnNpemUgPT09ICdzbScpID8gJ3RleHQtWzE0cHhdJyA6ICd0ZXh0LVsxOHB4XScsXG4gICAgICAvLyBIaWRlIG9yIGZhZGUgaWNvbiB3aGVuIGludGVyYWN0aW9uIGlzIGJsb2NrZWRcbiAgICAgICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpICYmICdvcGFjaXR5LTMwJ1xuICAgICk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy51cGRhdGVJdGVtU2VsZWN0aW9uKCk7XG4gICAgdGhpcy5pdGVtcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZUl0ZW1TZWxlY3Rpb24oKSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUl0ZW1TZWxlY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuaXRlbXMpIHtcbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaXRlbS5zZWxlY3RlZCA9IGl0ZW0udmFsdWUgPT09IHRoaXMudmFsdWU7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGUoKSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkgcmV0dXJuO1xuICAgIHRoaXMuaXNPcGVuID8gdGhpcy5jbG9zZSgpIDogdGhpcy5vcGVuKCk7XG4gIH1cblxuICBvcGVuKCkge1xuICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICAvLyBUcmlnZ2VyIGZvY3VzIG9uIHRoZSBidXR0b24gZm9yIGZvY3VzIHN0eWxpbmdcbiAgICB0aGlzLnRyaWdnZXIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIC8vIFRpY2sgdG8gZW5zdXJlIERPTSBpcyByZW5kZXJlZCBiZWZvcmUgcG9zaXRpb25pbmdcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlUG9zaXRpb24oKSk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuc2VhcmNoUXVlcnkgPSAnJztcbiAgICB0aGlzLm9uU2VhcmNoQ2hhbmdlKCcnKTtcbiAgICBpZiAodGhpcy5jbGVhbnVwQXV0b1VwZGF0ZSkgdGhpcy5jbGVhbnVwQXV0b1VwZGF0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVQb3NpdGlvbigpIHtcbiAgICBpZiAoIXRoaXMudHJpZ2dlciB8fCAhdGhpcy5wb3BvdmVyKSByZXR1cm47XG5cbiAgICB0aGlzLmNsZWFudXBBdXRvVXBkYXRlID0gYXV0b1VwZGF0ZShcbiAgICAgIHRoaXMudHJpZ2dlci5uYXRpdmVFbGVtZW50LFxuICAgICAgdGhpcy5wb3BvdmVyLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbXB1dGVQb3NpdGlvbih0aGlzLnRyaWdnZXIubmF0aXZlRWxlbWVudCwgdGhpcy5wb3BvdmVyLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20tc3RhcnQnLFxuICAgICAgICAgIG1pZGRsZXdhcmU6IFtvZmZzZXQoNCksIGZsaXAoKSwgc2hpZnQoeyBwYWRkaW5nOiA4IH0pXSxcbiAgICAgICAgfSkudGhlbigoeyB4LCB5IH0pID0+IHtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMucG9wb3Zlci5uYXRpdmVFbGVtZW50LnN0eWxlLCB7XG4gICAgICAgICAgICBsZWZ0OiBgJHt4fXB4YCxcbiAgICAgICAgICAgIHRvcDogYCR7eX1weGAsXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiAndmlzaWJsZScsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBvblNlYXJjaENoYW5nZShxdWVyeTogc3RyaW5nKSB7XG4gICAgY29uc3QgZmlsdGVyID0gKHF1ZXJ5IHx8ICcnKS50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcbiAgICBsZXQgdmlzaWJsZUNvdW50ID0gMDtcblxuICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGNvbnN0IHRleHQgPSBpdGVtLmdldExhYmVsKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgIGNvbnN0IGlzVmlzaWJsZSA9IHRleHQuaW5jbHVkZXMoZmlsdGVyKTtcbiAgICAgIGl0ZW0uaGlkZGVuID0gIWlzVmlzaWJsZTtcbiAgICAgIGlmIChpc1Zpc2libGUpIHZpc2libGVDb3VudCsrO1xuICAgIH0pO1xuXG4gICAgdGhpcy5ub1Jlc3VsdHMgPSB2aXNpYmxlQ291bnQgPT09IDAgJiYgZmlsdGVyICE9PSAnJztcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gIG9uRG9jdW1lbnRDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLmlzT3BlbiAmJiAhdGhpcy50cmlnZ2VyLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJiAhdGhpcy5wb3BvdmVyLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLnVwZGF0ZUl0ZW1TZWxlY3Rpb24oKTtcbiAgICBpZiAodGhpcy5pdGVtcykge1xuICAgICAgY29uc3QgZm91bmQgPSB0aGlzLml0ZW1zLmZpbmQoaSA9PiBpLnZhbHVlID09PSB2YWx1ZSk7XG4gICAgICBpZiAoZm91bmQpIHRoaXMuc2VsZWN0ZWRMYWJlbCA9IGZvdW5kLmdldExhYmVsKCk7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7IHRoaXMub25DaGFuZ2UgPSBmbjsgfVxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7IHRoaXMub25Ub3VjaGVkID0gZm47IH1cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7IHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkOyB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWIudW5zdWJzY3JpYmUoKTtcbiAgICBpZiAodGhpcy5jbGVhbnVwQXV0b1VwZGF0ZSkgdGhpcy5jbGVhbnVwQXV0b1VwZGF0ZSgpO1xuICB9XG59XG4iXX0=
|
|
294
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvc2VsZWN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxVQUFVLEVBRVYsU0FBUyxFQUVULFlBQVksRUFDWixlQUFlLEVBR2hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLDhCQUE4QjtBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7QUF1RG5ELE1BQU0sT0FBTyxlQUFlO0lBMEJOO0lBekJYLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQztJQUNqQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ1gsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ25CLElBQUksR0FBbUMsU0FBUyxDQUFDO0lBQ2pELFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFSixPQUFPLENBQWM7SUFDckIsT0FBTyxDQUFjO0lBQ25CLFNBQVMsQ0FBYztJQUNj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TyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUM7NEJBQzlDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO29CQUNELFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUNUO2lCQUNGO2tGQUVVLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFZ0IsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTO2dCQUNFLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFDSSxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ3VDLEtBQUs7c0JBQWpFLGVBQWU7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQTBKM0QsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLG9CQUFvQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgZm9yd2FyZFJlZixcbiAgRWxlbWVudFJlZixcbiAgVmlld0NoaWxkLFxuICBPbkRlc3Ryb3ksXG4gIEhvc3RMaXN0ZW5lcixcbiAgQ29udGVudENoaWxkcmVuLFxuICBRdWVyeUxpc3QsXG4gIEFmdGVyQ29udGVudEluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SLCBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbi8vIDEuIEltcG9ydCAnc2l6ZScgbWlkZGxld2FyZVxuaW1wb3J0IHsgY29tcHV0ZVBvc2l0aW9uLCBmbGlwLCBzaGlmdCwgb2Zmc2V0LCBhdXRvVXBkYXRlLCBzaXplIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4vdXRpbHMvY24nO1xuaW1wb3J0IHsgU2VsZWN0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vc2VsZWN0LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2VsZWN0U2VydmljZSB9IGZyb20gJy4vc2VsZWN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2lucHV0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLXNlbGVjdCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBJbnB1dENvbXBvbmVudF0sXG4gIHByb3ZpZGVyczogW1xuICAgIFNlbGVjdFNlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTZWxlY3RDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBbY2xhc3NdPVwiY24oJ3JlbGF0aXZlIHctZnVsbCcsICdzaXplLScgKyBzaXplKVwiICNjb250YWluZXI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAjdHJpZ2dlclxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbY2xhc3NdPVwiY29tcHV0ZWRUcmlnZ2VyQ2xhc3NcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRydW5jYXRlXCIgW2NsYXNzLnRleHQtbXV0ZWQtZm9yZWdyb3VuZF09XCIhc2VsZWN0ZWRMYWJlbFwiPlxuICAgICAgICAgIHt7IHNlbGVjdGVkTGFiZWwgfHwgcGxhY2Vob2xkZXIgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8aSBbY2xhc3NdPVwiaWNvbkNsYXNzXCI+PC9pPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgI3BvcG92ZXJcbiAgICAgICAgKm5nSWY9XCJpc09wZW5cIlxuICAgICAgICBjbGFzcz1cImZpeGVkIGJnLXBvcG92ZXIgei1bOTk5XSBvdmVyZmxvdy1hdXRvIGZsZXggZmxleC1jb2wgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWJvcmRlciB0ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBzaGFkb3ctbWRcIlxuICAgICAgICBzdHlsZT1cInZpc2liaWxpdHk6IGhpZGRlbjsgdG9wOiAwOyBsZWZ0OiAwO1wiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2VhcmNoYWJsZVwiIGNsYXNzPVwicC0yIGJvcmRlci1iIGJvcmRlci1ib3JkZXIgYmctcG9wb3ZlciBoLWF1dG9cIj5cbiAgICAgICAgICA8dG9sbGUtaW5wdXRcbiAgICAgICAgICAgIHNpemU9XCJ4c1wiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFF1ZXJ5XCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VhcmNoQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgIDxpIHByZWZpeCBjbGFzcz1cInJpLXNlYXJjaC1saW5lXCI+PC9pPlxuICAgICAgICAgIDwvdG9sbGUtaW5wdXQ+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTEgb3ZlcmZsb3cteS1hdXRvIHNjcm9sbGJhci1oaWRkZW4gZ3JvdyBoLWZ1bGwgdy1mdWxsXCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJub1Jlc3VsdHNcIiBjbGFzcz1cInB5LTYgdGV4dC1jZW50ZXIgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgICAgICAgIE5vIHJlc3VsdHMgZm91bmQuXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICdTZWxlY3QgYW4gb3B0aW9uJztcbiAgQElucHV0KCkgY2xhc3MgPSAnJztcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgc2VhcmNoYWJsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBzaXplOiAneHMnIHwgJ3NtJyB8ICdkZWZhdWx0JyB8ICdsZycgPSAnZGVmYXVsdCc7XG4gIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgndHJpZ2dlcicpIHRyaWdnZXIhOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdwb3BvdmVyJykgcG9wb3ZlciE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIGNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XG4gIEBDb250ZW50Q2hpbGRyZW4oU2VsZWN0SXRlbUNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBpdGVtcyE6IFF1ZXJ5TGlzdDxTZWxlY3RJdGVtQ29tcG9uZW50PjtcblxuICBwcml2YXRlIHN1YiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgc2VhcmNoUXVlcnkgPSAnJztcbiAgbm9SZXN1bHRzID0gZmFsc2U7XG4gIGlzT3BlbiA9IGZhbHNlO1xuICB2YWx1ZTogYW55ID0gbnVsbDtcbiAgc2VsZWN0ZWRMYWJlbCA9ICcnO1xuICBjbGVhbnVwQXV0b1VwZGF0ZT86ICgpID0+IHZvaWQ7XG5cbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xuICBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHt9O1xuXG4gIHByb3RlY3RlZCBjbiA9IGNuO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2VsZWN0U2VydmljZTogU2VsZWN0U2VydmljZSkge1xuICAgIHRoaXMuc3ViLmFkZChcbiAgICAgIHRoaXMuc2VsZWN0U2VydmljZS5zZWxlY3RlZFZhbHVlJC5zdWJzY3JpYmUodmFsID0+IHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbDtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWwpO1xuICAgICAgICB0aGlzLnVwZGF0ZUl0ZW1TZWxlY3Rpb24oKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3ViLmFkZChcbiAgICAgIHRoaXMuc2VsZWN0U2VydmljZS5zZWxlY3RlZExhYmVsJC5zdWJzY3JpYmUobGFiZWwgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkTGFiZWwgPSBsYWJlbDtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZ2V0IGNvbXB1dGVkVHJpZ2dlckNsYXNzKCkge1xuICAgIHJldHVybiBjbihcbiAgICAgICdmbGV4IHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHJvdW5kZWQtbWQgYm9yZGVyIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMCcsXG4gICAgICAnYmctYmFja2dyb3VuZCB0ZXh0LWZvcmVncm91bmQnLFxuICAgICAgJ2JvcmRlci1pbnB1dCBzaGFkb3ctc20nLFxuICAgICAgdGhpcy5zaXplID09PSAneHMnICYmICdoLTggcHgtMiB0ZXh0LXhzJyxcbiAgICAgIHRoaXMuc2l6ZSA9PT0gJ3NtJyAmJiAnaC05IHB4LTMgdGV4dC1zbScsXG4gICAgICB0aGlzLnNpemUgPT09ICdkZWZhdWx0JyAmJiAnaC0xMCBweC0zIHRleHQtc20nLFxuICAgICAgdGhpcy5zaXplID09PSAnbGcnICYmICdoLTExIHB4LTQgdGV4dC1iYXNlJyxcbiAgICAgICEodGhpcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkKSAmJiBbXG4gICAgICAgICdmb2N1czpvdXRsaW5lLW5vbmUnLFxuICAgICAgICAnZm9jdXM6cmluZy00JyxcbiAgICAgICAgJ2ZvY3VzOnJpbmctcmluZy8zMCcsXG4gICAgICAgICdmb2N1czpyaW5nLW9mZnNldC0wJyxcbiAgICAgICAgJ2ZvY3VzOnNoYWRvdy1ub25lJyxcbiAgICAgICAgJ2ZvY3VzOmJvcmRlci1wcmltYXJ5LzgwJ1xuICAgICAgXSxcbiAgICAgICEodGhpcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkKSAmJiAnaG92ZXI6Ym9yZGVyLWFjY2VudCcsXG4gICAgICB0aGlzLmRpc2FibGVkICYmIFtcbiAgICAgICAgJ2N1cnNvci1ub3QtYWxsb3dlZCBvcGFjaXR5LTUwJyxcbiAgICAgICAgJ2JvcmRlci1vcGFjaXR5LTUwJ1xuICAgICAgXSxcbiAgICAgIHRoaXMucmVhZG9ubHkgJiYgW1xuICAgICAgICAnY3Vyc29yLWRlZmF1bHQnLFxuICAgICAgICAnYm9yZGVyLWRhc2hlZCcsXG4gICAgICAgICF0aGlzLmRpc2FibGVkICYmICdmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLW9wYWNpdHktMTAwJ1xuICAgICAgXSxcbiAgICAgIHRoaXMuY2xhc3NcbiAgICApO1xuICB9XG5cbiAgZ2V0IGljb25DbGFzcygpIHtcbiAgICByZXR1cm4gY24oXG4gICAgICAncmktYXJyb3ctZG93bi1zLWxpbmUgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIG1sLTIgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMjAwJyxcbiAgICAgIHRoaXMuaXNPcGVuID8gJ3JvdGF0ZS0xODAnIDogJycsXG4gICAgICAodGhpcy5zaXplID09PSAneHMnIHx8IHRoaXMuc2l6ZSA9PT0gJ3NtJykgPyAndGV4dC1bMTRweF0nIDogJ3RleHQtWzE4cHhdJyxcbiAgICAgICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpICYmICdvcGFjaXR5LTMwJ1xuICAgICk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy51cGRhdGVJdGVtU2VsZWN0aW9uKCk7XG4gICAgdGhpcy5pdGVtcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZUl0ZW1TZWxlY3Rpb24oKSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUl0ZW1TZWxlY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuaXRlbXMpIHtcbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaXRlbS5zZWxlY3RlZCA9IGl0ZW0udmFsdWUgPT09IHRoaXMudmFsdWU7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGUoKSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkgcmV0dXJuO1xuICAgIHRoaXMuaXNPcGVuID8gdGhpcy5jbG9zZSgpIDogdGhpcy5vcGVuKCk7XG4gIH1cblxuICBvcGVuKCkge1xuICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICB0aGlzLnRyaWdnZXIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy51cGRhdGVQb3NpdGlvbigpKTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5zZWFyY2hRdWVyeSA9ICcnO1xuICAgIHRoaXMub25TZWFyY2hDaGFuZ2UoJycpO1xuICAgIGlmICh0aGlzLmNsZWFudXBBdXRvVXBkYXRlKSB0aGlzLmNsZWFudXBBdXRvVXBkYXRlKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVBvc2l0aW9uKCkge1xuICAgIGlmICghdGhpcy50cmlnZ2VyIHx8ICF0aGlzLnBvcG92ZXIpIHJldHVybjtcblxuICAgIHRoaXMuY2xlYW51cEF1dG9VcGRhdGUgPSBhdXRvVXBkYXRlKFxuICAgICAgdGhpcy50cmlnZ2VyLm5hdGl2ZUVsZW1lbnQsXG4gICAgICB0aGlzLnBvcG92ZXIubmF0aXZlRWxlbWVudCxcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29tcHV0ZVBvc2l0aW9uKHRoaXMudHJpZ2dlci5uYXRpdmVFbGVtZW50LCB0aGlzLnBvcG92ZXIubmF0aXZlRWxlbWVudCwge1xuICAgICAgICAgIHN0cmF0ZWd5OiAnZml4ZWQnLCAvLyAzLiBVc2UgZml4ZWQgc3RyYXRlZ3lcbiAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20tc3RhcnQnLFxuICAgICAgICAgIG1pZGRsZXdhcmU6IFtcbiAgICAgICAgICAgIG9mZnNldCg0KSxcbiAgICAgICAgICAgIGZsaXAoKSxcbiAgICAgICAgICAgIHNoaWZ0KHsgcGFkZGluZzogOCB9KSxcbiAgICAgICAgICAgIC8vIDQuIFVzZSBzaXplIG1pZGRsZXdhcmUgdG8gc3luYyB3aWR0aCBhbmQgaGFuZGxlIGNvbnN0cmFpbnRzXG4gICAgICAgICAgICBzaXplKHtcbiAgICAgICAgICAgICAgYXBwbHkoeyByZWN0cywgZWxlbWVudHMsIGF2YWlsYWJsZUhlaWdodCB9KSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihlbGVtZW50cy5mbG9hdGluZy5zdHlsZSwge1xuICAgICAgICAgICAgICAgICAgd2lkdGg6IGAke3JlY3RzLnJlZmVyZW5jZS53aWR0aH1weGAsXG4gICAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6IGAke2F2YWlsYWJsZUhlaWdodH1weGBcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLnRoZW4oKHsgeCwgeSwgc3RyYXRlZ3kgfSkgPT4ge1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5wb3BvdmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUsIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBzdHJhdGVneSwgLy8gNS4gQXBwbHkgc3RyYXRlZ3kgdG8gc3R5bGVcbiAgICAgICAgICAgIGxlZnQ6IGAke3h9cHhgLFxuICAgICAgICAgICAgdG9wOiBgJHt5fXB4YCxcbiAgICAgICAgICAgIHZpc2liaWxpdHk6ICd2aXNpYmxlJyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIG9uU2VhcmNoQ2hhbmdlKHF1ZXJ5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBmaWx0ZXIgPSAocXVlcnkgfHwgJycpLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgIGxldCB2aXNpYmxlQ291bnQgPSAwO1xuXG4gICAgdGhpcy5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgY29uc3QgdGV4dCA9IGl0ZW0uZ2V0TGFiZWwoKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgY29uc3QgaXNWaXNpYmxlID0gdGV4dC5pbmNsdWRlcyhmaWx0ZXIpO1xuICAgICAgaXRlbS5oaWRkZW4gPSAhaXNWaXNpYmxlO1xuICAgICAgaWYgKGlzVmlzaWJsZSkgdmlzaWJsZUNvdW50Kys7XG4gICAgfSk7XG5cbiAgICB0aGlzLm5vUmVzdWx0cyA9IHZpc2libGVDb3VudCA9PT0gMCAmJiBmaWx0ZXIgIT09ICcnO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMuaXNPcGVuICYmICF0aGlzLnRyaWdnZXIubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpICYmICF0aGlzLnBvcG92ZXIubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMudXBkYXRlSXRlbVNlbGVjdGlvbigpO1xuICAgIGlmICh0aGlzLml0ZW1zKSB7XG4gICAgICBjb25zdCBmb3VuZCA9IHRoaXMuaXRlbXMuZmluZChpID0+IGkudmFsdWUgPT09IHZhbHVlKTtcbiAgICAgIGlmIChmb3VuZCkgdGhpcy5zZWxlY3RlZExhYmVsID0gZm91bmQuZ2V0TGFiZWwoKTtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHsgdGhpcy5vbkNoYW5nZSA9IGZuOyB9XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHsgdGhpcy5vblRvdWNoZWQgPSBmbjsgfVxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHsgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7IH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1Yi51bnN1YnNjcmliZSgpO1xuICAgIGlmICh0aGlzLmNsZWFudXBBdXRvVXBkYXRlKSB0aGlzLmNsZWFudXBBdXRvVXBkYXRlKCk7XG4gIH1cbn1cbiJdfQ==
|