UNPKG

@taiga-ui/kit

Version:
144 lines • 18.9 kB
import { __decorate, __extends, __param } from "tslib"; import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, Inject, Input, Optional, Self, ViewChild, } from '@angular/core'; import { NgControl } from '@angular/forms'; import { AbstractTuiNullableControl, ALWAYS_FALSE_HANDLER, TUI_FIRST_DAY, TUI_FOCUSABLE_ITEM_ACCESSOR, TUI_LAST_DAY, tuiDefaultProp, TuiMonthRange, } from '@taiga-ui/cdk'; import { sizeBigger, TUI_MONTHS, TUI_TEXTFIELD_SIZE, TuiPrimitiveTextfieldComponent, TuiTextfieldSizeDirective, TuiWithOptionalMinMax, } from '@taiga-ui/core'; import { LEFT_ALIGNED_DROPDOWN_CONTROLLER_PROVIDER } from '@taiga-ui/kit/providers'; import { Observable } from 'rxjs'; // @dynamic var TuiInputMonthRangeComponent = /** @class */ (function (_super) { __extends(TuiInputMonthRangeComponent, _super); function TuiInputMonthRangeComponent(control, changeDetectorRef, months$, textfieldSize) { var _this = _super.call(this, control, changeDetectorRef) || this; _this.months$ = months$; _this.textfieldSize = textfieldSize; _this.min = TUI_FIRST_DAY; _this.max = TUI_LAST_DAY; _this.disabledItemHandler = ALWAYS_FALSE_HANDLER; _this.open = false; return _this; } TuiInputMonthRangeComponent_1 = TuiInputMonthRangeComponent; Object.defineProperty(TuiInputMonthRangeComponent.prototype, "nativeFocusableElement", { get: function () { return this.textfield ? this.textfield.nativeFocusableElement : null; }, enumerable: true, configurable: true }); Object.defineProperty(TuiInputMonthRangeComponent.prototype, "focused", { get: function () { return !!this.textfield && this.textfield.focused; }, enumerable: true, configurable: true }); Object.defineProperty(TuiInputMonthRangeComponent.prototype, "calendarIcon", { get: function () { return sizeBigger(this.textfieldSize.size) ? 'tuiIconCalendarLarge' : 'tuiIconCalendar'; }, enumerable: true, configurable: true }); TuiInputMonthRangeComponent.prototype.computeValue = function (value, focused, months) { if (value === null) { return ''; } var formattedValueTo = !value.isSingleMonth || !focused ? this.formatMonth(value.to, months) : ''; return this.formatMonth(value.from, months) + " \u2014 " + formattedValueTo; }; Object.defineProperty(TuiInputMonthRangeComponent.prototype, "canOpen", { get: function () { return !this.computedDisabled && !this.readOnly; }, enumerable: true, configurable: true }); TuiInputMonthRangeComponent.prototype.onValueChange = function (value) { if (value === '') { this.updateValue(null); } }; TuiInputMonthRangeComponent.prototype.onMonthClick = function (month) { if (this.value === null || !this.value.isSingleMonth) { this.writeValue(new TuiMonthRange(month, month)); return; } this.updateValue(TuiMonthRange.sort(this.value.from, month)); this.close(); }; TuiInputMonthRangeComponent.prototype.onHovered = function (hovered) { this.updateHovered(hovered); }; TuiInputMonthRangeComponent.prototype.onOpenChange = function (open) { this.open = open; }; TuiInputMonthRangeComponent.prototype.onActiveZone = function (focused) { this.updateFocused(focused); if (focused) { return; } if (this.value && this.value.isSingleMonth) { this.updateValue(new TuiMonthRange(this.value.from, this.value.from)); } }; TuiInputMonthRangeComponent.prototype.setDisabledState = function () { _super.prototype.setDisabledState.call(this); this.close(); }; TuiInputMonthRangeComponent.prototype.formatMonth = function (_a, months) { var month = _a.month, formattedYear = _a.formattedYear; return months[month] + " " + formattedYear; }; TuiInputMonthRangeComponent.prototype.close = function () { this.open = false; }; var TuiInputMonthRangeComponent_1; TuiInputMonthRangeComponent.ctorParameters = function () { return [ { type: NgControl, decorators: [{ type: Optional }, { type: Self }, { type: Inject, args: [NgControl,] }] }, { type: ChangeDetectorRef, decorators: [{ type: Inject, args: [ChangeDetectorRef,] }] }, { type: Observable, decorators: [{ type: Inject, args: [TUI_MONTHS,] }] }, { type: TuiTextfieldSizeDirective, decorators: [{ type: Inject, args: [TUI_TEXTFIELD_SIZE,] }] } ]; }; __decorate([ Input(), tuiDefaultProp() ], TuiInputMonthRangeComponent.prototype, "min", void 0); __decorate([ Input(), tuiDefaultProp() ], TuiInputMonthRangeComponent.prototype, "max", void 0); __decorate([ Input(), tuiDefaultProp() ], TuiInputMonthRangeComponent.prototype, "disabledItemHandler", void 0); __decorate([ ViewChild(TuiPrimitiveTextfieldComponent) ], TuiInputMonthRangeComponent.prototype, "textfield", void 0); TuiInputMonthRangeComponent = TuiInputMonthRangeComponent_1 = __decorate([ Component({ selector: 'tui-input-month-range', template: "<tui-hosted-dropdown\n class=\"hosted\"\n [canOpen]=\"canOpen\"\n [content]=\"dropdown\"\n [open]=\"open && canOpen\"\n (openChange)=\"onOpenChange($event)\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <tui-primitive-textfield\n *ngIf=\"months$ | async as months\"\n class=\"textfield\"\n [editable]=\"false\"\n [disabled]=\"disabled\"\n [nativeId]=\"nativeId\"\n [readOnly]=\"readOnly\"\n [iconContent]=\"calendarIcon\"\n [pseudoFocused]=\"pseudoFocused\"\n [pseudoHovered]=\"pseudoHovered\"\n [invalid]=\"computedInvalid\"\n [value]=\"computeValue(value, focused, months)\"\n (valueChange)=\"onValueChange($event)\"\n (hoveredChange)=\"onHovered($event)\"\n >\n <ng-content></ng-content>\n </tui-primitive-textfield>\n\n <ng-template #dropdown>\n <tui-calendar-month\n tuiPreventDefault=\"mousedown\"\n [disabledItemHandler]=\"disabledItemHandler\"\n [min]=\"min\"\n [max]=\"max\"\n [value]=\"value\"\n (monthClick)=\"onMonthClick($event)\"\n ></tui-calendar-month>\n </ng-template>\n</tui-hosted-dropdown>\n", providers: [ { provide: TUI_FOCUSABLE_ITEM_ACCESSOR, useExisting: forwardRef(function () { return TuiInputMonthRangeComponent_1; }), }, LEFT_ALIGNED_DROPDOWN_CONTROLLER_PROVIDER, ], changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;border-radius:var(--tui-radius-m)}.hosted{display:block;border-radius:inherit}.textfield{border-radius:inherit}.icon{position:relative;cursor:pointer}"] }), __param(0, Optional()), __param(0, Self()), __param(0, Inject(NgControl)), __param(1, Inject(ChangeDetectorRef)), __param(2, Inject(TUI_MONTHS)), __param(3, Inject(TUI_TEXTFIELD_SIZE)) ], TuiInputMonthRangeComponent); return TuiInputMonthRangeComponent; }(AbstractTuiNullableControl)); export { TuiInputMonthRangeComponent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbW9udGgtcmFuZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2lucHV0LW1vbnRoLXJhbmdlLyIsInNvdXJjZXMiOlsiaW5wdXQtbW9udGgtcmFuZ2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLElBQUksRUFDSixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFDSCwwQkFBMEIsRUFDMUIsb0JBQW9CLEVBQ3BCLGFBQWEsRUFDYiwyQkFBMkIsRUFDM0IsWUFBWSxFQUNaLGNBQWMsRUFHZCxhQUFhLEdBQ2hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxVQUFVLEVBQ1YsVUFBVSxFQUNWLGtCQUFrQixFQUNsQiw4QkFBOEIsRUFDOUIseUJBQXlCLEVBQ3pCLHFCQUFxQixHQUN4QixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBQyx5Q0FBeUMsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRWxGLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFaEMsV0FBVztBQWNYO0lBQ1ksK0NBQXlDO0lBc0JqRCxxQ0FJSSxPQUF5QixFQUNFLGlCQUFvQyxFQUNsQyxPQUFzQyxFQUVsRCxhQUF3QztRQVI3RCxZQVVJLGtCQUFNLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQyxTQUNwQztRQUxnQyxhQUFPLEdBQVAsT0FBTyxDQUErQjtRQUVsRCxtQkFBYSxHQUFiLGFBQWEsQ0FBMkI7UUExQjdELFNBQUcsR0FBYSxhQUFhLENBQUM7UUFJOUIsU0FBRyxHQUFhLFlBQVksQ0FBQztRQUk3Qix5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TUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBRWpCLFdBQUEsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUE7UUFDekIsV0FBQSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDbEIsV0FBQSxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtPQTlCdEIsMkJBQTJCLENBeUh2QztJQUFELGtDQUFDO0NBQUEsQUF6SEQsQ0FDWSwwQkFBMEIsR0F3SHJDO1NBekhZLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9wdGlvbmFsLFxuICAgIFNlbGYsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0VHVpTnVsbGFibGVDb250cm9sLFxuICAgIEFMV0FZU19GQUxTRV9IQU5ETEVSLFxuICAgIFRVSV9GSVJTVF9EQVksXG4gICAgVFVJX0ZPQ1VTQUJMRV9JVEVNX0FDQ0VTU09SLFxuICAgIFRVSV9MQVNUX0RBWSxcbiAgICB0dWlEZWZhdWx0UHJvcCxcbiAgICBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3IsXG4gICAgVHVpTW9udGgsXG4gICAgVHVpTW9udGhSYW5nZSxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIHNpemVCaWdnZXIsXG4gICAgVFVJX01PTlRIUyxcbiAgICBUVUlfVEVYVEZJRUxEX1NJWkUsXG4gICAgVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50LFxuICAgIFR1aVRleHRmaWVsZFNpemVEaXJlY3RpdmUsXG4gICAgVHVpV2l0aE9wdGlvbmFsTWluTWF4LFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQge1R1aU1vbnRoQ29udGV4dH0gZnJvbSAnQHRhaWdhLXVpL2tpdC9pbnRlcmZhY2VzJztcbmltcG9ydCB7TEVGVF9BTElHTkVEX0RST1BET1dOX0NPTlRST0xMRVJfUFJPVklERVJ9IGZyb20gJ0B0YWlnYS11aS9raXQvcHJvdmlkZXJzJztcbmltcG9ydCB7VHVpQm9vbGVhbkhhbmRsZXJXaXRoQ29udGV4dH0gZnJvbSAnQHRhaWdhLXVpL2tpdC90eXBlcyc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG4vLyBAZHluYW1pY1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0dWktaW5wdXQtbW9udGgtcmFuZ2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1tb250aC1yYW5nZS50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnB1dC1tb250aC1yYW5nZS5zdHlsZS5sZXNzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFRVSV9GT0NVU0FCTEVfSVRFTV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFR1aUlucHV0TW9udGhSYW5nZUNvbXBvbmVudCksXG4gICAgICAgIH0sXG4gICAgICAgIExFRlRfQUxJR05FRF9EUk9QRE9XTl9DT05UUk9MTEVSX1BST1ZJREVSLFxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFR1aUlucHV0TW9udGhSYW5nZUNvbXBvbmVudFxuICAgIGV4dGVuZHMgQWJzdHJhY3RUdWlOdWxsYWJsZUNvbnRyb2w8VHVpTW9udGhSYW5nZT5cbiAgICBpbXBsZW1lbnRzIFR1aVdpdGhPcHRpb25hbE1pbk1heDxUdWlNb250aD4sIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3NvciB7XG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIG1pbjogVHVpTW9udGggPSBUVUlfRklSU1RfREFZO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIG1heDogVHVpTW9udGggPSBUVUlfTEFTVF9EQVk7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgZGlzYWJsZWRJdGVtSGFuZGxlcjogVHVpQm9vbGVhbkhhbmRsZXJXaXRoQ29udGV4dDxcbiAgICAgICAgVHVpTW9udGgsXG4gICAgICAgIFR1aU1vbnRoQ29udGV4dFxuICAgID4gPSBBTFdBWVNfRkFMU0VfSEFORExFUjtcblxuICAgIG9wZW4gPSBmYWxzZTtcblxuICAgIEBWaWV3Q2hpbGQoVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGV4dGZpZWxkPzogVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBTZWxmKClcbiAgICAgICAgQEluamVjdChOZ0NvbnRyb2wpXG4gICAgICAgIGNvbnRyb2w6IE5nQ29udHJvbCB8IG51bGwsXG4gICAgICAgIEBJbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChUVUlfTU9OVEhTKSByZWFkb25seSBtb250aHMkOiBPYnNlcnZhYmxlPHJlYWRvbmx5IHN0cmluZ1tdPixcbiAgICAgICAgQEluamVjdChUVUlfVEVYVEZJRUxEX1NJWkUpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdGV4dGZpZWxkU2l6ZTogVHVpVGV4dGZpZWxkU2l6ZURpcmVjdGl2ZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY29udHJvbCwgY2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVGb2N1c2FibGVFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dGZpZWxkID8gdGhpcy50ZXh0ZmllbGQubmF0aXZlRm9jdXNhYmxlRWxlbWVudCA6IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMudGV4dGZpZWxkICYmIHRoaXMudGV4dGZpZWxkLmZvY3VzZWQ7XG4gICAgfVxuXG4gICAgZ2V0IGNhbGVuZGFySWNvbigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gc2l6ZUJpZ2dlcih0aGlzLnRleHRmaWVsZFNpemUuc2l6ZSlcbiAgICAgICAgICAgID8gJ3R1aUljb25DYWxlbmRhckxhcmdlJ1xuICAgICAgICAgICAgOiAndHVpSWNvbkNhbGVuZGFyJztcbiAgICB9XG5cbiAgICBjb21wdXRlVmFsdWUoXG4gICAgICAgIHZhbHVlOiBUdWlNb250aFJhbmdlIHwgbnVsbCxcbiAgICAgICAgZm9jdXNlZDogYm9vbGVhbixcbiAgICAgICAgbW9udGhzOiByZWFkb25seSBzdHJpbmdbXSxcbiAgICApOiBzdHJpbmcge1xuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlVG8gPVxuICAgICAgICAgICAgIXZhbHVlLmlzU2luZ2xlTW9udGggfHwgIWZvY3VzZWQgPyB0aGlzLmZvcm1hdE1vbnRoKHZhbHVlLnRvLCBtb250aHMpIDogJyc7XG5cbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZm9ybWF0TW9udGgodmFsdWUuZnJvbSwgbW9udGhzKX0g4oCUICR7Zm9ybWF0dGVkVmFsdWVUb31gO1xuICAgIH1cblxuICAgIGdldCBjYW5PcGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuY29tcHV0ZWREaXNhYmxlZCAmJiAhdGhpcy5yZWFkT25seTtcbiAgICB9XG5cbiAgICBvblZhbHVlQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShudWxsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTW9udGhDbGljayhtb250aDogVHVpTW9udGgpIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgPT09IG51bGwgfHwgIXRoaXMudmFsdWUuaXNTaW5nbGVNb250aCkge1xuICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKG5ldyBUdWlNb250aFJhbmdlKG1vbnRoLCBtb250aCkpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKFR1aU1vbnRoUmFuZ2Uuc29ydCh0aGlzLnZhbHVlLmZyb20sIG1vbnRoKSk7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBvbkhvdmVyZWQoaG92ZXJlZDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnVwZGF0ZUhvdmVyZWQoaG92ZXJlZCk7XG4gICAgfVxuXG4gICAgb25PcGVuQ2hhbmdlKG9wZW46IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5vcGVuID0gb3BlbjtcbiAgICB9XG5cbiAgICBvbkFjdGl2ZVpvbmUoZm9jdXNlZDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnVwZGF0ZUZvY3VzZWQoZm9jdXNlZCk7XG5cbiAgICAgICAgaWYgKGZvY3VzZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUuaXNTaW5nbGVNb250aCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShuZXcgVHVpTW9udGhSYW5nZSh0aGlzLnZhbHVlLmZyb20sIHRoaXMudmFsdWUuZnJvbSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZSgpIHtcbiAgICAgICAgc3VwZXIuc2V0RGlzYWJsZWRTdGF0ZSgpO1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXRNb250aChcbiAgICAgICAge21vbnRoLCBmb3JtYXR0ZWRZZWFyfTogVHVpTW9udGgsXG4gICAgICAgIG1vbnRoczogcmVhZG9ubHkgc3RyaW5nW10sXG4gICAgKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke21vbnRoc1ttb250aF19ICR7Zm9ybWF0dGVkWWVhcn1gO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xvc2UoKSB7XG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgIH1cbn1cbiJdfQ==