@grapecity/inputman.angular
Version:
このパッケージには、Angular用の[InputManJS](https://developer.mescius.jp/inputmanjs)コンポーネントが含まれます。
181 lines • 20.6 kB
JavaScript
import { Component, ElementRef, Input, Output, EventEmitter, forwardRef } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import { GC } from '../inputman';
import { provideParent } from './GcComponents';
import { GcInputManBaseComponent } from './GcInputManBase';
import * as i0 from "@angular/core";
export class GcNumberComponent extends GcInputManBaseComponent {
constructor(ref) {
super(ref);
this.onChange = () => { };
this.onTouched = () => { };
this.onSpinDown = new EventEmitter();
this.onSpinUp = new EventEmitter();
this.onInvalidRange = new EventEmitter();
this.onValueChanged = new EventEmitter();
// For V2.1 Compatibility, we have to keep this property or event
this.valueChange = new EventEmitter();
}
writeValue(value) {
this.value = value;
if (this._imCtrl) {
this._imCtrl.value = this.value;
}
}
registerOnChange(onChange) {
this.onChange = onChange;
}
registerOnTouched(onTouched) {
this.onTouched = onTouched;
}
setDisabledState(isDisabled) {
this.enabled = !isDisabled;
if (this._imCtrl) {
this._imCtrl.enabled = this.enabled;
}
}
initGcComponent() {
var element = document.createElement('input');
this.createTemplate(element);
this._imCtrl = new GC.InputMan.GcNumber(element, this);
}
bindEvent() {
if (!this._imCtrl) {
return;
}
super.bindEvent();
this._imCtrl.onSpinDown((s) => { this.onSpinDown.emit(s); });
this._imCtrl.onSpinUp((s) => { this.onSpinUp.emit(s); });
this._imCtrl.onInvalidRange((s) => { this.onInvalidRange.emit(s); });
this._imCtrl.onValueChanged((s) => {
this.onValueChanged.emit(s);
this.onChange(s.getValue());
this.onTouched();
this.valueChange.emit(s.getValue());
});
}
clear() {
return this._imCtrl.clear();
}
}
GcNumberComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GcNumberComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
GcNumberComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GcNumberComponent, selector: "gc-number", inputs: { acceptsCrlf: "acceptsCrlf", autoConvert: "autoConvert", value: "value", text: "text", watermarkZeroText: "watermarkZeroText", formatDigit: "formatDigit", displayPositivePrefix: "displayPositivePrefix", displayFormatDigit: "displayFormatDigit", maxValue: "maxValue", minValue: "minValue", positivePrefix: "positivePrefix", positiveSuffix: "positiveSuffix", displayPositiveSuffix: "displayPositiveSuffix", negativePrefix: "negativePrefix", displayNegativePrefix: "displayNegativePrefix", negativeSuffix: "negativeSuffix", displayNegativeSuffix: "displayNegativeSuffix", valueSign: "valueSign", adjustValueOnFocus: "adjustValueOnFocus", allowDeleteToNull: "allowDeleteToNull", clearAction: "clearAction", acceptsDecimal: "acceptsDecimal", currencySymbol: "currencySymbol", decimalPoint: "decimalPoint", maxMinBehavior: "maxMinBehavior", separator: "separator", watermarkDisplayZeroText: "watermarkDisplayZeroText", highlightText: "highlightText", allowSpin: "allowSpin", spinWheel: "spinWheel", spinOnKeys: "spinOnKeys", spinWrap: "spinWrap", showSpinButton: "showSpinButton", spinButtonPosition: "spinButtonPosition", showNumericPad: "showNumericPad", numericPadPosition: "numericPadPosition", showCalculatorAsDropDown: "showCalculatorAsDropDown", showCalculatorAsPopup: "showCalculatorAsPopup", calculatorButtonPosition: "calculatorButtonPosition", showDropDownSlider: "showDropDownSlider", sliderButtonPosition: "sliderButtonPosition", dropDownConfig: "dropDownConfig", sliderConfig: "sliderConfig" }, outputs: { onSpinDown: "onSpinDown", onSpinUp: "onSpinUp", onInvalidRange: "onInvalidRange", onValueChanged: "onValueChanged", valueChange: "valueChange" }, providers: [
provideParent(GcNumberComponent),
{
provide: NG_VALUE_ACCESSOR,
multi: true,
useExisting: forwardRef(() => GcNumberComponent),
}
], usesInheritance: true, ngImport: i0, template: ``, isInline: true });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GcNumberComponent, decorators: [{
type: Component,
args: [{
selector: 'gc-number',
template: ``,
providers: [
provideParent(GcNumberComponent),
{
provide: NG_VALUE_ACCESSOR,
multi: true,
useExisting: forwardRef(() => GcNumberComponent),
}
]
}]
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { acceptsCrlf: [{
type: Input
}], autoConvert: [{
type: Input
}], value: [{
type: Input
}], text: [{
type: Input
}], watermarkZeroText: [{
type: Input
}], formatDigit: [{
type: Input
}], displayPositivePrefix: [{
type: Input
}], displayFormatDigit: [{
type: Input
}], maxValue: [{
type: Input
}], minValue: [{
type: Input
}], positivePrefix: [{
type: Input
}], positiveSuffix: [{
type: Input
}], displayPositiveSuffix: [{
type: Input
}], negativePrefix: [{
type: Input
}], displayNegativePrefix: [{
type: Input
}], negativeSuffix: [{
type: Input
}], displayNegativeSuffix: [{
type: Input
}], valueSign: [{
type: Input
}], adjustValueOnFocus: [{
type: Input
}], allowDeleteToNull: [{
type: Input
}], clearAction: [{
type: Input
}], acceptsDecimal: [{
type: Input
}], currencySymbol: [{
type: Input
}], decimalPoint: [{
type: Input
}], maxMinBehavior: [{
type: Input
}], separator: [{
type: Input
}], watermarkDisplayZeroText: [{
type: Input
}], highlightText: [{
type: Input
}], allowSpin: [{
type: Input
}], spinWheel: [{
type: Input
}], spinOnKeys: [{
type: Input
}], spinWrap: [{
type: Input
}], showSpinButton: [{
type: Input
}], spinButtonPosition: [{
type: Input
}], showNumericPad: [{
type: Input
}], numericPadPosition: [{
type: Input
}], showCalculatorAsDropDown: [{
type: Input
}], showCalculatorAsPopup: [{
type: Input
}], calculatorButtonPosition: [{
type: Input
}], showDropDownSlider: [{
type: Input
}], sliderButtonPosition: [{
type: Input
}], dropDownConfig: [{
type: Input
}], sliderConfig: [{
type: Input
}], onSpinDown: [{
type: Output
}], onSpinUp: [{
type: Output
}], onInvalidRange: [{
type: Output
}], onValueChanged: [{
type: Output
}], valueChange: [{
type: Output
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2NOdW1iZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb21wb25lbnRzL0djTnVtYmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBYzNELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSx1QkFBNkM7SUFFaEYsWUFBWSxHQUFlO1FBQ3ZCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUdQLGFBQVEsR0FBYSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDL0IsY0FBUyxHQUFhLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQTRHakMsZUFBVSxHQUF1QyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXBFLGFBQVEsR0FBdUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVsRSxtQkFBYyxHQUF1QyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXhFLG1CQUFjLEdBQXVDLElBQUksWUFBWSxFQUFFLENBQUM7UUFDL0UsaUVBQWlFO1FBRTFELGdCQUFXLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7SUF4SDlELENBQUM7SUFLRCxVQUFVLENBQUMsS0FBYTtRQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxD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RHhCLEtBQUs7Z0JBR0Msb0JBQW9CO3NCQUQxQixLQUFLO2dCQUdDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBR0MsWUFBWTtzQkFEbEIsS0FBSztnQkFHQyxVQUFVO3NCQURoQixNQUFNO2dCQUdBLFFBQVE7c0JBRGQsTUFBTTtnQkFHQSxjQUFjO3NCQURwQixNQUFNO2dCQUdBLGNBQWM7c0JBRHBCLE1BQU07Z0JBSUEsV0FBVztzQkFEakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBHQyB9IGZyb20gJy4uL2lucHV0bWFuJztcbmltcG9ydCB7IHByb3ZpZGVQYXJlbnQgfSBmcm9tICcuL0djQ29tcG9uZW50cyc7XG5pbXBvcnQgeyBHY0lucHV0TWFuQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vR2NJbnB1dE1hbkJhc2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2djLW51bWJlcicsXG4gICAgdGVtcGxhdGU6IGBgLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlUGFyZW50KEdjTnVtYmVyQ29tcG9uZW50KSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEdjTnVtYmVyQ29tcG9uZW50KSxcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgR2NOdW1iZXJDb21wb25lbnQgZXh0ZW5kcyBHY0lucHV0TWFuQmFzZUNvbXBvbmVudDxHQy5JbnB1dE1hbi5HY051bWJlcj4gaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cbiAgICBjb25zdHJ1Y3RvcihyZWY6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgc3VwZXIocmVmKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQ2hhbmdlOiBGdW5jdGlvbiA9ICgpID0+IHsgfTtcbiAgICBwcml2YXRlIG9uVG91Y2hlZDogRnVuY3Rpb24gPSAoKSA9PiB7IH07XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICBpZiAodGhpcy5faW1DdHJsKSB7XG4gICAgICAgICAgICB0aGlzLl9pbUN0cmwudmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gb25DaGFuZ2U7XG4gICAgfVxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKG9uVG91Y2hlZDogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gb25Ub3VjaGVkO1xuICAgIH1cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lbmFibGVkID0gIWlzRGlzYWJsZWQ7XG4gICAgICAgIGlmICh0aGlzLl9pbUN0cmwpIHtcbiAgICAgICAgICAgIHRoaXMuX2ltQ3RybC5lbmFibGVkID0gdGhpcy5lbmFibGVkO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFjY2VwdHNDcmxmOiBHQy5JbnB1dE1hbi5DckxmTW9kZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhdXRvQ29udmVydDogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0ZXh0OiBzdHJpbmcgfCBudWxsO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHdhdGVybWFya1plcm9UZXh0OiBzdHJpbmcgfCBudWxsO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZvcm1hdERpZ2l0OiBzdHJpbmcgfCBudWxsO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc3BsYXlQb3NpdGl2ZVByZWZpeDogc3RyaW5nIHwgbnVsbDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkaXNwbGF5Rm9ybWF0RGlnaXQ6IHN0cmluZyB8IG51bGw7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWF4VmFsdWU6IG51bWJlciB8IHN0cmluZyB8IG51bGw7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWluVmFsdWU6IG51bWJlciB8IHN0cmluZyB8IG51bGw7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcG9zaXRpdmVQcmVmaXg6IHN0cmluZyB8IG51bGw7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcG9zaXRpdmVTdWZmaXg6IHN0cmluZyB8IG51bGw7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzcGxheVBvc2l0aXZlU3VmZml4OiBzdHJpbmcgfCBudWxsO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG5lZ2F0aXZlUHJlZml4OiBzdHJpbmcgfCBudWxsO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc3BsYXlOZWdhdGl2ZVByZWZpeDogc3RyaW5nIHwgbnVsbDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBuZWdhdGl2ZVN1ZmZpeDogc3RyaW5nIHwgbnVsbDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkaXNwbGF5TmVnYXRpdmVTdWZmaXg6IHN0cmluZyB8IG51bGw7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdmFsdWVTaWduOiBHQy5JbnB1dE1hbi5WYWx1ZVNpZ247XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYWRqdXN0VmFsdWVPbkZvY3VzOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFsbG93RGVsZXRlVG9OdWxsOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNsZWFyQWN0aW9uOiBHQy5JbnB1dE1hbi5DbGVhck1vZGVBY3Rpb247XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYWNjZXB0c0RlY2ltYWw6IEdDLklucHV0TWFuLkRlY2ltYWxNb2RlO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGN1cnJlbmN5U3ltYm9sOiBzdHJpbmcgfCBudWxsO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRlY2ltYWxQb2ludDogc3RyaW5nIHwgbnVsbDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXhNaW5CZWhhdmlvcjogR0MuSW5wdXRNYW4uTWF4TWluQmVoYXZpb3I7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2VwYXJhdG9yOiBzdHJpbmcgfCBudWxsO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHdhdGVybWFya0Rpc3BsYXlaZXJvVGV4dDogc3RyaW5nIHwgbnVsbDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBoaWdobGlnaHRUZXh0OiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFsbG93U3BpbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzcGluV2hlZWw6IGJvb2xlYW47XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc3Bpbk9uS2V5czogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzcGluV3JhcDogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93U3BpbkJ1dHRvbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzcGluQnV0dG9uUG9zaXRpb246IEdDLklucHV0TWFuLlNwaW5CdXR0b25BbGlnbm1lbnQ7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd051bWVyaWNQYWQ6IGJvb2xlYW47XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbnVtZXJpY1BhZFBvc2l0aW9uOiBHQy5JbnB1dE1hbi5Ecm9wRG93bkJ1dHRvbkFsaWdubWVudDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93Q2FsY3VsYXRvckFzRHJvcERvd246IGJvb2xlYW47XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0NhbGN1bGF0b3JBc1BvcHVwOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNhbGN1bGF0b3JCdXR0b25Qb3NpdGlvbjogR0MuSW5wdXRNYW4uRHJvcERvd25CdXR0b25BbGlnbm1lbnQgfCBudWxsO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dEcm9wRG93blNsaWRlcjogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzbGlkZXJCdXR0b25Qb3NpdGlvbjogR0MuSW5wdXRNYW4uRHJvcERvd25CdXR0b25BbGlnbm1lbnQgfCBudWxsO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRyb3BEb3duQ29uZmlnOiBHQy5JbnB1dE1hbi5HY0NhbGN1bGF0b3JDb25maWcgfCBHQy5JbnB1dE1hbi5JR2NEcm9wRG93blNsaWRlckNvbmZpZyB8IG51bGw7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2xpZGVyQ29uZmlnOiBHQy5JbnB1dE1hbi5JTnVtYmVyU2xpZGVyQ29uZmlnIHwgbnVsbDtcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb25TcGluRG93bjogRXZlbnRFbWl0dGVyPEdDLklucHV0TWFuLkdjTnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb25TcGluVXA6IEV2ZW50RW1pdHRlcjxHQy5JbnB1dE1hbi5HY051bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uSW52YWxpZFJhbmdlOiBFdmVudEVtaXR0ZXI8R0MuSW5wdXRNYW4uR2NOdW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvblZhbHVlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEdDLklucHV0TWFuLkdjTnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICAvLyBGb3IgVjIuMSBDb21wYXRpYmlsaXR5LCB3ZSBoYXZlIHRvIGtlZXAgdGhpcyBwcm9wZXJ0eSBvciBldmVudFxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwcm90ZWN0ZWQgaW5pdEdjQ29tcG9uZW50KCkge1xuICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgIHRoaXMuY3JlYXRlVGVtcGxhdGUoZWxlbWVudCk7XG4gICAgICAgIHRoaXMuX2ltQ3RybCA9IG5ldyBHQy5JbnB1dE1hbi5HY051bWJlcihlbGVtZW50LCB0aGlzIGFzIGFueSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGJpbmRFdmVudCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9pbUN0cmwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1cGVyLmJpbmRFdmVudCgpO1xuICAgICAgICB0aGlzLl9pbUN0cmwub25TcGluRG93bigocykgPT4geyB0aGlzLm9uU3BpbkRvd24uZW1pdChzKTsgfSk7XG4gICAgICAgIHRoaXMuX2ltQ3RybC5vblNwaW5VcCgocykgPT4geyB0aGlzLm9uU3BpblVwLmVtaXQocyk7IH0pO1xuICAgICAgICB0aGlzLl9pbUN0cmwub25JbnZhbGlkUmFuZ2UoKHMpID0+IHsgdGhpcy5vbkludmFsaWRSYW5nZS5lbWl0KHMpOyB9KTtcbiAgICAgICAgdGhpcy5faW1DdHJsLm9uVmFsdWVDaGFuZ2VkKChzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkLmVtaXQocyk7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHMuZ2V0VmFsdWUoKSk7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHMuZ2V0VmFsdWUoKSBhcyBhbnkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbUN0cmwuY2xlYXIoKTtcbiAgICB9XG59Il19