@rivet-health/design-system 7.0.0 → 7.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/input/alphabetic-field/alphabetic-field.component.mjs +48 -0
- package/esm2020/lib/input/currency-field/currency-field.component.mjs +22 -0
- package/esm2020/lib/input/number-field/number-field.component.mjs +95 -0
- package/esm2020/lib/input/percentage-field/percentage-field.component.mjs +19 -0
- package/esm2020/lib/input/single-select/single-select.component.mjs +41 -3
- package/esm2020/lib/input/text-field/text-field.component.mjs +100 -0
- package/esm2020/lib/riv.module.mjs +28 -3
- package/esm2020/public-api.mjs +6 -1
- package/fesm2015/rivet-health-design-system.mjs +396 -81
- package/fesm2015/rivet-health-design-system.mjs.map +1 -1
- package/fesm2020/rivet-health-design-system.mjs +401 -81
- package/fesm2020/rivet-health-design-system.mjs.map +1 -1
- package/lib/input/alphabetic-field/alphabetic-field.component.d.ts +16 -0
- package/lib/input/currency-field/currency-field.component.d.ts +8 -0
- package/lib/input/number-field/number-field.component.d.ts +28 -0
- package/lib/input/percentage-field/percentage-field.component.d.ts +7 -0
- package/lib/input/single-select/single-select.component.d.ts +6 -1
- package/lib/input/text-field/text-field.component.d.ts +31 -0
- package/lib/riv.module.d.ts +55 -50
- package/package.json +1 -1
- package/public-api.d.ts +5 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
+
import { TextFieldComponent } from '../text-field/text-field.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../input-label/input-label.component";
|
|
5
|
+
export class AlphabeticFieldComponent extends TextFieldComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this.valueChange = new EventEmitter();
|
|
9
|
+
}
|
|
10
|
+
set value(v) {
|
|
11
|
+
if (AlphabeticFieldComponent.clean(v, this.casing) ===
|
|
12
|
+
AlphabeticFieldComponent.clean(this._text, this.casing))
|
|
13
|
+
return;
|
|
14
|
+
this._text = AlphabeticFieldComponent.format(v, this.casing);
|
|
15
|
+
}
|
|
16
|
+
set text(t) {
|
|
17
|
+
this._text = t;
|
|
18
|
+
this.valueChange.emit(AlphabeticFieldComponent.clean(t, this.casing));
|
|
19
|
+
}
|
|
20
|
+
get text() {
|
|
21
|
+
return this._text;
|
|
22
|
+
}
|
|
23
|
+
blur() {
|
|
24
|
+
this._text = AlphabeticFieldComponent.format(this._text, this.casing);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
AlphabeticFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AlphabeticFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
28
|
+
AlphabeticFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AlphabeticFieldComponent, selector: "riv-alphabetic-field", inputs: { value: "value" }, outputs: { valueChange: "valueChange" }, usesInheritance: true, ngImport: i0, template: "<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <input\n #input\n [placeholder]=\"placeholder\"\n [type]=\"type\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [value]=\"text\"\n (input)=\"text = input.value\"\n [attr.maxlength]=\"maxLength\"\n [attr.minlength]=\"minLength\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n (blur)=\"blur()\"\n />\n</riv-input-label>\n", styles: ["input{width:100%;border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-small);font:var(--input-medium);color:var(--type-light-high-contrast);padding:var(--size-small)}input::placeholder{color:var(--type-light-disabled)}input:disabled{color:var(--type-light-disabled);background-color:var(--surface-light-1)}input:read-only{background-color:var(--surface-light-1)}input:focus{outline:none;border:var(--border-width) solid var(--purp-60)}input.warning{border-color:var(--surface-dark-caution)}input.error{border-color:var(--surface-dark-danger)}\n"], dependencies: [{ kind: "component", type: i1.InputLabelComponent, selector: "riv-input-label", inputs: ["label", "help", "required", "labelActionText"], outputs: ["labelAction"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AlphabeticFieldComponent, decorators: [{
|
|
30
|
+
type: Component,
|
|
31
|
+
args: [{ selector: 'riv-alphabetic-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <input\n #input\n [placeholder]=\"placeholder\"\n [type]=\"type\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [value]=\"text\"\n (input)=\"text = input.value\"\n [attr.maxlength]=\"maxLength\"\n [attr.minlength]=\"minLength\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n (blur)=\"blur()\"\n />\n</riv-input-label>\n", styles: ["input{width:100%;border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-small);font:var(--input-medium);color:var(--type-light-high-contrast);padding:var(--size-small)}input::placeholder{color:var(--type-light-disabled)}input:disabled{color:var(--type-light-disabled);background-color:var(--surface-light-1)}input:read-only{background-color:var(--surface-light-1)}input:focus{outline:none;border:var(--border-width) solid var(--purp-60)}input.warning{border-color:var(--surface-dark-caution)}input.error{border-color:var(--surface-dark-danger)}\n"] }]
|
|
32
|
+
}], propDecorators: { value: [{
|
|
33
|
+
type: Input
|
|
34
|
+
}], valueChange: [{
|
|
35
|
+
type: Output
|
|
36
|
+
}] } });
|
|
37
|
+
(function (AlphabeticFieldComponent) {
|
|
38
|
+
function clean(v, casing) {
|
|
39
|
+
const cleaned = v.replaceAll(/[^A-Za-z]/g, '');
|
|
40
|
+
return TextFieldComponent.clean(cleaned, casing);
|
|
41
|
+
}
|
|
42
|
+
AlphabeticFieldComponent.clean = clean;
|
|
43
|
+
function format(v, casing) {
|
|
44
|
+
return clean(v, casing);
|
|
45
|
+
}
|
|
46
|
+
AlphabeticFieldComponent.format = format;
|
|
47
|
+
})(AlphabeticFieldComponent || (AlphabeticFieldComponent = {}));
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxwaGFiZXRpYy1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9pbnB1dC9hbHBoYWJldGljLWZpZWxkL2FscGhhYmV0aWMtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvdGV4dC1maWVsZC90ZXh0LWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7QUFReEUsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGtCQUFrQjtJQU5oRTs7UUFrQlcsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0tBYW5EO0lBeEJDLElBQ2EsS0FBSyxDQUFDLENBQVM7UUFDMUIsSUFDRSx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDOUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUV2RCxPQUFPO1FBQ1QsSUFBSSxDQUFDLEtBQUssR0FBRyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBS0QsSUFBYSxJQUFJLENBQUMsQ0FBUztRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUNELElBQWEsSUFBSTtRQUNmLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRVEsSUFBSTtRQUNYLElBQUksQ0FBQyxLQUFLLEdBQUcsd0JBQXdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hFLENBQUM7O3FIQXhCVSx3QkFBd0I7eUdBQXhCLHdCQUF3Qix3SkNmckMsd3NCQTJCQTsyRkRaYSx3QkFBd0I7a0JBTnBDLFNBQVM7K0JBQ0Usc0JBQXNCLG1CQUdmLHVCQUF1QixDQUFDLE1BQU07OEJBSWxDLEtBQUs7c0JBRGpCLEtBQUs7Z0JBV0csV0FBVztzQkFEbkIsTUFBTTs7QUFnQlQsV0FBaUIsd0JBQXdCO0lBQ3ZDLFNBQWdCLEtBQUssQ0FBQyxDQUFTLEVBQUUsTUFBaUM7UUFDaEUsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDL0MsT0FBTyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFIZSw4QkFBSyxRQUdwQixDQUFBO0lBRUQsU0FBZ0IsTUFBTSxDQUFDLENBQVMsRUFBRSxNQUFpQztRQUNqRSxPQUFPLEtBQUssQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUZlLCtCQUFNLFNBRXJCLENBQUE7QUFDSCxDQUFDLEVBVGdCLHdCQUF3QixLQUF4Qix3QkFBd0IsUUFTeEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGV4dEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vdGV4dC1maWVsZC90ZXh0LWZpZWxkLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Jpdi1hbHBoYWJldGljLWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuLi90ZXh0LWZpZWxkL3RleHQtZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi4vdGV4dC1maWVsZC90ZXh0LWZpZWxkLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEFscGhhYmV0aWNGaWVsZENvbXBvbmVudCBleHRlbmRzIFRleHRGaWVsZENvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIG92ZXJyaWRlIHNldCB2YWx1ZSh2OiBzdHJpbmcpIHtcbiAgICBpZiAoXG4gICAgICBBbHBoYWJldGljRmllbGRDb21wb25lbnQuY2xlYW4odiwgdGhpcy5jYXNpbmcpID09PVxuICAgICAgQWxwaGFiZXRpY0ZpZWxkQ29tcG9uZW50LmNsZWFuKHRoaXMuX3RleHQsIHRoaXMuY2FzaW5nKVxuICAgIClcbiAgICAgIHJldHVybjtcbiAgICB0aGlzLl90ZXh0ID0gQWxwaGFiZXRpY0ZpZWxkQ29tcG9uZW50LmZvcm1hdCh2LCB0aGlzLmNhc2luZyk7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgb3ZlcnJpZGUgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBvdmVycmlkZSBzZXQgdGV4dCh0OiBzdHJpbmcpIHtcbiAgICB0aGlzLl90ZXh0ID0gdDtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoQWxwaGFiZXRpY0ZpZWxkQ29tcG9uZW50LmNsZWFuKHQsIHRoaXMuY2FzaW5nKSk7XG4gIH1cbiAgb3ZlcnJpZGUgZ2V0IHRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdGV4dDtcbiAgfVxuXG4gIG92ZXJyaWRlIGJsdXIoKSB7XG4gICAgdGhpcy5fdGV4dCA9IEFscGhhYmV0aWNGaWVsZENvbXBvbmVudC5mb3JtYXQodGhpcy5fdGV4dCwgdGhpcy5jYXNpbmcpO1xuICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgQWxwaGFiZXRpY0ZpZWxkQ29tcG9uZW50IHtcbiAgZXhwb3J0IGZ1bmN0aW9uIGNsZWFuKHY6IHN0cmluZywgY2FzaW5nOiBUZXh0RmllbGRDb21wb25lbnQuQ2FzaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBjbGVhbmVkID0gdi5yZXBsYWNlQWxsKC9bXkEtWmEtel0vZywgJycpO1xuICAgIHJldHVybiBUZXh0RmllbGRDb21wb25lbnQuY2xlYW4oY2xlYW5lZCwgY2FzaW5nKTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBmb3JtYXQodjogc3RyaW5nLCBjYXNpbmc6IFRleHRGaWVsZENvbXBvbmVudC5DYXNpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBjbGVhbih2LCBjYXNpbmcpO1xuICB9XG59XG4iLCI8cml2LWlucHV0LWxhYmVsXG4gIFtsYWJlbF09XCJsYWJlbFwiXG4gIFtoZWxwXT1cImhlbHBcIlxuICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICBbbGFiZWxBY3Rpb25UZXh0XT1cImxhYmVsQWN0aW9uVGV4dFwiXG4gIChsYWJlbEFjdGlvbik9XCJsYWJlbEFjdGlvbi5lbWl0KCRldmVudClcIlxuPlxuICA8aW5wdXRcbiAgICAjaW5wdXRcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgIFt0eXBlXT1cInR5cGVcIlxuICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgIFt2YWx1ZV09XCJ0ZXh0XCJcbiAgICAoaW5wdXQpPVwidGV4dCA9IGlucHV0LnZhbHVlXCJcbiAgICBbYXR0ci5tYXhsZW5ndGhdPVwibWF4TGVuZ3RoXCJcbiAgICBbYXR0ci5taW5sZW5ndGhdPVwibWluTGVuZ3RoXCJcbiAgICBbY2xhc3Mud2FybmluZ109XCJzdGF0ZSA9PT0gJ3dhcm5pbmcnXCJcbiAgICBbY2xhc3MuZXJyb3JdPVwic3RhdGUgPT09ICdlcnJvcidcIlxuICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgYXV0b2NvcnJlY3Q9XCJvZmZcIlxuICAgIGF1dG9jYXBpdGFsaXplPVwib2ZmXCJcbiAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxuICAgIChibHVyKT1cImJsdXIoKVwiXG4gIC8+XG48L3Jpdi1pbnB1dC1sYWJlbD5cbiJdfQ==
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
import { NumberFieldComponent } from '../number-field/number-field.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../input-label/input-label.component";
|
|
5
|
+
export class CurrencyFieldComponent extends NumberFieldComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this.placeholder = '0.00';
|
|
9
|
+
this.maximumFractionDigits = 2;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
CurrencyFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CurrencyFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
13
|
+
CurrencyFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CurrencyFieldComponent, selector: "riv-currency-field", inputs: { placeholder: "placeholder", maximumFractionDigits: "maximumFractionDigits" }, usesInheritance: true, ngImport: i0, template: "<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <span class=\"prefix\">$</span>\n <input\n #input\n [placeholder]=\"placeholder\"\n type=\"text\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [value]=\"text\"\n (input)=\"text = input.value\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n [style.textAlign]=\"align\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n (blur)=\"blur()\"\n />\n</riv-input-label>\n", styles: [":host{position:relative}.prefix{position:absolute;font:var(--input-medium);padding:var(--size-small)}input{width:100%;border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-small);font:var(--input-medium);color:var(--type-light-high-contrast);padding:var(--size-small) var(--size-small) var(--size-small) var(--size-xlarge)}input::placeholder{color:var(--type-light-disabled)}input:disabled{color:var(--type-light-disabled);background-color:var(--surface-light-1)}input:read-only{background-color:var(--surface-light-1)}input:focus{outline:none;border:var(--border-width) solid var(--purp-60)}input.warning{border-color:var(--surface-dark-caution)}input.error{border-color:var(--surface-dark-danger)}\n"], dependencies: [{ kind: "component", type: i1.InputLabelComponent, selector: "riv-input-label", inputs: ["label", "help", "required", "labelActionText"], outputs: ["labelAction"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CurrencyFieldComponent, decorators: [{
|
|
15
|
+
type: Component,
|
|
16
|
+
args: [{ selector: 'riv-currency-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <span class=\"prefix\">$</span>\n <input\n #input\n [placeholder]=\"placeholder\"\n type=\"text\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [value]=\"text\"\n (input)=\"text = input.value\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n [style.textAlign]=\"align\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n (blur)=\"blur()\"\n />\n</riv-input-label>\n", styles: [":host{position:relative}.prefix{position:absolute;font:var(--input-medium);padding:var(--size-small)}input{width:100%;border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-small);font:var(--input-medium);color:var(--type-light-high-contrast);padding:var(--size-small) var(--size-small) var(--size-small) var(--size-xlarge)}input::placeholder{color:var(--type-light-disabled)}input:disabled{color:var(--type-light-disabled);background-color:var(--surface-light-1)}input:read-only{background-color:var(--surface-light-1)}input:focus{outline:none;border:var(--border-width) solid var(--purp-60)}input.warning{border-color:var(--surface-dark-caution)}input.error{border-color:var(--surface-dark-danger)}\n"] }]
|
|
17
|
+
}], propDecorators: { placeholder: [{
|
|
18
|
+
type: Input
|
|
19
|
+
}], maximumFractionDigits: [{
|
|
20
|
+
type: Input
|
|
21
|
+
}] } });
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3ktZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvY3VycmVuY3ktZmllbGQvY3VycmVuY3ktZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvY3VycmVuY3ktZmllbGQvY3VycmVuY3ktZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7OztBQVE5RSxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsb0JBQW9CO0lBTmhFOztRQVFXLGdCQUFXLEdBQVcsTUFBTSxDQUFDO1FBRzdCLDBCQUFxQixHQUFXLENBQUMsQ0FBQztLQUM1Qzs7bUhBTlksc0JBQXNCO3VHQUF0QixzQkFBc0IseUtDVG5DLGtzQkEyQkE7MkZEbEJhLHNCQUFzQjtrQkFObEMsU0FBUzsrQkFDRSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTTs4QkFJdEMsV0FBVztzQkFEbkIsS0FBSztnQkFJRyxxQkFBcUI7c0JBRDdCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTnVtYmVyRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9udW1iZXItZmllbGQvbnVtYmVyLWZpZWxkLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Jpdi1jdXJyZW5jeS1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXJyZW5jeS1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2N1cnJlbmN5LWZpZWxkLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEN1cnJlbmN5RmllbGRDb21wb25lbnQgZXh0ZW5kcyBOdW1iZXJGaWVsZENvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIG92ZXJyaWRlIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnMC4wMCc7XG5cbiAgQElucHV0KClcbiAgb3ZlcnJpZGUgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBudW1iZXIgPSAyO1xufVxuIiwiPHJpdi1pbnB1dC1sYWJlbFxuICBbbGFiZWxdPVwibGFiZWxcIlxuICBbaGVscF09XCJoZWxwXCJcbiAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgW2xhYmVsQWN0aW9uVGV4dF09XCJsYWJlbEFjdGlvblRleHRcIlxuICAobGFiZWxBY3Rpb24pPVwibGFiZWxBY3Rpb24uZW1pdCgkZXZlbnQpXCJcbj5cbiAgPHNwYW4gY2xhc3M9XCJwcmVmaXhcIj4kPC9zcGFuPlxuICA8aW5wdXRcbiAgICAjaW5wdXRcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICBbdmFsdWVdPVwidGV4dFwiXG4gICAgKGlucHV0KT1cInRleHQgPSBpbnB1dC52YWx1ZVwiXG4gICAgW2NsYXNzLndhcm5pbmddPVwic3RhdGUgPT09ICd3YXJuaW5nJ1wiXG4gICAgW2NsYXNzLmVycm9yXT1cInN0YXRlID09PSAnZXJyb3InXCJcbiAgICBbc3R5bGUudGV4dEFsaWduXT1cImFsaWduXCJcbiAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgIGF1dG9jb3JyZWN0PVwib2ZmXCJcbiAgICBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiXG4gICAgc3BlbGxjaGVjaz1cImZhbHNlXCJcbiAgICAoYmx1cik9XCJibHVyKClcIlxuICAvPlxuPC9yaXYtaW5wdXQtbGFiZWw+XG4iXX0=
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
+
import { InputLabelComponent } from '../input-label/input-label.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../input-label/input-label.component";
|
|
5
|
+
export class NumberFieldComponent extends InputLabelComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this.disabled = false;
|
|
9
|
+
this.readonly = false;
|
|
10
|
+
this.placeholder = '';
|
|
11
|
+
this.state = 'valid';
|
|
12
|
+
this.maximumFractionDigits = 0;
|
|
13
|
+
this.min = -Infinity;
|
|
14
|
+
this.max = Infinity;
|
|
15
|
+
this.align = 'left';
|
|
16
|
+
this.valueChange = new EventEmitter();
|
|
17
|
+
this._text = '';
|
|
18
|
+
}
|
|
19
|
+
set value(v) {
|
|
20
|
+
if (NumberFieldComponent.clean(v, this.maximumFractionDigits, this.min, this.max) ===
|
|
21
|
+
NumberFieldComponent.clean(this._text, this.maximumFractionDigits, this.min, this.max))
|
|
22
|
+
return;
|
|
23
|
+
this._text = NumberFieldComponent.format(v, this.maximumFractionDigits, this.min, this.max);
|
|
24
|
+
}
|
|
25
|
+
set text(t) {
|
|
26
|
+
this._text = t;
|
|
27
|
+
this.valueChange.emit(NumberFieldComponent.clean(t, this.maximumFractionDigits, this.min, this.max));
|
|
28
|
+
}
|
|
29
|
+
get text() {
|
|
30
|
+
return this._text;
|
|
31
|
+
}
|
|
32
|
+
blur() {
|
|
33
|
+
this._text = NumberFieldComponent.format(this._text, this.maximumFractionDigits, this.min, this.max);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
NumberFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NumberFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
37
|
+
NumberFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: NumberFieldComponent, selector: "riv-number-field", inputs: { disabled: "disabled", readonly: "readonly", placeholder: "placeholder", state: "state", maximumFractionDigits: "maximumFractionDigits", min: "min", max: "max", align: "align", value: "value" }, outputs: { valueChange: "valueChange" }, usesInheritance: true, ngImport: i0, template: "<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <input\n #input\n [placeholder]=\"placeholder\"\n type=\"text\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [value]=\"text\"\n (input)=\"text = input.value\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n [style.textAlign]=\"align\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n (blur)=\"blur()\"\n />\n</riv-input-label>\n", styles: ["input{width:100%;border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-small);font:var(--input-medium);color:var(--type-light-high-contrast);padding:var(--size-small)}input::placeholder{color:var(--type-light-disabled)}input:disabled{color:var(--type-light-disabled);background-color:var(--surface-light-1)}input:read-only{background-color:var(--surface-light-1)}input:focus{outline:none;border:var(--border-width) solid var(--purp-60)}input.warning{border-color:var(--surface-dark-caution)}input.error{border-color:var(--surface-dark-danger)}\n"], dependencies: [{ kind: "component", type: i1.InputLabelComponent, selector: "riv-input-label", inputs: ["label", "help", "required", "labelActionText"], outputs: ["labelAction"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NumberFieldComponent, decorators: [{
|
|
39
|
+
type: Component,
|
|
40
|
+
args: [{ selector: 'riv-number-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <input\n #input\n [placeholder]=\"placeholder\"\n type=\"text\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [value]=\"text\"\n (input)=\"text = input.value\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n [style.textAlign]=\"align\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n (blur)=\"blur()\"\n />\n</riv-input-label>\n", styles: ["input{width:100%;border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-small);font:var(--input-medium);color:var(--type-light-high-contrast);padding:var(--size-small)}input::placeholder{color:var(--type-light-disabled)}input:disabled{color:var(--type-light-disabled);background-color:var(--surface-light-1)}input:read-only{background-color:var(--surface-light-1)}input:focus{outline:none;border:var(--border-width) solid var(--purp-60)}input.warning{border-color:var(--surface-dark-caution)}input.error{border-color:var(--surface-dark-danger)}\n"] }]
|
|
41
|
+
}], propDecorators: { disabled: [{
|
|
42
|
+
type: Input
|
|
43
|
+
}], readonly: [{
|
|
44
|
+
type: Input
|
|
45
|
+
}], placeholder: [{
|
|
46
|
+
type: Input
|
|
47
|
+
}], state: [{
|
|
48
|
+
type: Input
|
|
49
|
+
}], maximumFractionDigits: [{
|
|
50
|
+
type: Input
|
|
51
|
+
}], min: [{
|
|
52
|
+
type: Input
|
|
53
|
+
}], max: [{
|
|
54
|
+
type: Input
|
|
55
|
+
}], align: [{
|
|
56
|
+
type: Input
|
|
57
|
+
}], value: [{
|
|
58
|
+
type: Input
|
|
59
|
+
}], valueChange: [{
|
|
60
|
+
type: Output
|
|
61
|
+
}] } });
|
|
62
|
+
(function (NumberFieldComponent) {
|
|
63
|
+
NumberFieldComponent.Alignments = ['left', 'center', 'right'];
|
|
64
|
+
function clean(v, maximumFractionDigits, min, max) {
|
|
65
|
+
function digitsOnly(str) {
|
|
66
|
+
return str.replace(/\D/g, '');
|
|
67
|
+
}
|
|
68
|
+
if (!v)
|
|
69
|
+
return null;
|
|
70
|
+
const decimalPointIdx = v.indexOf('.');
|
|
71
|
+
const signIdx = v.indexOf('-');
|
|
72
|
+
const cleanedString = (signIdx > -1 ? '-' : '') +
|
|
73
|
+
(decimalPointIdx > -1
|
|
74
|
+
? digitsOnly(v.substring(0, decimalPointIdx)) +
|
|
75
|
+
'.' +
|
|
76
|
+
digitsOnly(v.substring(decimalPointIdx + 1))
|
|
77
|
+
: digitsOnly(v));
|
|
78
|
+
if (cleanedString === '.' ||
|
|
79
|
+
cleanedString === '-' ||
|
|
80
|
+
cleanedString === '-.') {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
const cleaned = Number(Number(cleanedString).toFixed(maximumFractionDigits));
|
|
84
|
+
return Math.max(min, Math.min(max, cleaned));
|
|
85
|
+
}
|
|
86
|
+
NumberFieldComponent.clean = clean;
|
|
87
|
+
function format(v, maximumFractionDigits, min, max) {
|
|
88
|
+
const cleaned = clean(v, maximumFractionDigits, min, max);
|
|
89
|
+
if (cleaned === null)
|
|
90
|
+
return '';
|
|
91
|
+
return new Intl.NumberFormat('en-US', { maximumFractionDigits }).format(cleaned);
|
|
92
|
+
}
|
|
93
|
+
NumberFieldComponent.format = format;
|
|
94
|
+
})(NumberFieldComponent || (NumberFieldComponent = {}));
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL2lucHV0L251bWJlci1maWVsZC9udW1iZXItZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvbnVtYmVyLWZpZWxkL251bWJlci1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7O0FBUzNFLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxtQkFBbUI7SUFON0Q7O1FBUUUsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUcxQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBRzFCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBR3pCLFVBQUssR0FBNkIsT0FBTyxDQUFDO1FBRzFDLDBCQUFxQixHQUFXLENBQUMsQ0FBQztRQUdsQyxRQUFHLEdBQVcsQ0FBQyxRQUFRLENBQUM7UUFHeEIsUUFBRyxHQUFXLFFBQVEsQ0FBQztRQUd2QixVQUFLLEdBQW1DLE1BQU0sQ0FBQztRQTRCL0MsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUV0QyxVQUFLLEdBQVcsRUFBRSxDQUFDO0tBeUI5QjtJQXJEQyxJQUNJLEtBQUssQ0FBQyxDQUFnQjtRQUN4QixJQUNFLG9CQUFvQixDQUFDLEtBQUssQ0FDeEIsQ0FBQyxFQUNELElBQUksQ0FBQyxxQkFBcUIsRUFDMUIsSUFBSSxDQUFDLEdBQUcsRUFDUixJQUFJLENBQUMsR0FBRyxDQUNUO1lBQ0Qsb0JBQW9CLENBQUMsS0FBSyxDQUN4QixJQUFJ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QUFNLENBQ3BCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FDckQsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBL0JlLDBCQUFLLFFBK0JwQixDQUFBO0lBRUQsU0FBZ0IsTUFBTSxDQUNwQixDQUFnQixFQUNoQixxQkFBNkIsRUFDN0IsR0FBVyxFQUNYLEdBQVc7UUFFWCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLHFCQUFxQixFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMxRCxJQUFJLE9BQU8sS0FBSyxJQUFJO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDaEMsT0FBTyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FDckUsT0FBTyxDQUNSLENBQUM7SUFDSixDQUFDO0lBWGUsMkJBQU0sU0FXckIsQ0FBQTtBQUNILENBQUMsRUFqRGdCLG9CQUFvQixLQUFwQixvQkFBb0IsUUFpRHBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElucHV0TGFiZWxDb21wb25lbnQgfSBmcm9tICcuLi9pbnB1dC1sYWJlbC9pbnB1dC1sYWJlbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vdGV4dC1maWVsZC90ZXh0LWZpZWxkLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Jpdi1udW1iZXItZmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbnVtYmVyLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbnVtYmVyLWZpZWxkLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE51bWJlckZpZWxkQ29tcG9uZW50IGV4dGVuZHMgSW5wdXRMYWJlbENvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG5cbiAgQElucHV0KClcbiAgc3RhdGU6IFRleHRGaWVsZENvbXBvbmVudC5TdGF0ZSA9ICd2YWxpZCc7XG5cbiAgQElucHV0KClcbiAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBudW1iZXIgPSAwO1xuXG4gIEBJbnB1dCgpXG4gIG1pbjogbnVtYmVyID0gLUluZmluaXR5O1xuXG4gIEBJbnB1dCgpXG4gIG1heDogbnVtYmVyID0gSW5maW5pdHk7XG5cbiAgQElucHV0KClcbiAgYWxpZ246IE51bWJlckZpZWxkQ29tcG9uZW50LkFsaWdubWVudCA9ICdsZWZ0JztcblxuICBASW5wdXQoKVxuICBzZXQgdmFsdWUodjogc3RyaW5nIHwgbnVsbCkge1xuICAgIGlmIChcbiAgICAgIE51bWJlckZpZWxkQ29tcG9uZW50LmNsZWFuKFxuICAgICAgICB2LFxuICAgICAgICB0aGlzLm1heGltdW1GcmFjdGlvbkRpZ2l0cyxcbiAgICAgICAgdGhpcy5taW4sXG4gICAgICAgIHRoaXMubWF4LFxuICAgICAgKSA9PT1cbiAgICAgIE51bWJlckZpZWxkQ29tcG9uZW50LmNsZWFuKFxuICAgICAgICB0aGlzLl90ZXh0LFxuICAgICAgICB0aGlzLm1heGltdW1GcmFjdGlvbkRpZ2l0cyxcbiAgICAgICAgdGhpcy5taW4sXG4gICAgICAgIHRoaXMubWF4LFxuICAgICAgKVxuICAgIClcbiAgICAgIHJldHVybjtcbiAgICB0aGlzLl90ZXh0ID0gTnVtYmVyRmllbGRDb21wb25lbnQuZm9ybWF0KFxuICAgICAgdixcbiAgICAgIHRoaXMubWF4aW11bUZyYWN0aW9uRGlnaXRzLFxuICAgICAgdGhpcy5taW4sXG4gICAgICB0aGlzLm1heCxcbiAgICApO1xuICB9XG5cbiAgQE91dHB1dCgpXG4gIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXIgfCBudWxsPigpO1xuXG4gIHByb3RlY3RlZCBfdGV4dDogc3RyaW5nID0gJyc7XG5cbiAgc2V0IHRleHQodDogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGV4dCA9IHQ7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KFxuICAgICAgTnVtYmVyRmllbGRDb21wb25lbnQuY2xlYW4oXG4gICAgICAgIHQsXG4gICAgICAgIHRoaXMubWF4aW11bUZyYWN0aW9uRGlnaXRzLFxuICAgICAgICB0aGlzLm1pbixcbiAgICAgICAgdGhpcy5tYXgsXG4gICAgICApLFxuICAgICk7XG4gIH1cbiAgZ2V0IHRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdGV4dDtcbiAgfVxuXG4gIGJsdXIoKSB7XG4gICAgdGhpcy5fdGV4dCA9IE51bWJlckZpZWxkQ29tcG9uZW50LmZvcm1hdChcbiAgICAgIHRoaXMuX3RleHQsXG4gICAgICB0aGlzLm1heGltdW1GcmFjdGlvbkRpZ2l0cyxcbiAgICAgIHRoaXMubWluLFxuICAgICAgdGhpcy5tYXgsXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIE51bWJlckZpZWxkQ29tcG9uZW50IHtcbiAgZXhwb3J0IGNvbnN0IEFsaWdubWVudHMgPSBbJ2xlZnQnLCAnY2VudGVyJywgJ3JpZ2h0J10gYXMgY29uc3Q7XG4gIGV4cG9ydCB0eXBlIEFsaWdubWVudCA9ICh0eXBlb2YgQWxpZ25tZW50cylbbnVtYmVyXTtcblxuICBleHBvcnQgZnVuY3Rpb24gY2xlYW4oXG4gICAgdjogc3RyaW5nIHwgbnVsbCxcbiAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IG51bWJlcixcbiAgICBtaW46IG51bWJlcixcbiAgICBtYXg6IG51bWJlcixcbiAgKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgZnVuY3Rpb24gZGlnaXRzT25seShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1xcRC9nLCAnJyk7XG4gICAgfVxuXG4gICAgaWYgKCF2KSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBkZWNpbWFsUG9pbnRJZHggPSB2LmluZGV4T2YoJy4nKTtcbiAgICBjb25zdCBzaWduSWR4ID0gdi5pbmRleE9mKCctJyk7XG4gICAgY29uc3QgY2xlYW5lZFN0cmluZzogc3RyaW5nID1cbiAgICAgIChzaWduSWR4ID4gLTEgPyAnLScgOiAnJykgK1xuICAgICAgKGRlY2ltYWxQb2ludElkeCA+IC0xXG4gICAgICAgID8gZGlnaXRzT25seSh2LnN1YnN0cmluZygwLCBkZWNpbWFsUG9pbnRJZHgpKSArXG4gICAgICAgICAgJy4nICtcbiAgICAgICAgICBkaWdpdHNPbmx5KHYuc3Vic3RyaW5nKGRlY2ltYWxQb2ludElkeCArIDEpKVxuICAgICAgICA6IGRpZ2l0c09ubHkodikpO1xuICAgIGlmIChcbiAgICAgIGNsZWFuZWRTdHJpbmcgPT09ICcuJyB8fFxuICAgICAgY2xlYW5lZFN0cmluZyA9PT0gJy0nIHx8XG4gICAgICBjbGVhbmVkU3RyaW5nID09PSAnLS4nXG4gICAgKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgY2xlYW5lZCA9IE51bWJlcihcbiAgICAgIE51bWJlcihjbGVhbmVkU3RyaW5nKS50b0ZpeGVkKG1heGltdW1GcmFjdGlvbkRpZ2l0cyksXG4gICAgKTtcbiAgICByZXR1cm4gTWF0aC5tYXgobWluLCBNYXRoLm1pbihtYXgsIGNsZWFuZWQpKTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBmb3JtYXQoXG4gICAgdjogc3RyaW5nIHwgbnVsbCxcbiAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IG51bWJlcixcbiAgICBtaW46IG51bWJlcixcbiAgICBtYXg6IG51bWJlcixcbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBjbGVhbmVkID0gY2xlYW4odiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzLCBtaW4sIG1heCk7XG4gICAgaWYgKGNsZWFuZWQgPT09IG51bGwpIHJldHVybiAnJztcbiAgICByZXR1cm4gbmV3IEludGwuTnVtYmVyRm9ybWF0KCdlbi1VUycsIHsgbWF4aW11bUZyYWN0aW9uRGlnaXRzIH0pLmZvcm1hdChcbiAgICAgIGNsZWFuZWQsXG4gICAgKTtcbiAgfVxufVxuIiwiPHJpdi1pbnB1dC1sYWJlbFxuICBbbGFiZWxdPVwibGFiZWxcIlxuICBbaGVscF09XCJoZWxwXCJcbiAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgW2xhYmVsQWN0aW9uVGV4dF09XCJsYWJlbEFjdGlvblRleHRcIlxuICAobGFiZWxBY3Rpb24pPVwibGFiZWxBY3Rpb24uZW1pdCgkZXZlbnQpXCJcbj5cbiAgPGlucHV0XG4gICAgI2lucHV0XG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICB0eXBlPVwidGV4dFwiXG4gICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgW3ZhbHVlXT1cInRleHRcIlxuICAgIChpbnB1dCk9XCJ0ZXh0ID0gaW5wdXQudmFsdWVcIlxuICAgIFtjbGFzcy53YXJuaW5nXT1cInN0YXRlID09PSAnd2FybmluZydcIlxuICAgIFtjbGFzcy5lcnJvcl09XCJzdGF0ZSA9PT0gJ2Vycm9yJ1wiXG4gICAgW3N0eWxlLnRleHRBbGlnbl09XCJhbGlnblwiXG4gICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICBhdXRvY29ycmVjdD1cIm9mZlwiXG4gICAgYXV0b2NhcGl0YWxpemU9XCJvZmZcIlxuICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiXG4gICAgKGJsdXIpPVwiYmx1cigpXCJcbiAgLz5cbjwvcml2LWlucHV0LWxhYmVsPlxuIl19
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
import { NumberFieldComponent } from '../number-field/number-field.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../input-label/input-label.component";
|
|
5
|
+
export class PercentageFieldComponent extends NumberFieldComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this.align = 'right';
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
PercentageFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PercentageFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
12
|
+
PercentageFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PercentageFieldComponent, selector: "riv-percentage-field", inputs: { align: "align" }, usesInheritance: true, ngImport: i0, template: "<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <input\n #input\n [placeholder]=\"placeholder\"\n type=\"text\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [value]=\"text\"\n (input)=\"text = input.value\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n [style.textAlign]=\"align\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n (blur)=\"blur()\"\n />\n <span class=\"suffix\">%</span>\n</riv-input-label>\n", styles: [":host{position:relative}.suffix{position:absolute;right:0;font:var(--input-medium);padding:var(--size-small)}input{width:100%;border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-small);font:var(--input-medium);color:var(--type-light-high-contrast);padding:var(--size-small) var(--size-xlarge) var(--size-small) var(--size-small)}input::placeholder{color:var(--type-light-disabled)}input:disabled{color:var(--type-light-disabled);background-color:var(--surface-light-1)}input:read-only{background-color:var(--surface-light-1)}input:focus{outline:none;border:var(--border-width) solid var(--purp-60)}input.warning{border-color:var(--surface-dark-caution)}input.error{border-color:var(--surface-dark-danger)}\n"], dependencies: [{ kind: "component", type: i1.InputLabelComponent, selector: "riv-input-label", inputs: ["label", "help", "required", "labelActionText"], outputs: ["labelAction"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PercentageFieldComponent, decorators: [{
|
|
14
|
+
type: Component,
|
|
15
|
+
args: [{ selector: 'riv-percentage-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <input\n #input\n [placeholder]=\"placeholder\"\n type=\"text\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [value]=\"text\"\n (input)=\"text = input.value\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n [style.textAlign]=\"align\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n (blur)=\"blur()\"\n />\n <span class=\"suffix\">%</span>\n</riv-input-label>\n", styles: [":host{position:relative}.suffix{position:absolute;right:0;font:var(--input-medium);padding:var(--size-small)}input{width:100%;border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-small);font:var(--input-medium);color:var(--type-light-high-contrast);padding:var(--size-small) var(--size-xlarge) var(--size-small) var(--size-small)}input::placeholder{color:var(--type-light-disabled)}input:disabled{color:var(--type-light-disabled);background-color:var(--surface-light-1)}input:read-only{background-color:var(--surface-light-1)}input:focus{outline:none;border:var(--border-width) solid var(--purp-60)}input.warning{border-color:var(--surface-dark-caution)}input.error{border-color:var(--surface-dark-danger)}\n"] }]
|
|
16
|
+
}], propDecorators: { align: [{
|
|
17
|
+
type: Input
|
|
18
|
+
}] } });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyY2VudGFnZS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9pbnB1dC9wZXJjZW50YWdlLWZpZWxkL3BlcmNlbnRhZ2UtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvcGVyY2VudGFnZS1maWVsZC9wZXJjZW50YWdlLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7QUFROUUsTUFBTSxPQUFPLHdCQUF5QixTQUFRLG9CQUFvQjtJQU5sRTs7UUFRVyxVQUFLLEdBQW1DLE9BQU8sQ0FBQztLQUMxRDs7cUhBSFksd0JBQXdCO3lHQUF4Qix3QkFBd0IsK0dDVHJDLGtzQkEyQkE7MkZEbEJhLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDRSxzQkFBc0IsbUJBR2YsdUJBQXVCLENBQUMsTUFBTTs4QkFJdEMsS0FBSztzQkFEYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE51bWJlckZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vbnVtYmVyLWZpZWxkL251bWJlci1maWVsZC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtcGVyY2VudGFnZS1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wZXJjZW50YWdlLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGVyY2VudGFnZS1maWVsZC5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQZXJjZW50YWdlRmllbGRDb21wb25lbnQgZXh0ZW5kcyBOdW1iZXJGaWVsZENvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIG92ZXJyaWRlIGFsaWduOiBOdW1iZXJGaWVsZENvbXBvbmVudC5BbGlnbm1lbnQgPSAncmlnaHQnO1xufVxuIiwiPHJpdi1pbnB1dC1sYWJlbFxuICBbbGFiZWxdPVwibGFiZWxcIlxuICBbaGVscF09XCJoZWxwXCJcbiAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgW2xhYmVsQWN0aW9uVGV4dF09XCJsYWJlbEFjdGlvblRleHRcIlxuICAobGFiZWxBY3Rpb24pPVwibGFiZWxBY3Rpb24uZW1pdCgkZXZlbnQpXCJcbj5cbiAgPGlucHV0XG4gICAgI2lucHV0XG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICB0eXBlPVwidGV4dFwiXG4gICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgW3ZhbHVlXT1cInRleHRcIlxuICAgIChpbnB1dCk9XCJ0ZXh0ID0gaW5wdXQudmFsdWVcIlxuICAgIFtjbGFzcy53YXJuaW5nXT1cInN0YXRlID09PSAnd2FybmluZydcIlxuICAgIFtjbGFzcy5lcnJvcl09XCJzdGF0ZSA9PT0gJ2Vycm9yJ1wiXG4gICAgW3N0eWxlLnRleHRBbGlnbl09XCJhbGlnblwiXG4gICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICBhdXRvY29ycmVjdD1cIm9mZlwiXG4gICAgYXV0b2NhcGl0YWxpemU9XCJvZmZcIlxuICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiXG4gICAgKGJsdXIpPVwiYmx1cigpXCJcbiAgLz5cbiAgPHNwYW4gY2xhc3M9XCJzdWZmaXhcIj4lPC9zcGFuPlxuPC9yaXYtaW5wdXQtbGFiZWw+XG4iXX0=
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
|
2
2
|
import Fuse from 'fuse.js';
|
|
3
|
+
import { debounceTime, from, map, pairwise, startWith, switchMap, } from 'rxjs';
|
|
3
4
|
import { InputLabelComponent } from '../input-label/input-label.component';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "@angular/common";
|
|
@@ -9,6 +10,7 @@ import * as i4 from "../../visualization/highlight/highlight.component";
|
|
|
9
10
|
import * as i5 from "../../icon/icon.component";
|
|
10
11
|
import * as i6 from "../input-label/input-label.component";
|
|
11
12
|
import * as i7 from "../../load/loading-cover/loading-cover.component";
|
|
13
|
+
import * as i8 from "../../visualization/zero-state/zero-state.component";
|
|
12
14
|
export class SingleSelectComponent extends InputLabelComponent {
|
|
13
15
|
constructor() {
|
|
14
16
|
super(...arguments);
|
|
@@ -64,10 +66,10 @@ export class SingleSelectComponent extends InputLabelComponent {
|
|
|
64
66
|
}
|
|
65
67
|
}
|
|
66
68
|
SingleSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SingleSelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
67
|
-
SingleSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SingleSelectComponent, selector: "riv-single-select", inputs: { groups: "groups", selectedOption: "selectedOption", filterabilityOptions: "filterabilityOptions", loading: "loading", locked: "locked", maxCalloutHeight: "maxCalloutHeight", noOptionsMessage: "noOptionsMessage", nodeTemplate: "nodeTemplate", triggerTemplate: "triggerTemplate", placeholder: "placeholder", disabled: "disabled" }, outputs: { filterQueryChange: "filterQueryChange", selectedOptionChange: "selectedOptionChange" }, viewQueries: [{ propertyName: "customTriggerButton", first: true, predicate: ["customTriggerButton"], descendants: true }, { propertyName: "standardTriggerButton", first: true, predicate: ["standardTriggerButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"triggerTemplate; else standardTrigger\">\n <button\n #customTriggerButton\n (click)=\"allowedOpen()\"\n [disabled]=\"disabled || locked\"\n type=\"button\"\n >\n <ng-container\n [ngTemplateOutlet]=\"triggerTemplate\"\n [ngTemplateOutletContext]=\"{ selectedOption }\"\n ></ng-container>\n </button>\n</ng-container>\n<ng-template #standardTrigger>\n <riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n >\n <button\n #standardTriggerButton\n class=\"trigger\"\n (click)=\"allowedOpen()\"\n [disabled]=\"disabled || locked\"\n type=\"button\"\n >\n <ng-container *ngIf=\"selectedOption; else placeholderValue\">\n <span class=\"value\">{{ selectedOption.title }}</span>\n </ng-container>\n <ng-template #placeholderValue>\n <span class=\"value placeholder\">{{ placeholder }}</span>\n </ng-template>\n <span class=\"chevron\">\n <riv-icon *ngIf=\"!locked\" [name]=\"'ChevronDown'\" [size]=\"16\"></riv-icon>\n <riv-icon *ngIf=\"locked\" [name]=\"'Lock'\" [size]=\"16\"></riv-icon>\n </span>\n </button>\n </riv-input-label>\n</ng-template>\n\n<riv-callout\n *ngIf=\"open\"\n [anchor]=\"getTrigger()\"\n [theme]=\"'light'\"\n [showCaret]=\"false\"\n [allowedPositions]=\"[\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-right',\n 'bottom-center',\n 'bottom-left'\n ]\"\n (close)=\"open = false\"\n>\n <input\n *ngIf=\"filterabilityOptions.enabled\"\n #filter\n class=\"filter\"\n [placeholder]=\"getFilterPlaceholder()\"\n [value]=\"filterQuery\"\n (input)=\"filterQuery = filter.value; filterQueryChange.emit(filterQuery)\"\n [rivFocusOnInit]=\"true\"\n />\n <div class=\"options\" [style.max-height]=\"maxCalloutHeight\">\n <riv-loading-cover [loading]=\"loading\">\n <ng-container *ngFor=\"let group of groups; trackBy: trackByHeader\">\n <ng-container *ngIf=\"group.header\">\n <span class=\"group-header\">\n {{ group.header }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"group.options; let nodes\">\n <ng-container *ngIf=\"nodes.length > 0; else empty\">\n <ng-container *ngFor=\"let node of nodes; trackBy: trackByOption\">\n <ng-container *ngIf=\"nodeTemplate; else standardTemplate\">\n <button\n class=\"custom-single-select-node\"\n [disabled]=\"node.disabled\"\n (click)=\"selectOption(node)\"\n type=\"button\"\n >\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplate\"\n [ngTemplateOutletContext]=\"{ node }\"\n ></ng-container>\n </button>\n </ng-container>\n <ng-template #standardTemplate>\n <button\n class=\"single-select-node\"\n [class.selected]=\"node?.id === selectedOption?.id\"\n [class.disabled]=\"node?.disabled\"\n [disabled]=\"node?.disabled\"\n (click)=\"selectOption(node)\"\n type=\"button\"\n >\n <riv-icon\n [name]=\"'Check'\"\n *ngIf=\"node?.id === selectedOption?.id\"\n [size]=\"16\"\n ></riv-icon>\n <span class=\"label\">\n <span class=\"label-title\">\n <riv-highlight\n [text]=\"node?.title || ''\"\n [indices]=\"node?.titleHighlightIndices || []\"\n ></riv-highlight>\n </span>\n <span *ngIf=\"node?.subtitle\" class=\"label-subtitle\">\n <riv-highlight\n [text]=\"node?.subtitle || ''\"\n [indices]=\"node?.subtitleHighlightIndices || []\"\n ></riv-highlight>\n </span>\n </span>\n </button>\n </ng-template>\n </ng-container>\n </ng-container>\n <ng-template #empty>\n <div class=\"empty\">\n {{ noOptionsMessage }}\n </div>\n </ng-template>\n </ng-container>\n </ng-container>\n </riv-loading-cover>\n </div>\n <div class=\"footer\">\n <ng-content select=\"[footer]\"
|
|
69
|
+
SingleSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SingleSelectComponent, selector: "riv-single-select", inputs: { groups: "groups", selectedOption: "selectedOption", filterabilityOptions: "filterabilityOptions", loading: "loading", locked: "locked", maxCalloutHeight: "maxCalloutHeight", noOptionsMessage: "noOptionsMessage", nodeTemplate: "nodeTemplate", triggerTemplate: "triggerTemplate", placeholder: "placeholder", disabled: "disabled" }, outputs: { filterQueryChange: "filterQueryChange", selectedOptionChange: "selectedOptionChange" }, viewQueries: [{ propertyName: "customTriggerButton", first: true, predicate: ["customTriggerButton"], descendants: true }, { propertyName: "standardTriggerButton", first: true, predicate: ["standardTriggerButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"triggerTemplate; else standardTrigger\">\n <button\n #customTriggerButton\n (click)=\"allowedOpen()\"\n [disabled]=\"disabled || locked\"\n type=\"button\"\n >\n <ng-container\n [ngTemplateOutlet]=\"triggerTemplate\"\n [ngTemplateOutletContext]=\"{ selectedOption }\"\n ></ng-container>\n </button>\n</ng-container>\n<ng-template #standardTrigger>\n <riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n >\n <button\n #standardTriggerButton\n class=\"trigger\"\n (click)=\"allowedOpen()\"\n [disabled]=\"disabled || locked\"\n type=\"button\"\n >\n <ng-container *ngIf=\"selectedOption; else placeholderValue\">\n <span class=\"value\">{{ selectedOption.title }}</span>\n </ng-container>\n <ng-template #placeholderValue>\n <span class=\"value placeholder\">{{ placeholder }}</span>\n </ng-template>\n <span class=\"chevron\">\n <riv-icon *ngIf=\"!locked\" [name]=\"'ChevronDown'\" [size]=\"16\"></riv-icon>\n <riv-icon *ngIf=\"locked\" [name]=\"'Lock'\" [size]=\"16\"></riv-icon>\n </span>\n </button>\n </riv-input-label>\n</ng-template>\n\n<riv-callout\n *ngIf=\"open\"\n [anchor]=\"getTrigger()\"\n [theme]=\"'light'\"\n [showCaret]=\"false\"\n [allowedPositions]=\"[\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-right',\n 'bottom-center',\n 'bottom-left'\n ]\"\n (close)=\"open = false\"\n>\n <input\n *ngIf=\"filterabilityOptions.enabled\"\n #filter\n class=\"filter\"\n [placeholder]=\"getFilterPlaceholder()\"\n [value]=\"filterQuery\"\n (input)=\"filterQuery = filter.value; filterQueryChange.emit(filterQuery)\"\n [rivFocusOnInit]=\"true\"\n />\n <div class=\"options\" [style.max-height]=\"maxCalloutHeight\">\n <riv-loading-cover [loading]=\"loading\">\n <riv-zero-state\n *ngIf=\"!groups.length\"\n [message]=\"noOptionsMessage\"\n ></riv-zero-state>\n <ng-container *ngFor=\"let group of groups; trackBy: trackByHeader\">\n <ng-container *ngIf=\"group.header\">\n <span class=\"group-header\">\n {{ group.header }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"group.options; let nodes\">\n <ng-container *ngIf=\"nodes.length > 0; else empty\">\n <ng-container *ngFor=\"let node of nodes; trackBy: trackByOption\">\n <ng-container *ngIf=\"nodeTemplate; else standardTemplate\">\n <button\n class=\"custom-single-select-node\"\n [disabled]=\"node.disabled\"\n (click)=\"selectOption(node)\"\n type=\"button\"\n >\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplate\"\n [ngTemplateOutletContext]=\"{ node }\"\n ></ng-container>\n </button>\n </ng-container>\n <ng-template #standardTemplate>\n <button\n class=\"single-select-node\"\n [class.selected]=\"node?.id === selectedOption?.id\"\n [class.disabled]=\"node?.disabled\"\n [disabled]=\"node?.disabled\"\n (click)=\"selectOption(node)\"\n type=\"button\"\n >\n <riv-icon\n [name]=\"'Check'\"\n *ngIf=\"node?.id === selectedOption?.id\"\n [size]=\"16\"\n ></riv-icon>\n <span class=\"label\">\n <span class=\"label-title\">\n <riv-highlight\n [text]=\"node?.title || ''\"\n [indices]=\"node?.titleHighlightIndices || []\"\n ></riv-highlight>\n </span>\n <span *ngIf=\"node?.subtitle\" class=\"label-subtitle\">\n <riv-highlight\n [text]=\"node?.subtitle || ''\"\n [indices]=\"node?.subtitleHighlightIndices || []\"\n ></riv-highlight>\n </span>\n </span>\n </button>\n </ng-template>\n </ng-container>\n </ng-container>\n <ng-template #empty>\n <div class=\"empty\">\n {{ noOptionsMessage }}\n </div>\n </ng-template>\n </ng-container>\n </ng-container>\n <ng-content select=\"[postOptionList]\"></ng-content>\n </riv-loading-cover>\n </div>\n <div class=\"footer\">\n <ng-content select=\"[footer]\"></ng-content>\n </div>\n</riv-callout>\n", styles: [".trigger{width:100%;border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-small);display:flex;gap:var(--size-small);background-color:var(--surface-light-0)}.trigger:focus{outline:none;border:var(--border-width) solid var(--purp-60)}.trigger:disabled{color:var(--type-light-disabled);background-color:var(--surface-light-1)}.value{font-size:var(--type-2-font-size);line-height:var(--type-2-line-height-0);color:var(--type-light-high-contrast);padding:var(--size-small);flex-grow:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:pre}.value.placeholder{color:var(--type-light-disabled)}.chevron{display:flex;justify-content:center;align-items:center;padding:var(--size-small);background-color:var(--surface-light-2);border-left:var(--border-width) solid var(--border-light)}.filter{width:100%;outline:none;border:none;border-bottom:var(--border-width) solid var(--border-light);font-size:var(--type-2-font-size);line-height:var(--type-2-line-height-0);color:var(--type-light-high-contrast);padding:var(--size-small)}.filter::placeholder{color:var(--type-light-disabled)}.options{max-width:calc(var(--base-grid-size) * 150);overflow-y:auto}.single-select-node{display:flex;align-items:center;overflow:hidden;flex-grow:1;text-align:left;padding:var(--size-xsmall) var(--size-xsmall) var(--size-xsmall) calc(var(--base-grid-size) * 6);width:100%}.single-select-node.selected{padding-left:var(--size-small)}.single-select-node:hover{background-color:var(--surface-light-2)}.single-select-node.disabled{cursor:default;background-color:var(--surface-light-0)}.single-select-node.disabled .label,.single-select-node.disabled .label-subtitle{color:var(--type-light-disabled)}.single-select-node riv-icon{flex-shrink:0}.single-select-node .label{font-size:calc(var(--base-grid-size) * 4);line-height:calc(var(--base-grid-size) * 6);overflow:hidden;text-overflow:ellipsis;white-space:pre;flex-grow:1;padding:0 calc(var(--base-grid-size) * 2);min-width:calc(var(--base-grid-size) * 16)}.single-select-node .label-subtitle{padding-left:var(--base-grid-size);color:var(--type-light-low-contrast)}.custom-single-select-node{display:block;width:100%;text-align:left}.empty{padding:var(--size-medium);text-align:center;color:var(--type-light-disabled)}.footer:not(:empty){border-top:var(--border-width) solid var(--border-light-blend);background-color:var(--surface-light-1);border-bottom-left-radius:var(--border-radius-medium);border-bottom-right-radius:var(--border-radius-medium)}.group-header{display:flex;padding:8px 8px 4px;align-items:flex-start;gap:10px;align-self:stretch;font:var(--title-01)}\n"], dependencies: [{ 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: "component", type: i2.CalloutComponent, selector: "riv-callout", inputs: ["anchor", "isModal", "preferredPosition", "allowedPositions", "fallbackDirection", "showCaret", "theme"], outputs: ["close"] }, { kind: "directive", type: i3.FocusOnInitDirective, selector: "[rivFocusOnInit]", inputs: ["rivFocusOnInit"] }, { kind: "component", type: i4.HighlightComponent, selector: "riv-highlight", inputs: ["text", "indices"] }, { kind: "component", type: i5.IconComponent, selector: "riv-icon", inputs: ["name", "size", "customSize", "strokeWidth"] }, { kind: "component", type: i6.InputLabelComponent, selector: "riv-input-label", inputs: ["label", "help", "required", "labelActionText"], outputs: ["labelAction"] }, { kind: "component", type: i7.LoadingCoverComponent, selector: "riv-loading-cover", inputs: ["loading", "loadingSize", "errorMessage"] }, { kind: "component", type: i8.ZeroStateComponent, selector: "riv-zero-state", inputs: ["message"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
68
70
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SingleSelectComponent, decorators: [{
|
|
69
71
|
type: Component,
|
|
70
|
-
args: [{ selector: 'riv-single-select', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"triggerTemplate; else standardTrigger\">\n <button\n #customTriggerButton\n (click)=\"allowedOpen()\"\n [disabled]=\"disabled || locked\"\n type=\"button\"\n >\n <ng-container\n [ngTemplateOutlet]=\"triggerTemplate\"\n [ngTemplateOutletContext]=\"{ selectedOption }\"\n ></ng-container>\n </button>\n</ng-container>\n<ng-template #standardTrigger>\n <riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n >\n <button\n #standardTriggerButton\n class=\"trigger\"\n (click)=\"allowedOpen()\"\n [disabled]=\"disabled || locked\"\n type=\"button\"\n >\n <ng-container *ngIf=\"selectedOption; else placeholderValue\">\n <span class=\"value\">{{ selectedOption.title }}</span>\n </ng-container>\n <ng-template #placeholderValue>\n <span class=\"value placeholder\">{{ placeholder }}</span>\n </ng-template>\n <span class=\"chevron\">\n <riv-icon *ngIf=\"!locked\" [name]=\"'ChevronDown'\" [size]=\"16\"></riv-icon>\n <riv-icon *ngIf=\"locked\" [name]=\"'Lock'\" [size]=\"16\"></riv-icon>\n </span>\n </button>\n </riv-input-label>\n</ng-template>\n\n<riv-callout\n *ngIf=\"open\"\n [anchor]=\"getTrigger()\"\n [theme]=\"'light'\"\n [showCaret]=\"false\"\n [allowedPositions]=\"[\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-right',\n 'bottom-center',\n 'bottom-left'\n ]\"\n (close)=\"open = false\"\n>\n <input\n *ngIf=\"filterabilityOptions.enabled\"\n #filter\n class=\"filter\"\n [placeholder]=\"getFilterPlaceholder()\"\n [value]=\"filterQuery\"\n (input)=\"filterQuery = filter.value; filterQueryChange.emit(filterQuery)\"\n [rivFocusOnInit]=\"true\"\n />\n <div class=\"options\" [style.max-height]=\"maxCalloutHeight\">\n <riv-loading-cover [loading]=\"loading\">\n <ng-container *ngFor=\"let group of groups; trackBy: trackByHeader\">\n <ng-container *ngIf=\"group.header\">\n <span class=\"group-header\">\n {{ group.header }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"group.options; let nodes\">\n <ng-container *ngIf=\"nodes.length > 0; else empty\">\n <ng-container *ngFor=\"let node of nodes; trackBy: trackByOption\">\n <ng-container *ngIf=\"nodeTemplate; else standardTemplate\">\n <button\n class=\"custom-single-select-node\"\n [disabled]=\"node.disabled\"\n (click)=\"selectOption(node)\"\n type=\"button\"\n >\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplate\"\n [ngTemplateOutletContext]=\"{ node }\"\n ></ng-container>\n </button>\n </ng-container>\n <ng-template #standardTemplate>\n <button\n class=\"single-select-node\"\n [class.selected]=\"node?.id === selectedOption?.id\"\n [class.disabled]=\"node?.disabled\"\n [disabled]=\"node?.disabled\"\n (click)=\"selectOption(node)\"\n type=\"button\"\n >\n <riv-icon\n [name]=\"'Check'\"\n *ngIf=\"node?.id === selectedOption?.id\"\n [size]=\"16\"\n ></riv-icon>\n <span class=\"label\">\n <span class=\"label-title\">\n <riv-highlight\n [text]=\"node?.title || ''\"\n [indices]=\"node?.titleHighlightIndices || []\"\n ></riv-highlight>\n </span>\n <span *ngIf=\"node?.subtitle\" class=\"label-subtitle\">\n <riv-highlight\n [text]=\"node?.subtitle || ''\"\n [indices]=\"node?.subtitleHighlightIndices || []\"\n ></riv-highlight>\n </span>\n </span>\n </button>\n </ng-template>\n </ng-container>\n </ng-container>\n <ng-template #empty>\n <div class=\"empty\">\n {{ noOptionsMessage }}\n </div>\n </ng-template>\n </ng-container>\n </ng-container>\n </riv-loading-cover>\n </div>\n <div class=\"footer\">\n <ng-content select=\"[footer]\"
|
|
72
|
+
args: [{ selector: 'riv-single-select', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"triggerTemplate; else standardTrigger\">\n <button\n #customTriggerButton\n (click)=\"allowedOpen()\"\n [disabled]=\"disabled || locked\"\n type=\"button\"\n >\n <ng-container\n [ngTemplateOutlet]=\"triggerTemplate\"\n [ngTemplateOutletContext]=\"{ selectedOption }\"\n ></ng-container>\n </button>\n</ng-container>\n<ng-template #standardTrigger>\n <riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n >\n <button\n #standardTriggerButton\n class=\"trigger\"\n (click)=\"allowedOpen()\"\n [disabled]=\"disabled || locked\"\n type=\"button\"\n >\n <ng-container *ngIf=\"selectedOption; else placeholderValue\">\n <span class=\"value\">{{ selectedOption.title }}</span>\n </ng-container>\n <ng-template #placeholderValue>\n <span class=\"value placeholder\">{{ placeholder }}</span>\n </ng-template>\n <span class=\"chevron\">\n <riv-icon *ngIf=\"!locked\" [name]=\"'ChevronDown'\" [size]=\"16\"></riv-icon>\n <riv-icon *ngIf=\"locked\" [name]=\"'Lock'\" [size]=\"16\"></riv-icon>\n </span>\n </button>\n </riv-input-label>\n</ng-template>\n\n<riv-callout\n *ngIf=\"open\"\n [anchor]=\"getTrigger()\"\n [theme]=\"'light'\"\n [showCaret]=\"false\"\n [allowedPositions]=\"[\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-right',\n 'bottom-center',\n 'bottom-left'\n ]\"\n (close)=\"open = false\"\n>\n <input\n *ngIf=\"filterabilityOptions.enabled\"\n #filter\n class=\"filter\"\n [placeholder]=\"getFilterPlaceholder()\"\n [value]=\"filterQuery\"\n (input)=\"filterQuery = filter.value; filterQueryChange.emit(filterQuery)\"\n [rivFocusOnInit]=\"true\"\n />\n <div class=\"options\" [style.max-height]=\"maxCalloutHeight\">\n <riv-loading-cover [loading]=\"loading\">\n <riv-zero-state\n *ngIf=\"!groups.length\"\n [message]=\"noOptionsMessage\"\n ></riv-zero-state>\n <ng-container *ngFor=\"let group of groups; trackBy: trackByHeader\">\n <ng-container *ngIf=\"group.header\">\n <span class=\"group-header\">\n {{ group.header }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"group.options; let nodes\">\n <ng-container *ngIf=\"nodes.length > 0; else empty\">\n <ng-container *ngFor=\"let node of nodes; trackBy: trackByOption\">\n <ng-container *ngIf=\"nodeTemplate; else standardTemplate\">\n <button\n class=\"custom-single-select-node\"\n [disabled]=\"node.disabled\"\n (click)=\"selectOption(node)\"\n type=\"button\"\n >\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplate\"\n [ngTemplateOutletContext]=\"{ node }\"\n ></ng-container>\n </button>\n </ng-container>\n <ng-template #standardTemplate>\n <button\n class=\"single-select-node\"\n [class.selected]=\"node?.id === selectedOption?.id\"\n [class.disabled]=\"node?.disabled\"\n [disabled]=\"node?.disabled\"\n (click)=\"selectOption(node)\"\n type=\"button\"\n >\n <riv-icon\n [name]=\"'Check'\"\n *ngIf=\"node?.id === selectedOption?.id\"\n [size]=\"16\"\n ></riv-icon>\n <span class=\"label\">\n <span class=\"label-title\">\n <riv-highlight\n [text]=\"node?.title || ''\"\n [indices]=\"node?.titleHighlightIndices || []\"\n ></riv-highlight>\n </span>\n <span *ngIf=\"node?.subtitle\" class=\"label-subtitle\">\n <riv-highlight\n [text]=\"node?.subtitle || ''\"\n [indices]=\"node?.subtitleHighlightIndices || []\"\n ></riv-highlight>\n </span>\n </span>\n </button>\n </ng-template>\n </ng-container>\n </ng-container>\n <ng-template #empty>\n <div class=\"empty\">\n {{ noOptionsMessage }}\n </div>\n </ng-template>\n </ng-container>\n </ng-container>\n <ng-content select=\"[postOptionList]\"></ng-content>\n </riv-loading-cover>\n </div>\n <div class=\"footer\">\n <ng-content select=\"[footer]\"></ng-content>\n </div>\n</riv-callout>\n", styles: [".trigger{width:100%;border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-small);display:flex;gap:var(--size-small);background-color:var(--surface-light-0)}.trigger:focus{outline:none;border:var(--border-width) solid var(--purp-60)}.trigger:disabled{color:var(--type-light-disabled);background-color:var(--surface-light-1)}.value{font-size:var(--type-2-font-size);line-height:var(--type-2-line-height-0);color:var(--type-light-high-contrast);padding:var(--size-small);flex-grow:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:pre}.value.placeholder{color:var(--type-light-disabled)}.chevron{display:flex;justify-content:center;align-items:center;padding:var(--size-small);background-color:var(--surface-light-2);border-left:var(--border-width) solid var(--border-light)}.filter{width:100%;outline:none;border:none;border-bottom:var(--border-width) solid var(--border-light);font-size:var(--type-2-font-size);line-height:var(--type-2-line-height-0);color:var(--type-light-high-contrast);padding:var(--size-small)}.filter::placeholder{color:var(--type-light-disabled)}.options{max-width:calc(var(--base-grid-size) * 150);overflow-y:auto}.single-select-node{display:flex;align-items:center;overflow:hidden;flex-grow:1;text-align:left;padding:var(--size-xsmall) var(--size-xsmall) var(--size-xsmall) calc(var(--base-grid-size) * 6);width:100%}.single-select-node.selected{padding-left:var(--size-small)}.single-select-node:hover{background-color:var(--surface-light-2)}.single-select-node.disabled{cursor:default;background-color:var(--surface-light-0)}.single-select-node.disabled .label,.single-select-node.disabled .label-subtitle{color:var(--type-light-disabled)}.single-select-node riv-icon{flex-shrink:0}.single-select-node .label{font-size:calc(var(--base-grid-size) * 4);line-height:calc(var(--base-grid-size) * 6);overflow:hidden;text-overflow:ellipsis;white-space:pre;flex-grow:1;padding:0 calc(var(--base-grid-size) * 2);min-width:calc(var(--base-grid-size) * 16)}.single-select-node .label-subtitle{padding-left:var(--base-grid-size);color:var(--type-light-low-contrast)}.custom-single-select-node{display:block;width:100%;text-align:left}.empty{padding:var(--size-medium);text-align:center;color:var(--type-light-disabled)}.footer:not(:empty){border-top:var(--border-width) solid var(--border-light-blend);background-color:var(--surface-light-1);border-bottom-left-radius:var(--border-radius-medium);border-bottom-right-radius:var(--border-radius-medium)}.group-header{display:flex;padding:8px 8px 4px;align-items:flex-start;gap:10px;align-self:stretch;font:var(--title-01)}\n"] }]
|
|
71
73
|
}], propDecorators: { groups: [{
|
|
72
74
|
type: Input
|
|
73
75
|
}], selectedOption: [{
|
|
@@ -135,5 +137,41 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
135
137
|
};
|
|
136
138
|
}
|
|
137
139
|
SingleSelectComponent.getFilterSync = getFilterSync;
|
|
140
|
+
function getFilterAsync(query$, fetcher, debounceInput = 300) {
|
|
141
|
+
return query$.pipe(debounceTime(debounceInput), switchMap(query => from(fetcher(query)).pipe(map(groups => {
|
|
142
|
+
if (!query)
|
|
143
|
+
return { loading: false, groups };
|
|
144
|
+
const fuseOptions = {
|
|
145
|
+
keys: ['title', 'subtitle'],
|
|
146
|
+
includeMatches: true,
|
|
147
|
+
shouldSort: true,
|
|
148
|
+
threshold: 0.6,
|
|
149
|
+
};
|
|
150
|
+
const filteredGroups = groups
|
|
151
|
+
.map(group => {
|
|
152
|
+
const fuse = new Fuse(group.options, fuseOptions);
|
|
153
|
+
const matches = fuse.search(query);
|
|
154
|
+
return {
|
|
155
|
+
...group,
|
|
156
|
+
options: matches.map(match => ({
|
|
157
|
+
...match.item,
|
|
158
|
+
titleHighlightIndices: [
|
|
159
|
+
...(match.matches?.find(result => result.key === 'title')
|
|
160
|
+
?.indices || []),
|
|
161
|
+
],
|
|
162
|
+
subtitleHighlightIndices: [
|
|
163
|
+
...(match.matches?.find(result => result.key === 'subtitle')?.indices || []),
|
|
164
|
+
],
|
|
165
|
+
})),
|
|
166
|
+
};
|
|
167
|
+
})
|
|
168
|
+
.filter(group => group.options.length > 0); // Remove empty groups
|
|
169
|
+
return { loading: false, groups: filteredGroups };
|
|
170
|
+
}), startWith({ loading: true, groups: [] }))), pairwise(), map(([previous, next]) => ({
|
|
171
|
+
loading: next.loading,
|
|
172
|
+
groups: next.loading ? previous.groups : next.groups,
|
|
173
|
+
})), startWith({ loading: false, groups: [] }));
|
|
174
|
+
}
|
|
175
|
+
SingleSelectComponent.getFilterAsync = getFilterAsync;
|
|
138
176
|
})(SingleSelectComponent || (SingleSelectComponent = {}));
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9pbnB1dC9zaW5nbGUtc2VsZWN0L3NpbmdsZS1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvc2luZ2xlLXNlbGVjdC9zaW5nbGUtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLElBQUksTUFBTSxTQUFTLENBQUM7QUFFM0IsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7OztBQVEzRSxNQUFNLE9BQU8scUJBR1gsU0FBUSxtQkFBbUI7SUFUN0I7O1FBV0UsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQUdqQixtQkFBYyxHQUFhLElBQUksQ0FBQztRQUdoQyx5QkFBb0IsR0FBK0M7WUFDakUsT0FBTyxFQUFFLEtBQUs7U0FDZixDQUFDO1FBR0YsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUd6QixXQUFNLEdBQVksS0FBSyxDQUFDO1FBR3hCLHFCQUFnQixHQUFXLE1BQU0sQ0FBQztRQUdsQyxxQkFBZ0IsR0FBVyxzQkFBc0IsQ0FBQztRQVNsRCxnQkFBVyxHQUFXLFdBQVcsQ0FBQztRQUdsQyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBRTFCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBR3pCLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFHL0MseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQUssQ0FBQztRQW1EN0MsU0FBSSxHQUFZLEtBQUssQ0FBQztLQUN2QjtJQS9DQyxVQUFVO1FBQ1IsT0FBTyxDQUNMLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxhQUFhO1lBQ3ZDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxhQUFhLENBQzFDLENBQUM7SUFDSixDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQ0UsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU87WUFDakMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsRUFDckM7WUFDQSxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUM7U0FDOUM7UUFDRCxPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2xDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsWUFBWSxDQUFDLG1CQUFzQjtRQUNqQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFFbEIsNENBQTRDO1FBQzVDLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRTtZQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUMvQztJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsQ0FBUyxFQUFFLEtBQTJDO1FBQ2xFLE9BQU8sR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxhQUFhLENBQUMsQ0FBUyxFQUFFLE1BQVM7UUFDaEMsT0FBTyxNQUFNLENBQUMsRUFBRSxDQUFDO0lBQ25CLENBQUM7O2tIQTlGVSxxQkFBcUI7c0dBQXJCLHFCQUFxQixvdkJDcEJsQyx5bkpBdUlBOzJGRG5IYSxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0UsbUJBQW1CLG1CQUdaLHVCQUF1QixDQUFDLE1BQU07OEJBTy9DLE1BQU07c0JBREwsS0FBSztnQkFJTixjQUFjO3NCQURiLEtBQUs7Z0JBSU4sb0JBQW9CO3NCQURuQixLQUFLO2dCQU1OLE9BQU87c0JBRE4sS0FBSztnQkFJTixNQUFNO3NCQURMLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQU1OLGlCQUFpQjtzQkFEaEIsTUFBTTtnQkFJUCxvQkFBb0I7c0JBRG5CLE1BQU07Z0JBRzJCLG1CQUFtQjtzQkFBcEQsU0FBUzt1QkFBQyxxQkFBcUI7Z0JBQ0kscUJBQXFCO3NCQUF4RCxTQUFTO3VCQUFDLHVCQUF1Qjs7QUFtRHBDLFdBQWlCLHFCQUFxQjtJQXdCcEMsU0FBZ0IsYUFBYSxDQUMzQixNQUFXLEVBQ1gsUUFBaUIsS0FBSztRQUV0QixPQUFPLFNBQVMsTUFBTSxDQUFDLEtBQWE7WUFDbEMsSUFBSSxDQUFDLEtBQUs7Z0JBQUUsT0FBTyxNQUFNLENBQUM7WUFFMUIsTUFBTSxXQUFXLEdBQUc7Z0JBQ2xCLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUM7Z0JBQzNCLGNBQWMsRUFBRSxJQUFJO2dCQUNwQixVQUFVLEVBQUUsSUFBSTtnQkFDaEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHO2FBQzdCLENBQUM7WUFFRixPQUFPLE1BQU07aUJBQ1YsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNYLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBQ2xELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRW5DLE9BQU87b0JBQ0wsR0FBRyxLQUFLO29CQUNSLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDN0IsR0FBRyxLQUFLLENBQUMsSUFBSTt3QkFDYixxQkFBcUIsRUFBRTs0QkFDckIsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxPQUFPLENBQUM7Z0NBQ3ZELEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQzt5QkFDbkI7d0JBQ0Qsd0JBQXdCLEVBQUU7NEJBQ3hCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssVUFBVSxDQUFDO2dDQUMxRCxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUM7eUJBQ25CO3FCQUNGLENBQUMsQ0FBQztpQkFDSixDQUFDO1lBQ0osQ0FBQyxDQUFDO2lCQUNELE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCO1FBQ3RFLENBQUMsQ0FBQztJQUNKLENBQUM7SUFwQ2UsbUNBQWEsZ0JBb0M1QixDQUFBO0FBQ0gsQ0FBQyxFQTdEZ0IscUJBQXFCLEtBQXJCLHFCQUFxQixRQTZEckMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IEZ1c2UgZnJvbSAnZnVzZS5qcyc7XG5pbXBvcnQgeyBIaWdobGlnaHRDb21wb25lbnQgfSBmcm9tICcuLi8uLi92aXN1YWxpemF0aW9uL2hpZ2hsaWdodC9oaWdobGlnaHQuY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0TGFiZWxDb21wb25lbnQgfSBmcm9tICcuLi9pbnB1dC1sYWJlbC9pbnB1dC1sYWJlbC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtc2luZ2xlLXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zaW5nbGUtc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2luZ2xlLXNlbGVjdC5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTaW5nbGVTZWxlY3RDb21wb25lbnQ8XG4gIFQgZXh0ZW5kcyBTaW5nbGVTZWxlY3RDb21wb25lbnQuT3B0aW9uR3JvdXA8VT4sXG4gIFUgZXh0ZW5kcyBTaW5nbGVTZWxlY3RDb21wb25lbnQuT3B0aW9uLFxuPiBleHRlbmRzIElucHV0TGFiZWxDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBncm91cHM6IFRbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHNlbGVjdGVkT3B0aW9uOiBVIHwgbnVsbCA9IG51bGw7XG5cbiAgQElucHV0KClcbiAgZmlsdGVyYWJpbGl0eU9wdGlvbnM6IFNpbmdsZVNlbGVjdENvbXBvbmVudC5GaWx0ZXJhYmlsaXR5T3B0aW9ucyA9IHtcbiAgICBlbmFibGVkOiBmYWxzZSxcbiAgfTtcblxuICBASW5wdXQoKVxuICBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgbG9ja2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgbWF4Q2FsbG91dEhlaWdodDogc3RyaW5nID0gJzUwdmgnO1xuXG4gIEBJbnB1dCgpXG4gIG5vT3B0aW9uc01lc3NhZ2U6IHN0cmluZyA9ICdObyBhdmFpbGFibGUgb3B0aW9ucyc7XG5cbiAgQElucHV0KClcbiAgbm9kZVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQElucHV0KClcbiAgdHJpZ2dlclRlbXBsYXRlPzogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQElucHV0KClcbiAgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICdTZWxlY3QuLi4nO1xuXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZmlsdGVyUXVlcnk6IHN0cmluZyA9ICcnO1xuXG4gIEBPdXRwdXQoKVxuICBmaWx0ZXJRdWVyeUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBPdXRwdXQoKVxuICBzZWxlY3RlZE9wdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VT4oKTtcblxuICBAVmlld0NoaWxkKCdjdXN0b21UcmlnZ2VyQnV0dG9uJykgY3VzdG9tVHJpZ2dlckJ1dHRvbj86IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3N0YW5kYXJkVHJpZ2dlckJ1dHRvbicpIHN0YW5kYXJkVHJpZ2dlckJ1dHRvbj86IEVsZW1lbnRSZWY7XG5cbiAgZ2V0VHJpZ2dlcigpOiBFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY3VzdG9tVHJpZ2dlckJ1dHRvbj8ubmF0aXZlRWxlbWVudCA/P1xuICAgICAgdGhpcy5zdGFuZGFyZFRyaWdnZXJCdXR0b24/Lm5hdGl2ZUVsZW1lbnRcbiAgICApO1xuICB9XG5cbiAgZ2V0RmlsdGVyUGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmZpbHRlcmFiaWxpdHlPcHRpb25zLmVuYWJsZWQgJiZcbiAgICAgIHRoaXMuZmlsdGVyYWJpbGl0eU9wdGlvbnMucGxhY2Vob2xkZXJcbiAgICApIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlcmFiaWxpdHlPcHRpb25zLnBsYWNlaG9sZGVyO1xuICAgIH1cbiAgICByZXR1cm4gJ0ZpbHRlciBvcHRpb25zLi4uJztcbiAgfVxuXG4gIGFsbG93ZWRPcGVuKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5sb2NrZWQpIHtcbiAgICAgIHRoaXMub3BlbiA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgc2VsZWN0T3B0aW9uKG5ld2x5U2VsZWN0ZWRPcHRpb246IFUpIHtcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9uQ2hhbmdlLmVtaXQobmV3bHlTZWxlY3RlZE9wdGlvbik7XG4gICAgdGhpcy5vcGVuID0gZmFsc2U7XG5cbiAgICAvLyBDbGVhciBmaWx0ZXIgYWZ0ZXIgYW4gb3B0aW9uIGlzIHNlbGVjdGVkLlxuICAgIGlmICh0aGlzLmZpbHRlcmFiaWxpdHlPcHRpb25zLmVuYWJsZWQpIHtcbiAgICAgIHRoaXMuZmlsdGVyUXVlcnkgPSAnJztcbiAgICAgIHRoaXMuZmlsdGVyUXVlcnlDaGFuZ2UuZW1pdCh0aGlzLmZpbHRlclF1ZXJ5KTtcbiAgICB9XG4gIH1cblxuICB0cmFja0J5SGVhZGVyKGk6IG51bWJlciwgZ3JvdXA6IFNpbmdsZVNlbGVjdENvbXBvbmVudC5PcHRpb25Hcm91cDxVPikge1xuICAgIHJldHVybiBgJHtpfSR7Z3JvdXAuaGVhZGVyfWA7XG4gIH1cblxuICB0cmFja0J5T3B0aW9uKF86IG51bWJlciwgb3B0aW9uOiBVKSB7XG4gICAgcmV0dXJuIG9wdGlvbi5pZDtcbiAgfVxuXG4gIG9wZW46IGJvb2xlYW4gPSBmYWxzZTtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBTaW5nbGVTZWxlY3RDb21wb25lbnQge1xuICBleHBvcnQgdHlwZSBPcHRpb24gPSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIHN1YnRpdGxlPzogc3RyaW5nO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICB0aXRsZUhpZ2hsaWdodEluZGljZXM/OiBIaWdobGlnaHRDb21wb25lbnQuSGlnaGxpZ2h0SW5kaWNlc1tdO1xuICAgIHN1YnRpdGxlSGlnaGxpZ2h0SW5kaWNlcz86IEhpZ2hsaWdodENvbXBvbmVudC5IaWdobGlnaHRJbmRpY2VzW107XG4gIH07XG5cbiAgZXhwb3J0IHR5cGUgT3B0aW9uR3JvdXA8TyBleHRlbmRzIE9wdGlvbj4gPSB7XG4gICAgaGVhZGVyPzogc3RyaW5nO1xuICAgIG9wdGlvbnM6IE9bXTtcbiAgfTtcblxuICBleHBvcnQgdHlwZSBGaWx0ZXJhYmlsaXR5T3B0aW9ucyA9XG4gICAgfCB7XG4gICAgICAgIGVuYWJsZWQ6IGZhbHNlO1xuICAgICAgfVxuICAgIHwge1xuICAgICAgICBlbmFibGVkOiB0cnVlO1xuICAgICAgICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICAgIH07XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldEZpbHRlclN5bmM8VCBleHRlbmRzIE9wdGlvbkdyb3VwPFU+LCBVIGV4dGVuZHMgT3B0aW9uPihcbiAgICBncm91cHM6IFRbXSxcbiAgICBleGFjdDogYm9vbGVhbiA9IGZhbHNlLFxuICApOiAocXVlcnk6IHN0cmluZykgPT4gVFtdIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gZmlsdGVyKHF1ZXJ5OiBzdHJpbmcpIHtcbiAgICAgIGlmICghcXVlcnkpIHJldHVybiBncm91cHM7XG5cbiAgICAgIGNvbnN0IGZ1c2VPcHRpb25zID0ge1xuICAgICAgICBrZXlzOiBbJ3RpdGxlJywgJ3N1YnRpdGxlJ10sXG4gICAgICAgIGluY2x1ZGVNYXRjaGVzOiB0cnVlLFxuICAgICAgICBzaG91bGRTb3J0OiB0cnVlLFxuICAgICAgICB0aHJlc2hvbGQ6IGV4YWN0ID8gMC4wIDogMC42LFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGdyb3Vwc1xuICAgICAgICAubWFwKGdyb3VwID0+IHtcbiAgICAgICAgICBjb25zdCBmdXNlID0gbmV3IEZ1c2UoZ3JvdXAub3B0aW9ucywgZnVzZU9wdGlvbnMpO1xuICAgICAgICAgIGNvbnN0IG1hdGNoZXMgPSBmdXNlLnNlYXJjaChxdWVyeSk7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uZ3JvdXAsXG4gICAgICAgICAgICBvcHRpb25zOiBtYXRjaGVzLm1hcChtYXRjaCA9PiAoe1xuICAgICAgICAgICAgICAuLi5tYXRjaC5pdGVtLFxuICAgICAgICAgICAgICB0aXRsZUhpZ2hsaWdodEluZGljZXM6IFtcbiAgICAgICAgICAgICAgICAuLi4obWF0Y2gubWF0Y2hlcz8uZmluZChyZXN1bHQgPT4gcmVzdWx0LmtleSA9PT0gJ3RpdGxlJylcbiAgICAgICAgICAgICAgICAgID8uaW5kaWNlcyB8fCBbXSksXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHN1YnRpdGxlSGlnaGxpZ2h0SW5kaWNlczogW1xuICAgICAgICAgICAgICAgIC4uLihtYXRjaC5tYXRjaGVzPy5maW5kKHJlc3VsdCA9PiByZXN1bHQua2V5ID09PSAnc3VidGl0bGUnKVxuICAgICAgICAgICAgICAgICAgPy5pbmRpY2VzIHx8IFtdKSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKGdyb3VwID0+IGdyb3VwLm9wdGlvbnMubGVuZ3RoID4gMCk7IC8vIFJlbW92ZSBlbXB0eSBncm91cHNcbiAgICB9O1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwidHJpZ2dlclRlbXBsYXRlOyBlbHNlIHN0YW5kYXJkVHJpZ2dlclwiPlxuICA8YnV0dG9uXG4gICAgI2N1c3RvbVRyaWdnZXJCdXR0b25cbiAgICAoY2xpY2spPVwiYWxsb3dlZE9wZW4oKVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IGxvY2tlZFwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gID5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cmlnZ2VyVGVtcGxhdGVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgc2VsZWN0ZWRPcHRpb24gfVwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICA8L2J1dHRvbj5cbjwvbmctY29udGFpbmVyPlxuPG5nLXRlbXBsYXRlICNzdGFuZGFyZFRyaWdnZXI+XG4gIDxyaXYtaW5wdXQtbGFiZWxcbiAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgIFtoZWxwXT1cImhlbHBcIlxuICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgW2xhYmVsQWN0aW9uVGV4dF09XCJsYWJlbEFjdGlvblRleHRcIlxuICAgIChsYWJlbEFjdGlvbik9XCJsYWJlbEFjdGlvbi5lbWl0KCRldmVudClcIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgI3N0YW5kYXJkVHJpZ2dlckJ1dHRvblxuICAgICAgY2xhc3M9XCJ0cmlnZ2VyXCJcbiAgICAgIChjbGljayk9XCJhbGxvd2VkT3BlbigpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBsb2NrZWRcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkT3B0aW9uOyBlbHNlIHBsYWNlaG9sZGVyVmFsdWVcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPnt7IHNlbGVjdGVkT3B0aW9uLnRpdGxlIH19PC9zcGFuPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI3BsYWNlaG9sZGVyVmFsdWU+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWUgcGxhY2Vob2xkZXJcIj57eyBwbGFjZWhvbGRlciB9fTwvc3Bhbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8c3BhbiBjbGFzcz1cImNoZXZyb25cIj5cbiAgICAgICAgPHJpdi1pY29uICpuZ0lmPVwiIWxvY2tlZFwiIFtuYW1lXT1cIidDaGV2cm9uRG93bidcIiBbc2l6ZV09XCIxNlwiPjwvcml2LWljb24+XG4gICAgICAgIDxyaXYtaWNvbiAqbmdJZj1cImxvY2tlZFwiIFtuYW1lXT1cIidMb2NrJ1wiIFtzaXplXT1cIjE2XCI+PC9yaXYtaWNvbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9yaXYtaW5wdXQtbGFiZWw+XG48L25nLXRlbXBsYXRlPlxuXG48cml2LWNhbGxvdXRcbiAgKm5nSWY9XCJvcGVuXCJcbiAgW2FuY2hvcl09XCJnZXRUcmlnZ2VyKClcIlxuICBbdGhlbWVdPVwiJ2xpZ2h0J1wiXG4gIFtzaG93Q2FyZXRdPVwiZmFsc2VcIlxuICBbYWxsb3dlZFBvc2l0aW9uc109XCJbXG4gICAgJ3RvcC1sZWZ0JyxcbiAgICAndG9wLWNlbnRlcicsXG4gICAgJ3RvcC1yaWdodCcsXG4gICAgJ2JvdHRvbS1yaWdodCcsXG4gICAgJ2JvdHRvbS1jZW50ZXInLFxuICAgICdib3R0b20tbGVmdCdcbiAgXVwiXG4gIChjbG9zZSk9XCJvcGVuID0gZmFsc2VcIlxuPlxuICA8aW5wdXRcbiAgICAqbmdJZj1cImZpbHRlcmFiaWxpdHlPcHRpb25zLmVuYWJsZWRcIlxuICAgICNmaWx0ZXJcbiAgICBjbGFzcz1cImZpbHRlclwiXG4gICAgW3BsYWNlaG9sZGVyXT1cImdldEZpbHRlclBsYWNlaG9sZGVyKClcIlxuICAgIFt2YWx1ZV09XCJmaWx0ZXJRdWVyeVwiXG4gICAgKGlucHV0KT1cImZpbHRlclF1ZXJ5ID0gZmlsdGVyLnZhbHVlOyBmaWx0ZXJRdWVyeUNoYW5nZS5lbWl0KGZpbHRlclF1ZXJ5KVwiXG4gICAgW3JpdkZvY3VzT25Jbml0XT1cInRydWVcIlxuICAvPlxuICA8ZGl2IGNsYXNzPVwib3B0aW9uc1wiIFtzdHlsZS5tYXgtaGVpZ2h0XT1cIm1heENhbGxvdXRIZWlnaHRcIj5cbiAgICA8cml2LWxvYWRpbmctY292ZXIgW2xvYWRpbmddPVwibG9hZGluZ1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgZ3JvdXBzOyB0cmFja0J5OiB0cmFja0J5SGVhZGVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncm91cC5oZWFkZXJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImdyb3VwLWhlYWRlclwiPlxuICAgICAgICAgICAge3sgZ3JvdXAuaGVhZGVyIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyb3VwLm9wdGlvbnM7IGxldCBub2Rlc1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJub2Rlcy5sZW5ndGggPiAwOyBlbHNlIGVtcHR5XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBub2RlIG9mIG5vZGVzOyB0cmFja0J5OiB0cmFja0J5T3B0aW9uXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJub2RlVGVtcGxhdGU7IGVsc2Ugc3RhbmRhcmRUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3VzdG9tLXNpbmdsZS1zZWxlY3Qtbm9kZVwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibm9kZS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0T3B0aW9uKG5vZGUpXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibm9kZVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgbm9kZSB9XCJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc3RhbmRhcmRUZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInNpbmdsZS1zZWxlY3Qtbm9kZVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwibm9kZT8uaWQgPT09IHNlbGVjdGVkT3B0aW9uPy5pZFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwibm9kZT8uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm5vZGU/LmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPcHRpb24obm9kZSlcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHJpdi1pY29uXG4gICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIidDaGVjaydcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm5vZGU/LmlkID09PSBzZWxlY3RlZE9wdGlvbj8uaWRcIlxuICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCIxNlwiXG4gICAgICAgICAgICAgICAgICA+PC9yaXYtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbC10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxyaXYtaGlnaGxpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJub2RlPy50aXRsZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5kaWNlc109XCJub2RlPy50aXRsZUhpZ2hsaWdodEluZGljZXMgfHwgW11cIlxuICAgICAgICAgICAgICAgICAgICAgID48L3Jpdi1oaWdobGlnaHQ+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJub2RlPy5zdWJ0aXRsZVwiIGNsYXNzPVwibGFiZWwtc3VidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8cml2LWhpZ2hsaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwibm9kZT8uc3VidGl0bGUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2luZGljZXNdPVwibm9kZT8uc3VidGl0bGVIaWdobGlnaHRJbmRpY2VzIHx8IFtdXCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9yaXYtaGlnaGxpZ2h0PlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2VtcHR5PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5XCI+XG4gICAgICAgICAgICAgIHt7IG5vT3B0aW9uc01lc3NhZ2UgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9yaXYtbG9hZGluZy1jb3Zlcj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmb290ZXJcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZm9vdGVyXVwiPiA8L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9yaXYtY2FsbG91dD5cbiJdfQ==
|
|
177
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9pbnB1dC9zaW5nbGUtc2VsZWN0L3NpbmdsZS1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvc2luZ2xlLXNlbGVjdC9zaW5nbGUtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLElBQUksTUFBTSxTQUFTLENBQUM7QUFDM0IsT0FBTyxFQUNMLFlBQVksRUFDWixJQUFJLEVBQ0osR0FBRyxFQUVILFFBQVEsRUFDUixTQUFTLEVBQ1QsU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7Ozs7QUFRM0UsTUFBTSxPQUFPLHFCQUdYLFNBQVEsbUJBQW1CO0lBVDdCOztRQVdFLFdBQU0sR0FBUSxFQUFFLENBQUM7UUFHakIsbUJBQWMsR0FBYSxJQUFJLENBQUM7UUFHaEMseUJBQW9CLEdBQStDO1lBQ2pFLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQztRQUdGLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFHekIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUd4QixxQkFBZ0IsR0FBVyxNQUFNLENBQUM7UUFHbEMscUJBQWdCLEdBQVcsc0JBQXNCLENBQUM7UUFTbEQsZ0JBQVcsR0FBVyxXQUFXLENBQUM7UUFHbEMsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUUxQixnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUd6QixzQkFBaUIsR0FBRyxJQUFJ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QUFFLENBQUM7eUJBQ2xCO3FCQUNGLENBQUMsQ0FBQztpQkFDSixDQUFDO1lBQ0osQ0FBQyxDQUFDO2lCQUNELE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCO1lBRXBFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsQ0FBQztRQUNwRCxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUN6QyxDQUNGLEVBQ0QsUUFBUSxFQUFFLEVBQ1YsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDekIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTTtTQUNyRCxDQUFDLENBQUMsRUFDSCxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUMxQyxDQUFDO0lBQ0osQ0FBQztJQXpEZSxvQ0FBYyxpQkF5RDdCLENBQUE7QUFDSCxDQUFDLEVBeEhnQixxQkFBcUIsS0FBckIscUJBQXFCLFFBd0hyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgRnVzZSBmcm9tICdmdXNlLmpzJztcbmltcG9ydCB7XG4gIGRlYm91bmNlVGltZSxcbiAgZnJvbSxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBwYWlyd2lzZSxcbiAgc3RhcnRXaXRoLFxuICBzd2l0Y2hNYXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSGlnaGxpZ2h0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdmlzdWFsaXphdGlvbi9oaWdobGlnaHQvaGlnaGxpZ2h0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dExhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQtbGFiZWwvaW5wdXQtbGFiZWwuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncml2LXNpbmdsZS1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2luZ2xlLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NpbmdsZS1zZWxlY3QuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2luZ2xlU2VsZWN0Q29tcG9uZW50PFxuICBUIGV4dGVuZHMgU2luZ2xlU2VsZWN0Q29tcG9uZW50Lk9wdGlvbkdyb3VwPFU+LFxuICBVIGV4dGVuZHMgU2luZ2xlU2VsZWN0Q29tcG9uZW50Lk9wdGlvbixcbj4gZXh0ZW5kcyBJbnB1dExhYmVsQ29tcG9uZW50IHtcbiAgQElucHV0KClcbiAgZ3JvdXBzOiBUW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBzZWxlY3RlZE9wdGlvbjogVSB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIGZpbHRlcmFiaWxpdHlPcHRpb25zOiBTaW5nbGVTZWxlY3RDb21wb25lbnQuRmlsdGVyYWJpbGl0eU9wdGlvbnMgPSB7XG4gICAgZW5hYmxlZDogZmFsc2UsXG4gIH07XG5cbiAgQElucHV0KClcbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGxvY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIG1heENhbGxvdXRIZWlnaHQ6IHN0cmluZyA9ICc1MHZoJztcblxuICBASW5wdXQoKVxuICBub09wdGlvbnNNZXNzYWdlOiBzdHJpbmcgPSAnTm8gYXZhaWxhYmxlIG9wdGlvbnMnO1xuXG4gIEBJbnB1dCgpXG4gIG5vZGVUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpXG4gIHRyaWdnZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnU2VsZWN0Li4uJztcblxuICBASW5wdXQoKVxuICBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGZpbHRlclF1ZXJ5OiBzdHJpbmcgPSAnJztcblxuICBAT3V0cHV0KClcbiAgZmlsdGVyUXVlcnlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBAT3V0cHV0KClcbiAgc2VsZWN0ZWRPcHRpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFU+KCk7XG5cbiAgQFZpZXdDaGlsZCgnY3VzdG9tVHJpZ2dlckJ1dHRvbicpIGN1c3RvbVRyaWdnZXJCdXR0b24/OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdzdGFuZGFyZFRyaWdnZXJCdXR0b24nKSBzdGFuZGFyZFRyaWdnZXJCdXR0b24/OiBFbGVtZW50UmVmO1xuXG4gIGdldFRyaWdnZXIoKTogRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmN1c3RvbVRyaWdnZXJCdXR0b24/Lm5hdGl2ZUVsZW1lbnQgPz9cbiAgICAgIHRoaXMuc3RhbmRhcmRUcmlnZ2VyQnV0dG9uPy5uYXRpdmVFbGVtZW50XG4gICAgKTtcbiAgfVxuXG4gIGdldEZpbHRlclBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5maWx0ZXJhYmlsaXR5T3B0aW9ucy5lbmFibGVkICYmXG4gICAgICB0aGlzLmZpbHRlcmFiaWxpdHlPcHRpb25zLnBsYWNlaG9sZGVyXG4gICAgKSB7XG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXJhYmlsaXR5T3B0aW9ucy5wbGFjZWhvbGRlcjtcbiAgICB9XG4gICAgcmV0dXJuICdGaWx0ZXIgb3B0aW9ucy4uLic7XG4gIH1cblxuICBhbGxvd2VkT3BlbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMubG9ja2VkKSB7XG4gICAgICB0aGlzLm9wZW4gPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIHNlbGVjdE9wdGlvbihuZXdseVNlbGVjdGVkT3B0aW9uOiBVKSB7XG4gICAgdGhpcy5zZWxlY3RlZE9wdGlvbkNoYW5nZS5lbWl0KG5ld2x5U2VsZWN0ZWRPcHRpb24pO1xuICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuXG4gICAgLy8gQ2xlYXIgZmlsdGVyIGFmdGVyIGFuIG9wdGlvbiBpcyBzZWxlY3RlZC5cbiAgICBpZiAodGhpcy5maWx0ZXJhYmlsaXR5T3B0aW9ucy5lbmFibGVkKSB7XG4gICAgICB0aGlzLmZpbHRlclF1ZXJ5ID0gJyc7XG4gICAgICB0aGlzLmZpbHRlclF1ZXJ5Q2hhbmdlLmVtaXQodGhpcy5maWx0ZXJRdWVyeSk7XG4gICAgfVxuICB9XG5cbiAgdHJhY2tCeUhlYWRlcihpOiBudW1iZXIsIGdyb3VwOiBTaW5nbGVTZWxlY3RDb21wb25lbnQuT3B0aW9uR3JvdXA8VT4pIHtcbiAgICByZXR1cm4gYCR7aX0ke2dyb3VwLmhlYWRlcn1gO1xuICB9XG5cbiAgdHJhY2tCeU9wdGlvbihfOiBudW1iZXIsIG9wdGlvbjogVSkge1xuICAgIHJldHVybiBvcHRpb24uaWQ7XG4gIH1cblxuICBvcGVuOiBib29sZWFuID0gZmFsc2U7XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgU2luZ2xlU2VsZWN0Q29tcG9uZW50IHtcbiAgZXhwb3J0IHR5cGUgT3B0aW9uID0ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBzdWJ0aXRsZT86IHN0cmluZztcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgdGl0bGVIaWdobGlnaHRJbmRpY2VzPzogSGlnaGxpZ2h0Q29tcG9uZW50LkhpZ2hsaWdodEluZGljZXNbXTtcbiAgICBzdWJ0aXRsZUhpZ2hsaWdodEluZGljZXM/OiBIaWdobGlnaHRDb21wb25lbnQuSGlnaGxpZ2h0SW5kaWNlc1tdO1xuICB9O1xuXG4gIGV4cG9ydCB0eXBlIE9wdGlvbkdyb3VwPE8gZXh0ZW5kcyBPcHRpb24+ID0ge1xuICAgIGhlYWRlcj86IHN0cmluZztcbiAgICBvcHRpb25zOiBPW107XG4gIH07XG5cbiAgZXhwb3J0IHR5cGUgRmlsdGVyYWJpbGl0eU9wdGlvbnMgPVxuICAgIHwge1xuICAgICAgICBlbmFibGVkOiBmYWxzZTtcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgZW5hYmxlZDogdHJ1ZTtcbiAgICAgICAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgICB9O1xuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRGaWx0ZXJTeW5jPFQgZXh0ZW5kcyBPcHRpb25Hcm91cDxVPiwgVSBleHRlbmRzIE9wdGlvbj4oXG4gICAgZ3JvdXBzOiBUW10sXG4gICAgZXhhY3Q6IGJvb2xlYW4gPSBmYWxzZSxcbiAgKTogKHF1ZXJ5OiBzdHJpbmcpID0+IFRbXSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGZpbHRlcihxdWVyeTogc3RyaW5nKSB7XG4gICAgICBpZiAoIXF1ZXJ5KSByZXR1cm4gZ3JvdXBzO1xuXG4gICAgICBjb25zdCBmdXNlT3B0aW9ucyA9IHtcbiAgICAgICAga2V5czogWyd0aXRsZScsICdzdWJ0aXRsZSddLFxuICAgICAgICBpbmNsdWRlTWF0Y2hlczogdHJ1ZSxcbiAgICAgICAgc2hvdWxkU29ydDogdHJ1ZSxcbiAgICAgICAgdGhyZXNob2xkOiBleGFjdCA/IDAuMCA6IDAuNixcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBncm91cHNcbiAgICAgICAgLm1hcChncm91cCA9PiB7XG4gICAgICAgICAgY29uc3QgZnVzZSA9IG5ldyBGdXNlKGdyb3VwLm9wdGlvbnMsIGZ1c2VPcHRpb25zKTtcbiAgICAgICAgICBjb25zdCBtYXRjaGVzID0gZnVzZS5zZWFyY2gocXVlcnkpO1xuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmdyb3VwLFxuICAgICAgICAgICAgb3B0aW9uczogbWF0Y2hlcy5tYXAobWF0Y2ggPT4gKHtcbiAgICAgICAgICAgICAgLi4ubWF0Y2guaXRlbSxcbiAgICAgICAgICAgICAgdGl0bGVIaWdobGlnaHRJbmRpY2VzOiBbXG4gICAgICAgICAgICAgICAgLi4uKG1hdGNoLm1hdGNoZXM/LmZpbmQocmVzdWx0ID0+IHJlc3VsdC5rZXkgPT09ICd0aXRsZScpXG4gICAgICAgICAgICAgICAgICA/LmluZGljZXMgfHwgW10pLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBzdWJ0aXRsZUhpZ2hsaWdodEluZGljZXM6IFtcbiAgICAgICAgICAgICAgICAuLi4obWF0Y2gubWF0Y2hlcz8uZmluZChyZXN1bHQgPT4gcmVzdWx0LmtleSA9PT0gJ3N1YnRpdGxlJylcbiAgICAgICAgICAgICAgICAgID8uaW5kaWNlcyB8fCBbXSksXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcihncm91cCA9PiBncm91cC5vcHRpb25zLmxlbmd0aCA+IDApOyAvLyBSZW1vdmUgZW1wdHkgZ3JvdXBzXG4gICAgfTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRGaWx0ZXJBc3luYzxUIGV4dGVuZHMgT3B0aW9uR3JvdXA8VT4sIFUgZXh0ZW5kcyBPcHRpb24+KFxuICAgIHF1ZXJ5JDogT2JzZXJ2YWJsZTxzdHJpbmc+LFxuICAgIGZldGNoZXI6IChxdWVyeTogc3RyaW5nKSA9PiBQcm9taXNlPFRbXT4sXG4gICAgZGVib3VuY2VJbnB1dDogbnVtYmVyID0gMzAwLFxuICApOiBPYnNlcnZhYmxlPHtcbiAgICBsb2FkaW5nOiBib29sZWFuO1xuICAgIGdyb3VwczogVFtdO1xuICB9PiB7XG4gICAgcmV0dXJuIHF1ZXJ5JC5waXBlKFxuICAgICAgZGVib3VuY2VUaW1lKGRlYm91bmNlSW5wdXQpLFxuICAgICAgc3dpdGNoTWFwKHF1ZXJ5ID0+XG4gICAgICAgIGZyb20oZmV0Y2hlcihxdWVyeSkpLnBpcGUoXG4gICAgICAgICAgbWFwKGdyb3VwcyA9PiB7XG4gICAgICAgICAgICBpZiAoIXF1ZXJ5KSByZXR1cm4geyBsb2FkaW5nOiBmYWxzZSwgZ3JvdXBzIH07XG5cbiAgICAgICAgICAgIGNvbnN0IGZ1c2VPcHRpb25zID0ge1xuICAgICAgICAgICAgICBrZXlzOiBbJ3RpdGxlJywgJ3N1YnRpdGxlJ10sXG4gICAgICAgICAgICAgIGluY2x1ZGVNYXRjaGVzOiB0cnVlLFxuICAgICAgICAgICAgICBzaG91bGRTb3J0OiB0cnVlLFxuICAgICAgICAgICAgICB0aHJlc2hvbGQ6IDAuNixcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkR3JvdXBzID0gZ3JvdXBzXG4gICAgICAgICAgICAgIC5tYXAoZ3JvdXAgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZ1c2UgPSBuZXcgRnVzZShncm91cC5vcHRpb25zLCBmdXNlT3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hlcyA9IGZ1c2Uuc2VhcmNoKHF1ZXJ5KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAuLi5ncm91cCxcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IG1hdGNoZXMubWFwKG1hdGNoID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLm1hdGNoLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlSGlnaGxpZ2h0SW5kaWNlczogW1xuICAgICAgICAgICAgICAgICAgICAgIC4uLihtYXRjaC5tYXRjaGVzPy5maW5kKHJlc3VsdCA9PiByZXN1bHQua2V5ID09PSAndGl0bGUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgPy5pbmRpY2VzIHx8IFtdKSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgc3VidGl0bGVIaWdobGlnaHRJbmRpY2VzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgLi4uKG1hdGNoLm1hdGNoZXM/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPT4gcmVzdWx0LmtleSA9PT0gJ3N1YnRpdGxlJyxcbiAgICAgICAgICAgICAgICAgICAgICApPy5pbmRpY2VzIHx8IFtdKSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuZmlsdGVyKGdyb3VwID0+IGdyb3VwLm9wdGlvbnMubGVuZ3RoID4gMCk7IC8vIFJlbW92ZSBlbXB0eSBncm91cHNcblxuICAgICAgICAgICAgcmV0dXJuIHsgbG9hZGluZzogZmFsc2UsIGdyb3VwczogZmlsdGVyZWRHcm91cHMgfTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBzdGFydFdpdGgoeyBsb2FkaW5nOiB0cnVlLCBncm91cHM6IFtdIH0pLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICAgIHBhaXJ3aXNlKCksXG4gICAgICBtYXAoKFtwcmV2aW91cywgbmV4dF0pID0+ICh7XG4gICAgICAgIGxvYWRpbmc6IG5leHQubG9hZGluZyxcbiAgICAgICAgZ3JvdXBzOiBuZXh0LmxvYWRpbmcgPyBwcmV2aW91cy5ncm91cHMgOiBuZXh0Lmdyb3VwcyxcbiAgICAgIH0pKSxcbiAgICAgIHN0YXJ0V2l0aCh7IGxvYWRpbmc6IGZhbHNlLCBncm91cHM6IFtdIH0pLFxuICAgICk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJ0cmlnZ2VyVGVtcGxhdGU7IGVsc2Ugc3RhbmRhcmRUcmlnZ2VyXCI+XG4gIDxidXR0b25cbiAgICAjY3VzdG9tVHJpZ2dlckJ1dHRvblxuICAgIChjbGljayk9XCJhbGxvd2VkT3BlbigpXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgbG9ja2VkXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyaWdnZXJUZW1wbGF0ZVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBzZWxlY3RlZE9wdGlvbiB9XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gIDwvYnV0dG9uPlxuPC9uZy1jb250YWluZXI+XG48bmctdGVtcGxhdGUgI3N0YW5kYXJkVHJpZ2dlcj5cbiAgPHJpdi1pbnB1dC1sYWJlbFxuICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgW2hlbHBdPVwiaGVscFwiXG4gICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICBbbGFiZWxBY3Rpb25UZXh0XT1cImxhYmVsQWN0aW9uVGV4dFwiXG4gICAgKGxhYmVsQWN0aW9uKT1cImxhYmVsQWN0aW9uLmVtaXQoJGV2ZW50KVwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICAjc3RhbmRhcmRUcmlnZ2VyQnV0dG9uXG4gICAgICBjbGFzcz1cInRyaWdnZXJcIlxuICAgICAgKGNsaWNrKT1cImFsbG93ZWRPcGVuKClcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IGxvY2tlZFwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRPcHRpb247IGVsc2UgcGxhY2Vob2xkZXJWYWx1ZVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+e3sgc2VsZWN0ZWRPcHRpb24udGl0bGUgfX08L3NwYW4+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjcGxhY2Vob2xkZXJWYWx1ZT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZSBwbGFjZWhvbGRlclwiPnt7IHBsYWNlaG9sZGVyIH19PC9zcGFuPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY2hldnJvblwiPlxuICAgICAgICA8cml2LWljb24gKm5nSWY9XCIhbG9ja2VkXCIgW25hbWVdPVwiJ0NoZXZyb25Eb3duJ1wiIFtzaXplXT1cIjE2XCI+PC9yaXYtaWNvbj5cbiAgICAgICAgPHJpdi1pY29uICpuZ0lmPVwibG9ja2VkXCIgW25hbWVdPVwiJ0xvY2snXCIgW3NpemVdPVwiMTZcIj48L3Jpdi1pY29uPlxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L3Jpdi1pbnB1dC1sYWJlbD5cbjwvbmctdGVtcGxhdGU+XG5cbjxyaXYtY2FsbG91dFxuICAqbmdJZj1cIm9wZW5cIlxuICBbYW5jaG9yXT1cImdldFRyaWdnZXIoKVwiXG4gIFt0aGVtZV09XCInbGlnaHQnXCJcbiAgW3Nob3dDYXJldF09XCJmYWxzZVwiXG4gIFthbGxvd2VkUG9zaXRpb25zXT1cIltcbiAgICAndG9wLWxlZnQnLFxuICAgICd0b3AtY2VudGVyJyxcbiAgICAndG9wLXJpZ2h0JyxcbiAgICAnYm90dG9tLXJpZ2h0JyxcbiAgICAnYm90dG9tLWNlbnRlcicsXG4gICAgJ2JvdHRvbS1sZWZ0J1xuICBdXCJcbiAgKGNsb3NlKT1cIm9wZW4gPSBmYWxzZVwiXG4+XG4gIDxpbnB1dFxuICAgICpuZ0lmPVwiZmlsdGVyYWJpbGl0eU9wdGlvbnMuZW5hYmxlZFwiXG4gICAgI2ZpbHRlclxuICAgIGNsYXNzPVwiZmlsdGVyXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwiZ2V0RmlsdGVyUGxhY2Vob2xkZXIoKVwiXG4gICAgW3ZhbHVlXT1cImZpbHRlclF1ZXJ5XCJcbiAgICAoaW5wdXQpPVwiZmlsdGVyUXVlcnkgPSBmaWx0ZXIudmFsdWU7IGZpbHRlclF1ZXJ5Q2hhbmdlLmVtaXQoZmlsdGVyUXVlcnkpXCJcbiAgICBbcml2Rm9jdXNPbkluaXRdPVwidHJ1ZVwiXG4gIC8+XG4gIDxkaXYgY2xhc3M9XCJvcHRpb25zXCIgW3N0eWxlLm1heC1oZWlnaHRdPVwibWF4Q2FsbG91dEhlaWdodFwiPlxuICAgIDxyaXYtbG9hZGluZy1jb3ZlciBbbG9hZGluZ109XCJsb2FkaW5nXCI+XG4gICAgICA8cml2LXplcm8tc3RhdGVcbiAgICAgICAgKm5nSWY9XCIhZ3JvdXBzLmxlbmd0aFwiXG4gICAgICAgIFttZXNzYWdlXT1cIm5vT3B0aW9uc01lc3NhZ2VcIlxuICAgICAgPjwvcml2LXplcm8tc3RhdGU+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBncm91cCBvZiBncm91cHM7IHRyYWNrQnk6IHRyYWNrQnlIZWFkZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyb3VwLmhlYWRlclwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ3JvdXAtaGVhZGVyXCI+XG4gICAgICAgICAgICB7eyBncm91cC5oZWFkZXIgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JvdXAub3B0aW9uczsgbGV0IG5vZGVzXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vZGVzLmxlbmd0aCA+IDA7IGVsc2UgZW1wdHlcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG5vZGUgb2Ygbm9kZXM7IHRyYWNrQnk6IHRyYWNrQnlPcHRpb25cIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vZGVUZW1wbGF0ZTsgZWxzZSBzdGFuZGFyZFRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20tc2luZ2xlLXNlbGVjdC1ub2RlXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJub2RlLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPcHRpb24obm9kZSlcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJub2RlVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBub2RlIH1cIlxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzdGFuZGFyZFRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2luZ2xlLXNlbGVjdC1ub2RlXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJub2RlPy5pZCA9PT0gc2VsZWN0ZWRPcHRpb24/LmlkXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJub2RlPy5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibm9kZT8uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9wdGlvbihub2RlKVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8cml2LWljb25cbiAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiJ0NoZWNrJ1wiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibm9kZT8uaWQgPT09IHNlbGVjdGVkT3B0aW9uPy5pZFwiXG4gICAgICAgICAgICAgICAgICAgIFtzaXplXT1cIjE2XCJcbiAgICAgICAgICAgICAgICAgID48L3Jpdi1pY29uPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHJpdi1oaWdobGlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIm5vZGU/LnRpdGxlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRpY2VzXT1cIm5vZGU/LnRpdGxlSGlnaGxpZ2h0SW5kaWNlcyB8fCBbXVwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvcml2LWhpZ2hsaWdodD5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm5vZGU/LnN1YnRpdGxlXCIgY2xhc3M9XCJsYWJlbC1zdWJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxyaXYtaGlnaGxpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJub2RlPy5zdWJ0aXRsZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5kaWNlc109XCJub2RlPy5zdWJ0aXRsZUhpZ2hsaWdodEluZGljZXMgfHwgW11cIlxuICAgICAgICAgICAgICAgICAgICAgID48L3Jpdi1oaWdobGlnaHQ+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZW1wdHk+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHlcIj5cbiAgICAgICAgICAgICAge3sgbm9PcHRpb25zTWVzc2FnZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltwb3N0T3B0aW9uTGlzdF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9yaXYtbG9hZGluZy1jb3Zlcj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmb290ZXJcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZm9vdGVyXVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L3Jpdi1jYWxsb3V0PlxuIl19
|