UNPKG

@xui/components

Version:

xUI Components for Angular

107 lines 14.4 kB
import { booleanAttribute, ChangeDetectionStrategy, Component, ContentChildren, effect, input, model, Optional, QueryList, Self, signal } from '@angular/core'; import { NgControl } from '@angular/forms'; import { RADIO_LIST_ACCESSOR } from './radio-list.types'; import { XuiRadioOption } from './radio-option'; import * as i0 from "@angular/core"; import * as i1 from "@angular/forms"; export class XuiRadioList { constructor(control) { this.control = control; this._mouseDown = false; this._disabled = signal(false); this._focusedValue = signal(null); this.value = model(null); this.size = input('md'); this.color = input('light'); this.disabled = input(undefined, { transform: booleanAttribute }); if (this.control) { this.control.valueAccessor = this; } effect(() => this.disabled() && this._disabled.set(this.disabled()), { allowSignalWrites: true }); effect(() => this.value() != undefined && this.onChange?.(this.value())); } writeValue(source) { this.value.set(source); } registerOnChange(onChange) { this.onChange = onChange; } registerOnTouched(onTouched) { this.onTouched = onTouched; } setDisabledState(isDisabled) { this._disabled.set(isDisabled); } _prev(event) { event.preventDefault(); event.stopPropagation(); this.select(true); } _next(event) { event.preventDefault(); event.stopPropagation(); this.select(false); } _focusIn() { if (!this._mouseDown) { if (this.value() == null) { this.select(false); } else { this._focusedValue.set(this.value()); } } } _focusOut() { this._focusedValue.set(null); this.onTouched?.(); } select(backwards) { if (this._disabled()) { return; } const options = this.optionsRef.toArray(); let next = options.findIndex(x => x.value() == this.value()); let iterations = options.length; do { next += backwards ? options.length - 1 : 1; next %= options.length; if (!iterations--) { throw 'No enabled options'; } } while (options[next].disabled()); this.value.set(options[next].value()); this._focusedValue.set(this.value()); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XuiRadioList, deps: [{ token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.1", type: XuiRadioList, selector: "xui-radio-list", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { listeners: { "keydown.arrowup": "_prev($event)", "keydown.arrowdown": "_next($event)", "mousedown": "_mouseDown = true", "mouseup": "_mouseDown = false", "focusin": "_focusIn()", "focusout": "_focusOut()" }, properties: { "tabindex": "_disabled() ? -1 : 0" }, classAttribute: "x-radio-list" }, providers: [{ provide: RADIO_LIST_ACCESSOR, useExisting: XuiRadioList }], queries: [{ propertyName: "optionsRef", predicate: XuiRadioOption }], ngImport: i0, template: '<ng-content />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XuiRadioList, decorators: [{ type: Component, args: [{ selector: 'xui-radio-list', changeDetection: ChangeDetectionStrategy.OnPush, template: '<ng-content />', providers: [{ provide: RADIO_LIST_ACCESSOR, useExisting: XuiRadioList }], host: { class: 'x-radio-list', '[tabindex]': '_disabled() ? -1 : 0', '(keydown.arrowup)': '_prev($event)', '(keydown.arrowdown)': '_next($event)', '(mousedown)': '_mouseDown = true', '(mouseup)': '_mouseDown = false', '(focusin)': '_focusIn()', '(focusout)': '_focusOut()' } }] }], ctorParameters: () => [{ type: i1.NgControl, decorators: [{ type: Self }, { type: Optional }] }], propDecorators: { optionsRef: [{ type: ContentChildren, args: [XuiRadioOption] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMveHVpL3NyYy9yYWRpby1saXN0L3JhZGlvLWxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULGVBQWUsRUFDZixNQUFNLEVBQ04sS0FBSyxFQUNMLEtBQUssRUFDTCxRQUFRLEVBQ1IsU0FBUyxFQUNULElBQUksRUFDSixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQ0wsbUJBQW1CLEVBS3BCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFrQmhELE1BQU0sT0FBTyxZQUFZO0lBaUJ2QixZQUF1QyxPQUFtQjtRQUFuQixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBZDFELGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbkIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixrQkFBYSxHQUFHLE1BQU0sQ0FBaUIsSUFBSSxDQUFDLENBQUM7UUFFN0MsVUFBSyxHQUFHLEtBQUssQ0FBaUIsSUFBSSxDQUFDLENBQUM7UUFDcEMsU0FBSSxHQUFHLEtBQUssQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFDbEMsVUFBSyxHQUFHLEtBQUssQ0FBaUIsT0FBTyxDQUFDLENBQUM7UUFDdkMsYUFBUSxHQUFHLEtBQUssQ0FBd0MsU0FBUyxFQUFFO1lBQ2pFLFNBQVMsRUFBRSxnQkFBZ0I7U0FDNUIsQ0FBQyxDQUFDO1FBS0QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3BDLENBQUM7UUFFRCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUcsQ0FBQyxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNuRyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRyxDQUFDLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQXNCO1FBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxRQUEwQztRQUN6RCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsU0FBcUI7UUFDckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBb0I7UUFDeEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBb0I7UUFDeEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDdkMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTyxNQUFNLENBQUMsU0FBa0I7UUFDL0IsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUNyQixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUMsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM3RCxJQUFJLFVBQVUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBRWhDLEdBQUcsQ0FBQztZQUNGLElBQUksSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0MsSUFBSSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFFdkIsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQ2xCLE1BQU0sb0JBQW9CLENBQUM7WUFDN0IsQ0FBQztRQUNILENBQUMsUUFBUSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7UUFFbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQzs4R0F6RlUsWUFBWTtrR0FBWixZQUFZLDQyQkFaWixDQUFDLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsQ0FBQyxxREEyQnZELGNBQWMsNkJBNUJyQixnQkFBZ0I7OzJGQWFmLFlBQVk7a0JBaEJ4QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLGNBQWMsRUFBRSxDQUFDO29CQUN4RSxJQUFJLEVBQUU7d0JBQ0osS0FBSyxFQUFFLGNBQWM7d0JBQ3JCLFlBQVksRUFBRSxzQkFBc0I7d0JBQ3BDLG1CQUFtQixFQUFFLGVBQWU7d0JBQ3BDLHFCQUFxQixFQUFFLGVBQWU7d0JBQ3RDLGFBQWEsRUFBRSxtQkFBbUI7d0JBQ2xDLFdBQVcsRUFBRSxvQkFBb0I7d0JBQ2pDLFdBQVcsRUFBRSxZQUFZO3dCQUN6QixZQUFZLEVBQUUsYUFBYTtxQkFDNUI7aUJBQ0Y7OzBCQWtCYyxJQUFJOzswQkFBSSxRQUFRO3lDQUZZLFVBQVU7c0JBQWxELGVBQWU7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgZWZmZWN0LFxuICBpbnB1dCxcbiAgbW9kZWwsXG4gIE9wdGlvbmFsLFxuICBRdWVyeUxpc3QsXG4gIFNlbGYsXG4gIHNpZ25hbFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBSQURJT19MSVNUX0FDQ0VTU09SLFxuICBSYWRpb0xpc3RBY2Nlc3NvcixcbiAgUmFkaW9MaXN0Q29sb3IsXG4gIFJhZGlvTGlzdFNpemUsXG4gIFJhZGlvTGlzdFZhbHVlXG59IGZyb20gJy4vcmFkaW8tbGlzdC50eXBlcyc7XG5pbXBvcnQgeyBYdWlSYWRpb09wdGlvbiB9IGZyb20gJy4vcmFkaW8tb3B0aW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneHVpLXJhZGlvLWxpc3QnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudCAvPicsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogUkFESU9fTElTVF9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IFh1aVJhZGlvTGlzdCB9XSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAneC1yYWRpby1saXN0JyxcbiAgICAnW3RhYmluZGV4XSc6ICdfZGlzYWJsZWQoKSA/IC0xIDogMCcsXG4gICAgJyhrZXlkb3duLmFycm93dXApJzogJ19wcmV2KCRldmVudCknLFxuICAgICcoa2V5ZG93bi5hcnJvd2Rvd24pJzogJ19uZXh0KCRldmVudCknLFxuICAgICcobW91c2Vkb3duKSc6ICdfbW91c2VEb3duID0gdHJ1ZScsXG4gICAgJyhtb3VzZXVwKSc6ICdfbW91c2VEb3duID0gZmFsc2UnLFxuICAgICcoZm9jdXNpbiknOiAnX2ZvY3VzSW4oKScsXG4gICAgJyhmb2N1c291dCknOiAnX2ZvY3VzT3V0KCknXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgWHVpUmFkaW9MaXN0IGltcGxlbWVudHMgUmFkaW9MaXN0QWNjZXNzb3IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgcHJpdmF0ZSBvbkNoYW5nZT86IChzb3VyY2U6IFJhZGlvTGlzdFZhbHVlKSA9PiB2b2lkO1xuICBwcml2YXRlIG9uVG91Y2hlZD86ICgpID0+IHZvaWQ7XG4gIF9tb3VzZURvd24gPSBmYWxzZTtcblxuICBfZGlzYWJsZWQgPSBzaWduYWwoZmFsc2UpO1xuICBfZm9jdXNlZFZhbHVlID0gc2lnbmFsPFJhZGlvTGlzdFZhbHVlPihudWxsKTtcblxuICB2YWx1ZSA9IG1vZGVsPFJhZGlvTGlzdFZhbHVlPihudWxsKTtcbiAgc2l6ZSA9IGlucHV0PFJhZGlvTGlzdFNpemU+KCdtZCcpO1xuICBjb2xvciA9IGlucHV0PFJhZGlvTGlzdENvbG9yPignbGlnaHQnKTtcbiAgZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkLCBzdHJpbmcgfCBib29sZWFuPih1bmRlZmluZWQsIHtcbiAgICB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGVcbiAgfSk7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihYdWlSYWRpb09wdGlvbikgcHJpdmF0ZSBvcHRpb25zUmVmITogUXVlcnlMaXN0PFh1aVJhZGlvT3B0aW9uPjtcblxuICBjb25zdHJ1Y3RvcihAU2VsZigpIEBPcHRpb25hbCgpIHB1YmxpYyBjb250cm9sPzogTmdDb250cm9sKSB7XG4gICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgdGhpcy5jb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cblxuICAgIGVmZmVjdCgoKSA9PiB0aGlzLmRpc2FibGVkKCkgJiYgdGhpcy5fZGlzYWJsZWQuc2V0KHRoaXMuZGlzYWJsZWQoKSEpLCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pO1xuICAgIGVmZmVjdCgoKSA9PiB0aGlzLnZhbHVlKCkgIT0gdW5kZWZpbmVkICYmIHRoaXMub25DaGFuZ2U/Lih0aGlzLnZhbHVlKCkhKSk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHNvdXJjZTogUmFkaW9MaXN0VmFsdWUpIHtcbiAgICB0aGlzLnZhbHVlLnNldChzb3VyY2UpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogKHNvdXJjZTogUmFkaW9MaXN0VmFsdWUpID0+IHZvaWQpIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gb25DaGFuZ2U7XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IG9uVG91Y2hlZDtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2Rpc2FibGVkLnNldChpc0Rpc2FibGVkKTtcbiAgfVxuXG4gIF9wcmV2KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnNlbGVjdCh0cnVlKTtcbiAgfVxuXG4gIF9uZXh0KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnNlbGVjdChmYWxzZSk7XG4gIH1cblxuICBfZm9jdXNJbigpIHtcbiAgICBpZiAoIXRoaXMuX21vdXNlRG93bikge1xuICAgICAgaWYgKHRoaXMudmFsdWUoKSA9PSBudWxsKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0KGZhbHNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2ZvY3VzZWRWYWx1ZS5zZXQodGhpcy52YWx1ZSgpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBfZm9jdXNPdXQoKSB7XG4gICAgdGhpcy5fZm9jdXNlZFZhbHVlLnNldChudWxsKTtcbiAgICB0aGlzLm9uVG91Y2hlZD8uKCk7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdChiYWNrd2FyZHM6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5fZGlzYWJsZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnNSZWYudG9BcnJheSgpO1xuICAgIGxldCBuZXh0ID0gb3B0aW9ucy5maW5kSW5kZXgoeCA9PiB4LnZhbHVlKCkgPT0gdGhpcy52YWx1ZSgpKTtcbiAgICBsZXQgaXRlcmF0aW9ucyA9IG9wdGlvbnMubGVuZ3RoO1xuXG4gICAgZG8ge1xuICAgICAgbmV4dCArPSBiYWNrd2FyZHMgPyBvcHRpb25zLmxlbmd0aCAtIDEgOiAxO1xuICAgICAgbmV4dCAlPSBvcHRpb25zLmxlbmd0aDtcblxuICAgICAgaWYgKCFpdGVyYXRpb25zLS0pIHtcbiAgICAgICAgdGhyb3cgJ05vIGVuYWJsZWQgb3B0aW9ucyc7XG4gICAgICB9XG4gICAgfSB3aGlsZSAob3B0aW9uc1tuZXh0XS5kaXNhYmxlZCgpKTtcblxuICAgIHRoaXMudmFsdWUuc2V0KG9wdGlvbnNbbmV4dF0udmFsdWUoKSk7XG4gICAgdGhpcy5fZm9jdXNlZFZhbHVlLnNldCh0aGlzLnZhbHVlKCkpO1xuICB9XG59XG4iXX0=