@grapecity/inputman.angular
Version:
このパッケージには、Angular用の[InputManJS](https://developer.mescius.jp/inputmanjs)コンポーネントが含まれます。
203 lines • 23 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { Component, ElementRef, Input, Output, EventEmitter, forwardRef } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import { GC } from '../inputman';
import { Property } from '../common';
import { GcComponents } from './GcComponents';
import * as i0 from "@angular/core";
export class GcCalendarComponent extends GcComponents {
constructor(ref) {
super(ref);
this.onChange = () => { };
this.onTouched = () => { };
this.onClickDate = new EventEmitter();
this.onScrolled = new EventEmitter();
this.onFocusDateChanged = new EventEmitter();
this.onSelectedDateChanged = new EventEmitter();
// For V2.1 Compatibility, we have to keep this property or event
this.focusDateChange = new EventEmitter();
this.selectedDateChange = new EventEmitter();
}
writeValue(value) {
if (this.selectionMode == undefined || this.selectionMode == GC.InputMan.CalendarSelectionMode.One) {
this.selectedDate = value;
if (this._imCtrl) {
this._imCtrl.selectedDate = this.selectedDate;
}
}
else {
if (this._imCtrl) {
if (value instanceof Array) {
this._imCtrl.setSelections(value);
}
else {
this._imCtrl.setSelections([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('div');
this.createTemplate(element);
if (Array.isArray(this.calendarDimensions)) {
this.calendarDimensions = {
width: this.calendarDimensions[0],
height: this.calendarDimensions[1]
};
}
this._imCtrl = new GC.InputMan.GcCalendar(element, this);
}
bindEvent() {
if (!this._imCtrl) {
return;
}
this._imCtrl.onClickDate((s) => { this.onClickDate.emit(s); });
this._imCtrl.onScrolled((s) => { this.onScrolled.emit(s); });
this._imCtrl.onFocusDateChanged((s) => {
this.onFocusDateChanged.emit(s);
this.focusDateChange.emit(s.getFocusDate());
});
this._imCtrl.onSelectedDateChanged((s) => {
this.onSelectedDateChanged.emit(s);
if (this._imCtrl.selectionMode == GC.InputMan.CalendarSelectionMode.One) {
this.onChange(s.getSelectedDate());
}
else {
this.onChange(s.getSelections());
}
this.onTouched();
this.selectedDateChange.emit(s.getSelectedDate());
});
}
}
GcCalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GcCalendarComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
GcCalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GcCalendarComponent, selector: "gc-calendar", inputs: { visible: "visible", calendarZoomRange: "calendarZoomRange", maxSelectionCount: "maxSelectionCount", selectionMode: "selectionMode", selectedDate: "selectedDate", enabled: "enabled", weekTitleSelect: "weekTitleSelect", weekNumberSelect: "weekNumberSelect", focusDate: "focusDate", maxDate: "maxDate", minDate: "minDate", allowSelection: "allowSelection", emptyRows: "emptyRows", firstDayOfWeek: "firstDayOfWeek", firstFiscalMonth: "firstFiscalMonth", firstMonthInView: "firstMonthInView", yearMonthFormat: "yearMonthFormat", headerFormat: "headerFormat", showZoomButton: "showZoomButton", showRokuyou: "showRokuyou", showHeader: "showHeader", showToday: "showToday", showWeekNumber: "showWeekNumber", showTrailing: "showTrailing", calendarYear: "calendarYear", showNavigator: "showNavigator", navigatorOrientation: "navigatorOrientation", overrideTipText: "overrideTipText", calendarType: "calendarType", calendarDimensions: "calendarDimensions", scrollRate: "scrollRate", autoSwitch: "autoSwitch", showAnimation: "showAnimation", width: "width", height: "height", minWidth: "minWidth", minHeight: "minHeight", maxWidth: "maxWidth", maxHeight: "maxHeight", allowResize: "allowResize" }, outputs: { onClickDate: "onClickDate", onScrolled: "onScrolled", onFocusDateChanged: "onFocusDateChanged", onSelectedDateChanged: "onSelectedDateChanged", focusDateChange: "focusDateChange", selectedDateChange: "selectedDateChange" }, providers: [
{
provide: NG_VALUE_ACCESSOR,
multi: true,
useExisting: forwardRef(() => GcCalendarComponent),
}
], usesInheritance: true, ngImport: i0, template: ``, isInline: true });
__decorate([
Property("setCalendarDimensions", "", true),
__metadata("design:type", Array)
], GcCalendarComponent.prototype, "calendarDimensions", void 0);
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GcCalendarComponent, decorators: [{
type: Component,
args: [{
selector: 'gc-calendar',
template: ``,
providers: [
{
provide: NG_VALUE_ACCESSOR,
multi: true,
useExisting: forwardRef(() => GcCalendarComponent),
}
]
}]
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { visible: [{
type: Input
}], calendarZoomRange: [{
type: Input
}], maxSelectionCount: [{
type: Input
}], selectionMode: [{
type: Input
}], selectedDate: [{
type: Input
}], enabled: [{
type: Input
}], weekTitleSelect: [{
type: Input
}], weekNumberSelect: [{
type: Input
}], focusDate: [{
type: Input
}], maxDate: [{
type: Input
}], minDate: [{
type: Input
}], allowSelection: [{
type: Input
}], emptyRows: [{
type: Input
}], firstDayOfWeek: [{
type: Input
}], firstFiscalMonth: [{
type: Input
}], firstMonthInView: [{
type: Input
}], yearMonthFormat: [{
type: Input
}], headerFormat: [{
type: Input
}], showZoomButton: [{
type: Input
}], showRokuyou: [{
type: Input
}], showHeader: [{
type: Input
}], showToday: [{
type: Input
}], showWeekNumber: [{
type: Input
}], showTrailing: [{
type: Input
}], calendarYear: [{
type: Input
}], showNavigator: [{
type: Input
}], navigatorOrientation: [{
type: Input
}], overrideTipText: [{
type: Input
}], calendarType: [{
type: Input
}], calendarDimensions: [{
type: Input
}], scrollRate: [{
type: Input
}], autoSwitch: [{
type: Input
}], showAnimation: [{
type: Input
}], width: [{
type: Input
}], height: [{
type: Input
}], minWidth: [{
type: Input
}], minHeight: [{
type: Input
}], maxWidth: [{
type: Input
}], maxHeight: [{
type: Input
}], allowResize: [{
type: Input
}], onClickDate: [{
type: Output
}], onScrolled: [{
type: Output
}], onFocusDateChanged: [{
type: Output
}], onSelectedDateChanged: [{
type: Output
}], focusDateChange: [{
type: Output
}], selectedDateChange: [{
type: Output
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2NDYWxlbmRhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbXBvbmVudHMvR2NDYWxlbmRhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQW1COUMsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFlBQW9DO0lBQ3pFLFlBQVksR0FBZTtRQUN2QixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFHUCxhQUFRLEdBQWEsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLGNBQVMsR0FBYSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUE2SGpDLGdCQUFXLEdBQXlDLElBQUksWUFBWSxFQUFFLENBQUM7UUFFdkUsZUFBVSxHQUF5QyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXRFLHVCQUFrQixHQUF5QyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTlFLDBCQUFxQixHQUF5QyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hGLGlFQUFpRTtRQUUxRCxvQkFBZSxHQUF1QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXpELHVCQUFrQixHQUF1QixJQUFJLFlBQVksRUFBRSxDQUFDO0lBM0luRSxDQUFDO0lBS0QsVUFBVSxDQUFDLEtBQVU7UUFDakIsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxRQUFR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bWVudFJlZiwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBHQyB9IGZyb20gJy4uL2lucHV0bWFuJztcbmltcG9ydCB7IFByb3BlcnR5IH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IEdjQ29tcG9uZW50cyB9IGZyb20gJy4vR2NDb21wb25lbnRzJztcbmltcG9ydCB7IEdjTnVtYmVyQ29tcG9uZW50IH0gZnJvbSAnLi9HY051bWJlcic7XG5cbmludGVyZmFjZSBEaW1lbnNpb25zIHtcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIGhlaWdodDogbnVtYmVyO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2djLWNhbGVuZGFyJyxcbiAgICB0ZW1wbGF0ZTogYGAsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBHY0NhbGVuZGFyQ29tcG9uZW50KSxcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgR2NDYWxlbmRhckNvbXBvbmVudCBleHRlbmRzIEdjQ29tcG9uZW50czxHQy5JbnB1dE1hbi5HY0NhbGVuZGFyPiBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgICBjb25zdHJ1Y3RvcihyZWY6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgc3VwZXIocmVmKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQ2hhbmdlOiBGdW5jdGlvbiA9ICgpID0+IHsgfTtcbiAgICBwcml2YXRlIG9uVG91Y2hlZDogRnVuY3Rpb24gPSAoKSA9PiB7IH07XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PSB1bmRlZmluZWQgfHwgdGhpcy5zZWxlY3Rpb25Nb2RlID09IEdDLklucHV0TWFuLkNhbGVuZGFyU2VsZWN0aW9uTW9kZS5PbmUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gdmFsdWU7XG4gICAgICAgICAgICBpZiAodGhpcy5faW1DdHJsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5faW1DdHJsLnNlbGVjdGVkRGF0ZSA9IHRoaXMuc2VsZWN0ZWREYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2ltQ3RybCkge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ltQ3RybC5zZXRTZWxlY3Rpb25zKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbUN0cmwuc2V0U2VsZWN0aW9ucyhbdmFsdWVdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBvbkNoYW5nZTtcbiAgICB9XG4gICAgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBvblRvdWNoZWQ7XG4gICAgfVxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmVuYWJsZWQgPSAhaXNEaXNhYmxlZDtcbiAgICAgICAgaWYgKHRoaXMuX2ltQ3RybCkge1xuICAgICAgICAgICAgdGhpcy5faW1DdHJsLmVuYWJsZWQgPSB0aGlzLmVuYWJsZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaW5pdEdjQ29tcG9uZW50KCkge1xuICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB0aGlzLmNyZWF0ZVRlbXBsYXRlKGVsZW1lbnQpO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSgodGhpcyBhcyBhbnkpLmNhbGVuZGFyRGltZW5zaW9ucykpIHtcbiAgICAgICAgICAgICh0aGlzIGFzIGFueSkuY2FsZW5kYXJEaW1lbnNpb25zID0gPERpbWVuc2lvbnM+e1xuICAgICAgICAgICAgICAgIHdpZHRoOiAodGhpcyBhcyBhbnkpLmNhbGVuZGFyRGltZW5zaW9uc1swXSxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICh0aGlzIGFzIGFueSkuY2FsZW5kYXJEaW1lbnNpb25zWzFdXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faW1DdHJsID0gbmV3IEdDLklucHV0TWFuLkdjQ2FsZW5kYXIoZWxlbWVudCwgdGhpcyBhcyBhbnkpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZpc2libGU6IGJvb2xlYW47XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY2FsZW5kYXJab29tUmFuZ2U6IEdDLklucHV0TWFuLkNhbGVuZGFyWm9vbVJhbmdlIHwgR0MuSW5wdXRNYW4uQ2FsZW5kYXJUeXBlW107XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWF4U2VsZWN0aW9uQ291bnQ6IG51bWJlcjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZWxlY3Rpb25Nb2RlOiBHQy5JbnB1dE1hbi5DYWxlbmRhclNlbGVjdGlvbk1vZGU7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2VsZWN0ZWREYXRlOiBEYXRlIHwgbnVsbDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlbmFibGVkOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHdlZWtUaXRsZVNlbGVjdDogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB3ZWVrTnVtYmVyU2VsZWN0OiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZvY3VzRGF0ZTogRGF0ZSB8IG51bGw7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWF4RGF0ZTogRGF0ZSB8IG51bGw7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWluRGF0ZTogRGF0ZSB8IG51bGw7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYWxsb3dTZWxlY3Rpb246IEdDLklucHV0TWFuLkFsbG93U2VsZWN0aW9uO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGVtcHR5Um93czogR0MuSW5wdXRNYW4uRW1wdHlSb3dzO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZpcnN0RGF5T2ZXZWVrOiBHQy5JbnB1dE1hbi5EYXlPZldlZWs7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZmlyc3RGaXNjYWxNb250aDogR0MuSW5wdXRNYW4uTW9udGhzO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZpcnN0TW9udGhJblZpZXc6IEdDLklucHV0TWFuLk1vbnRocztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB5ZWFyTW9udGhGb3JtYXQ6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBoZWFkZXJGb3JtYXQ6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93Wm9vbUJ1dHRvbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93Um9rdXlvdTogR0MuSW5wdXRNYW4uUm9rdXlvdTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93SGVhZGVyOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dUb2RheTogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93V2Vla051bWJlcjogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93VHJhaWxpbmc6IGJvb2xlYW47XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY2FsZW5kYXJZZWFyOiBHQy5JbnB1dE1hbi5DYWxlbmRhclllYXI7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd05hdmlnYXRvcjogR0MuSW5wdXRNYW4uQ2FsZW5kYXJOYXZpZ2F0b3JzO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG5hdmlnYXRvck9yaWVudGF0aW9uOiBudW1iZXIgfCBHQy5JbnB1dE1hbi5OYXZpZ2F0b3JPcmllbnRhdGlvbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBvdmVycmlkZVRpcFRleHQ6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjYWxlbmRhclR5cGU6IEdDLklucHV0TWFuLkNhbGVuZGFyVHlwZTtcbiAgICBAUHJvcGVydHkoXCJzZXRDYWxlbmRhckRpbWVuc2lvbnNcIiwgXCJcIiwgdHJ1ZSlcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjYWxlbmRhckRpbWVuc2lvbnM6IEFycmF5PG51bWJlcj47XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2Nyb2xsUmF0ZTogbnVtYmVyO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGF1dG9Td2l0Y2g6IGJvb2xlYW47XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0FuaW1hdGlvbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB3aWR0aDogbnVtYmVyIHwgc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGhlaWdodDogbnVtYmVyIHwgc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1pbldpZHRoOiBudW1iZXIgfCBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWluSGVpZ2h0OiBudW1iZXIgfCBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWF4V2lkdGg6IG51bWJlciB8IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXhIZWlnaHQ6IG51bWJlciB8IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhbGxvd1Jlc2l6ZTogYm9vbGVhbjtcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb25DbGlja0RhdGU6IEV2ZW50RW1pdHRlcjxHQy5JbnB1dE1hbi5HY0NhbGVuZGFyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb25TY3JvbGxlZDogRXZlbnRFbWl0dGVyPEdDLklucHV0TWFuLkdjQ2FsZW5kYXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvbkZvY3VzRGF0ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxHQy5JbnB1dE1hbi5HY0NhbGVuZGFyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb25TZWxlY3RlZERhdGVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8R0MuSW5wdXRNYW4uR2NDYWxlbmRhcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgLy8gRm9yIFYyLjEgQ29tcGF0aWJpbGl0eSwgd2UgaGF2ZSB0byBrZWVwIHRoaXMgcHJvcGVydHkgb3IgZXZlbnRcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZm9jdXNEYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHNlbGVjdGVkRGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG5cbiAgICBwcm90ZWN0ZWQgYmluZEV2ZW50KCkge1xuICAgICAgICBpZiAoIXRoaXMuX2ltQ3RybCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5faW1DdHJsLm9uQ2xpY2tEYXRlKChzKSA9PiB7IHRoaXMub25DbGlja0RhdGUuZW1pdChzKSB9KTtcbiAgICAgICAgdGhpcy5faW1DdHJsLm9uU2Nyb2xsZWQoKHMpID0+IHsgdGhpcy5vblNjcm9sbGVkLmVtaXQocykgfSk7XG4gICAgICAgIHRoaXMuX2ltQ3RybC5vbkZvY3VzRGF0ZUNoYW5nZWQoKHMpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25Gb2N1c0RhdGVDaGFuZ2VkLmVtaXQocyk7XG4gICAgICAgICAgICB0aGlzLmZvY3VzRGF0ZUNoYW5nZS5lbWl0KHMuZ2V0Rm9jdXNEYXRlKCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5faW1DdHJsLm9uU2VsZWN0ZWREYXRlQ2hhbmdlZCgocykgPT4ge1xuICAgICAgICAgICAgdGhpcy5vblNlbGVjdGVkRGF0ZUNoYW5nZWQuZW1pdChzKTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pbUN0cmwuc2VsZWN0aW9uTW9kZSA9PSBHQy5JbnB1dE1hbi5DYWxlbmRhclNlbGVjdGlvbk1vZGUuT25lKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZShzLmdldFNlbGVjdGVkRGF0ZSgpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZShzLmdldFNlbGVjdGlvbnMoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVDaGFuZ2UuZW1pdChzLmdldFNlbGVjdGVkRGF0ZSgpKTtcbiAgICAgICAgfSk7XG4gICAgfVxufSJdfQ==