UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

281 lines 44.1 kB
import { __decorate, __metadata } from "tslib"; import { CommonFormControl } from '@alauda/ui'; import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, Directive, forwardRef, HostBinding, Input, Optional, TemplateRef, } from '@angular/core'; import { FormGroupDirective, NG_VALUE_ACCESSOR } from '@angular/forms'; import { BehaviorSubject, combineLatest, Observable, debounceTime, switchMap, tap, } from 'rxjs'; import { ObservableInput } from '../core/utils/decorators'; import * as i0 from "@angular/core"; import * as i1 from "@angular/forms"; import * as i2 from "@angular/common"; import * as i3 from "@alauda/ui"; import * as i4 from "../core/directives/readonly-field.directive"; import * as i5 from "../effect-directive/e2e-attribute-binding.directive"; import * as i6 from "../translate/translate.pipe"; import * as i7 from "../core/pipes/pure.pipe"; const _c0 = a0 => ({ $implicit: a0 }); function SearchableSelectorComponent_ng_container_0_aui_option_3_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainer(0); } } function SearchableSelectorComponent_ng_container_0_aui_option_3_ng_container_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵtemplate(1, SearchableSelectorComponent_ng_container_0_aui_option_3_ng_container_1_ng_container_1_Template, 1, 0, "ng-container", 8); i0.ɵɵelementContainerEnd(); } if (rf & 2) { const option_r3 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵadvance(); i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.optionTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c0, option_r3)); } } function SearchableSelectorComponent_ng_container_0_aui_option_3_ng_template_2_Template(rf, ctx) { if (rf & 1) { i0.ɵɵtext(0); } if (rf & 2) { const option_r3 = i0.ɵɵnextContext().$implicit; i0.ɵɵtextInterpolate1(" ", option_r3.label, " "); } } function SearchableSelectorComponent_ng_container_0_aui_option_3_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "aui-option", 7); i0.ɵɵtemplate(1, SearchableSelectorComponent_ng_container_0_aui_option_3_ng_container_1_Template, 2, 4, "ng-container", 4)(2, SearchableSelectorComponent_ng_container_0_aui_option_3_ng_template_2_Template, 1, 1, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor); i0.ɵɵelementEnd(); } if (rf & 2) { const option_r3 = ctx.$implicit; const normalOption_r4 = i0.ɵɵreference(3); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵproperty("labelContext", option_r3)("value", option_r3.value)("label", ctx_r1.labelTemplate || option_r3.label); i0.ɵɵadvance(); i0.ɵɵproperty("ngIf", ctx_r1.optionTemplate)("ngIfElse", normalOption_r4); } } function SearchableSelectorComponent_ng_container_0_ng_template_8_aui_tag_0_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "aui-tag", 10); i0.ɵɵtext(1); i0.ɵɵpipe(2, "async"); i0.ɵɵpipe(3, "pure"); i0.ɵɵelementEnd(); } if (rf & 2) { const m_r5 = ctx.$implicit; const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵproperty("border", true); i0.ɵɵadvance(); i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind3(3, 4, m_r5, ctx_r1.getLabel, i0.ɵɵpipeBind1(2, 2, ctx_r1.data$)), " "); } } function SearchableSelectorComponent_ng_container_0_ng_template_8_Template(rf, ctx) { if (rf & 1) { i0.ɵɵtemplate(0, SearchableSelectorComponent_ng_container_0_ng_template_8_aui_tag_0_Template, 4, 8, "aui-tag", 9); } if (rf & 2) { const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵproperty("ngForOf", ctx_r1.model); } } function SearchableSelectorComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) { const _r1 = i0.ɵɵgetCurrentView(); i0.ɵɵelementContainerStart(0); i0.ɵɵelementStart(1, "aui-multi-select", 5); i0.ɵɵpipe(2, "translate"); i0.ɵɵlistener("ngModelChange", function SearchableSelectorComponent_ng_container_0_Template_aui_multi_select_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.emitValue($event)); })("filterChange", function SearchableSelectorComponent_ng_container_0_Template_aui_multi_select_filterChange_1_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.filterChange($event)); }); i0.ɵɵtemplate(3, SearchableSelectorComponent_ng_container_0_aui_option_3_Template, 4, 5, "aui-option", 6); i0.ɵɵpipe(4, "async"); i0.ɵɵelementStart(5, "aui-option-placeholder"); i0.ɵɵtext(6); i0.ɵɵpipe(7, "translate"); i0.ɵɵelementEnd(); i0.ɵɵtemplate(8, SearchableSelectorComponent_ng_container_0_ng_template_8_Template, 1, 1, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor); i0.ɵɵelementEnd(); i0.ɵɵelementContainerEnd(); } if (rf & 2) { const temp_r6 = i0.ɵɵreference(9); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵadvance(); i0.ɵɵproperty("aclReadonlyField", !!ctx_r1.readonly)("aclReadonlyFieldTemplate", temp_r6)("ngModel", ctx_r1.model)("loading", ctx_r1.loading)("filterFn", ctx_r1.filterFn)("placeholder", ctx_r1.placeholder ? i0.ɵɵpipeBind1(2, 12, ctx_r1.placeholder) : "")("allowCreate", ctx_r1.allowCreate)("trackFn", ctx_r1.trackFn || ctx_r1.defaultTrackFn)("clearable", ctx_r1.clearable)("filterable", true); i0.ɵɵadvance(2); i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(4, 14, ctx_r1.data$)); i0.ɵɵadvance(3); i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(7, 16, "no_data"), " "); } } function SearchableSelectorComponent_ng_template_1_aui_option_2_ng_container_3_ng_container_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainer(0); } } function SearchableSelectorComponent_ng_template_1_aui_option_2_ng_container_3_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵtemplate(1, SearchableSelectorComponent_ng_template_1_aui_option_2_ng_container_3_ng_container_1_Template, 1, 0, "ng-container", 8); i0.ɵɵelementContainerEnd(); } if (rf & 2) { const option_r8 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵadvance(); i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.optionTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c0, option_r8)); } } function SearchableSelectorComponent_ng_template_1_aui_option_2_ng_template_4_Template(rf, ctx) { if (rf & 1) { i0.ɵɵtext(0); } if (rf & 2) { const option_r8 = i0.ɵɵnextContext().$implicit; i0.ɵɵtextInterpolate1(" ", option_r8.label, " "); } } function SearchableSelectorComponent_ng_template_1_aui_option_2_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "aui-option", 13); i0.ɵɵpipe(1, "pure"); i0.ɵɵpipe(2, "pure"); i0.ɵɵtemplate(3, SearchableSelectorComponent_ng_template_1_aui_option_2_ng_container_3_Template, 2, 4, "ng-container", 4)(4, SearchableSelectorComponent_ng_template_1_aui_option_2_ng_template_4_Template, 1, 1, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor); i0.ɵɵelementEnd(); } if (rf & 2) { const option_r8 = ctx.$implicit; const normalOption_r9 = i0.ɵɵreference(5); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵproperty("labelContext", i0.ɵɵpureFunction1(16, _c0, option_r8))("value", option_r8.value)("label", ctx_r1.labelTemplate || option_r8.label)("disabled", ctx_r1.disableFn ? i0.ɵɵpipeBind3(1, 8, option_r8, ctx_r1.disableFn, ctx_r1.disableParams) : false)("auiTooltip", ctx_r1.disableTooltip)("auiTooltipDisabled", ctx_r1.disableFn ? !i0.ɵɵpipeBind3(2, 12, option_r8, ctx_r1.disableFn, ctx_r1.disableParams) : true); i0.ɵɵadvance(3); i0.ɵɵproperty("ngIf", ctx_r1.optionTemplate)("ngIfElse", normalOption_r9); } } function SearchableSelectorComponent_ng_template_1_ng_template_7_Template(rf, ctx) { if (rf & 1) { i0.ɵɵtext(0); i0.ɵɵpipe(1, "async"); i0.ɵɵpipe(2, "pure"); } if (rf & 2) { const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind3(2, 3, ctx_r1.model, ctx_r1.getLabel, i0.ɵɵpipeBind1(1, 1, ctx_r1.data$)), " "); } } function SearchableSelectorComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) { const _r7 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "aui-select", 11); i0.ɵɵpipe(1, "translate"); i0.ɵɵlistener("ngModelChange", function SearchableSelectorComponent_ng_template_1_Template_aui_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.emitValue($event)); })("filterChange", function SearchableSelectorComponent_ng_template_1_Template_aui_select_filterChange_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.filterChange($event)); }); i0.ɵɵtemplate(2, SearchableSelectorComponent_ng_template_1_aui_option_2_Template, 6, 18, "aui-option", 12); i0.ɵɵpipe(3, "async"); i0.ɵɵelementStart(4, "aui-option-placeholder"); i0.ɵɵtext(5); i0.ɵɵpipe(6, "translate"); i0.ɵɵelementEnd(); i0.ɵɵtemplate(7, SearchableSelectorComponent_ng_template_1_ng_template_7_Template, 3, 7, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor); i0.ɵɵelementEnd(); } if (rf & 2) { const temps_r10 = i0.ɵɵreference(8); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵproperty("aclReadonlyField", !!ctx_r1.readonly)("aclReadonlyFieldTemplate", temps_r10)("ngModel", ctx_r1.model)("loading", ctx_r1.loading)("filterFn", ctx_r1.filterFn)("placeholder", ctx_r1.placeholder ? i0.ɵɵpipeBind1(1, 11, ctx_r1.placeholder) : "")("allowCreate", ctx_r1.allowCreate)("trackFn", ctx_r1.trackFn || ctx_r1.defaultTrackFn)("clearable", ctx_r1.clearable); i0.ɵɵadvance(2); i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(3, 13, ctx_r1.data$)); i0.ɵɵadvance(3); i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 15, "no_data"), " "); } } export class SearchableSelectorLabelDirective { static { this.ɵfac = function SearchableSelectorLabelDirective_Factory(t) { return new (t || SearchableSelectorLabelDirective)(); }; } static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: SearchableSelectorLabelDirective, selectors: [["", "aclSearchableSelectorLabel", ""]] }); } } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchableSelectorLabelDirective, [{ type: Directive, args: [{ selector: '[aclSearchableSelectorLabel]', }] }], null, null); })(); export class SearchableSelectorOptionDirective { static { this.ɵfac = function SearchableSelectorOptionDirective_Factory(t) { return new (t || SearchableSelectorOptionDirective)(); }; } static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: SearchableSelectorOptionDirective, selectors: [["", "aclSearchableSelectorOption", ""]] }); } } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchableSelectorOptionDirective, [{ type: Directive, args: [{ selector: '[aclSearchableSelectorOption]', }] }], null, null); })(); export class SearchableSelectorComponent extends CommonFormControl { get errorState() { return this.parentForm?.submitted; } constructor(parentForm, cdr) { super(cdr); this.parentForm = parentForm; this.keyword$$ = new BehaviorSubject(''); this.loading = false; this.data$ = combineLatest([ this.fetcher$, this.params$, this.keyword$$.pipe(debounceTime(500)), ]).pipe(tap(() => (this.loading = true)), switchMap(([fetcher, params, keyword]) => fetcher(params, keyword)), tap(() => (this.loading = false))); this.defaultTrackFn = (value) => value; this.filterFn = (keyword, option) => { const ctx = option.labelContext.$implicit; const searchValue = ctx ? ctx.filterValue || (typeof ctx.label === 'string' ? ctx.label : '') : option.label || option.value; const key = keyword?.toLowerCase(); return searchValue.toLowerCase().includes(key); }; } filterChange(keyword) { this.keyword$$.next(keyword); } getLabel(value, data) { return data?.find(data => data.value === value)?.label || value; } static { this.ɵfac = function SearchableSelectorComponent_Factory(t) { return new (t || SearchableSelectorComponent)(i0.ɵɵdirectiveInject(i1.FormGroupDirective, 8), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; } static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchableSelectorComponent, selectors: [["acl-searchable-selector"]], contentQueries: function SearchableSelectorComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) { i0.ɵɵcontentQuery(dirIndex, SearchableSelectorLabelDirective, 5, TemplateRef); i0.ɵɵcontentQuery(dirIndex, SearchableSelectorOptionDirective, 5, TemplateRef); } if (rf & 2) { let _t; i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.labelTemplate = _t.first); i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.optionTemplate = _t.first); } }, hostVars: 2, hostBindings: function SearchableSelectorComponent_HostBindings(rf, ctx) { if (rf & 2) { i0.ɵɵclassProp("ng-submitted", ctx.errorState); } }, inputs: { fetcher: "fetcher", allowCreate: "allowCreate", placeholder: "placeholder", trackFn: "trackFn", params: "params", multi: "multi", clearable: "clearable", disableFn: "disableFn", disableParams: "disableParams", disableTooltip: "disableTooltip" }, features: [i0.ɵɵProvidersFeature([ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SearchableSelectorComponent), multi: true, }, ]), i0.ɵɵInheritDefinitionFeature], decls: 3, vars: 2, consts: [["single", ""], ["temp", ""], ["normalOption", ""], ["temps", ""], [4, "ngIf", "ngIfElse"], ["auiFormItemControl", "", 3, "ngModelChange", "filterChange", "aclReadonlyField", "aclReadonlyFieldTemplate", "ngModel", "loading", "filterFn", "placeholder", "allowCreate", "trackFn", "clearable", "filterable"], ["class", "option", 3, "labelContext", "value", "label", 4, "ngFor", "ngForOf"], [1, "option", 3, "labelContext", "value", "label"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["size", "mini", "type", "info", 3, "border", 4, "ngFor", "ngForOf"], ["size", "mini", "type", "info", 3, "border"], ["auiFormItemControl", "", 3, "ngModelChange", "filterChange", "aclReadonlyField", "aclReadonlyFieldTemplate", "ngModel", "loading", "filterFn", "placeholder", "allowCreate", "trackFn", "clearable"], ["class", "option", 3, "labelContext", "value", "label", "disabled", "auiTooltip", "auiTooltipDisabled", 4, "ngFor", "ngForOf"], [1, "option", 3, "labelContext", "value", "label", "disabled", "auiTooltip", "auiTooltipDisabled"]], template: function SearchableSelectorComponent_Template(rf, ctx) { if (rf & 1) { i0.ɵɵtemplate(0, SearchableSelectorComponent_ng_container_0_Template, 10, 18, "ng-container", 4)(1, SearchableSelectorComponent_ng_template_1_Template, 9, 17, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor); } if (rf & 2) { const single_r11 = i0.ɵɵreference(2); i0.ɵɵproperty("ngIf", ctx.multi)("ngIfElse", single_r11); } }, dependencies: [i2.NgForOf, i2.NgIf, i2.NgTemplateOutlet, i3.SelectComponent, i3.OptionComponent, i3.OptionPlaceholderComponent, i3.MultiSelectComponent, i1.NgControlStatus, i1.NgModel, i3.TooltipDirective, i3.TagComponent, i4.ReadonlyFieldDirective, i5.E2eAttributeBindingDirective, i2.AsyncPipe, i6.TranslatePipe, i7.PurePipe], styles: ["[_nghost-%COMP%]{display:block}.ng-invalid.ng-submitted[_nghost-%COMP%] aui-select[_ngcontent-%COMP%] .aui-input, .ng-invalid.ng-submitted[_nghost-%COMP%] aui-multi-select[_ngcontent-%COMP%] .aui-input, .ng-invalid.ng-dirty[_nghost-%COMP%] aui-select[_ngcontent-%COMP%] .aui-input, .ng-invalid.ng-dirty[_nghost-%COMP%] aui-multi-select[_ngcontent-%COMP%] .aui-input{border-color:rgb(var(--aui-color-red))!important}:root .ng-invalid.ng-submitted[_nghost-%COMP%] aui-select[_ngcontent-%COMP%] .aui-input:focus, :root .ng-invalid.ng-submitted[_nghost-%COMP%] aui-select[_ngcontent-%COMP%] .aui-input.isFocused, :root .ng-invalid.ng-submitted[_nghost-%COMP%] aui-multi-select[_ngcontent-%COMP%] .aui-input:focus, :root .ng-invalid.ng-submitted[_nghost-%COMP%] aui-multi-select[_ngcontent-%COMP%] .aui-input.isFocused, :root .ng-invalid.ng-dirty[_nghost-%COMP%] aui-select[_ngcontent-%COMP%] .aui-input:focus, :root .ng-invalid.ng-dirty[_nghost-%COMP%] aui-select[_ngcontent-%COMP%] .aui-input.isFocused, :root .ng-invalid.ng-dirty[_nghost-%COMP%] aui-multi-select[_ngcontent-%COMP%] .aui-input:focus, :root .ng-invalid.ng-dirty[_nghost-%COMP%] aui-multi-select[_ngcontent-%COMP%] .aui-input.isFocused{box-shadow:0 0 0 2px rgba(var(--aui-color-red),.16)}html[aui-theme-mode=light] .ng-invalid.ng-submitted[_nghost-%COMP%] aui-select[_ngcontent-%COMP%] .aui-input:focus, html[aui-theme-mode=light] .ng-invalid.ng-submitted[_nghost-%COMP%] aui-select[_ngcontent-%COMP%] .aui-input.isFocused, html[aui-theme-mode=light] .ng-invalid.ng-submitted[_nghost-%COMP%] aui-multi-select[_ngcontent-%COMP%] .aui-input:focus, html[aui-theme-mode=light] .ng-invalid.ng-submitted[_nghost-%COMP%] aui-multi-select[_ngcontent-%COMP%] .aui-input.isFocused, html[aui-theme-mode=light] .ng-invalid.ng-dirty[_nghost-%COMP%] aui-select[_ngcontent-%COMP%] .aui-input:focus, html[aui-theme-mode=light] .ng-invalid.ng-dirty[_nghost-%COMP%] aui-select[_ngcontent-%COMP%] .aui-input.isFocused, html[aui-theme-mode=light] .ng-invalid.ng-dirty[_nghost-%COMP%] aui-multi-select[_ngcontent-%COMP%] .aui-input:focus, html[aui-theme-mode=light] .ng-invalid.ng-dirty[_nghost-%COMP%] aui-multi-select[_ngcontent-%COMP%] .aui-input.isFocused{box-shadow:0 0 0 2px rgba(var(--aui-color-red),.16)}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] .ng-invalid.ng-submitted[_nghost-%COMP%] aui-select[_ngcontent-%COMP%] .aui-input:focus, html[aui-theme-mode=system] .ng-invalid.ng-submitted[_nghost-%COMP%] aui-select[_ngcontent-%COMP%] .aui-input.isFocused, html[aui-theme-mode=system] .ng-invalid.ng-submitted[_nghost-%COMP%] aui-multi-select[_ngcontent-%COMP%] .aui-input:focus, html[aui-theme-mode=system] .ng-invalid.ng-submitted[_nghost-%COMP%] aui-multi-select[_ngcontent-%COMP%] .aui-input.isFocused, html[aui-theme-mode=system] .ng-invalid.ng-dirty[_nghost-%COMP%] aui-select[_ngcontent-%COMP%] .aui-input:focus, html[aui-theme-mode=system] .ng-invalid.ng-dirty[_nghost-%COMP%] aui-select[_ngcontent-%COMP%] .aui-input.isFocused, html[aui-theme-mode=system] .ng-invalid.ng-dirty[_nghost-%COMP%] aui-multi-select[_ngcontent-%COMP%] .aui-input:focus, html[aui-theme-mode=system] .ng-invalid.ng-dirty[_nghost-%COMP%] aui-multi-select[_ngcontent-%COMP%] .aui-input.isFocused{box-shadow:0 0 0 2px rgba(var(--aui-color-red),.3)}}html[aui-theme-mode=dark] .ng-invalid.ng-submitted[_nghost-%COMP%] aui-select[_ngcontent-%COMP%] .aui-input:focus, html[aui-theme-mode=dark] .ng-invalid.ng-submitted[_nghost-%COMP%] aui-select[_ngcontent-%COMP%] .aui-input.isFocused, html[aui-theme-mode=dark] .ng-invalid.ng-submitted[_nghost-%COMP%] aui-multi-select[_ngcontent-%COMP%] .aui-input:focus, html[aui-theme-mode=dark] .ng-invalid.ng-submitted[_nghost-%COMP%] aui-multi-select[_ngcontent-%COMP%] .aui-input.isFocused, html[aui-theme-mode=dark] .ng-invalid.ng-dirty[_nghost-%COMP%] aui-select[_ngcontent-%COMP%] .aui-input:focus, html[aui-theme-mode=dark] .ng-invalid.ng-dirty[_nghost-%COMP%] aui-select[_ngcontent-%COMP%] .aui-input.isFocused, html[aui-theme-mode=dark] .ng-invalid.ng-dirty[_nghost-%COMP%] aui-multi-select[_ngcontent-%COMP%] .aui-input:focus, html[aui-theme-mode=dark] .ng-invalid.ng-dirty[_nghost-%COMP%] aui-multi-select[_ngcontent-%COMP%] .aui-input.isFocused{box-shadow:0 0 0 2px rgba(var(--aui-color-red),.3)} .option .aui-option{max-width:600px}"], changeDetection: 0 }); } } __decorate([ ObservableInput(), __metadata("design:type", Observable) ], SearchableSelectorComponent.prototype, "fetcher$", void 0); __decorate([ ObservableInput(), __metadata("design:type", Observable) ], SearchableSelectorComponent.prototype, "params$", void 0); (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchableSelectorComponent, [{ type: Component, args: [{ selector: 'acl-searchable-selector', changeDetection: ChangeDetectionStrategy.OnPush, providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SearchableSelectorComponent), multi: true, }, ], template: "<ng-container *ngIf=\"multi; else single\">\n <aui-multi-select\n auiFormItemControl\n [aclReadonlyField]=\"!!readonly\"\n [aclReadonlyFieldTemplate]=\"temp\"\n [ngModel]=\"model\"\n (ngModelChange)=\"emitValue($event)\"\n [loading]=\"loading\"\n [filterFn]=\"filterFn\"\n (filterChange)=\"filterChange($event)\"\n [placeholder]=\"placeholder ? (placeholder | translate) : ''\"\n [allowCreate]=\"allowCreate\"\n [trackFn]=\"trackFn || defaultTrackFn\"\n [clearable]=\"clearable\"\n [filterable]=\"true\"\n >\n <aui-option\n *ngFor=\"let option of data$ | async\"\n [labelContext]=\"option\"\n [value]=\"option.value\"\n class=\"option\"\n [label]=\"labelTemplate || option.label\"\n >\n <ng-container *ngIf=\"optionTemplate; else normalOption\">\n <ng-container\n *ngTemplateOutlet=\"optionTemplate; context: { $implicit: option }\"\n ></ng-container>\n </ng-container>\n <ng-template #normalOption>\n {{ option.label }}\n </ng-template>\n </aui-option>\n <aui-option-placeholder>\n {{ 'no_data' | translate }}\n </aui-option-placeholder>\n <ng-template #temp>\n <aui-tag\n size=\"mini\"\n type=\"info\"\n [border]=\"true\"\n *ngFor=\"let m of $any(model)\"\n >\n {{ m | pure: getLabel:(data$ | async) }}\n </aui-tag>\n </ng-template>\n </aui-multi-select>\n</ng-container>\n<ng-template #single>\n <aui-select\n auiFormItemControl\n [aclReadonlyField]=\"!!readonly\"\n [aclReadonlyFieldTemplate]=\"temps\"\n [ngModel]=\"model\"\n (ngModelChange)=\"emitValue($event)\"\n [loading]=\"loading\"\n [filterFn]=\"filterFn\"\n (filterChange)=\"filterChange($event)\"\n [placeholder]=\"placeholder ? (placeholder | translate) : ''\"\n [allowCreate]=\"allowCreate\"\n [trackFn]=\"trackFn || defaultTrackFn\"\n [clearable]=\"clearable\"\n >\n <aui-option\n *ngFor=\"let option of data$ | async\"\n [labelContext]=\"{ $implicit: option }\"\n [value]=\"option.value\"\n class=\"option\"\n [label]=\"labelTemplate || option.label\"\n [disabled]=\"disableFn ? (option | pure: disableFn:disableParams) : false\"\n [auiTooltip]=\"disableTooltip\"\n [auiTooltipDisabled]=\"\n disableFn ? !(option | pure: disableFn:disableParams) : true\n \"\n >\n <ng-container *ngIf=\"optionTemplate; else normalOption\">\n <ng-container\n *ngTemplateOutlet=\"optionTemplate; context: { $implicit: option }\"\n ></ng-container>\n </ng-container>\n <ng-template #normalOption>\n {{ option.label }}\n </ng-template>\n </aui-option>\n <aui-option-placeholder>\n {{ 'no_data' | translate }}\n </aui-option-placeholder>\n\n <ng-template #temps>\n {{ $any(model) | pure: getLabel:(data$ | async) }}\n </ng-template>\n </aui-select>\n</ng-template>\n", styles: [":host{display:block}:host.ng-invalid.ng-submitted aui-select ::ng-deep .aui-input,:host.ng-invalid.ng-submitted aui-multi-select ::ng-deep .aui-input,:host.ng-invalid.ng-dirty aui-select ::ng-deep .aui-input,:host.ng-invalid.ng-dirty aui-multi-select ::ng-deep .aui-input{border-color:rgb(var(--aui-color-red))!important}:root :host.ng-invalid.ng-submitted aui-select ::ng-deep .aui-input:focus,:root :host.ng-invalid.ng-submitted aui-select ::ng-deep .aui-input.isFocused,:root :host.ng-invalid.ng-submitted aui-multi-select ::ng-deep .aui-input:focus,:root :host.ng-invalid.ng-submitted aui-multi-select ::ng-deep .aui-input.isFocused,:root :host.ng-invalid.ng-dirty aui-select ::ng-deep .aui-input:focus,:root :host.ng-invalid.ng-dirty aui-select ::ng-deep .aui-input.isFocused,:root :host.ng-invalid.ng-dirty aui-multi-select ::ng-deep .aui-input:focus,:root :host.ng-invalid.ng-dirty aui-multi-select ::ng-deep .aui-input.isFocused{box-shadow:0 0 0 2px rgba(var(--aui-color-red),.16)}html[aui-theme-mode=light] :host.ng-invalid.ng-submitted aui-select ::ng-deep .aui-input:focus,html[aui-theme-mode=light] :host.ng-invalid.ng-submitted aui-select ::ng-deep .aui-input.isFocused,html[aui-theme-mode=light] :host.ng-invalid.ng-submitted aui-multi-select ::ng-deep .aui-input:focus,html[aui-theme-mode=light] :host.ng-invalid.ng-submitted aui-multi-select ::ng-deep .aui-input.isFocused,html[aui-theme-mode=light] :host.ng-invalid.ng-dirty aui-select ::ng-deep .aui-input:focus,html[aui-theme-mode=light] :host.ng-invalid.ng-dirty aui-select ::ng-deep .aui-input.isFocused,html[aui-theme-mode=light] :host.ng-invalid.ng-dirty aui-multi-select ::ng-deep .aui-input:focus,html[aui-theme-mode=light] :host.ng-invalid.ng-dirty aui-multi-select ::ng-deep .aui-input.isFocused{box-shadow:0 0 0 2px rgba(var(--aui-color-red),.16)}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] :host.ng-invalid.ng-submitted aui-select ::ng-deep .aui-input:focus,html[aui-theme-mode=system] :host.ng-invalid.ng-submitted aui-select ::ng-deep .aui-input.isFocused,html[aui-theme-mode=system] :host.ng-invalid.ng-submitted aui-multi-select ::ng-deep .aui-input:focus,html[aui-theme-mode=system] :host.ng-invalid.ng-submitted aui-multi-select ::ng-deep .aui-input.isFocused,html[aui-theme-mode=system] :host.ng-invalid.ng-dirty aui-select ::ng-deep .aui-input:focus,html[aui-theme-mode=system] :host.ng-invalid.ng-dirty aui-select ::ng-deep .aui-input.isFocused,html[aui-theme-mode=system] :host.ng-invalid.ng-dirty aui-multi-select ::ng-deep .aui-input:focus,html[aui-theme-mode=system] :host.ng-invalid.ng-dirty aui-multi-select ::ng-deep .aui-input.isFocused{box-shadow:0 0 0 2px rgba(var(--aui-color-red),.3)}}html[aui-theme-mode=dark] :host.ng-invalid.ng-submitted aui-select ::ng-deep .aui-input:focus,html[aui-theme-mode=dark] :host.ng-invalid.ng-submitted aui-select ::ng-deep .aui-input.isFocused,html[aui-theme-mode=dark] :host.ng-invalid.ng-submitted aui-multi-select ::ng-deep .aui-input:focus,html[aui-theme-mode=dark] :host.ng-invalid.ng-submitted aui-multi-select ::ng-deep .aui-input.isFocused,html[aui-theme-mode=dark] :host.ng-invalid.ng-dirty aui-select ::ng-deep .aui-input:focus,html[aui-theme-mode=dark] :host.ng-invalid.ng-dirty aui-select ::ng-deep .aui-input.isFocused,html[aui-theme-mode=dark] :host.ng-invalid.ng-dirty aui-multi-select ::ng-deep .aui-input:focus,html[aui-theme-mode=dark] :host.ng-invalid.ng-dirty aui-multi-select ::ng-deep .aui-input.isFocused{box-shadow:0 0 0 2px rgba(var(--aui-color-red),.3)}::ng-deep .option .aui-option{max-width:600px}\n"] }] }], () => [{ type: i1.FormGroupDirective, decorators: [{ type: Optional }] }, { type: i0.ChangeDetectorRef }], { errorState: [{ type: HostBinding, args: ['class.ng-submitted'] }], fetcher: [{ type: Input }], fetcher$: [], allowCreate: [{ type: Input }], placeholder: [{ type: Input }], trackFn: [{ type: Input }], params: [{ type: Input }], params$: [], multi: [{ type: Input }], clearable: [{ type: Input }], disableFn: [{ type: Input }], disableParams: [{ type: Input }], disableTooltip: [{ type: Input }], labelTemplate: [{ type: ContentChild, args: [SearchableSelectorLabelDirective, { read: TemplateRef, }] }], optionTemplate: [{ type: ContentChild, args: [SearchableSelectorOptionDirective, { read: TemplateRef, }] }] }); })(); (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SearchableSelectorComponent, { className: "SearchableSelectorComponent" }); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3NlYXJjaGFibGUtc2VsZWN0b3IvY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3NlYXJjaGFibGUtc2VsZWN0b3IvdGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFXLE1BQU0sWUFBWSxDQUFDO0FBQ3hELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUNMLFFBQVEsRUFDUixXQUFXLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkUsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsVUFBVSxFQUNWLFlBQVksRUFDWixTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7OztJQ0NuRCx3QkFFZ0I7OztJQUhsQiw2QkFBd0Q7SUFDdEQseUlBRUM7Ozs7O0lBREUsY0FBa0M7SUFBQSxBQUFsQyx3REFBa0Msa0VBQThCOzs7SUFJbkUsWUFDRjs7O0lBREUsZ0RBQ0Y7OztJQWRGLHFDQU1DO0lBTUMsQUFMQSwwSEFBd0QsNElBSzdCO0lBRzdCLGlCQUFhOzs7OztJQVZYLEFBRkEsQUFEQSx3Q0FBdUIsMEJBQ0Qsa0RBRWlCO0lBRXhCLGNBQXNCO0lBQUEsQUFBdEIsNENBQXNCLDZCQUFpQjs7O0lBYXRELG1DQUtDO0lBQ0MsWUFDRjs7O0lBQUEsaUJBQVU7Ozs7SUFKUiw2QkFBZTtJQUdmLGNBQ0Y7SUFERSxnSEFDRjs7O0lBUEEsaUhBS0M7OztJQURlLHNDQUFjOzs7O0lBeENwQyw2QkFBeUM7SUFDdkMsMkNBY0M7O0lBTkMsQUFIQSxnT0FBaUIsd0JBQWlCLEtBQUMsaU5BR25CLDJCQUFvQixLQUFDO0lBT3JDLHlHQU1DOztJQVVELDhDQUF3QjtJQUN0QixZQUNGOztJQUFBLGlCQUF5QjtJQUN6Qiw0SUFBbUI7SUFVckIsaUJBQW1COzs7OztJQTFDakIsY0FBK0I7SUFXL0IsQUFEQSxBQURBLEFBREEsQUFEQSxBQUZBLEFBREEsQUFGQSxBQURBLEFBREEsb0RBQStCLHFDQUNFLHlCQUNoQiwyQkFFRSw2QkFDRSxvRkFFdUMsbUNBQ2pDLG9EQUNVLCtCQUNkLG9CQUNKO0lBR0UsZUFBZ0I7SUFBaEIsNkRBQWdCO0lBZ0JuQyxlQUNGO0lBREUsaUVBQ0Y7OztJQXlDSSx3QkFFZ0I7OztJQUhsQiw2QkFBd0Q7SUFDdEQsd0lBRUM7Ozs7O0lBREUsY0FBa0M7SUFBQSxBQUFsQyx3REFBa0Msa0VBQThCOzs7SUFJbkUsWUFDRjs7O0lBREUsZ0RBQ0Y7OztJQW5CRixzQ0FXQzs7O0lBTUMsQUFMQSx5SEFBd0QsMklBSzdCO0lBRzdCLGlCQUFhOzs7OztJQVpYLEFBREEsQUFEQSxBQURBLEFBRkEsQUFEQSxxRUFBc0MsMEJBQ2hCLGtEQUVpQixnSEFDa0MscUNBQzVDLDJIQUc1QjtJQUVjLGVBQXNCO0lBQUEsQUFBdEIsNENBQXNCLDZCQUFpQjs7O0lBY3RELFlBQ0Y7Ozs7O0lBREUsd0hBQ0Y7Ozs7SUF6Q0Ysc0NBYUM7O0lBTEMsQUFIQSx5TkFBaUIsd0JBQWlCLEtBQUMsME1BR25CLDJCQUFvQixLQUFDO0lBTXJDLDBHQVdDOztJQVVELDhDQUF3QjtJQUN0QixZQUNGOztJQUFBLGlCQUF5QjtJQUV6QiwySUFBb0I7SUFHdEIsaUJBQWE7Ozs7SUE5QlgsQUFEQSxBQURBLEFBREEsQUFGQSxBQURBLEFBRkEsQUFEQSxBQURBLG9EQUErQix1Q0FDRyx5QkFDakIsMkJBRUUsNkJBQ0Usb0ZBRXVDLG1DQUNqQyxvREFDVSwrQkFDZDtJQUdGLGVBQWdCO0lBQWhCLDZEQUFnQjtJQXFCbkMsZUFDRjtJQURFLGlFQUNGOztBRDdDSixNQUFNLE9BQU8sZ0NBQWdDO2lHQUFoQyxnQ0FBZ0M7b0VBQWhDLGdDQUFnQzs7aUZBQWhDLGdDQUFnQztjQUg1QyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLDhCQUE4QjthQUN6Qzs7QUFNRCxNQUFNLE9BQU8saUNBQWlDO2tHQUFqQyxpQ0FBaUM7b0VBQWpDLGlDQUFpQzs7aUZBQWpDLGlDQUFpQztjQUg3QyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLCtCQUErQjthQUMxQzs7QUFnQkQsTUFBTSxPQUFPLDJCQUE0QixTQUFRLGlCQUEwQjtJQUN6RSxJQUNJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDO0lBQ3BDLENBQUM7SUE4REQsWUFDK0IsVUFBOEIsRUFDM0QsR0FBc0I7UUFFdEIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBSGtCLGVBQVUsR0FBVixVQUFVLENBQW9CO1FBZjdELGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUU1QyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRWhCLFVBQUssR0FBRyxhQUFhLENBQUM7WUFDcEIsSUFBSSxDQUFDLFFBQVE7WUFDYixJQUFJLENBQUMsT0FBTztZQUNaLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN2QyxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFDaEMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQ25FLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FDbEMsQ0FBQztRQVNGLG1CQUFjLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUUxQyxhQUFRLEdBQUcsQ0FDVCxPQUFlLEVBQ2YsTUFJQyxFQUNELEVBQUU7WUFDRixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQztZQUMxQyxNQUFNLFdBQVcsR0FBRyxHQUFHO2dCQUNyQixDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDckUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUssTUFBTSxDQUFDLEtBQWdCLENBQUM7WUFDN0MsTUFBTSxHQUFHLEdBQUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDO1lBQ25DLE9BQU8sV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUM7SUFsQkYsQ0FBQztJQW9CRCxZQUFZLENBQUMsT0FBZTtRQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWEsRUFBRSxJQUFnQztRQUN0RCxPQUFPLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxFQUFFLEtBQUssSUFBSSxLQUFLLENBQUM7SUFDbEUsQ0FBQzs0RkFqR1UsMkJBQTJCO29FQUEzQiwyQkFBMkI7d0NBMEN4QixnQ0FBZ0MsS0FDdEMsV0FBVzt3Q0FJTCxpQ0FBaUMsS0FDdkMsV0FBVzs7Ozs7O1lBaERSLDhDQUEyQjs4U0FSM0I7Z0JBQ1Q7b0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtvQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztvQkFDMUQsS0FBSyxFQUFFLElBQUk7aUJBQ1o7YUFDRjtZQ1hILEFBL0NBLGdHQUF5QyxpSEErQ3BCOzs7WUEvQ08sQUFBYixnQ0FBYSx3QkFBVzs7O0FEc0VyQztJQURDLGVBQWUsRUFBRTs4QkFDUCxVQUFVOzZEQUE0QjtBQWVqRDtJQURDLGVBQWUsRUFBRTs4QkFDUixVQUFVOzREQUFVO2lGQXpCbkIsMkJBQTJCO2NBYnZDLFNBQVM7MkJBQ0UseUJBQXlCLG1CQUdsQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDRCQUE0QixDQUFDO3dCQUMxRCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjs7c0JBcUVFLFFBQVE7cURBakVQLFVBQVU7a0JBRGIsV0FBVzttQkFBQyxvQkFBb0I7WUFNakMsT0FBTztrQkFETixLQUFLO1lBSU4sUUFBUSxNQUdSLFdBQVc7a0JBRFYsS0FBSztZQUlOLFdBQVc7a0JBRFYsS0FBSztZQUlOLE9BQU87a0JBRE4sS0FBSztZQUlOLE1BQU07a0JBREwsS0FBSztZQUlOLE9BQU8sTUFHUCxLQUFLO2tCQURKLEtBQUs7WUFJTixTQUFTO2tCQURSLEtBQUs7WUFJTixTQUFTO2tCQURSLEtBQUs7WUFJTixhQUFhO2tCQURaLEtBQUs7WUFJTixjQUFjO2tCQURiLEtBQUs7WUFNTixhQUFhO2tCQUhaLFlBQVk7bUJBQUMsZ0NBQWdDLEVBQUU7b0JBQzlDLElBQUksRUFBRSxXQUFXO2lCQUNsQjtZQU1ELGNBQWM7a0JBSGIsWUFBWTttQkFBQyxpQ0FBaUMsRUFBRTtvQkFDL0MsSUFBSSxFQUFFLFdBQVc7aUJBQ2xCOztrRkFqRFUsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uRm9ybUNvbnRyb2wsIFRyYWNrRm4gfSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIERpcmVjdGl2ZSxcbiAgZm9yd2FyZFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPcHRpb25hbCxcbiAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwRGlyZWN0aXZlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgT2JzZXJ2YWJsZSxcbiAgZGVib3VuY2VUaW1lLFxuICBzd2l0Y2hNYXAsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE9ic2VydmFibGVJbnB1dCB9IGZyb20gJy4uL2NvcmUvdXRpbHMvZGVjb3JhdG9ycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoYWJsZVNlbGVjdG9yT3B0aW9uIHtcbiAgdmFsdWU6IHVua25vd247XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGZpbHRlclZhbHVlPzogc3RyaW5nO1xuICByZXNvdXJjZT86IHVua25vd247XG59XG5cbmV4cG9ydCB0eXBlIFNlYXJjaGFibGVTZWxlY3RvckZldGNoZXIgPSAoXG4gIHBhcmFtczogdW5rbm93bixcbiAga2V5d29yZDogc3RyaW5nLFxuKSA9PiBPYnNlcnZhYmxlPFNlYXJjaGFibGVTZWxlY3Rvck9wdGlvbltdPjtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FjbFNlYXJjaGFibGVTZWxlY3RvckxhYmVsXScsXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaGFibGVTZWxlY3RvckxhYmVsRGlyZWN0aXZlIHt9XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1thY2xTZWFyY2hhYmxlU2VsZWN0b3JPcHRpb25dJyxcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoYWJsZVNlbGVjdG9yT3B0aW9uRGlyZWN0aXZlIHt9XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjbC1zZWFyY2hhYmxlLXNlbGVjdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RlbXBsYXRlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdHlsZS5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNlYXJjaGFibGVTZWxlY3RvckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hhYmxlU2VsZWN0b3JDb21wb25lbnQgZXh0ZW5kcyBDb21tb25Gb3JtQ29udHJvbDx1bmtub3duPiB7XG4gIEBIb3N0QmluZGluZygnY2xhc3Mubmctc3VibWl0dGVkJylcbiAgZ2V0IGVycm9yU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50Rm9ybT8uc3VibWl0dGVkO1xuICB9XG5cbiAgQElucHV0KClcbiAgZmV0Y2hlcjogU2VhcmNoYWJsZVNlbGVjdG9yRmV0Y2hlcjtcblxuICBAT2JzZXJ2YWJsZUlucHV0KClcbiAgZmV0Y2hlciQhOiBPYnNlcnZhYmxlPFNlYXJjaGFibGVTZWxlY3RvckZldGNoZXI+O1xuXG4gIEBJbnB1dCgpXG4gIGFsbG93Q3JlYXRlOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgdHJhY2tGbjogVHJhY2tGbjx1bmtub3duPjtcblxuICBASW5wdXQoKVxuICBwYXJhbXM6IHVua25vd247XG5cbiAgQE9ic2VydmFibGVJbnB1dCgpXG4gIHBhcmFtcyQhOiBPYnNlcnZhYmxlPHVua25vd24+O1xuXG4gIEBJbnB1dCgpXG4gIG11bHRpOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIGNsZWFyYWJsZTogYm9vbGVhbjtcblxuICBASW5wdXQoKVxuICBkaXNhYmxlRm46IChvcHRpb246IFNlYXJjaGFibGVTZWxlY3Rvck9wdGlvbiwgcGFyYW1zPzogdW5rbm93bikgPT4gYm9vbGVhbjtcblxuICBASW5wdXQoKVxuICBkaXNhYmxlUGFyYW1zOiB1bmtub3duO1xuXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVUb29sdGlwOiBzdHJpbmc7XG5cbiAgQENvbnRlbnRDaGlsZChTZWFyY2hhYmxlU2VsZWN0b3JMYWJlbERpcmVjdGl2ZSwge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICB9KVxuICBsYWJlbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBAQ29udGVudENoaWxkKFNlYXJjaGFibGVTZWxlY3Rvck9wdGlvbkRpcmVjdGl2ZSwge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICB9KVxuICBvcHRpb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAga2V5d29yZCQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcblxuICBsb2FkaW5nID0gZmFsc2U7XG5cbiAgZGF0YSQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmZldGNoZXIkLFxuICAgIHRoaXMucGFyYW1zJCxcbiAgICB0aGlzLmtleXdvcmQkJC5waXBlKGRlYm91bmNlVGltZSg1MDApKSxcbiAgXSkucGlwZShcbiAgICB0YXAoKCkgPT4gKHRoaXMubG9hZGluZyA9IHRydWUpKSxcbiAgICBzd2l0Y2hNYXAoKFtmZXRjaGVyLCBwYXJhbXMsIGtleXdvcmRdKSA9PiBmZXRjaGVyKHBhcmFtcywga2V5d29yZCkpLFxuICAgIHRhcCgoKSA9PiAodGhpcy5sb2FkaW5nID0gZmFsc2UpKSxcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IHBhcmVudEZvcm06IEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHtcbiAgICBzdXBlcihjZHIpO1xuICB9XG5cbiAgZGVmYXVsdFRyYWNrRm4gPSAodmFsdWU6IHN0cmluZykgPT4gdmFsdWU7XG5cbiAgZmlsdGVyRm4gPSAoXG4gICAga2V5d29yZDogc3RyaW5nLFxuICAgIG9wdGlvbjoge1xuICAgICAgbGFiZWw6IHN0cmluZztcbiAgICAgIGxhYmVsQ29udGV4dDogeyAkaW1wbGljaXQ6IFNlYXJjaGFibGVTZWxlY3Rvck9wdGlvbiB9O1xuICAgICAgdmFsdWU6IHVua25vd247XG4gICAgfSxcbiAgKSA9PiB7XG4gICAgY29uc3QgY3R4ID0gb3B0aW9uLmxhYmVsQ29udGV4dC4kaW1wbGljaXQ7XG4gICAgY29uc3Qgc2VhcmNoVmFsdWUgPSBjdHhcbiAgICAgID8gY3R4LmZpbHRlclZhbHVlIHx8ICh0eXBlb2YgY3R4LmxhYmVsID09PSAnc3RyaW5nJyA/IGN0eC5sYWJlbCA6ICcnKVxuICAgICAgOiBvcHRpb24ubGFiZWwgfHwgKG9wdGlvbi52YWx1ZSBhcyBzdHJpbmcpO1xuICAgIGNvbnN0IGtleSA9IGtleXdvcmQ/LnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoa2V5KTtcbiAgfTtcblxuICBmaWx0ZXJDaGFuZ2Uoa2V5d29yZDogc3RyaW5nKSB7XG4gICAgdGhpcy5rZXl3b3JkJCQubmV4dChrZXl3b3JkKTtcbiAgfVxuXG4gIGdldExhYmVsKHZhbHVlOiBzdHJpbmcsIGRhdGE6IFNlYXJjaGFibGVTZWxlY3Rvck9wdGlvbltdKSB7XG4gICAgcmV0dXJuIGRhdGE/LmZpbmQoZGF0YSA9PiBkYXRhLnZhbHVlID09PSB2YWx1ZSk/LmxhYmVsIHx8IHZhbHVlO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwibXVsdGk7IGVsc2Ugc2luZ2xlXCI+XG4gIDxhdWktbXVsdGktc2VsZWN0XG4gICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgW2FjbFJlYWRvbmx5RmllbGRdPVwiISFyZWFkb25seVwiXG4gICAgW2FjbFJlYWRvbmx5RmllbGRUZW1wbGF0ZV09XCJ0ZW1wXCJcbiAgICBbbmdNb2RlbF09XCJtb2RlbFwiXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwiZW1pdFZhbHVlKCRldmVudClcIlxuICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxuICAgIFtmaWx0ZXJGbl09XCJmaWx0ZXJGblwiXG4gICAgKGZpbHRlckNoYW5nZSk9XCJmaWx0ZXJDaGFuZ2UoJGV2ZW50KVwiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyID8gKHBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlKSA6ICcnXCJcbiAgICBbYWxsb3dDcmVhdGVdPVwiYWxsb3dDcmVhdGVcIlxuICAgIFt0cmFja0ZuXT1cInRyYWNrRm4gfHwgZGVmYXVsdFRyYWNrRm5cIlxuICAgIFtjbGVhcmFibGVdPVwiY2xlYXJhYmxlXCJcbiAgICBbZmlsdGVyYWJsZV09XCJ0cnVlXCJcbiAgPlxuICAgIDxhdWktb3B0aW9uXG4gICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGRhdGEkIHwgYXN5bmNcIlxuICAgICAgW2xhYmVsQ29udGV4dF09XCJvcHRpb25cIlxuICAgICAgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICBjbGFzcz1cIm9wdGlvblwiXG4gICAgICBbbGFiZWxdPVwibGFiZWxUZW1wbGF0ZSB8fCBvcHRpb24ubGFiZWxcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25UZW1wbGF0ZTsgZWxzZSBub3JtYWxPcHRpb25cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwib3B0aW9uVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBvcHRpb24gfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNub3JtYWxPcHRpb24+XG4gICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2F1aS1vcHRpb24+XG4gICAgPGF1aS1vcHRpb24tcGxhY2Vob2xkZXI+XG4gICAgICB7eyAnbm9fZGF0YScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2F1aS1vcHRpb24tcGxhY2Vob2xkZXI+XG4gICAgPG5nLXRlbXBsYXRlICN0ZW1wPlxuICAgICAgPGF1aS10YWdcbiAgICAgICAgc2l6ZT1cIm1pbmlcIlxuICAgICAgICB0eXBlPVwiaW5mb1wiXG4gICAgICAgIFtib3JkZXJdPVwidHJ1ZVwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBtIG9mICRhbnkobW9kZWwpXCJcbiAgICAgID5cbiAgICAgICAge3sgbSB8IHB1cmU6IGdldExhYmVsOihkYXRhJCB8IGFzeW5jKSB9fVxuICAgICAgPC9hdWktdGFnPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvYXVpLW11bHRpLXNlbGVjdD5cbjwvbmctY29udGFpbmVyPlxuPG5nLXRlbXBsYXRlICNzaW5nbGU+XG4gIDxhdWktc2VsZWN0XG4gICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgW2FjbFJlYWRvbmx5RmllbGRdPVwiISFyZWFkb25seVwiXG4gICAgW2FjbFJlYWRvbmx5RmllbGRUZW1wbGF0ZV09XCJ0ZW1wc1wiXG4gICAgW25nTW9kZWxdPVwibW9kZWxcIlxuICAgIChuZ01vZGVsQ2hhbmdlKT1cImVtaXRWYWx1ZSgkZXZlbnQpXCJcbiAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcbiAgICBbZmlsdGVyRm5dPVwiZmlsdGVyRm5cIlxuICAgIChmaWx0ZXJDaGFuZ2UpPVwiZmlsdGVyQ2hhbmdlKCRldmVudClcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciA/IChwbGFjZWhvbGRlciB8IHRyYW5zbGF0ZSkgOiAnJ1wiXG4gICAgW2FsbG93Q3JlYXRlXT1cImFsbG93Q3JlYXRlXCJcbiAgICBbdHJhY2tGbl09XCJ0cmFja0ZuIHx8IGRlZmF1bHRUcmFja0ZuXCJcbiAgICBbY2xlYXJhYmxlXT1cImNsZWFyYWJsZVwiXG4gID5cbiAgICA8YXVpLW9wdGlvblxuICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBkYXRhJCB8IGFzeW5jXCJcbiAgICAgIFtsYWJlbENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG9wdGlvbiB9XCJcbiAgICAgIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIlxuICAgICAgY2xhc3M9XCJvcHRpb25cIlxuICAgICAgW2xhYmVsXT1cImxhYmVsVGVtcGxhdGUgfHwgb3B0aW9uLmxhYmVsXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlRm4gPyAob3B0aW9uIHwgcHVyZTogZGlzYWJsZUZuOmRpc2FibGVQYXJhbXMpIDogZmFsc2VcIlxuICAgICAgW2F1aVRvb2x0aXBdPVwiZGlzYWJsZVRvb2x0aXBcIlxuICAgICAgW2F1aVRvb2x0aXBEaXNhYmxlZF09XCJcbiAgICAgICAgZGlzYWJsZUZuID8gIShvcHRpb24gfCBwdXJlOiBkaXNhYmxlRm46ZGlzYWJsZVBhcmFtcykgOiB0cnVlXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25UZW1wbGF0ZTsgZWxzZSBub3JtYWxPcHRpb25cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwib3B0aW9uVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBvcHRpb24gfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNub3JtYWxPcHRpb24+XG4gICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2F1aS1vcHRpb24+XG4gICAgPGF1aS1vcHRpb24tcGxhY2Vob2xkZXI+XG4gICAgICB7eyAnbm9fZGF0YScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2F1aS1vcHRpb24tcGxhY2Vob2xkZXI+XG5cbiAgICA8bmctdGVtcGxhdGUgI3RlbXBzPlxuICAgICAge3sgJGFueShtb2RlbCkgfCBwdXJlOiBnZXRMYWJlbDooZGF0YSQgfCBhc3luYykgfX1cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2F1aS1zZWxlY3Q+XG48L25nLXRlbXBsYXRlPlxuIl19