UNPKG

@abgov/angular-components

Version:

Government of Alberta - UI components for Angular

259 lines 22.8 kB
import { CUSTOM_ELEMENTS_SCHEMA, Component, EventEmitter, Input, Output, forwardRef, booleanAttribute, numberAttribute, } from "@angular/core"; import { NG_VALUE_ACCESSOR } from "@angular/forms"; import * as i0 from "@angular/core"; export class GoabInputNumber { constructor() { this.type = "number"; this.textAlign = "right"; // Default to right for numbers this.value = null; this.onTrailingIconClick = new EventEmitter(); // Keep void type this.onFocus = new EventEmitter(); this.onBlur = new EventEmitter(); this.onKeyPress = new EventEmitter(); this.onChange = new EventEmitter(); this.handleTrailingIconClick = false; this.touched = false; } ngOnInit() { this.handleTrailingIconClick = this.onTrailingIconClick.observed; } _onTrailingIconClick(_) { if (this.handleTrailingIconClick) { this.onTrailingIconClick.emit(); } } _onChange(e) { this.markAsTouched(); const detail = e.detail; const stringValue = detail.value; let numericValue = null; if (stringValue !== null && stringValue.trim() !== "") { const parsed = parseFloat(stringValue); if (!isNaN(parsed)) { numericValue = parsed; } } this.value = numericValue; this.fcChange?.(numericValue); this.onChange.emit(detail); } _onKeyPress(e) { this.markAsTouched(); const detail = e.detail; this.onKeyPress.emit(detail); } _onFocus(e) { this.markAsTouched(); const detail = e.detail; this.onFocus.emit(detail); } _onBlur(e) { this.markAsTouched(); const detail = e.detail; this.onBlur.emit(detail); } markAsTouched() { if (!this.touched) { this.fcTouched?.(); this.touched = true; } } writeValue(value) { this.value = value === undefined ? null : value; } registerOnChange(fn) { this.fcChange = fn; } registerOnTouched(fn) { this.fcTouched = fn; } setDisabledState(isDisabled) { this.disabled = isDisabled; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: GoabInputNumber, deps: [], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.0.3", type: GoabInputNumber, isStandalone: true, selector: "goab-input-number", inputs: { type: "type", name: "name", id: "id", debounce: ["debounce", "debounce", numberAttribute], disabled: ["disabled", "disabled", booleanAttribute], autoCapitalize: "autoCapitalize", placeholder: "placeholder", leadingIcon: "leadingIcon", trailingIcon: "trailingIcon", variant: "variant", focused: ["focused", "focused", booleanAttribute], readonly: ["readonly", "readonly", booleanAttribute], error: ["error", "error", booleanAttribute], width: "width", prefix: "prefix", suffix: "suffix", testId: "testId", ariaLabel: "ariaLabel", maxLength: ["maxLength", "maxLength", numberAttribute], min: "min", max: "max", step: ["step", "step", numberAttribute], ariaLabelledBy: "ariaLabelledBy", mt: "mt", mr: "mr", mb: "mb", ml: "ml", trailingIconAriaLabel: "trailingIconAriaLabel", textAlign: "textAlign", value: "value" }, outputs: { onTrailingIconClick: "onTrailingIconClick", onFocus: "onFocus", onBlur: "onBlur", onKeyPress: "onKeyPress", onChange: "onChange" }, providers: [ { provide: NG_VALUE_ACCESSOR, multi: true, // Use forwardRef with the new class name useExisting: forwardRef(() => GoabInputNumber), }, ], ngImport: i0, template: ` <goa-input [attr.type]="type" [attr.name]="name" [attr.focused]="focused" [attr.value]="value !== null ? value : ''" [attr.autocapitalize]="autoCapitalize" [attr.placeholder]="placeholder" [attr.leadingicon]="leadingIcon" [attr.trailingicon]="trailingIcon" [attr.variant]="variant" [disabled]="disabled" [attr.readonly]="readonly" [attr.error]="error" [attr.data-testid]="testId" [attr.width]="width" [attr.arialabel]="ariaLabel" [attr.arialabelledby]="ariaLabelledBy" [attr.min]="min" [attr.max]="max" [attr.step]="step" [attr.prefix]="prefix" [attr.suffix]="suffix" [attr.debounce]="debounce" [attr.maxlength]="maxLength" [attr.id]="id" [attr.mt]="mt" [attr.mr]="mr" [attr.mb]="mb" [attr.ml]="ml" [attr.handletrailingiconclick]="handleTrailingIconClick" [attr.textalign]="textAlign" (_trailingIconClick)="_onTrailingIconClick($event)" (_change)="_onChange($event)" (_focus)="_onFocus($event)" (_blur)="_onBlur($event)" (_keypress)="_onKeyPress($event)" [attr.trailingiconarialabel]="trailingIconAriaLabel" > <ng-content /> </goa-input> `, isInline: true }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: GoabInputNumber, decorators: [{ type: Component, args: [{ standalone: true, selector: "goab-input-number", template: ` <goa-input [attr.type]="type" [attr.name]="name" [attr.focused]="focused" [attr.value]="value !== null ? value : ''" [attr.autocapitalize]="autoCapitalize" [attr.placeholder]="placeholder" [attr.leadingicon]="leadingIcon" [attr.trailingicon]="trailingIcon" [attr.variant]="variant" [disabled]="disabled" [attr.readonly]="readonly" [attr.error]="error" [attr.data-testid]="testId" [attr.width]="width" [attr.arialabel]="ariaLabel" [attr.arialabelledby]="ariaLabelledBy" [attr.min]="min" [attr.max]="max" [attr.step]="step" [attr.prefix]="prefix" [attr.suffix]="suffix" [attr.debounce]="debounce" [attr.maxlength]="maxLength" [attr.id]="id" [attr.mt]="mt" [attr.mr]="mr" [attr.mb]="mb" [attr.ml]="ml" [attr.handletrailingiconclick]="handleTrailingIconClick" [attr.textalign]="textAlign" (_trailingIconClick)="_onTrailingIconClick($event)" (_change)="_onChange($event)" (_focus)="_onFocus($event)" (_blur)="_onBlur($event)" (_keypress)="_onKeyPress($event)" [attr.trailingiconarialabel]="trailingIconAriaLabel" > <ng-content /> </goa-input> `, schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [ { provide: NG_VALUE_ACCESSOR, multi: true, // Use forwardRef with the new class name useExisting: forwardRef(() => GoabInputNumber), }, ], }] }], propDecorators: { type: [{ type: Input }], name: [{ type: Input }], id: [{ type: Input }], debounce: [{ type: Input, args: [{ transform: numberAttribute }] }], disabled: [{ type: Input, args: [{ transform: booleanAttribute }] }], autoCapitalize: [{ type: Input }], placeholder: [{ type: Input }], leadingIcon: [{ type: Input }], trailingIcon: [{ type: Input }], variant: [{ type: Input }], focused: [{ type: Input, args: [{ transform: booleanAttribute }] }], readonly: [{ type: Input, args: [{ transform: booleanAttribute }] }], error: [{ type: Input, args: [{ transform: booleanAttribute }] }], width: [{ type: Input }], prefix: [{ type: Input }], suffix: [{ type: Input }], testId: [{ type: Input }], ariaLabel: [{ type: Input }], maxLength: [{ type: Input, args: [{ transform: numberAttribute }] }], min: [{ type: Input }], max: [{ type: Input }], step: [{ type: Input, args: [{ transform: numberAttribute }] }], ariaLabelledBy: [{ type: Input }], mt: [{ type: Input }], mr: [{ type: Input }], mb: [{ type: Input }], ml: [{ type: Input }], trailingIconAriaLabel: [{ type: Input }], textAlign: [{ type: Input }], value: [{ type: Input }], onTrailingIconClick: [{ type: Output }], onFocus: [{ type: Output }], onBlur: [{ type: Output }], onKeyPress: [{ type: Output }], onChange: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0LW51bWJlci9pbnB1dC1udW1iZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sVUFBVSxFQUVWLGdCQUFnQixFQUNoQixlQUFlLEdBQ2hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUF5RHpFLE1BQU0sT0FBTyxlQUFlO0lBdkQ1QjtRQXdEVyxTQUFJLEdBQWtCLFFBQVEsQ0FBQztRQTRCL0IsY0FBUyxHQUFzQixPQUFPLENBQUMsQ0FBQywrQkFBK0I7UUFFdkUsVUFBSyxHQUFrQixJQUFJLENBQUM7UUFFM0Isd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQyxDQUFDLGlCQUFpQjtRQUNqRSxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQTBCLENBQUM7UUFDckQsV0FBTSxHQUFHLElBQUksWUFBWSxFQUF5QixDQUFDO1FBQ25ELGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBNkIsQ0FBQztRQUMzRCxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQTJCLENBQUM7UUFFakUsNEJBQXVCLEdBQUcsS0FBSyxDQUFDO1FBcURoQyxZQUFPLEdBQUcsS0FBSyxDQUFDO0tBd0JqQjtJQTNFQyxRQUFRO1FBQ04sSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7SUFDbkUsQ0FBQztJQUVELG9CQUFvQixDQUFDLENBQVE7UUFDM0IsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsbUJBQW1CLENBQUMs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LEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQUM1QixHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNpQyxJQUFJO3NCQUExQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFDNUIsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLO2dCQUNHLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVJLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBHb2FiSWNvblR5cGUsXG4gIEdvYWJJbnB1dEF1dG9DYXBpdGFsaXplLFxuICBHb2FiSW5wdXRPbkJsdXJEZXRhaWwsXG4gIEdvYWJJbnB1dE9uQ2hhbmdlRGV0YWlsLFxuICBHb2FiSW5wdXRPbkZvY3VzRGV0YWlsLFxuICBHb2FiSW5wdXRPbktleVByZXNzRGV0YWlsLFxuICBHb2FiSW5wdXRUeXBlLFxuICBTcGFjaW5nLFxufSBmcm9tIFwiQGFiZ292L3VpLWNvbXBvbmVudHMtY29tbW9uXCI7XG5pbXBvcnQge1xuICBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgZm9yd2FyZFJlZixcbiAgT25Jbml0LFxuICBib29sZWFuQXR0cmlidXRlLFxuICBudW1iZXJBdHRyaWJ1dGUsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiBcImdvYWItaW5wdXQtbnVtYmVyXCIsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGdvYS1pbnB1dFxuICAgICAgW2F0dHIudHlwZV09XCJ0eXBlXCJcbiAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICBbYXR0ci5mb2N1c2VkXT1cImZvY3VzZWRcIlxuICAgICAgW2F0dHIudmFsdWVdPVwidmFsdWUgIT09IG51bGwgPyB2YWx1ZSA6ICcnXCJcbiAgICAgIFthdHRyLmF1dG9jYXBpdGFsaXplXT1cImF1dG9DYXBpdGFsaXplXCJcbiAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgIFthdHRyLmxlYWRpbmdpY29uXT1cImxlYWRpbmdJY29uXCJcbiAgICAgIFthdHRyLnRyYWlsaW5naWNvbl09XCJ0cmFpbGluZ0ljb25cIlxuICAgICAgW2F0dHIudmFyaWFudF09XCJ2YXJpYW50XCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICBbYXR0ci5lcnJvcl09XCJlcnJvclwiXG4gICAgICBbYXR0ci5kYXRhLXRlc3RpZF09XCJ0ZXN0SWRcIlxuICAgICAgW2F0dHIud2lkdGhdPVwid2lkdGhcIlxuICAgICAgW2F0dHIuYXJpYWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgICBbYXR0ci5hcmlhbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgICBbYXR0ci5taW5dPVwibWluXCJcbiAgICAgIFthdHRyLm1heF09XCJtYXhcIlxuICAgICAgW2F0dHIuc3RlcF09XCJzdGVwXCJcbiAgICAgIFthdHRyLnByZWZpeF09XCJwcmVmaXhcIlxuICAgICAgW2F0dHIuc3VmZml4XT1cInN1ZmZpeFwiXG4gICAgICBbYXR0ci5kZWJvdW5jZV09XCJkZWJvdW5jZVwiXG4gICAgICBbYXR0ci5tYXhsZW5ndGhdPVwibWF4TGVuZ3RoXCJcbiAgICAgIFthdHRyLmlkXT1cImlkXCJcbiAgICAgIFthdHRyLm10XT1cIm10XCJcbiAgICAgIFthdHRyLm1yXT1cIm1yXCJcbiAgICAgIFthdHRyLm1iXT1cIm1iXCJcbiAgICAgIFthdHRyLm1sXT1cIm1sXCJcbiAgICAgIFthdHRyLmhhbmRsZXRyYWlsaW5naWNvbmNsaWNrXT1cImhhbmRsZVRyYWlsaW5nSWNvbkNsaWNrXCJcbiAgICAgIFthdHRyLnRleHRhbGlnbl09XCJ0ZXh0QWxpZ25cIlxuICAgICAgKF90cmFpbGluZ0ljb25DbGljayk9XCJfb25UcmFpbGluZ0ljb25DbGljaygkZXZlbnQpXCJcbiAgICAgIChfY2hhbmdlKT1cIl9vbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgIChfZm9jdXMpPVwiX29uRm9jdXMoJGV2ZW50KVwiXG4gICAgICAoX2JsdXIpPVwiX29uQmx1cigkZXZlbnQpXCJcbiAgICAgIChfa2V5cHJlc3MpPVwiX29uS2V5UHJlc3MoJGV2ZW50KVwiXG4gICAgICBbYXR0ci50cmFpbGluZ2ljb25hcmlhbGFiZWxdPVwidHJhaWxpbmdJY29uQXJpYUxhYmVsXCJcbiAgICA+XG4gICAgICA8bmctY29udGVudCAvPlxuICAgIDwvZ29hLWlucHV0PlxuICBgLFxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAvLyBVc2UgZm9yd2FyZFJlZiB3aXRoIHRoZSBuZXcgY2xhc3MgbmFtZVxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gR29hYklucHV0TnVtYmVyKSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBHb2FiSW5wdXROdW1iZXIgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0IHtcbiAgQElucHV0KCkgdHlwZTogR29hYklucHV0VHlwZSA9IFwibnVtYmVyXCI7XG4gIEBJbnB1dCgpIG5hbWU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlkPzogc3RyaW5nO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBkZWJvdW5jZT86IG51bWJlcjtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgQElucHV0KCkgYXV0b0NhcGl0YWxpemU/OiBHb2FiSW5wdXRBdXRvQ2FwaXRhbGl6ZTtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGxlYWRpbmdJY29uPzogR29hYkljb25UeXBlO1xuICBASW5wdXQoKSB0cmFpbGluZ0ljb24/OiBHb2FiSWNvblR5cGU7XG4gIEBJbnB1dCgpIHZhcmlhbnQ/OiBzdHJpbmc7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBmb2N1c2VkPzogYm9vbGVhbjtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHJlYWRvbmx5PzogYm9vbGVhbjtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGVycm9yPzogYm9vbGVhbjtcbiAgQElucHV0KCkgd2lkdGg/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHByZWZpeD86IHN0cmluZztcbiAgQElucHV0KCkgc3VmZml4Pzogc3RyaW5nO1xuICBASW5wdXQoKSB0ZXN0SWQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFyaWFMYWJlbD86IHN0cmluZztcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgbWF4TGVuZ3RoPzogbnVtYmVyO1xuICBASW5wdXQoKSBtaW4/OiBzdHJpbmcgfCBudW1iZXI7XG4gIEBJbnB1dCgpIG1heD86IHN0cmluZyB8IG51bWJlcjtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgc3RlcD86IG51bWJlcjtcbiAgQElucHV0KCkgYXJpYUxhYmVsbGVkQnk/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIG10PzogU3BhY2luZztcbiAgQElucHV0KCkgbXI/OiBTcGFjaW5nO1xuICBASW5wdXQoKSBtYj86IFNwYWNpbmc7XG4gIEBJbnB1dCgpIG1sPzogU3BhY2luZztcbiAgQElucHV0KCkgdHJhaWxpbmdJY29uQXJpYUxhYmVsPzogc3RyaW5nO1xuICBASW5wdXQoKSB0ZXh0QWxpZ24/OiBcImxlZnRcIiB8IFwicmlnaHRcIiA9IFwicmlnaHRcIjsgLy8gRGVmYXVsdCB0byByaWdodCBmb3IgbnVtYmVyc1xuXG4gIEBJbnB1dCgpIHZhbHVlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBAT3V0cHV0KCkgb25UcmFpbGluZ0ljb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTsgLy8gS2VlcCB2b2lkIHR5cGVcbiAgQE91dHB1dCgpIG9uRm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPEdvYWJJbnB1dE9uRm9jdXNEZXRhaWw+KCk7XG4gIEBPdXRwdXQoKSBvbkJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPEdvYWJJbnB1dE9uQmx1ckRldGFpbD4oKTtcbiAgQE91dHB1dCgpIG9uS2V5UHJlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPEdvYWJJbnB1dE9uS2V5UHJlc3NEZXRhaWw+KCk7XG4gIEBPdXRwdXQoKSBvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8R29hYklucHV0T25DaGFuZ2VEZXRhaWw+KCk7XG5cbiAgaGFuZGxlVHJhaWxpbmdJY29uQ2xpY2sgPSBmYWxzZTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmhhbmRsZVRyYWlsaW5nSWNvbkNsaWNrID0gdGhpcy5vblRyYWlsaW5nSWNvbkNsaWNrLm9ic2VydmVkO1xuICB9XG5cbiAgX29uVHJhaWxpbmdJY29uQ2xpY2soXzogRXZlbnQpIHtcbiAgICBpZiAodGhpcy5oYW5kbGVUcmFpbGluZ0ljb25DbGljaykge1xuICAgICAgdGhpcy5vblRyYWlsaW5nSWNvbkNsaWNrLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBfb25DaGFuZ2UoZTogRXZlbnQpIHtcbiAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcbiAgICBjb25zdCBkZXRhaWwgPSAoZSBhcyBDdXN0b21FdmVudDxHb2FiSW5wdXRPbkNoYW5nZURldGFpbD4pLmRldGFpbDtcblxuICAgIGNvbnN0IHN0cmluZ1ZhbHVlID0gZGV0YWlsLnZhbHVlO1xuICAgIGxldCBudW1lcmljVmFsdWU6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKHN0cmluZ1ZhbHVlICE9PSBudWxsICYmIHN0cmluZ1ZhbHVlLnRyaW0oKSAhPT0gXCJcIikge1xuICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VGbG9hdChzdHJpbmdWYWx1ZSk7XG4gICAgICBpZiAoIWlzTmFOKHBhcnNlZCkpIHtcbiAgICAgICAgbnVtZXJpY1ZhbHVlID0gcGFyc2VkO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSBudW1lcmljVmFsdWU7XG5cbiAgICB0aGlzLmZjQ2hhbmdlPy4obnVtZXJpY1ZhbHVlKTtcblxuICAgIHRoaXMub25DaGFuZ2UuZW1pdChkZXRhaWwpO1xuICB9XG5cbiAgX29uS2V5UHJlc3MoZTogRXZlbnQpIHtcbiAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcbiAgICBjb25zdCBkZXRhaWwgPSAoZSBhcyBDdXN0b21FdmVudDxHb2FiSW5wdXRPbktleVByZXNzRGV0YWlsPikuZGV0YWlsO1xuICAgIHRoaXMub25LZXlQcmVzcy5lbWl0KGRldGFpbCk7XG4gIH1cblxuICBfb25Gb2N1cyhlOiBFdmVudCkge1xuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xuICAgIGNvbnN0IGRldGFpbCA9IChlIGFzIEN1c3RvbUV2ZW50PEdvYWJJbnB1dE9uRm9jdXNEZXRhaWw+KS5kZXRhaWw7XG4gICAgdGhpcy5vbkZvY3VzLmVtaXQoZGV0YWlsKTtcbiAgfVxuXG4gIF9vbkJsdXIoZTogRXZlbnQpIHtcbiAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcbiAgICBjb25zdCBkZXRhaWwgPSAoZSBhcyBDdXN0b21FdmVudDxHb2FiSW5wdXRPbkJsdXJEZXRhaWw+KS5kZXRhaWw7XG4gICAgdGhpcy5vbkJsdXIuZW1pdChkZXRhaWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBmY0NoYW5nZT86ICh2YWx1ZTogbnVtYmVyIHwgbnVsbCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBmY1RvdWNoZWQ/OiAoKSA9PiB2b2lkOyAvLyBDaGFuZ2VkIHR5cGUgdG8gdm9pZCBmb3IgY29uc2lzdGVuY3lcbiAgdG91Y2hlZCA9IGZhbHNlO1xuXG4gIG1hcmtBc1RvdWNoZWQoKSB7XG4gICAgaWYgKCF0aGlzLnRvdWNoZWQpIHtcbiAgICAgIHRoaXMuZmNUb3VjaGVkPy4oKTtcbiAgICAgIHRoaXMudG91Y2hlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogbnVtYmVyIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IHZhbHVlO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBudW1iZXIgfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5mY0NoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLmZjVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG59XG4iXX0=